feat(Core/Spells): Implement OnSpellCastFinished hook (#22941)

Co-authored-by: Ovahlord <dreadkiller@gmx.de>
This commit is contained in:
Andrew
2025-09-19 04:52:22 -03:00
committed by GitHub
parent d58d8692b1
commit b09609e47d
4 changed files with 24 additions and 0 deletions

View File

@@ -4112,6 +4112,11 @@ void Spell::_cast(bool skipCheck)
sScriptMgr->OnSpellCast(this, m_caster, m_spellInfo, skipCheck);
SetExecutedCurrently(false);
// Call CreatureAI hook OnSpellCastFinished
if (Creature* caster = m_originalCaster->ToCreature())
if (caster->IsAIEnabled)
caster->AI()->OnSpellCastFinished(GetSpellInfo(), SPELL_FINISHED_SUCCESSFUL_CAST);
}
void Spell::handle_immediate()
@@ -4463,6 +4468,11 @@ void Spell::update(uint32 difftime)
SendChannelUpdate(0);
finish();
// We call the hook here instead of in Spell::finish because we only want to call it for completed channeling. Everything else is handled by interrupts
if (Creature* creatureCaster = m_caster->ToCreature())
if (creatureCaster->IsAIEnabled)
creatureCaster->AI()->OnSpellCastFinished(m_spellInfo, SPELL_FINISHED_CHANNELING_COMPLETE);
}
// Xinef: Dont update channeled target list on last tick, allow auras to update duration properly
// Xinef: Added this strange check because of diffrent update routines for players / creatures