diff --git a/src/app/tools/compare/page.tsx b/src/app/tools/compare/page.tsx
index 42ce1836e..009def6b7 100644
--- a/src/app/tools/compare/page.tsx
+++ b/src/app/tools/compare/page.tsx
@@ -15,14 +15,12 @@ import PageWrapper from '../../../components/PageWrapper';
import { equipmentDefinitions } from '../../../core/blitzkrieg/equipmentDefinitions';
import { modelDefinitions } from '../../../core/blitzkrieg/modelDefinitions';
import { provisionDefinitions } from '../../../core/blitzkrieg/provisionDefinitions';
+import { skillDefinitions } from '../../../core/blitzkrieg/skillDefinitions';
import { tankCharacteristics } from '../../../core/blitzkrieg/tankCharacteristics';
import { tankDefinitions } from '../../../core/blitzkrieg/tankDefinitions';
import { tankIcon } from '../../../core/blitzkrieg/tankIcon';
import { tankToCompareMember } from '../../../core/blitzkrieg/tankToCompareMember';
-import mutateCompare, {
- CompareMember,
- useCompare,
-} from '../../../stores/compare';
+import mutateCompare, { useCompare } from '../../../stores/compare';
import { TankSearch } from '../tankopedia/components/TankSearch';
import { TankControl } from './components/TankControl';
@@ -30,6 +28,7 @@ export default function Page() {
const pathname = usePathname();
const router = useRouter();
const awaitedTankDefinitions = use(tankDefinitions);
+ const awaitedSkillDefinitions = use(skillDefinitions);
const searchParams = useSearchParams();
const members = useCompare((state) => state.members);
const [addTankDialogOpen, setAddTankDialogOpen] = useState(false);
@@ -87,11 +86,11 @@ export default function Page() {
draft.members = tanksParam
.split(',')
.map(Number)
- .map(
- (id) =>
- tankToCompareMember(
- awaitedTankDefinitions[id],
- ) satisfies CompareMember,
+ .map((id) =>
+ tankToCompareMember(
+ awaitedTankDefinitions[id],
+ awaitedSkillDefinitions,
+ ),
);
});
}
@@ -147,7 +146,10 @@ export default function Page() {
textAlign: 'center',
}}
color={
- index === 0 || value === undefined || values[0] === undefined
+ index === 0 ||
+ value === undefined ||
+ values[0] === undefined ||
+ value > values[0]
? undefined
: (
deltaType === 'higherIsBetter'
@@ -205,7 +207,9 @@ export default function Page() {
compact
onSelect={(tank) => {
mutateCompare((draft) => {
- draft.members.push(tankToCompareMember(tank));
+ draft.members.push(
+ tankToCompareMember(tank, awaitedSkillDefinitions),
+ );
});
setAddTankDialogOpen(false);
@@ -309,17 +313,41 @@ export default function Page() {
value="dispersion"
display={(stats) => stats.dispersion.toFixed(3)}
/>
-
+ stats.dispersionMoving.toFixed(3)}
+ />
stats.dispersionHullTraversing.toFixed(3)}
/>
stats.dispersionTurretTraversing.toFixed(3)}
+ />
+ stats.dispersionShooting.toFixed(3)}
+ />
+ stats.dispersionGunDamaged.toFixed(3)}
+ />
+ stats.gunDepression.toFixed(1)}
+ />
+ stats.gunElevation.toFixed(1)}
/>
-
-
diff --git a/src/core/blitzkrieg/tankToCompareMember.ts b/src/core/blitzkrieg/tankToCompareMember.ts
index 97b6a27eb..0d969276a 100644
--- a/src/core/blitzkrieg/tankToCompareMember.ts
+++ b/src/core/blitzkrieg/tankToCompareMember.ts
@@ -1,12 +1,22 @@
import { CompareMember } from '../../stores/compare';
+import { SkillDefinitions } from './skillDefinitions';
import { TankDefinition } from './tankDefinitions';
import { tankToDuelMember } from './tankToDuelMember';
-export function tankToCompareMember(tank: TankDefinition) {
+export function tankToCompareMember(
+ tank: TankDefinition,
+ skillDefinitions: SkillDefinitions,
+) {
const member = {
...tankToDuelMember(tank),
crewSkills: {},
- } satisfies CompareMember;
+ } as CompareMember;
+
+ Object.values(skillDefinitions.classes).forEach((skills) => {
+ skills.forEach((skill) => {
+ member.crewSkills[skill] = 0;
+ });
+ });
return member;
}