aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/AI/CreatureAI.h3
-rw-r--r--src/server/game/Spells/Spell.cpp5
2 files changed, 8 insertions, 0 deletions
diff --git a/src/server/game/AI/CreatureAI.h b/src/server/game/AI/CreatureAI.h
index c8f5de0420c..4aa8cfdddc0 100644
--- a/src/server/game/AI/CreatureAI.h
+++ b/src/server/game/AI/CreatureAI.h
@@ -160,6 +160,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 e1dc6d62dfa..5ce5123f762 100644
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -3417,6 +3417,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()