fix: add missing enchantment effects for rotTouch, soulRend, master, and legendary spells
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m18s

- Add spell_rotTouch to BASIC_SPELL_EFFECTS (death element Tier 1)
- Add spell_soulRend to TIER2_SPELL_EFFECTS (death element Tier 2)
- Add spell_cosmicStorm, spell_heavenLight, spell_oblivion, spell_deathMark to TIER3_SPELL_EFFECTS (master spells)
- Create legendary-spells.ts with spell_stellarNova, spell_voidCollapse, spell_crystalShatter (legendary spells)
- Update spell-effects/index.ts to include LEGENDARY_SPELL_EFFECTS in SPELL_EFFECTS

Closes #41
This commit is contained in:
2026-05-18 20:30:46 +02:00
parent 594eec1ab4
commit a9918e83a6
8 changed files with 125 additions and 20 deletions
+4 -2
View File
@@ -1,8 +1,10 @@
# Circular Dependencies # Circular Dependencies
Generated: 2026-05-18T17:38:26.640Z Generated: 2026-05-18T18:09:58.620Z
Found: 1 circular chain(s) — these MUST be fixed before modifying involved files. Found: 3 circular chain(s) — these MUST be fixed before modifying involved files.
1. Processed 123 files (1.3s) (29 warnings) 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 ## How to fix
1. Identify which import in the chain can be extracted to a shared types/utils file. 1. Identify which import in the chain can be extracted to a shared types/utils file.
+20 -18
View File
@@ -1,6 +1,6 @@
{ {
"_meta": { "_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.", "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." "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/guardians.ts",
"constants/prestige.ts", "constants/prestige.ts",
"constants/rooms.ts", "constants/rooms.ts",
"constants/spells.ts" "constants/spells.ts",
"types/game.ts"
], ],
"constants/prestige.ts": [ "constants/prestige.ts": [
"types.ts" "types.ts"
], ],
"constants/rooms.ts": [], "constants/rooms.ts": [
"types/game.ts"
],
"constants/spells-modules/advanced-spells.ts": [ "constants/spells-modules/advanced-spells.ts": [
"constants/elements.ts", "constants/elements.ts",
"types.ts" "types.ts"
@@ -255,6 +258,7 @@
"data/enchantments/spell-effects/types.ts" "data/enchantments/spell-effects/types.ts"
], ],
"data/enchantments/spell-effects/index.ts": [ "data/enchantments/spell-effects/index.ts": [
"data/enchantment-types.ts",
"data/enchantments/spell-effects/basic-spells.ts", "data/enchantments/spell-effects/basic-spells.ts",
"data/enchantments/spell-effects/lightning-spells.ts", "data/enchantments/spell-effects/lightning-spells.ts",
"data/enchantments/spell-effects/metal-spells.ts", "data/enchantments/spell-effects/metal-spells.ts",
@@ -278,7 +282,10 @@
"data/enchantments/spell-effects/tier3-spells.ts": [ "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/enchantments/spell-effects/types.ts": [
"data/enchantment-types.ts",
"data/equipment/index.ts"
],
"data/enchantments/utility-effects.ts": [ "data/enchantments/utility-effects.ts": [
"data/enchantment-types.ts", "data/enchantment-types.ts",
"data/equipment/index.ts" "data/equipment/index.ts"
@@ -323,17 +330,11 @@
"data/equipment/swords.ts": [ "data/equipment/swords.ts": [
"data/equipment/types.ts" "data/equipment/types.ts"
], ],
"data/equipment/types.ts": [], "data/equipment/types.ts": [
"types/equipmentSlot.ts"
],
"data/equipment/utils.ts": [ "data/equipment/utils.ts": [
"data/equipment/accessories.ts", "data/equipment/index.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/types.ts" "data/equipment/types.ts"
], ],
"data/golems/base-golems.ts": [ "data/golems/base-golems.ts": [
@@ -354,9 +355,7 @@
], ],
"data/golems/types.ts": [], "data/golems/types.ts": [],
"data/golems/utils.ts": [ "data/golems/utils.ts": [
"data/golems/base-golems.ts", "data/golems/index.ts",
"data/golems/elemental-golems.ts",
"data/golems/hybrid-golems.ts",
"data/golems/types.ts" "data/golems/types.ts"
], ],
"data/loot-drops.ts": [ "data/loot-drops.ts": [
@@ -524,7 +523,9 @@
"types/elements.ts" "types/elements.ts"
], ],
"types/elements.ts": [], "types/elements.ts": [],
"types/equipment.ts": [], "types/equipment.ts": [
"types/equipmentSlot.ts"
],
"types/equipmentSlot.ts": [], "types/equipmentSlot.ts": [],
"types/game.ts": [ "types/game.ts": [
"types/attunements.ts", "types/attunements.ts",
@@ -535,6 +536,7 @@
"types/index.ts": [ "types/index.ts": [
"types/attunements.ts", "types/attunements.ts",
"types/elements.ts", "types/elements.ts",
"types/equipment.ts",
"types/equipmentSlot.ts", "types/equipmentSlot.ts",
"types/game.ts", "types/game.ts",
"types/spells.ts" "types/spells.ts"
+1
View File
@@ -204,6 +204,7 @@ Mana-Loop/
│ │ │ │ ├── spell-effects/ │ │ │ │ ├── spell-effects/
│ │ │ │ │ ├── basic-spells.ts │ │ │ │ │ ├── basic-spells.ts
│ │ │ │ │ ├── index.ts │ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── legendary-spells.ts
│ │ │ │ │ ├── lightning-spells.ts │ │ │ │ │ ├── lightning-spells.ts
│ │ │ │ │ ├── metal-spells.ts │ │ │ │ │ ├── metal-spells.ts
│ │ │ │ │ ├── sand-spells.ts │ │ │ │ │ ├── sand-spells.ts
@@ -117,6 +117,16 @@ export const BASIC_SPELL_EFFECTS: Record<string, EnchantmentEffectDef> = {
allowedEquipmentCategories: ALL_CASTER, allowedEquipmentCategories: ALL_CASTER,
effect: { type: 'spell', spellId: 'drain' } 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 // Additional Tier 1 Spells
spell_windSlash: { spell_windSlash: {
@@ -12,6 +12,7 @@ import { METAL_SPELL_EFFECTS } from './metal-spells';
import { SAND_SPELL_EFFECTS } from './sand-spells'; import { SAND_SPELL_EFFECTS } from './sand-spells';
import { TIER2_SPELL_EFFECTS } from './tier2-spells'; import { TIER2_SPELL_EFFECTS } from './tier2-spells';
import { TIER3_SPELL_EFFECTS } from './tier3-spells'; import { TIER3_SPELL_EFFECTS } from './tier3-spells';
import { LEGENDARY_SPELL_EFFECTS } from './legendary-spells';
// Combine all spell effects into SPELL_EFFECTS // Combine all spell effects into SPELL_EFFECTS
export const SPELL_EFFECTS = { export const SPELL_EFFECTS = {
@@ -21,4 +22,5 @@ export const SPELL_EFFECTS = {
...SAND_SPELL_EFFECTS, ...SAND_SPELL_EFFECTS,
...TIER2_SPELL_EFFECTS, ...TIER2_SPELL_EFFECTS,
...TIER3_SPELL_EFFECTS, ...TIER3_SPELL_EFFECTS,
...LEGENDARY_SPELL_EFFECTS,
}; };
@@ -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<string, EnchantmentEffectDef> = {
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' }
},
};
@@ -126,4 +126,14 @@ export const TIER2_SPELL_EFFECTS: Record<string, EnchantmentEffectDef> = {
allowedEquipmentCategories: ALL_CASTER, allowedEquipmentCategories: ALL_CASTER,
effect: { type: 'spell', spellId: 'shadowStorm' } 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' }
},
}; };
@@ -34,4 +34,44 @@ export const TIER3_SPELL_EFFECTS: Record<string, EnchantmentEffectDef> = {
allowedEquipmentCategories: ALL_CASTER, allowedEquipmentCategories: ALL_CASTER,
effect: { type: 'spell', spellId: 'meteorStrike' } 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' }
},
}; };