Spells System

Complete spell system for EverQuest II server emulation with spell definitions, casting mechanics, effects, and processing.

Components

Core System:

  • SpellData/Spell - Spell definitions with properties, levels, effects, LUA data
  • SpellEffectManager - Active effects management (buffs, debuffs, bonuses)
  • MasterSpellList/SpellBook - Global registry and per-character spell collections

Spell Processing:

  • SpellProcess - Real-time casting engine (50ms intervals) with timers, queues, interrupts
  • SpellTargeting - All target types: self, single, group, AOE, PBAE with validation
  • SpellResourceChecker - Power, health, concentration, savagery, dissonance management
  • SpellManager - High-level coordinator integrating all systems

Key Features

  • Real-time Processing: Cast/recast timers, active spell tracking, interrupt handling
  • Comprehensive Targeting: Range, LOS, spell criteria validation for all target types
  • Resource Management: All EQ2 resource types with validation and consumption
  • Effect System: 30 maintained effects, 45 spell effects, detrimental effects
  • Heroic Opportunities: Solo/group coordination with timing
  • Thread Safety: Concurrent access with proper mutexes
  • 80+ Effect Types: All spell modifications from original C++ system

Usage

// Create and use spell manager
spellManager := spells.NewSpellManager()

// Cast spell with full validation
err := spellManager.CastSpell(casterID, targetID, spellID)
if err != nil {
    log.Printf("Spell failed: %v", err)
}

// Check spell readiness
canCast, reason := spellManager.CanCastSpell(casterID, targetID, spellID)

// Process spells in main loop
spellManager.ProcessSpells()

// Manage spell books
spellBook := spellManager.GetSpellBook(characterID)
spellBook.AddSpell(spell)
spellBook.SetSpellBarSlot(0, 1, spell)

// Effect management
sem := spells.NewSpellEffectManager()
sem.AddMaintainedEffect(maintainedEffect)
sem.AddSpellEffect(tempEffect)

Files

Core: constants.go, spell_data.go, spell.go, spell_effects.go, spell_manager.go
Processing: process_constants.go, spell_process.go, spell_targeting.go, spell_resources.go
Docs: README.md, SPELL_PROCESS.md

Integration

Database: Spell data loading, character spell book persistence
Packet System: Spell info serialization, effect updates
Entity System: SpellEffectManager embedded, stat integration
LUA Scripting: Custom spell behaviors, effect calculations