diff --git a/apps/api/src/services/prestige.ts b/apps/api/src/services/prestige.ts index 8f40a35..3cd69af 100644 --- a/apps/api/src/services/prestige.ts +++ b/apps/api/src/services/prestige.ts @@ -5,6 +5,7 @@ * @author Naomi Carrigan */ /* eslint-disable max-lines-per-function -- buildPostPrestigeState requires constructing a large composite state object */ +/* eslint-disable complexity -- buildPostPrestigeState has many optional fields that each add a branch point */ import { initialGameState } from "../data/initialState.js"; import { defaultPrestigeUpgrades } from "../data/prestigeUpgrades.js"; import type { @@ -239,11 +240,20 @@ const buildPostPrestigeState = ( const prestigeState: GameState = { ...freshState, + // Achievements are permanent — earned achievements survive all prestiges achievements: currentState.achievements, + + /* + * Preserve automation preferences across prestige — the player explicitly + * opted into these settings and would not expect them to silently reset. + */ + autoBoss: currentState.autoBoss ?? false, + + autoQuest: currentState.autoQuest ?? false, // Boss statuses reset for gameplay, but first-kill claimed flag is preserved - bosses: bossesWithBountyClaimed, - lastTickAt: Date.now(), + bosses: bossesWithBountyClaimed, + lastTickAt: Date.now(), /* * Fold current-run totals into lifetime stats so the GameState reflects