diff options
author | Ovah <dreadkiller@gmx.de> | 2017-10-13 22:17:04 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2017-10-13 22:17:04 +0200 |
commit | 020825902c066cee532f1b9a24205c196da2662d (patch) | |
tree | 082b02f9a2d0be01dea48acf01383c09052cabba | |
parent | 644af37f96cc852f2ea7377d2600246cebac49b8 (diff) |
Core/AI: implemented AI hook for interrupting spells (#20610)
-rw-r--r-- | src/server/game/AI/CreatureAI.h | 3 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 3 |
2 files changed, 6 insertions, 0 deletions
diff --git a/src/server/game/AI/CreatureAI.h b/src/server/game/AI/CreatureAI.h index 63ecf516666..ac8b1d7ea15 100644 --- a/src/server/game/AI/CreatureAI.h +++ b/src/server/game/AI/CreatureAI.h @@ -157,6 +157,9 @@ class TC_GAME_API CreatureAI : public UnitAI void OnCharmed(bool apply) override; + // Called when a spell cast gets interrupted + virtual void OnSpellCastInterrupt(SpellInfo const* /*spell*/) { } + // Called at reaching home after evade virtual void JustReachedHome() { } diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index a1878130e8c..e3d05356342 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -2932,6 +2932,9 @@ void Unit::InterruptSpell(CurrentSpellTypes spellType, bool withDelayed, bool wi if (spell->getState() != SPELL_STATE_FINISHED) spell->cancel(); + if (GetTypeId() == TYPEID_UNIT && IsAIEnabled) + ToCreature()->AI()->OnSpellCastInterrupt(spell->GetSpellInfo()); + m_currentSpells[spellType] = NULL; spell->SetReferencedFromCurrent(false); } |