Stabilize save retry flow
This commit is contained in:
@@ -2789,8 +2789,8 @@ function applyScenarioAllyReadiness(unit: UnitData) {
|
||||
function configureBattleScenario(scenario: BattleScenarioDefinition) {
|
||||
battleScenario = scenario;
|
||||
battleMap = scenario.map;
|
||||
battleUnits = scenario.units;
|
||||
battleBonds = scenario.bonds;
|
||||
battleUnits = scenario.units.map(cloneUnitData);
|
||||
battleBonds = scenario.bonds.map(cloneBattleBond);
|
||||
battleSaveStorageKey = `heros-web:battle:${scenario.id}`;
|
||||
initialBattleUnits = battleUnits.map(cloneUnitData);
|
||||
initialBattleBonds = battleBonds.map(cloneBattleBond);
|
||||
|
||||
@@ -475,7 +475,15 @@ export function setFirstBattleReport(report: FirstBattleReport) {
|
||||
const stepRule = campaignBattleSteps[battleId] ?? campaignBattleSteps['first-battle-zhuo-commandery'];
|
||||
const victoryStep: CampaignStep = stepRule.victory;
|
||||
const retryStep: CampaignStep = stepRule.retry;
|
||||
state.step = reportClone.outcome === 'victory' ? victoryStep : retryStep;
|
||||
if (reportClone.outcome !== 'victory') {
|
||||
state.step = retryStep;
|
||||
state.latestBattleId = battleId;
|
||||
state.updatedAt = new Date().toISOString();
|
||||
persistCampaignState(state);
|
||||
return;
|
||||
}
|
||||
|
||||
state.step = victoryStep;
|
||||
state.gold = Math.max(0, state.gold - (previousSettlement?.rewardGold ?? 0) + reportClone.rewardGold);
|
||||
state.roster = mergeRosterProgress(state.roster, reportClone.units.filter((unit) => unit.faction === 'ally'));
|
||||
state.bonds = reportClone.bonds.map(cloneBondSnapshot);
|
||||
|
||||
Reference in New Issue
Block a user