feat: unify guardian system — merge static GUARDIANS with extended procedural guardians in Pacts tab

- guardian-encounters.ts: add getGuardianForFloor() and getAllGuardianFloors()
  unified lookup functions that merge static GUARDIANS (floors 10-100) with
  extended system (compound 110, exotic 120-140, combo 150+)
- GuardianPactsTab.tsx: use unified system, update tiers to cover all floors
  (Early 10-40, Mid 50-80, Late 90-100, Compound 110, Exotic 120-140,
  Transcendent 150+)
- guardian-pacts-components.tsx: handle combo guardians with dual-element
  display (symbols + names + '✦ Combo' badge)
- docs/circular-deps.txt, docs/dependency-graph.json: auto-generated updates
- craftingStore.ts: extract initial equipment instances to crafting-initial-state.ts
This commit is contained in:
2026-05-23 13:46:17 +02:00
parent 5bc05ded6f
commit feca7549ad
7 changed files with 171 additions and 78 deletions
+29 -4
View File
@@ -264,11 +264,36 @@ export function getExtendedGuardian(floor: number): GuardianDef | null {
return null;
}
// All guardian floors (extended)
// ─── Unified Guardian System ─────────────────────────────────────────────────
// Merges the static GUARDIANS constant (floors 10100) with the extended
// procedural system (compound 110, exotic 120140, combo 150+).
// For floors 90100 the static definitions take precedence (canonical names).
import { GUARDIANS } from '../constants/guardians';
/** Get the guardian for any floor, merging static and extended systems. */
export function getGuardianForFloor(floor: number): GuardianDef | null {
// Static GUARDIANS take precedence for floors 10100 (canonical definitions)
if (GUARDIANS[floor]) {
return { ...GUARDIANS[floor] };
}
// Extended system for floors beyond 100 (and compound floors not in GUARDIANS)
return getExtendedGuardian(floor);
}
/** All guardian floors — merged from static + extended. */
export function getAllGuardianFloors(): number[] {
const staticFloors = Object.keys(GUARDIANS).map(Number);
const extendedFloors = [110, 120, 130, 140, ...Array.from({ length: 10 }, (_, i) => 150 + i * 10)];
const all = new Set([...staticFloors, ...extendedFloors]);
return Array.from(all).sort((a, b) => a - b);
}
// All guardian floors (extended — kept for backwards compatibility)
export const ALL_GUARDIAN_FLOORS: number[] = [
10, 20, 30, 40, 50, 60, 80, 100, // Original
90, 110, // Compound
120, 130, 140, // Exotic
10, 20, 30, 40, 50, 60, 80, 90, 100, // Original (all static floors)
110, // Compound (90,100 already in static)
120, 130, 140, // Exotic
...Array.from({ length: 10 }, (_, i) => 150 + i * 10), // Combo
].sort((a, b) => a - b);