aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorOvah <dreadkiller@gmx.de>2018-04-12 20:26:45 +0200
committerShauren <shauren.trinity@gmail.com>2018-04-12 21:26:45 +0300
commit1aa42e97a81e285fa34316ad9cfe9657865e3c35 (patch)
treedc2aee39819dc9a85e06f7e0740502d367fb69f2 /src
parent08193cf625b6e2af54eba2bd36145837500a1c33 (diff)
Core/AI: Added CreatureAI hook that is getting triggered when a spell cast has been successfully finished. (#21774)
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()