From fbbf9602291f0203ab8fa62b4bf67422d67052e0 Mon Sep 17 00:00:00 2001 From: Andrew <47818697+Nyeriah@users.noreply.github.com> Date: Sun, 8 Mar 2026 07:12:50 -0300 Subject: [PATCH] fix(Core/AI): fix OnSpellFailed crash on TempSummon despawn (#25036) Co-authored-by: Claude Sonnet 4.6 --- src/server/game/Entities/Unit/Unit.cpp | 2 ++ src/server/game/Spells/Spell.cpp | 5 ----- 2 files changed, 2 insertions(+), 5 deletions(-) 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); }