From 4e9c3df5eb25212b72a58fec1a3ecc96cebd8b19 Mon Sep 17 00:00:00 2001
From: tresabhi <43380238+tresabhi@users.noreply.github.com>
Date: Sun, 17 May 2026 14:03:02 -0500
Subject: [PATCH] equipment stage parameters
---
.../components/TankopediaLoadout/index.tsx | 2 ++
.../pages/[...locale]/tanks/[slug]/_index.tsx | 11 +++++++---
.../src/tankopedia/aggregateParameters.ts | 11 ++++++----
.../src/tankopedia/computeCharacteristics.ts | 20 ++++++++++++++++++-
4 files changed, 36 insertions(+), 8 deletions(-)
diff --git a/packages/website-ue/src/components/TankopediaLoadout/index.tsx b/packages/website-ue/src/components/TankopediaLoadout/index.tsx
index 1b1f49283..0a8957d8d 100644
--- a/packages/website-ue/src/components/TankopediaLoadout/index.tsx
+++ b/packages/website-ue/src/components/TankopediaLoadout/index.tsx
@@ -41,6 +41,8 @@ function Equipment() {
const tank = useProtagonist();
const equipment = useEquipment(tank.tank!);
+ console.log(equipment);
+
return (
diff --git a/packages/website-ue/src/pages/[...locale]/tanks/[slug]/_index.tsx b/packages/website-ue/src/pages/[...locale]/tanks/[slug]/_index.tsx
index 3e966b3b3..7652600de 100644
--- a/packages/website-ue/src/pages/[...locale]/tanks/[slug]/_index.tsx
+++ b/packages/website-ue/src/pages/[...locale]/tanks/[slug]/_index.tsx
@@ -3,7 +3,7 @@ import { api } from "../../../../api/dynamic";
import { TankopediaLoadout } from "../../../../components/TankopediaLoadout";
import { useAwait } from "../../../../hooks/useAwait";
import { useCharacteristicRenderer } from "../../../../hooks/useCharacteristicRenderer";
-import { useGameStrings } from "../../../../hooks/useGameStrings";
+import { useEquipment } from "../../../../hooks/useEquipment";
import { LocaleProvider } from "../../../../hooks/useLocale";
import { Tankopedia } from "../../../../stores/tankopedia";
import { characteristicsOrder } from "../../../../tankopedia/characteristicsOrder";
@@ -27,7 +27,6 @@ export function Page({ id, locale }: PageProps) {
}
function Content() {
- const tankEntityGameStrings = useGameStrings("TankEntity");
const renderCharacteristic = useCharacteristicRenderer();
const protagonist = Tankopedia.use((state) => state.protagonist);
@@ -35,9 +34,15 @@ function Content() {
() => api.tank(protagonist.id),
`tank-${protagonist.id}`,
);
+ const protagonistEquipment = useEquipment(protagonistTank.tank!);
const { characteristics } = useMemo(
- () => computeCharacteristics(protagonistTank, protagonist),
+ () =>
+ computeCharacteristics(
+ protagonistTank,
+ protagonistEquipment,
+ protagonist,
+ ),
[protagonist],
);
diff --git a/packages/website-ue/src/tankopedia/aggregateParameters.ts b/packages/website-ue/src/tankopedia/aggregateParameters.ts
index 19b95786b..acee24cfc 100644
--- a/packages/website-ue/src/tankopedia/aggregateParameters.ts
+++ b/packages/website-ue/src/tankopedia/aggregateParameters.ts
@@ -14,10 +14,7 @@ import {
TankAttributeChange_Modifier,
VisualChanges,
} from "@protos/blitz_static_tank_upgrade_single_stage";
-import {
- isAlternativeLine,
- originalLineName,
-} from "../config/modules";
+import { isAlternativeLine, originalLineName } from "../config/modules";
function patch(stage0: StageParameters, stage1: StageParameters) {
if (stage1.number !== ++stage0.number) {
@@ -244,6 +241,7 @@ export function aggregateParameters(
tank: TankCatalogComponent,
upgrades: Record,
alternates: Record,
+ equipmentParameters: StageParameters[],
) {
const stage0 = StageParameters.create({});
@@ -273,5 +271,10 @@ export function aggregateParameters(
}
}
+ for (const equipmentParameter of equipmentParameters) {
+ stage0.number = -1;
+ patch(stage0, equipmentParameter);
+ }
+
return stage0;
}
diff --git a/packages/website-ue/src/tankopedia/computeCharacteristics.ts b/packages/website-ue/src/tankopedia/computeCharacteristics.ts
index 40222c0a1..87321cb23 100644
--- a/packages/website-ue/src/tankopedia/computeCharacteristics.ts
+++ b/packages/website-ue/src/tankopedia/computeCharacteristics.ts
@@ -1,8 +1,10 @@
+import type { StageParameters } from "@protos/blitz_static_tank_upgrade_single_stage";
import {
ShellUpgradeSingleChange_AttributeName,
TankAttributeChange_AttributeName,
} from "@protos/blitz_static_tank_upgrade_single_stage";
import type { Tank } from "@protos/tank";
+import { useEquipment } from "../hooks/useEquipment";
import { aggregateParameters } from "./aggregateParameters";
import {
characteristics,
@@ -16,11 +18,27 @@ export type ComputedCharacteristics = Record<
CharacteristicOutput
>;
-export function computeCharacteristics(tank: Tank, state: TankState) {
+export function computeCharacteristics(
+ tank: Tank,
+ equipment: ReturnType,
+ state: TankState,
+) {
+ const equipmentParameters: StageParameters[] = [];
+
+ for (const key in state.equipment) {
+ const index = Number(key);
+ const choice = state.equipment[index];
+ const name = equipment.preset.slots[index].options_catalog_i_ds[choice];
+ const data = equipment.equipments[name];
+
+ equipmentParameters.push(data.upgrade_level!);
+ }
+
const parameters = aggregateParameters(
tank.tank!,
state.upgrades,
state.alternates,
+ equipmentParameters,
);
const computed: Partial = {};