aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOvah <dreadkiller@gmx.de>2017-10-13 22:17:04 +0200
committerShauren <shauren.trinity@gmail.com>2017-10-13 22:17:04 +0200
commit020825902c066cee532f1b9a24205c196da2662d (patch)
tree082b02f9a2d0be01dea48acf01383c09052cabba
parent644af37f96cc852f2ea7377d2600246cebac49b8 (diff)
Core/AI: implemented AI hook for interrupting spells (#20610)
-rw-r--r--src/server/game/AI/CreatureAI.h3
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp3
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);
}