mirror of
https://github.com/emagi/eq2emu
synced 2026-08-12 18:23:04 -04:00
4.8 KiB
4.8 KiB
File: SpellProcess.h
Classes
InterruptStructCastTimerCastSpellRecastTimerSpellProcess
Functions
void RemoveCaster(Spawn* caster, bool lock_spell_process = true);void RemoveAllSpells(bool reload_spells = false);void Process();void Interrupted(Entity* caster, Spawn* interruptor, int16 error_code, bool cancel = false, bool from_movement = false);void ProcessSpell(ZoneServer* zone, Spell* spell, Entity* caster, Spawn* target = 0, bool lock = true, bool harvest_spell = false, LuaSpell* customSpell = 0, int16 custom_cast_time = 0, bool in_heroic_opp = false);void ProcessEntityCommand(ZoneServer* zone, EntityCommand* entity_command, Entity* caster, Spawn* target, bool lock = true, bool in_heroic_opp = false);bool TakePower(LuaSpell* spell, int32 custom_power_req = 0);bool CheckPower(LuaSpell* spell);bool TakeHP(LuaSpell* spell, int32 custom_hp_req = 0);bool CheckHP(LuaSpell* spell);bool CheckConcentration(LuaSpell* spell);bool CheckSavagery(LuaSpell* spell);bool TakeSavagery(LuaSpell* spell);bool CheckDissonance(LuaSpell* spell);bool AddDissonance(LuaSpell* spell);bool AddConcentration(LuaSpell* spell);bool CastProcessedSpell(LuaSpell* spell, bool passive = false, bool in_heroic_opp = false);bool CastProcessedEntityCommand(EntityCommand* entity_command, Client* client, Spawn* target, bool in_heroic_opp = false);void SendStartCast(LuaSpell* spell, Client* client);void SendFinishedCast(LuaSpell* spell, Client* client);void LockAllSpells(Client* client);void UnlockAllSpells(Client* client, Spell* exception = 0);void UnlockSpell(Client* client, Spell* spell);bool DeleteCasterSpell(Spawn* caster, Spell* spell, string reason = "");bool DeleteCasterSpell(LuaSpell* spell, string reason="", bool removing_all_spells = false, Spawn* remove_target = nullptr, bool zone_shutting_down = false, bool shared_lock_spell = true);void CheckInterrupt(InterruptStruct* interrupt);void RemoveSpellTimersFromSpawn(Spawn* spawn, bool remove_all = false, bool delete_recast = false, bool call_expire_function = true, bool lock_spell_process = false);void CheckRecast(Spell* spell, Entity* caster, float timer_override = 0, bool check_linked_timers = true);void AddSpellToQueue(Spell* spell, Entity* caster);void RemoveSpellFromQueue(Spell* spell, Entity* caster, bool send_update = true);void RemoveSpellFromQueue(Entity* caster, bool hostile_only = false);bool CheckSpellQueue(Spell* spell, Entity* caster);bool IsReady(Spell* spell, Entity* caster);void SendSpellBookUpdate(Client* client);bool CastPassives(Spell* spell, Entity* caster, bool remove = false);bool CastInstant(Spell* spell, Entity* caster, Entity* target, bool remove = false, bool passive=false);void AddSpellScriptTimer(SpellScriptTimer* timer);void RemoveSpellScriptTimer(SpellScriptTimer* timer, bool locked=false);void RemoveSpellScriptTimerBySpell(LuaSpell* spell, bool clearPendingDeletes=true);void CheckSpellScriptTimers();bool SpellScriptTimersHasSpell(LuaSpell* spell);std::string SpellScriptTimerCustomFunction(LuaSpell* spell);void ClearSpellScriptTimerList();void RemoveTargetFromSpell(LuaSpell* spell, Spawn* target, bool remove_caster = false);void CheckRemoveTargetFromSpell(LuaSpell* spell, bool allow_delete = true, bool removing_all_spells = false);void RemoveTargetList(LuaSpell* spell);bool AddHO(Client* client, HeroicOP* ho);bool AddHO(int32 group_id, HeroicOP* ho);void KillHOBySpawnID(int32 spawn_id);void AddSpellCancel(LuaSpell* spell);void DeleteSpell(LuaSpell* spell);void SpellCannotStack(ZoneServer* zone, Client* client, Entity* caster, LuaSpell* lua_spell, LuaSpell* conflictSpell);bool ProcessSpell(LuaSpell* spell, bool first_cast = true, const char* function = 0, SpellScriptTimer* timer = 0, bool all_targets = false);std::string ApplyLuaFunction(LuaSpell* spell, bool first_cast, const char* function, SpellScriptTimer* timer, Spawn* altTarget = 0);void AddActiveSpell(LuaSpell* spell);void DeleteActiveSpell(LuaSpell* spell, bool skipRemoveCurrent = false);
Notable Comments
- /*
- */
- ///
Handles all spell casts for a zone, only 1 SpellProcess per zone - /// Remove dead pointers for casters when the Spawn is deconstructed
- ///
Remove all spells from the SpellProcess - ///
Main loop, handles everything (interupts, cast time, recast, ...) - ///
Interrupts the caster (creates the InterruptStruct and adds it to a list) - /// Entity being interrupted
- /// Spawn that interrupted the caster
- /// The error code