diff --git a/docs/circular-deps.txt b/docs/circular-deps.txt index 354ba39..bf2494b 100644 --- a/docs/circular-deps.txt +++ b/docs/circular-deps.txt @@ -1,8 +1,10 @@ # Circular Dependencies -Generated: 2026-05-18T17:38:26.640Z -Found: 1 circular chain(s) — these MUST be fixed before modifying involved files. +Generated: 2026-05-18T18:09:58.620Z +Found: 3 circular chain(s) — these MUST be fixed before modifying involved files. 1. Processed 123 files (1.3s) (29 warnings) +2. 1) data/equipment/index.ts > data/equipment/utils.ts +3. 2) data/golems/index.ts > data/golems/utils.ts ## How to fix 1. Identify which import in the chain can be extracted to a shared types/utils file. diff --git a/docs/dependency-graph.json b/docs/dependency-graph.json index 5f18cc8..384bc6a 100644 --- a/docs/dependency-graph.json +++ b/docs/dependency-graph.json @@ -1,6 +1,6 @@ { "_meta": { - "generated": "2026-05-18T17:38:25.120Z", + "generated": "2026-05-18T18:09:57.081Z", "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." }, @@ -21,12 +21,15 @@ "constants/guardians.ts", "constants/prestige.ts", "constants/rooms.ts", - "constants/spells.ts" + "constants/spells.ts", + "types/game.ts" ], "constants/prestige.ts": [ "types.ts" ], - "constants/rooms.ts": [], + "constants/rooms.ts": [ + "types/game.ts" + ], "constants/spells-modules/advanced-spells.ts": [ "constants/elements.ts", "types.ts" @@ -255,6 +258,7 @@ "data/enchantments/spell-effects/types.ts" ], "data/enchantments/spell-effects/index.ts": [ + "data/enchantment-types.ts", "data/enchantments/spell-effects/basic-spells.ts", "data/enchantments/spell-effects/lightning-spells.ts", "data/enchantments/spell-effects/metal-spells.ts", @@ -278,7 +282,10 @@ "data/enchantments/spell-effects/tier3-spells.ts": [ "data/enchantments/spell-effects/types.ts" ], - "data/enchantments/spell-effects/types.ts": [], + "data/enchantments/spell-effects/types.ts": [ + "data/enchantment-types.ts", + "data/equipment/index.ts" + ], "data/enchantments/utility-effects.ts": [ "data/enchantment-types.ts", "data/equipment/index.ts" @@ -323,17 +330,11 @@ "data/equipment/swords.ts": [ "data/equipment/types.ts" ], - "data/equipment/types.ts": [], + "data/equipment/types.ts": [ + "types/equipmentSlot.ts" + ], "data/equipment/utils.ts": [ - "data/equipment/accessories.ts", - "data/equipment/body.ts", - "data/equipment/casters.ts", - "data/equipment/catalysts.ts", - "data/equipment/feet.ts", - "data/equipment/hands.ts", - "data/equipment/head.ts", - "data/equipment/shields.ts", - "data/equipment/swords.ts", + "data/equipment/index.ts", "data/equipment/types.ts" ], "data/golems/base-golems.ts": [ @@ -354,9 +355,7 @@ ], "data/golems/types.ts": [], "data/golems/utils.ts": [ - "data/golems/base-golems.ts", - "data/golems/elemental-golems.ts", - "data/golems/hybrid-golems.ts", + "data/golems/index.ts", "data/golems/types.ts" ], "data/loot-drops.ts": [ @@ -524,7 +523,9 @@ "types/elements.ts" ], "types/elements.ts": [], - "types/equipment.ts": [], + "types/equipment.ts": [ + "types/equipmentSlot.ts" + ], "types/equipmentSlot.ts": [], "types/game.ts": [ "types/attunements.ts", @@ -535,6 +536,7 @@ "types/index.ts": [ "types/attunements.ts", "types/elements.ts", + "types/equipment.ts", "types/equipmentSlot.ts", "types/game.ts", "types/spells.ts" diff --git a/docs/project-structure.txt b/docs/project-structure.txt index afffcb2..e278a03 100644 --- a/docs/project-structure.txt +++ b/docs/project-structure.txt @@ -204,6 +204,7 @@ Mana-Loop/ │ │ │ │ ├── spell-effects/ │ │ │ │ │ ├── basic-spells.ts │ │ │ │ │ ├── index.ts +│ │ │ │ │ ├── legendary-spells.ts │ │ │ │ │ ├── lightning-spells.ts │ │ │ │ │ ├── metal-spells.ts │ │ │ │ │ ├── sand-spells.ts diff --git a/src/lib/game/data/enchantments/spell-effects/basic-spells.ts b/src/lib/game/data/enchantments/spell-effects/basic-spells.ts index 26d8272..4025abc 100644 --- a/src/lib/game/data/enchantments/spell-effects/basic-spells.ts +++ b/src/lib/game/data/enchantments/spell-effects/basic-spells.ts @@ -117,6 +117,16 @@ export const BASIC_SPELL_EFFECTS: Record = { allowedEquipmentCategories: ALL_CASTER, effect: { type: 'spell', spellId: 'drain' } }, + spell_rotTouch: { + id: 'spell_rotTouch', + name: 'Rot Touch', + description: 'Grants the ability to cast Rot Touch (14 death damage)', + category: 'spell', + baseCapacityCost: 80, + maxStacks: 1, + allowedEquipmentCategories: ALL_CASTER, + effect: { type: 'spell', spellId: 'rotTouch' } + }, // Additional Tier 1 Spells spell_windSlash: { diff --git a/src/lib/game/data/enchantments/spell-effects/index.ts b/src/lib/game/data/enchantments/spell-effects/index.ts index bfe5c42..9ea3f59 100644 --- a/src/lib/game/data/enchantments/spell-effects/index.ts +++ b/src/lib/game/data/enchantments/spell-effects/index.ts @@ -12,6 +12,7 @@ import { METAL_SPELL_EFFECTS } from './metal-spells'; import { SAND_SPELL_EFFECTS } from './sand-spells'; import { TIER2_SPELL_EFFECTS } from './tier2-spells'; import { TIER3_SPELL_EFFECTS } from './tier3-spells'; +import { LEGENDARY_SPELL_EFFECTS } from './legendary-spells'; // Combine all spell effects into SPELL_EFFECTS export const SPELL_EFFECTS = { @@ -21,4 +22,5 @@ export const SPELL_EFFECTS = { ...SAND_SPELL_EFFECTS, ...TIER2_SPELL_EFFECTS, ...TIER3_SPELL_EFFECTS, + ...LEGENDARY_SPELL_EFFECTS, }; diff --git a/src/lib/game/data/enchantments/spell-effects/legendary-spells.ts b/src/lib/game/data/enchantments/spell-effects/legendary-spells.ts new file mode 100644 index 0000000..6af52ae --- /dev/null +++ b/src/lib/game/data/enchantments/spell-effects/legendary-spells.ts @@ -0,0 +1,38 @@ +// ─── Legendary Spell Effects ─────────────────────────────────── +// Legendary spells - Tier 4, exotic elements (stellar, void, crystal) + +import type { EnchantmentEffectDef } from './types'; +import { ALL_CASTER } from './types'; + +export const LEGENDARY_SPELL_EFFECTS: Record = { + spell_stellarNova: { + id: 'spell_stellarNova', + name: 'Stellar Nova', + description: 'Grants the ability to cast Stellar Nova (500 stellar damage)', + category: 'spell', + baseCapacityCost: 600, + maxStacks: 1, + allowedEquipmentCategories: ALL_CASTER, + effect: { type: 'spell', spellId: 'stellarNova' } + }, + spell_voidCollapse: { + id: 'spell_voidCollapse', + name: 'Void Collapse', + description: 'Grants the ability to cast Void Collapse (450 void damage)', + category: 'spell', + baseCapacityCost: 550, + maxStacks: 1, + allowedEquipmentCategories: ALL_CASTER, + effect: { type: 'spell', spellId: 'voidCollapse' } + }, + spell_crystalShatter: { + id: 'spell_crystalShatter', + name: 'Crystal Shatter', + description: 'Grants the ability to cast Crystal Shatter (400 crystal damage)', + category: 'spell', + baseCapacityCost: 500, + maxStacks: 1, + allowedEquipmentCategories: ALL_CASTER, + effect: { type: 'spell', spellId: 'crystalShatter' } + }, +}; diff --git a/src/lib/game/data/enchantments/spell-effects/tier2-spells.ts b/src/lib/game/data/enchantments/spell-effects/tier2-spells.ts index 71d4e42..7a01de2 100644 --- a/src/lib/game/data/enchantments/spell-effects/tier2-spells.ts +++ b/src/lib/game/data/enchantments/spell-effects/tier2-spells.ts @@ -126,4 +126,14 @@ export const TIER2_SPELL_EFFECTS: Record = { allowedEquipmentCategories: ALL_CASTER, effect: { type: 'spell', spellId: 'shadowStorm' } }, + spell_soulRend: { + id: 'spell_soulRend', + name: 'Soul Rend', + description: 'Grants the ability to cast Soul Rend (50 death damage)', + category: 'spell', + baseCapacityCost: 170, + maxStacks: 1, + allowedEquipmentCategories: ALL_CASTER, + effect: { type: 'spell', spellId: 'soulRend' } + }, }; diff --git a/src/lib/game/data/enchantments/spell-effects/tier3-spells.ts b/src/lib/game/data/enchantments/spell-effects/tier3-spells.ts index a707816..d78c3ad 100644 --- a/src/lib/game/data/enchantments/spell-effects/tier3-spells.ts +++ b/src/lib/game/data/enchantments/spell-effects/tier3-spells.ts @@ -34,4 +34,44 @@ export const TIER3_SPELL_EFFECTS: Record = { allowedEquipmentCategories: ALL_CASTER, effect: { type: 'spell', spellId: 'meteorStrike' } }, + spell_cosmicStorm: { + id: 'spell_cosmicStorm', + name: 'Cosmic Storm', + description: 'Grants the ability to cast Cosmic Storm (200 air damage)', + category: 'spell', + baseCapacityCost: 370, + maxStacks: 1, + allowedEquipmentCategories: ALL_CASTER, + effect: { type: 'spell', spellId: 'cosmicStorm' } + }, + spell_heavenLight: { + id: 'spell_heavenLight', + name: "Heaven's Light", + description: 'Grants the ability to cast Heaven\'s Light (240 light damage)', + category: 'spell', + baseCapacityCost: 390, + maxStacks: 1, + allowedEquipmentCategories: ALL_CASTER, + effect: { type: 'spell', spellId: 'heavenLight' } + }, + spell_oblivion: { + id: 'spell_oblivion', + name: 'Oblivion', + description: 'Grants the ability to cast Oblivion (230 dark damage)', + category: 'spell', + baseCapacityCost: 385, + maxStacks: 1, + allowedEquipmentCategories: ALL_CASTER, + effect: { type: 'spell', spellId: 'oblivion' } + }, + spell_deathMark: { + id: 'spell_deathMark', + name: 'Death Mark', + description: 'Grants the ability to cast Death Mark (200 death damage)', + category: 'spell', + baseCapacityCost: 370, + maxStacks: 1, + allowedEquipmentCategories: ALL_CASTER, + effect: { type: 'spell', spellId: 'deathMark' } + }, };