Add second battle pursuit chapter

This commit is contained in:
2026-06-22 23:00:10 +09:00
parent ab5870eaa8
commit 3de598511c
10 changed files with 703 additions and 44 deletions

View File

@@ -36,7 +36,7 @@ export type FirstBattleReport = {
createdAt: string;
};
export type CampaignStep = 'new' | 'prologue' | 'first-battle' | 'first-camp' | 'first-victory-story';
export type CampaignStep = 'new' | 'prologue' | 'first-battle' | 'first-camp' | 'first-victory-story' | 'second-battle' | 'second-camp';
export type CampaignUnitProgressSnapshot = {
unitId: string;
@@ -186,13 +186,18 @@ export function setFirstBattleReport(report: FirstBattleReport) {
const reportClone = cloneReport(report);
const battleId = reportClone.battleId;
const previousSettlement = state.battleHistory[battleId];
const completedCampDialogues =
battleId === 'first-battle-zhuo-commandery' ? [...reportClone.completedCampDialogues] : [...state.completedCampDialogues];
reportClone.completedCampDialogues = completedCampDialogues;
state.firstBattleReport = reportClone;
state.step = reportClone.outcome === 'victory' ? 'first-camp' : 'first-battle';
const victoryStep: CampaignStep = battleId === 'second-battle-yellow-turban-pursuit' ? 'second-camp' : 'first-camp';
const retryStep: CampaignStep = battleId === 'second-battle-yellow-turban-pursuit' ? 'second-battle' : 'first-battle';
state.step = reportClone.outcome === 'victory' ? victoryStep : retryStep;
state.gold = Math.max(0, state.gold - (previousSettlement?.rewardGold ?? 0) + reportClone.rewardGold);
state.roster = reportClone.units.filter((unit) => unit.faction === 'ally').map(cloneUnit);
state.bonds = reportClone.bonds.map(cloneBondSnapshot);
state.completedCampDialogues = [...reportClone.completedCampDialogues];
state.completedCampDialogues = completedCampDialogues;
state.inventory = applyRewardDelta(state.inventory, previousSettlement?.itemRewards ?? [], -1);
state.inventory = applyRewardDelta(state.inventory, reportClone.itemRewards, 1);
state.battleHistory[battleId] = createBattleSettlement(reportClone);