From 020825902c066cee532f1b9a24205c196da2662d Mon Sep 17 00:00:00 2001 From: Ovah Date: Fri, 13 Oct 2017 22:17:04 +0200 Subject: Core/AI: implemented AI hook for interrupting spells (#20610) --- src/server/game/AI/CreatureAI.h | 3 +++ src/server/game/Entities/Unit/Unit.cpp | 3 +++ 2 files changed, 6 insertions(+) (limited to 'src') 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); } -- cgit v1.2.3