diff --git a/scripts/verify-campaign-save-normalization.mjs b/scripts/verify-campaign-save-normalization.mjs index 89c2586..6915eeb 100644 --- a/scripts/verify-campaign-save-normalization.mjs +++ b/scripts/verify-campaign-save-normalization.mjs @@ -30,6 +30,7 @@ try { applyCampBondExp, applyCampVisitReward, getCampaignState, + hasCampaignSave, loadCampaignState, normalizeCampaignSortieItemAssignments, resetCampaignState, @@ -660,6 +661,7 @@ try { storage.set(campaignStorageKey, JSON.stringify({ version: 99, step: 'sixty-sixth-camp' })); const unsupported = loadCampaignState(); assert(unsupported.step === 'new', `Expected unsupported future save version to be ignored: ${JSON.stringify(unsupported)}`); + assert(!hasCampaignSave(), 'Expected unsupported base save without valid slots to be ignored by hasCampaignSave'); storage.clear(); storage.set(campaignStorageKey, JSON.stringify({ version: 99, step: 'sixty-sixth-camp' })); @@ -673,6 +675,7 @@ try { gold: 260 }) ); + assert(hasCampaignSave(), 'Expected valid slotted save fallback to be visible to hasCampaignSave'); const fallback = loadCampaignState(); assert(fallback.step === 'second-camp' && fallback.activeSaveSlot === 2, `Expected valid slotted save fallback: ${JSON.stringify(fallback)}`); diff --git a/src/game/state/campaignState.ts b/src/game/state/campaignState.ts index 4c38f32..f8086e9 100644 --- a/src/game/state/campaignState.ts +++ b/src/game/state/campaignState.ts @@ -568,7 +568,7 @@ export function resetCampaignState() { } export function hasCampaignSave() { - return Boolean(tryStorage()?.getItem(campaignStorageKey) ?? readLatestSlottedCampaignState()); + return Boolean(readStoredCampaignState() ?? readLatestSlottedCampaignState()); } export function listCampaignSaveSlots(): CampaignSaveSlotSummary[] {