diff --git a/packages/website/src/components/Armor/components/SpacedArmorSceneComponent/index.tsx b/packages/website/src/components/Armor/components/SpacedArmorSceneComponent/index.tsx index 07957a644..c0a8789b4 100644 --- a/packages/website/src/components/Armor/components/SpacedArmorSceneComponent/index.tsx +++ b/packages/website/src/components/Armor/components/SpacedArmorSceneComponent/index.tsx @@ -18,6 +18,7 @@ import { import { degToRad } from "three/src/math/MathUtils.js"; import { hasEquipment } from "../../../../core/blitzkit/hasEquipment"; import { jsxTree } from "../../../../core/blitzkit/jsxTree"; +import { defaultEqualizer } from "../../../../core/blitzkit/tankToDuelMember"; import { discardClippingPlane } from "../../../../core/three/discardClippingPlane"; import { Duel } from "../../../../stores/duel"; import { @@ -87,6 +88,10 @@ export function SpacedArmorSceneComponent({ ) => { const { customShell } = Tankopedia.state; const shell = customShell ?? Duel.state.antagonist.shell; + const { equalize } = Duel.state; + const equalizer = + (equalize ? Duel.state.antagonist.tank.equalizer : undefined) ?? + defaultEqualizer; const cameraNormal = camera.position.clone().sub(point).normalize(); const shot: Shot = { splashRadius: @@ -367,6 +372,8 @@ export function SpacedArmorSceneComponent({ } } + shot.damage *= equalizer.damage; + return shot; }, [camera], diff --git a/packages/website/src/components/Tankopedia/CharacteristicsSection/components/Equalizer.tsx b/packages/website/src/components/Tankopedia/CharacteristicsSection/components/Equalizer.tsx index a5804f6dd..f49200157 100644 --- a/packages/website/src/components/Tankopedia/CharacteristicsSection/components/Equalizer.tsx +++ b/packages/website/src/components/Tankopedia/CharacteristicsSection/components/Equalizer.tsx @@ -12,6 +12,7 @@ import { } from "@radix-ui/themes"; import { useLocale } from "../../../../hooks/useLocale"; import { Duel } from "../../../../stores/duel"; +import { Tankopedia } from "../../../../stores/tankopedia"; import { ConfigurationChildWrapper } from "./ConfigurationChildWrapper"; export function Equalizer() { @@ -35,6 +36,9 @@ export function Equalizer() { Duel.mutate((draft) => { draft.equalize = !draft.equalize; }); + Tankopedia.mutate((draft) => { + draft.shot = undefined; + }); }} width="100%" style={{ diff --git a/packages/website/src/core/blitzkit/tankCharacteristics.ts b/packages/website/src/core/blitzkit/tankCharacteristics.ts index 40124f4a8..3f26ba388 100644 --- a/packages/website/src/core/blitzkit/tankCharacteristics.ts +++ b/packages/website/src/core/blitzkit/tankCharacteristics.ts @@ -22,6 +22,7 @@ import { } from "@blitzkit/core"; import { coefficient } from "@blitzkit/core/src/blitzkit/coefficient"; import type { EquipmentMatrix } from "../../stores/duel"; +import { defaultEqualizer } from "./tankToDuelMember"; export type TankCharacteristics = ReturnType; export type TankCharacteristicsKey = keyof TankCharacteristics; @@ -83,13 +84,7 @@ export function tankCharacteristics( const preset = equipmentDefinitions.presets[tank.equipment_preset]; const turretModelDefinition = tankModelDefinition.turrets[turret.id]; const gunModelDefinition = turretModelDefinition.guns[gun.id]; - const equalizer = (equalize ? tank.equalizer : undefined) ?? { - armor: 1, - damage: 1, - health: 1, - module_health: 1, - penetration: 1, - }; + const equalizer = (equalize ? tank.equalizer : undefined) ?? defaultEqualizer; function equipment(id: number) { return preset.slots.some((slot, index) => { diff --git a/packages/website/src/core/blitzkit/tankToDuelMember.ts b/packages/website/src/core/blitzkit/tankToDuelMember.ts index 94331a430..34f0aec50 100644 --- a/packages/website/src/core/blitzkit/tankToDuelMember.ts +++ b/packages/website/src/core/blitzkit/tankToDuelMember.ts @@ -1,5 +1,6 @@ import { createDefaultProvisions, + Equalizer, type ProvisionDefinitions, type TankDefinition, } from "@blitzkit/core"; @@ -28,3 +29,11 @@ export function tankToDuelMember( assaultDistance: (gun.assault_ranges?.ranges[0].distance ?? 0) / 2, } satisfies DuelMember; } + +export const defaultEqualizer: Equalizer = { + armor: 1, + damage: 1, + health: 1, + module_health: 1, + penetration: 1, +};