474 lines
16 KiB
TypeScript
474 lines
16 KiB
TypeScript
// ─── Spell Enchantment Effects ────────────────────────────────────────────────
|
|
// All spell-related enchantment effects that can be applied to equipment
|
|
|
|
import type { EquipmentCategory } from '../equipment'
|
|
import type { EnchantmentEffectDef } from '../enchantment-types'
|
|
|
|
// Helper to define allowed equipment categories for each effect type
|
|
const ALL_CASTER: EquipmentCategory[] = ['caster']
|
|
|
|
export const SPELL_EFFECTS: Record<string, EnchantmentEffectDef> = {
|
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
// SPELL EFFECTS - Only for CASTER equipment (staves, wands, rods, orbs)
|
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
|
|
// Tier 0 - Basic Spells
|
|
spell_manaBolt: {
|
|
id: 'spell_manaBolt',
|
|
name: 'Mana Bolt',
|
|
description: 'Grants the ability to cast Mana Bolt (5 base damage, raw mana cost)',
|
|
category: 'spell',
|
|
baseCapacityCost: 50,
|
|
maxStacks: 1,
|
|
allowedEquipmentCategories: ALL_CASTER,
|
|
effect: { type: 'spell', spellId: 'manaBolt' }
|
|
},
|
|
spell_manaStrike: {
|
|
id: 'spell_manaStrike',
|
|
name: 'Mana Strike',
|
|
description: 'Grants the ability to cast Mana Strike (8 base damage, raw mana cost)',
|
|
category: 'spell',
|
|
baseCapacityCost: 40,
|
|
maxStacks: 1,
|
|
allowedEquipmentCategories: ALL_CASTER,
|
|
effect: { type: 'spell', spellId: 'manaStrike' }
|
|
},
|
|
|
|
// Tier 1 - Basic Elemental Spells
|
|
spell_fireball: {
|
|
id: 'spell_fireball',
|
|
name: 'Fireball',
|
|
description: 'Grants the ability to cast Fireball (15 fire damage)',
|
|
category: 'spell',
|
|
baseCapacityCost: 80,
|
|
maxStacks: 1,
|
|
allowedEquipmentCategories: ALL_CASTER,
|
|
effect: { type: 'spell', spellId: 'fireball' }
|
|
},
|
|
spell_emberShot: {
|
|
id: 'spell_emberShot',
|
|
name: 'Ember Shot',
|
|
description: 'Grants the ability to cast Ember Shot (10 fire damage, fast cast)',
|
|
category: 'spell',
|
|
baseCapacityCost: 60,
|
|
maxStacks: 1,
|
|
allowedEquipmentCategories: ALL_CASTER,
|
|
effect: { type: 'spell', spellId: 'emberShot' }
|
|
},
|
|
spell_waterJet: {
|
|
id: 'spell_waterJet',
|
|
name: 'Water Jet',
|
|
description: 'Grants the ability to cast Water Jet (12 water damage)',
|
|
category: 'spell',
|
|
baseCapacityCost: 70,
|
|
maxStacks: 1,
|
|
allowedEquipmentCategories: ALL_CASTER,
|
|
effect: { type: 'spell', spellId: 'waterJet' }
|
|
},
|
|
spell_iceShard: {
|
|
id: 'spell_iceShard',
|
|
name: 'Ice Shard',
|
|
description: 'Grants the ability to cast Ice Shard (14 water damage)',
|
|
category: 'spell',
|
|
baseCapacityCost: 75,
|
|
maxStacks: 1,
|
|
allowedEquipmentCategories: ALL_CASTER,
|
|
effect: { type: 'spell', spellId: 'iceShard' }
|
|
},
|
|
spell_gust: {
|
|
id: 'spell_gust',
|
|
name: 'Gust',
|
|
description: 'Grants the ability to cast Gust (10 air damage, fast cast)',
|
|
category: 'spell',
|
|
baseCapacityCost: 60,
|
|
maxStacks: 1,
|
|
allowedEquipmentCategories: ALL_CASTER,
|
|
effect: { type: 'spell', spellId: 'gust' }
|
|
},
|
|
spell_stoneBullet: {
|
|
id: 'spell_stoneBullet',
|
|
name: 'Stone Bullet',
|
|
description: 'Grants the ability to cast Stone Bullet (16 earth damage)',
|
|
category: 'spell',
|
|
baseCapacityCost: 80,
|
|
maxStacks: 1,
|
|
allowedEquipmentCategories: ALL_CASTER,
|
|
effect: { type: 'spell', spellId: 'stoneBullet' }
|
|
},
|
|
spell_lightLance: {
|
|
id: 'spell_lightLance',
|
|
name: 'Light Lance',
|
|
description: 'Grants the ability to cast Light Lance (18 light damage)',
|
|
category: 'spell',
|
|
baseCapacityCost: 95,
|
|
maxStacks: 1,
|
|
allowedEquipmentCategories: ALL_CASTER,
|
|
effect: { type: 'spell', spellId: 'lightLance' }
|
|
},
|
|
spell_shadowBolt: {
|
|
id: 'spell_shadowBolt',
|
|
name: 'Shadow Bolt',
|
|
description: 'Grants the ability to cast Shadow Bolt (16 dark damage)',
|
|
category: 'spell',
|
|
baseCapacityCost: 95,
|
|
maxStacks: 1,
|
|
allowedEquipmentCategories: ALL_CASTER,
|
|
effect: { type: 'spell', spellId: 'shadowBolt' }
|
|
},
|
|
spell_drain: {
|
|
id: 'spell_drain',
|
|
name: 'Drain',
|
|
description: 'Grants the ability to cast Drain (10 death damage)',
|
|
category: 'spell',
|
|
baseCapacityCost: 85,
|
|
maxStacks: 1,
|
|
allowedEquipmentCategories: ALL_CASTER,
|
|
effect: { type: 'spell', spellId: 'drain' }
|
|
},
|
|
|
|
// Tier 2 - Advanced Spells
|
|
spell_inferno: {
|
|
id: 'spell_inferno',
|
|
name: 'Inferno',
|
|
description: 'Grants the ability to cast Inferno (60 fire damage)',
|
|
category: 'spell',
|
|
baseCapacityCost: 180,
|
|
maxStacks: 1,
|
|
allowedEquipmentCategories: ALL_CASTER,
|
|
effect: { type: 'spell', spellId: 'inferno' }
|
|
},
|
|
spell_tidalWave: {
|
|
id: 'spell_tidalWave',
|
|
name: 'Tidal Wave',
|
|
description: 'Grants the ability to cast Tidal Wave (55 water damage)',
|
|
category: 'spell',
|
|
baseCapacityCost: 175,
|
|
maxStacks: 1,
|
|
allowedEquipmentCategories: ALL_CASTER,
|
|
effect: { type: 'spell', spellId: 'tidalWave' }
|
|
},
|
|
spell_hurricane: {
|
|
id: 'spell_hurricane',
|
|
name: 'Hurricane',
|
|
description: 'Grants the ability to cast Hurricane (50 air damage)',
|
|
category: 'spell',
|
|
baseCapacityCost: 170,
|
|
maxStacks: 1,
|
|
allowedEquipmentCategories: ALL_CASTER,
|
|
effect: { type: 'spell', spellId: 'hurricane' }
|
|
},
|
|
spell_earthquake: {
|
|
id: 'spell_earthquake',
|
|
name: 'Earthquake',
|
|
description: 'Grants the ability to cast Earthquake (70 earth damage)',
|
|
category: 'spell',
|
|
baseCapacityCost: 200,
|
|
maxStacks: 1,
|
|
allowedEquipmentCategories: ALL_CASTER,
|
|
effect: { type: 'spell', spellId: 'earthquake' }
|
|
},
|
|
spell_solarFlare: {
|
|
id: 'spell_solarFlare',
|
|
name: 'Solar Flare',
|
|
description: 'Grants the ability to cast Solar Flare (65 light damage)',
|
|
category: 'spell',
|
|
baseCapacityCost: 190,
|
|
maxStacks: 1,
|
|
allowedEquipmentCategories: ALL_CASTER,
|
|
effect: { type: 'spell', spellId: 'solarFlare' }
|
|
},
|
|
spell_voidRift: {
|
|
id: 'spell_voidRift',
|
|
name: 'Void Rift',
|
|
description: 'Grants the ability to cast Void Rift (55 dark damage)',
|
|
category: 'spell',
|
|
baseCapacityCost: 175,
|
|
maxStacks: 1,
|
|
allowedEquipmentCategories: ALL_CASTER,
|
|
effect: { type: 'spell', spellId: 'voidRift' }
|
|
},
|
|
|
|
// Additional Tier 1 Spells
|
|
spell_windSlash: {
|
|
id: 'spell_windSlash',
|
|
name: 'Wind Slash',
|
|
description: 'Grants the ability to cast Wind Slash (12 air damage)',
|
|
category: 'spell',
|
|
baseCapacityCost: 72,
|
|
maxStacks: 1,
|
|
allowedEquipmentCategories: ALL_CASTER,
|
|
effect: { type: 'spell', spellId: 'windSlash' }
|
|
},
|
|
spell_rockSpike: {
|
|
id: 'spell_rockSpike',
|
|
name: 'Rock Spike',
|
|
description: 'Grants the ability to cast Rock Spike (18 earth damage)',
|
|
category: 'spell',
|
|
baseCapacityCost: 88,
|
|
maxStacks: 1,
|
|
allowedEquipmentCategories: ALL_CASTER,
|
|
effect: { type: 'spell', spellId: 'rockSpike' }
|
|
},
|
|
spell_radiance: {
|
|
id: 'spell_radiance',
|
|
name: 'Radiance',
|
|
description: 'Grants the ability to cast Radiance (14 light damage)',
|
|
category: 'spell',
|
|
baseCapacityCost: 80,
|
|
maxStacks: 1,
|
|
allowedEquipmentCategories: ALL_CASTER,
|
|
effect: { type: 'spell', spellId: 'radiance' }
|
|
},
|
|
spell_darkPulse: {
|
|
id: 'spell_darkPulse',
|
|
name: 'Dark Pulse',
|
|
description: 'Grants the ability to cast Dark Pulse (12 dark damage)',
|
|
category: 'spell',
|
|
baseCapacityCost: 68,
|
|
maxStacks: 1,
|
|
allowedEquipmentCategories: ALL_CASTER,
|
|
effect: { type: 'spell', spellId: 'darkPulse' }
|
|
},
|
|
|
|
// Additional Tier 2 Spells
|
|
spell_flameWave: {
|
|
id: 'spell_flameWave',
|
|
name: 'Flame Wave',
|
|
description: 'Grants the ability to cast Flame Wave (45 fire damage)',
|
|
category: 'spell',
|
|
baseCapacityCost: 165,
|
|
maxStacks: 1,
|
|
allowedEquipmentCategories: ALL_CASTER,
|
|
effect: { type: 'spell', spellId: 'flameWave' }
|
|
},
|
|
spell_iceStorm: {
|
|
id: 'spell_iceStorm',
|
|
name: 'Ice Storm',
|
|
description: 'Grants the ability to cast Ice Storm (50 water damage)',
|
|
category: 'spell',
|
|
baseCapacityCost: 170,
|
|
maxStacks: 1,
|
|
allowedEquipmentCategories: ALL_CASTER,
|
|
effect: { type: 'spell', spellId: 'iceStorm' }
|
|
},
|
|
spell_windBlade: {
|
|
id: 'spell_windBlade',
|
|
name: 'Wind Blade',
|
|
description: 'Grants the ability to cast Wind Blade (40 air damage)',
|
|
category: 'spell',
|
|
baseCapacityCost: 155,
|
|
maxStacks: 1,
|
|
allowedEquipmentCategories: ALL_CASTER,
|
|
effect: { type: 'spell', spellId: 'windBlade' }
|
|
},
|
|
spell_stoneBarrage: {
|
|
id: 'spell_stoneBarrage',
|
|
name: 'Stone Barrage',
|
|
description: 'Grants the ability to cast Stone Barrage (55 earth damage)',
|
|
category: 'spell',
|
|
baseCapacityCost: 175,
|
|
maxStacks: 1,
|
|
allowedEquipmentCategories: ALL_CASTER,
|
|
effect: { type: 'spell', spellId: 'stoneBarrage' }
|
|
},
|
|
spell_divineSmite: {
|
|
id: 'spell_divineSmite',
|
|
name: 'Divine Smite',
|
|
description: 'Grants the ability to cast Divine Smite (55 light damage)',
|
|
category: 'spell',
|
|
baseCapacityCost: 175,
|
|
maxStacks: 1,
|
|
allowedEquipmentCategories: ALL_CASTER,
|
|
effect: { type: 'spell', spellId: 'divineSmite' }
|
|
},
|
|
spell_shadowStorm: {
|
|
id: 'spell_shadowStorm',
|
|
name: 'Shadow Storm',
|
|
description: 'Grants the ability to cast Shadow Storm (48 dark damage)',
|
|
category: 'spell',
|
|
baseCapacityCost: 168,
|
|
maxStacks: 1,
|
|
allowedEquipmentCategories: ALL_CASTER,
|
|
effect: { type: 'spell', spellId: 'shadowStorm' }
|
|
},
|
|
|
|
// Tier 3 - Master Spells
|
|
spell_pyroclasm: {
|
|
id: 'spell_pyroclasm',
|
|
name: 'Pyroclasm',
|
|
description: 'Grants the ability to cast Pyroclasm (250 fire damage)',
|
|
category: 'spell',
|
|
baseCapacityCost: 400,
|
|
maxStacks: 1,
|
|
allowedEquipmentCategories: ALL_CASTER,
|
|
effect: { type: 'spell', spellId: 'pyroclasm' }
|
|
},
|
|
spell_tsunami: {
|
|
id: 'spell_tsunami',
|
|
name: 'Tsunami',
|
|
description: 'Grants the ability to cast Tsunami (220 water damage)',
|
|
category: 'spell',
|
|
baseCapacityCost: 380,
|
|
maxStacks: 1,
|
|
allowedEquipmentCategories: ALL_CASTER,
|
|
effect: { type: 'spell', spellId: 'tsunami' }
|
|
},
|
|
spell_meteorStrike: {
|
|
id: 'spell_meteorStrike',
|
|
name: 'Meteor Strike',
|
|
description: 'Grants the ability to cast Meteor Strike (280 earth damage)',
|
|
category: 'spell',
|
|
baseCapacityCost: 420,
|
|
maxStacks: 1,
|
|
allowedEquipmentCategories: ALL_CASTER,
|
|
effect: { type: 'spell', spellId: 'meteorStrike' }
|
|
},
|
|
|
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
// LIGHTNING SPELL EFFECTS - Fast, armor-piercing, harder to dodge
|
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
|
|
spell_spark: {
|
|
id: 'spell_spark',
|
|
name: 'Spark',
|
|
description: 'Grants the ability to cast Spark (8 lightning damage, very fast, armor pierce)',
|
|
category: 'spell',
|
|
baseCapacityCost: 70,
|
|
maxStacks: 1,
|
|
allowedEquipmentCategories: ALL_CASTER,
|
|
effect: { type: 'spell', spellId: 'spark' }
|
|
},
|
|
spell_lightningBolt: {
|
|
id: 'spell_lightningBolt',
|
|
name: 'Lightning Bolt',
|
|
description: 'Grants the ability to cast Lightning Bolt (14 lightning damage, armor pierce)',
|
|
category: 'spell',
|
|
baseCapacityCost: 90,
|
|
maxStacks: 1,
|
|
allowedEquipmentCategories: ALL_CASTER,
|
|
effect: { type: 'spell', spellId: 'lightningBolt' }
|
|
},
|
|
spell_chainLightning: {
|
|
id: 'spell_chainLightning',
|
|
name: 'Chain Lightning',
|
|
description: 'Grants the ability to cast Chain Lightning (25 lightning damage, hits 3 targets)',
|
|
category: 'spell',
|
|
baseCapacityCost: 160,
|
|
maxStacks: 1,
|
|
allowedEquipmentCategories: ALL_CASTER,
|
|
effect: { type: 'spell', spellId: 'chainLightning' }
|
|
},
|
|
spell_stormCall: {
|
|
id: 'spell_stormCall',
|
|
name: 'Storm Call',
|
|
description: 'Grants the ability to cast Storm Call (40 lightning damage, hits 2 targets)',
|
|
category: 'spell',
|
|
baseCapacityCost: 190,
|
|
maxStacks: 1,
|
|
allowedEquipmentCategories: ALL_CASTER,
|
|
effect: { type: 'spell', spellId: 'stormCall' }
|
|
},
|
|
spell_thunderStrike: {
|
|
id: 'spell_thunderStrike',
|
|
name: 'Thunder Strike',
|
|
description: 'Grants the ability to cast Thunder Strike (150 lightning damage, 50% armor pierce)',
|
|
category: 'spell',
|
|
baseCapacityCost: 350,
|
|
maxStacks: 1,
|
|
allowedEquipmentCategories: ALL_CASTER,
|
|
effect: { type: 'spell', spellId: 'thunderStrike' }
|
|
},
|
|
|
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
// METAL SPELL EFFECTS - Fire + Earth compound, armor pierce focus
|
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
|
|
spell_metalShard: {
|
|
id: 'spell_metalShard',
|
|
name: 'Metal Shard',
|
|
description: 'Grants the ability to cast Metal Shard (16 metal damage, 25% armor pierce)',
|
|
category: 'spell',
|
|
baseCapacityCost: 85,
|
|
maxStacks: 1,
|
|
allowedEquipmentCategories: ALL_CASTER,
|
|
effect: { type: 'spell', spellId: 'metalShard' }
|
|
},
|
|
spell_ironFist: {
|
|
id: 'spell_ironFist',
|
|
name: 'Iron Fist',
|
|
description: 'Grants the ability to cast Iron Fist (28 metal damage, 35% armor pierce)',
|
|
category: 'spell',
|
|
baseCapacityCost: 120,
|
|
maxStacks: 1,
|
|
allowedEquipmentCategories: ALL_CASTER,
|
|
effect: { type: 'spell', spellId: 'ironFist' }
|
|
},
|
|
spell_steelTempest: {
|
|
id: 'spell_steelTempest',
|
|
name: 'Steel Tempest',
|
|
description: 'Grants the ability to cast Steel Tempest (55 metal damage, 45% armor pierce)',
|
|
category: 'spell',
|
|
baseCapacityCost: 190,
|
|
maxStacks: 1,
|
|
allowedEquipmentCategories: ALL_CASTER,
|
|
effect: { type: 'spell', spellId: 'steelTempest' }
|
|
},
|
|
spell_furnaceBlast: {
|
|
id: 'spell_furnaceBlast',
|
|
name: 'Furnace Blast',
|
|
description: 'Grants the ability to cast Furnace Blast (200 metal damage, 60% armor pierce)',
|
|
category: 'spell',
|
|
baseCapacityCost: 400,
|
|
maxStacks: 1,
|
|
allowedEquipmentCategories: ALL_CASTER,
|
|
effect: { type: 'spell', spellId: 'furnaceBlast' }
|
|
},
|
|
|
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
// SAND SPELL EFFECTS - Earth + Water compound, AOE focus
|
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
|
|
spell_sandBlast: {
|
|
id: 'spell_sandBlast',
|
|
name: 'Sand Blast',
|
|
description: 'Grants the ability to cast Sand Blast (11 sand damage, very fast)',
|
|
category: 'spell',
|
|
baseCapacityCost: 72,
|
|
maxStacks: 1,
|
|
allowedEquipmentCategories: ALL_CASTER,
|
|
effect: { type: 'spell', spellId: 'sandBlast' }
|
|
},
|
|
spell_sandstorm: {
|
|
id: 'spell_sandstorm',
|
|
name: 'Sandstorm',
|
|
description: 'Grants the ability to cast Sandstorm (22 sand damage, hits 2 enemies)',
|
|
category: 'spell',
|
|
baseCapacityCost: 100,
|
|
maxStacks: 1,
|
|
allowedEquipmentCategories: ALL_CASTER,
|
|
effect: { type: 'spell', spellId: 'sandstorm' }
|
|
},
|
|
spell_desertWind: {
|
|
id: 'spell_desertWind',
|
|
name: 'Desert Wind',
|
|
description: 'Grants the ability to cast Desert Wind (38 sand damage, hits 3 enemies)',
|
|
category: 'spell',
|
|
baseCapacityCost: 155,
|
|
maxStacks: 1,
|
|
allowedEquipmentCategories: ALL_CASTER,
|
|
effect: { type: 'spell', spellId: 'desertWind' }
|
|
},
|
|
spell_duneCollapse: {
|
|
id: 'spell_duneCollapse',
|
|
name: 'Dune Collapse',
|
|
description: 'Grants the ability to cast Dune Collapse (100 sand damage, hits 5 enemies)',
|
|
category: 'spell',
|
|
baseCapacityCost: 300,
|
|
maxStacks: 1,
|
|
allowedEquipmentCategories: ALL_CASTER,
|
|
effect: { type: 'spell', spellId: 'duneCollapse' }
|
|
},
|
|
};
|
|
|
|
|