mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-11-07 18:00:38 +01:00
Compare commits
2
Commits
be4af0bf84
...
e66daed7ae
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e66daed7ae | ||
|
|
f2d0f68f07 |
No files matched your search
@@ -75,36 +75,34 @@ function patch(stage0: StageParameters, stage1: StageParameters) {
|
||||
}
|
||||
|
||||
for (const penetrationGroupUpgrade1 of stage1.penetration_groups_upgrades) {
|
||||
if (penetrationGroupUpgrade1.primary_armor.length > 0) {
|
||||
throw new Error("Primary armor is not empty; implement this");
|
||||
}
|
||||
|
||||
let penetrationGroupUpgrade0 = stage0.penetration_groups_upgrades.find(
|
||||
const penetrationGroupUpgrade0 = stage0.penetration_groups_upgrades.find(
|
||||
(group) => group.tank_part === penetrationGroupUpgrade1.tank_part
|
||||
);
|
||||
|
||||
if (!penetrationGroupUpgrade0) {
|
||||
penetrationGroupUpgrade0 = PenetrationGroupUpgrade.create({
|
||||
tank_part: penetrationGroupUpgrade1.tank_part,
|
||||
});
|
||||
if (penetrationGroupUpgrade0) {
|
||||
penetrationGroupUpgrade0.primary_armor = [
|
||||
...penetrationGroupUpgrade1.primary_armor,
|
||||
];
|
||||
|
||||
stage0.penetration_groups_upgrades.push(penetrationGroupUpgrade0);
|
||||
}
|
||||
for (const penetrationGroup1 of penetrationGroupUpgrade1.penetration_groups) {
|
||||
const penetrationGroup0 =
|
||||
penetrationGroupUpgrade0.penetration_groups.find(
|
||||
(baseGroup) => baseGroup.group_name === penetrationGroup1.group_name
|
||||
);
|
||||
|
||||
for (const penetrationGroup1 of penetrationGroupUpgrade1.penetration_groups) {
|
||||
const penetrationGroup0 =
|
||||
penetrationGroupUpgrade0.penetration_groups.find(
|
||||
(baseGroup) => baseGroup.group_name === penetrationGroup1.group_name
|
||||
);
|
||||
|
||||
if (penetrationGroup0) {
|
||||
penetrationGroup0.common_data = penetrationGroup1.common_data;
|
||||
penetrationGroup0.armor = penetrationGroup1.armor;
|
||||
} else {
|
||||
penetrationGroupUpgrade0.penetration_groups.push(
|
||||
PenetrationGroup.create(penetrationGroup1)
|
||||
);
|
||||
if (penetrationGroup0) {
|
||||
penetrationGroup0.common_data = penetrationGroup1.common_data;
|
||||
penetrationGroup0.armor = penetrationGroup1.armor;
|
||||
} else {
|
||||
penetrationGroupUpgrade0.penetration_groups.push(
|
||||
PenetrationGroup.create(penetrationGroup1)
|
||||
);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
stage0.penetration_groups_upgrades.push(
|
||||
PenetrationGroupUpgrade.create(penetrationGroupUpgrade1)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -22,16 +22,20 @@ export enum GunType {
|
||||
}
|
||||
|
||||
export const characteristics = {
|
||||
gun_type({ attribute }) {
|
||||
clip_size({ attribute }) {
|
||||
return attribute(
|
||||
TankAttributeChange_AttributeName.ATTRIBUTE_NAME_CLIP_SIZE
|
||||
);
|
||||
},
|
||||
|
||||
gun_type({ attribute, characteristic }) {
|
||||
const isPump = attribute(
|
||||
TankAttributeChange_AttributeName.ATTRIBUTE_NAME_IS_PUMP
|
||||
);
|
||||
|
||||
if (isPump === 1) return GunType.AutoReloader;
|
||||
|
||||
const clipSize = attribute(
|
||||
TankAttributeChange_AttributeName.ATTRIBUTE_NAME_CLIP_SIZE
|
||||
);
|
||||
const clipSize = characteristic("clip_size")!;
|
||||
|
||||
if (clipSize === 1) return GunType.Regular;
|
||||
|
||||
@@ -59,13 +63,25 @@ export const characteristics = {
|
||||
reload({ characteristic, attribute }) {
|
||||
const gunType = characteristic("gun_type")!;
|
||||
|
||||
if (gunType !== GunType.Regular) return null;
|
||||
if (gunType === GunType.AutoReloader) return null;
|
||||
|
||||
return attribute(
|
||||
TankAttributeChange_AttributeName.ATTRIBUTE_NAME_RELOAD_TIME
|
||||
);
|
||||
},
|
||||
|
||||
intra_clip({ characteristic, attribute }) {
|
||||
const gunType = characteristic("gun_type")!;
|
||||
|
||||
if (gunType === GunType.Regular) return null;
|
||||
|
||||
const clipRate = attribute(
|
||||
TankAttributeChange_AttributeName.ATTRIBUTE_NAME_CLIP_RATE
|
||||
);
|
||||
|
||||
return 60 / clipRate;
|
||||
},
|
||||
|
||||
dpm({ characteristic }) {
|
||||
let dps: number;
|
||||
const gunType = characteristic("gun_type")!;
|
||||
@@ -74,10 +90,20 @@ export const characteristics = {
|
||||
switch (gunType) {
|
||||
case GunType.Regular: {
|
||||
const reload = characteristic("reload")!;
|
||||
|
||||
dps = damage / reload;
|
||||
break;
|
||||
}
|
||||
|
||||
case GunType.AutoLoader: {
|
||||
const reload = characteristic("reload")!;
|
||||
const intraClip = characteristic("intra_clip")!;
|
||||
const clipSize = characteristic("clip_size")!;
|
||||
|
||||
dps = (damage * clipSize) / (reload + (clipSize - 1) * intraClip);
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
throw new Error("Unknown gun type");
|
||||
}
|
||||
|
||||
@@ -27,7 +27,9 @@ export const characteristicsGroups: CharacteristicsOrder = [
|
||||
{ name: "damage" },
|
||||
{ name: "module_damage" },
|
||||
{ name: "penetration" },
|
||||
{ name: "clip_size" },
|
||||
{ name: "reload" },
|
||||
{ name: "intra_clip" },
|
||||
|
||||
{ toy: "reload" },
|
||||
|
||||
|
||||
@@ -76,6 +76,7 @@ function Content({ id }: { id: string }) {
|
||||
|
||||
{order.map((entry) => {
|
||||
if ("toy" in entry) {
|
||||
return <p>toy: {entry.toy}</p>;
|
||||
} else {
|
||||
const characteristic = characteristics[entry.name];
|
||||
|
||||
|
||||
Reference in new issue
Block a user