feat: v0.6.0 balance pass, quest-gated bosses, and achievement fixes

This commit is contained in:
2026-07-17 01:02:12 -05:00
parent 9bb1d01d2b
commit 5928eb73d8
49 changed files with 1836 additions and 528 deletions
+15 -2
View File
@@ -120,9 +120,9 @@ describe("calculateRunestones", () => {
});
it("caps base runestones before multipliers", () => {
// cbrt(9_261_000_000 / 1_000_000) = cbrt(9261) = 21 → 21 × 20 = 420, capped at 200
// cbrt(9_261_000_000 / 1_000_000) = cbrt(9261) = 21 → 21 × 20 = 420, capped at 400
const result = calculateRunestones({ totalGoldEarned: 9_261_000_000, prestigeCount: 0, purchasedUpgradeIds: [] });
expect(result).toBe(200);
expect(result).toBe(400);
});
});
@@ -229,6 +229,19 @@ describe("buildPostPrestigeState", () => {
expect(prestigeState.story).toEqual(story);
});
it("persists active companion selection across prestige", () => {
const companions = { unlockedCompanionIds: ["lyra", "sera"], activeCompanionId: "lyra" };
const state = makeMinimalState({ companions });
const { prestigeState } = buildPostPrestigeState(state, "Tester");
expect(prestigeState.companions).toEqual(companions);
});
it("falls back to fresh companion state when currentState.companions is undefined", () => {
const state = makeMinimalState({ companions: undefined });
const { prestigeState } = buildPostPrestigeState(state, "Tester");
expect(prestigeState.companions).toEqual({ activeCompanionId: null, unlockedCompanionIds: [] });
});
it("persists transcendence from current state", () => {
const transcendence = {
count: 1, echoes: 10, purchasedUpgradeIds: [],