fix: preserve all-time stats, achievements, and boss first-kill across prestige #47

Merged
naomi merged 3 commits from fix/prestige-resets into main 2026-03-09 21:53:59 -07:00
2 changed files with 17 additions and 1 deletions
Showing only changes of commit f2d82d58fc - Show all commits
+3 -1
View File
@@ -225,7 +225,9 @@ const buildPostPrestigeState = (
const prestigeState: GameState = {
...freshState,
lastTickAt: Date.now(),
// Achievements are permanent — earned achievements survive all prestiges
achievements: currentState.achievements,
lastTickAt: Date.now(),
/*
* Fold current-run totals into lifetime stats so the GameState reflects
+14
View File
@@ -320,6 +320,20 @@ describe("buildPostPrestigeState", () => {
expect(prestigeState.player.lifetimeAdventurersRecruited).toBe(5);
});
it("preserves achievements from current state across prestige", () => {
const achievement = {
description: "Did a thing",
id: "ach_persisted",
name: "Achiever",
requirement: 1,
type: "totalClicks" as const,
unlockedAt: Date.now(),
};
const state = makeMinimalState({ achievements: [ achievement ] as GameState["achievements"] });
const { prestigeState } = buildPostPrestigeState(state, "Tester");
expect(prestigeState.achievements).toEqual([ achievement ]);
});
it("accumulates unlocked achievements into lifetime total", () => {
const achievement = {
description: "Did a thing",