diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 134aec250..11065a615 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -4209,6 +4209,8 @@ void Unit::InterruptSpell(CurrentSpellTypes spellType, bool withDelayed, bool wi spell->SetReferencedFromCurrent(false); } + if (IsCreature() && IsAIEnabled) + ToCreature()->AI()->OnSpellFailed(spell->GetSpellInfo()); } } diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 6e56bf395..6e1533703 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -3733,11 +3733,6 @@ void Spell::cancel(bool bySelf) sScriptMgr->OnSpellCastCancel(this, m_caster, m_spellInfo, bySelf); - // Call CreatureAI hook OnSpellFailed only for true interrupts/cancels, not prepare-time failures - if (Creature* creatureCaster = m_caster->ToCreature()) - if (creatureCaster->IsAIEnabled) - creatureCaster->AI()->OnSpellFailed(m_spellInfo); - finish(false); }