From 327d515edebb0621fa35fd4b1609e175195c60f2 Mon Sep 17 00:00:00 2001 From: Ovah Date: Thu, 12 Apr 2018 20:26:45 +0200 Subject: [PATCH] Core/AI: Added CreatureAI hook that is getting triggered when a spell cast has been successfully finished. (#21774) --- src/server/game/AI/CreatureAI.h | 3 +++ src/server/game/Spells/Spell.cpp | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/src/server/game/AI/CreatureAI.h b/src/server/game/AI/CreatureAI.h index 0572b1465a3..65741437904 100644 --- a/src/server/game/AI/CreatureAI.h +++ b/src/server/game/AI/CreatureAI.h @@ -153,6 +153,9 @@ class TC_GAME_API CreatureAI : public UnitAI // Called when a spell cast gets interrupted virtual void OnSpellCastInterrupt(SpellInfo const* /*spell*/) { } + // Called when a spell cast has been successfully finished + virtual void OnSuccessfulSpellCast(SpellInfo const* /*spell*/) { } + // Called at reaching home after evade virtual void JustReachedHome() { } diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 6633cfaac0c..98e67143ce3 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -3468,6 +3468,11 @@ void Spell::_cast(bool skipCheck) hitMask |= PROC_HIT_NORMAL; m_originalCaster->ProcSkillsAndAuras(nullptr, procAttacker, PROC_FLAG_NONE, PROC_SPELL_TYPE_MASK_ALL, PROC_SPELL_PHASE_CAST, hitMask, this, nullptr, nullptr); + + // Call CreatureAI hook OnSuccessfulSpellCast + if (Creature* caster = m_originalCaster->ToCreature()) + if (caster->IsAIEnabled) + caster->AI()->OnSuccessfulSpellCast(GetSpellInfo()); } void Spell::handle_immediate()