refactor: replace static guardians with elemental progression system

Replace the old GUARDIANS constant (arbitrary floor assignments) with a proper
elemental → compound → exotic → combo progression:

- Floors 10-70:  Base elements (Fire, Water, Air, Earth, Light, Dark, Death)
- Floor 80:       Utility element (Transference)
- Floors 90-110:  Compound elements (Metal, Sand, Lightning)
- Floors 120-140: Exotic elements (Crystal, Stellar, Void)
- Floor 150+:     Procedural combo guardians (scaling with floor)

Key changes:
- Create guardian-data.ts with BASE_GUARDIANS (14 static entries)
- Simplify guardian-encounters.ts to only handle procedural combos (150+)
- getGuardianForFloor() now generates names for empty-name entries
- Remove old compound/exotic duplicate definitions from guardian-encounters.ts
- Update spire-utils.test.ts to test the new progression
- Update SpireSummaryTab.test.ts floor counts (14 static + 10 combo = 24)

All 89 guardian-related tests pass. 3 pre-existing failures in
room-utils-floor-state.test.ts are unrelated (speed room / floor 0 edge cases).
This commit is contained in:
2026-05-23 17:02:48 +02:00
parent 513cab81a3
commit 4ee6222b0e
6 changed files with 282 additions and 303 deletions
+14 -7
View File
@@ -1,6 +1,6 @@
{
"_meta": {
"generated": "2026-05-23T12:53:15.385Z",
"generated": "2026-05-23T14:09:22.569Z",
"description": "Import dependency graph for src/lib/game. Keys are files, values are arrays of files they import.",
"usage": "To find what a file affects, search for its path in the VALUES. To find what a file depends on, look at its KEY entry."
},
@@ -12,13 +12,9 @@
"constants/elements.ts": [
"types.ts"
],
"constants/guardians.ts": [
"types.ts"
],
"constants/index.ts": [
"constants/core.ts",
"constants/elements.ts",
"constants/guardians.ts",
"constants/prestige.ts",
"constants/rooms.ts",
"constants/spells.ts",
@@ -358,8 +354,11 @@
"data/golems/golems-data.ts",
"data/golems/types.ts"
],
"data/guardian-data.ts": [
"types.ts"
],
"data/guardian-encounters.ts": [
"constants/guardians.ts",
"data/guardian-data.ts",
"types.ts"
],
"data/loot-drops.ts": [
@@ -392,6 +391,7 @@
"effects/upgrade-effects.types.ts": [],
"hooks/useGameDerived.ts": [
"constants.ts",
"data/guardian-encounters.ts",
"effects/special-effects.ts",
"effects/upgrade-effects.ts",
"stores/combatStore.ts",
@@ -408,6 +408,7 @@
],
"stores/combat-actions.ts": [
"constants.ts",
"data/guardian-encounters.ts",
"effects/discipline-effects.ts",
"stores/combat-state.types.ts",
"types.ts",
@@ -497,6 +498,7 @@
"stores/gameStore.ts": [
"constants.ts",
"data/attunements.ts",
"data/guardian-encounters.ts",
"effects.ts",
"effects/discipline-effects.ts",
"effects/special-effects.ts",
@@ -537,6 +539,7 @@
],
"stores/prestigeStore.ts": [
"constants.ts",
"data/guardian-encounters.ts",
"types.ts",
"utils/result.ts",
"utils/safe-persist.ts"
@@ -593,6 +596,8 @@
"utils/combat-utils.ts": [
"constants.ts",
"data/enchantment-effects.ts",
"data/guardian-data.ts",
"data/guardian-encounters.ts",
"types.ts",
"utils/mana-utils.ts"
],
@@ -610,7 +615,8 @@
"utils/floor-utils.ts"
],
"utils/floor-utils.ts": [
"constants.ts"
"constants.ts",
"data/guardian-encounters.ts"
],
"utils/formatting.ts": [],
"utils/index.ts": [
@@ -633,6 +639,7 @@
"utils/result.ts": [],
"utils/room-utils.ts": [
"constants.ts",
"data/guardian-encounters.ts",
"types.ts",
"utils/enemy-utils.ts",
"utils/floor-utils.ts"