fix: guard claimedMilestones undefined on v1 saves
Some checks failed
CI/CD — Build & Deploy / Build & Deploy (push) Failing after 19s
Some checks failed
CI/CD — Build & Deploy / Build & Deploy (push) Failing after 19s
Saves loaded before migrateSave runs (or stale localStorage) can have claimedMilestones undefined — guard with ?? [] in all accessors.
This commit is contained in:
@@ -186,8 +186,9 @@ export function computePrestigeDna(lifetimeTadpoles: number, prestigeCount: numb
|
||||
|
||||
// Milestones disponibles mais pas encore réclamés
|
||||
export function getClaimableMilestones(state: GameState): PrestigeMilestone[] {
|
||||
const claimed = state.claimedMilestones ?? [];
|
||||
return PRESTIGE_MILESTONES.filter(
|
||||
(m) => state.prestigeCount >= m.threshold && !state.claimedMilestones.includes(m.id)
|
||||
(m) => state.prestigeCount >= m.threshold && !claimed.includes(m.id)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -201,11 +202,12 @@ export function claimMilestone(state: GameState, milestoneId: string): GameState
|
||||
const milestone = PRESTIGE_MILESTONES.find((m) => m.id === milestoneId);
|
||||
if (!milestone) return null;
|
||||
if (state.prestigeCount < milestone.threshold) return null;
|
||||
if (state.claimedMilestones.includes(milestoneId)) return null;
|
||||
const claimed = state.claimedMilestones ?? [];
|
||||
if (claimed.includes(milestoneId)) return null;
|
||||
|
||||
let newState = {
|
||||
...state,
|
||||
claimedMilestones: [...state.claimedMilestones, milestoneId],
|
||||
claimedMilestones: [...claimed, milestoneId],
|
||||
};
|
||||
|
||||
// Appliquer la récompense
|
||||
@@ -224,13 +226,13 @@ export function claimMilestone(state: GameState, milestoneId: string): GameState
|
||||
|
||||
// Bonus gameplay cumulés depuis les milestones réclamés
|
||||
export function getMilestoneStartNid(state: GameState): number {
|
||||
const claimed = state.claimedMilestones;
|
||||
const claimed = state.claimedMilestones ?? [];
|
||||
if (claimed.includes("milestone_5")) return 1; // 1 Nid gratuit
|
||||
return 0;
|
||||
}
|
||||
|
||||
export function getMilestoneOfflineBonus(state: GameState): number {
|
||||
const claimed = state.claimedMilestones;
|
||||
const claimed = state.claimedMilestones ?? [];
|
||||
if (claimed.includes("milestone_15")) return 0.05; // +5% offline cap
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user