Verify recruit reward settlement
This commit is contained in:
@@ -38,6 +38,7 @@ try {
|
||||
setFirstBattleReport
|
||||
} = await server.ssrLoadModule('/src/game/state/campaignState.ts');
|
||||
const { battleScenarios } = await server.ssrLoadModule('/src/game/data/battles.ts');
|
||||
const { campaignRecruitUnits } = await server.ssrLoadModule('/src/game/data/scenario.ts');
|
||||
const { normalizeSortieFormationAssignments } = await server.ssrLoadModule('/src/game/data/sortieDeployment.ts');
|
||||
|
||||
storage.clear();
|
||||
@@ -249,6 +250,43 @@ try {
|
||||
`Expected max-level visit bond exp to cap instead of wrapping: ${JSON.stringify(maxedVisitState)}`
|
||||
);
|
||||
|
||||
resetCampaignState();
|
||||
const seventhScenario = battleScenarios['seventh-battle-xuzhou-rescue'];
|
||||
const seventhAlliedUnits = seventhScenario.units.filter((unit) => unit.faction === 'ally');
|
||||
const campaignRecruitNameById = new Map(campaignRecruitUnits.map((unit) => [unit.id, unit.name]));
|
||||
const seventhRecruitRewards = (seventhScenario.campaignReward?.recruits ?? []).map((unitId) => ({
|
||||
unitId,
|
||||
name: campaignRecruitNameById.get(unitId) ?? unitId
|
||||
}));
|
||||
const seventhEquipmentRewards = seventhScenario.campaignReward?.equipment ?? [];
|
||||
const seventhBattleReport = {
|
||||
battleId: seventhScenario.id,
|
||||
battleTitle: seventhScenario.title,
|
||||
outcome: 'victory',
|
||||
turnNumber: 7,
|
||||
rewardGold: 180,
|
||||
defeatedEnemies: 5,
|
||||
totalEnemies: 8,
|
||||
objectives: [],
|
||||
units: seventhAlliedUnits,
|
||||
bonds: seventhScenario.bonds.map((bond) => ({ ...bond, battleExp: 0 })),
|
||||
itemRewards: seventhEquipmentRewards,
|
||||
campaignRewards: { supplies: [], equipment: seventhEquipmentRewards, reputation: [], recruits: seventhRecruitRewards, unlocks: [] },
|
||||
completedCampDialogues: [],
|
||||
completedCampVisits: [],
|
||||
createdAt: '2026-07-03T11:00:00.000Z'
|
||||
};
|
||||
setFirstBattleReport(seventhBattleReport);
|
||||
setFirstBattleReport(seventhBattleReport);
|
||||
const repeatedRecruitSettlement = getCampaignState();
|
||||
const repeatedRecruitRosterIds = repeatedRecruitSettlement.roster.map((unit) => unit.id);
|
||||
assert(
|
||||
seventhRecruitRewards.every((recruit) => repeatedRecruitRosterIds.includes(recruit.unitId)) &&
|
||||
seventhRecruitRewards.every((recruit) => repeatedRecruitRosterIds.filter((unitId) => unitId === recruit.unitId).length === 1) &&
|
||||
repeatedRecruitSettlement.battleHistory[seventhScenario.id]?.campaignRewards?.recruits.length === seventhRecruitRewards.length,
|
||||
`Expected campaign recruit rewards to merge from templates once during repeated settlement: ${JSON.stringify(repeatedRecruitSettlement)}`
|
||||
);
|
||||
|
||||
storage.clear();
|
||||
storage.set(
|
||||
campaignStorageKey,
|
||||
|
||||
Reference in New Issue
Block a user