diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 4ce8e3870..9847c0bf5 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -695,6 +695,10 @@ Spell::Spell(Unit* caster, SpellInfo const* info, TriggerCastFlags triggerFlags, Spell::~Spell() { + if (Player* modOwner = m_caster ? m_caster->GetSpellModOwner() : nullptr) + if (modOwner->m_spellModTakingSpell == this) + modOwner->SetSpellModTakingSpell(this, false); + // unload scripts while (!m_loadedScripts.empty()) { @@ -4469,6 +4473,9 @@ void Spell::finish(bool ok) return; m_spellState = SPELL_STATE_FINISHED; + if (Player* modOwner = m_caster->GetSpellModOwner()) + modOwner->SetSpellModTakingSpell(this, false); + if (m_spellInfo->IsChanneled()) m_caster->UpdateInterruptMask();