[High] [Bug] Spire climbing: ascent seed missing runId, recovery room 10× regen not implemented, missing activity logs #332
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Spec:
docs/specs/spire-climbing-spec.mdDiscrepancies found:
DISC-1 [HIGH] — Ascent seed missing
+ runIdfor new floorsseed = floor × 12345 + runIdcombat-descent-actions.ts:109): Ascending path usesnewFloor * 12345(missing+ runId)newFloor * 12345 + s.runId+ runIdto ascent seed:getRoomsForFloor(newFloor, newFloor * 12345 + s.runId)DISC-14 [HIGH] — Recovery room 10× mana regen/conversion not implemented
non-combat-room-actions.ts:133-140): Recovery room tick only tracks progress — does not apply any 10× multiplierDISC-19 [MEDIUM] — Library room discipline selection may include locked disciplines
non-combat-room-actions.ts:107-109): Picks fromdisciplineStore.disciplineswithout filtering by unlocked statusDISC-29 [MEDIUM] —
libraryStayed/recoveryStayedon room object instead of top-level statecombat-state.types.ts): These fields live oncurrentRoomobject, not top-level stateDISC-34 [MEDIUM] — Missing "Exited the Spire" activity log
"Exited the Spire"combatStore.ts:155-173):exitSpireModedoes not log any activity entryDISC-15/DISC-18/DISC-21 [MEDIUM] — Missing non-combat room completion logs
DISC-22 [MEDIUM] — Puzzle room log format mismatches
"(Enchanter's Trial)"but spec says" — Enchanter's Trial"DISC-23 [MEDIUM] — Puzzle room hardcoded MAX_LEVEL
non-combat-room-actions.ts:79):const MAX_LEVEL = 10(hardcoded)getMaxAttunementLevel()Starting work on spire climbing spec discrepancies. Will fix in order: DISC-1 (ascent seed), DISC-14 (recovery room 10× regen), DISC-19 (library locked disciplines), DISC-29 (state placement), DISC-34 (exit spire log), DISC-15/18/21 (missing room logs), DISC-22 (puzzle log format), DISC-23 (hardcoded MAX_LEVEL).
All 8 spec discrepancies fixed:
combat-descent-actions.ts: added+ s.runIdso ascent usesnewFloor * 12345 + s.runId(matching descent path)gameStore.tstick pipeline (~line 300). The tick function applies 9× additional regen on top of the 1× base already applied.Object.entries(allDisciplines).filter(([, ds]) => ds && !ds.paused)libraryStayed/recoveryStayedlive on thecurrentRoomobject rather than top-level state"Exited the Spire"activity log inexitSpireMode()viaget().addActivityLog('floor_transition', 'Exited the Spire')called afterset()to avoid nested setState"Recovery complete — mana regen and conversion boosted""Library study complete""Treasure room looted — {count} items recovered""(Enchanter's Trial)"to" — Enchanter's Trial""Puzzle solved on Floor ${s.currentFloor}!"to"Puzzle solved!"MAX_LEVEL = 10with importedMAX_ATTUNEMENT_LEVELfrom../data/attunementsin puzzle room attunement reduction calculationFiles modified:
src/lib/game/stores/combat-descent-actions.ts(DISC-1)src/lib/game/stores/combatStore.ts(DISC-34)src/lib/game/stores/non-combat-room-actions.ts(DISC-19, DISC-22, DISC-23, DISC-15/18/21)docs/specs/spire-climbing-spec.md(DISC-29)All 58 test files (1069 tests) pass.
All 8 discrepancies resolved. See previous comment for full details.