diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index c1c23efb9..49773866e 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -4076,9 +4076,11 @@ void Unit::InterruptSpell(CurrentSpellTypes spellType, bool withDelayed, bool wi if (spell->getState() != SPELL_STATE_FINISHED) spell->cancel(bySelf); - - m_currentSpells[spellType] = nullptr; - spell->SetReferencedFromCurrent(false); + else + { + m_currentSpells[spellType] = nullptr; + spell->SetReferencedFromCurrent(false); + } } } diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index dfc8d1f0d..baa56e4fa 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -4081,13 +4081,15 @@ void Spell::_cast(bool skipCheck) if (modOwner) modOwner->SetSpellModTakingSpell(this, false); - if (const std::vector* spell_triggered = sSpellMgr->GetSpellLinked(m_spellInfo->Id)) + if (std::vector const* spell_triggered = sSpellMgr->GetSpellLinked(m_spellInfo->Id)) { - for (std::vector::const_iterator i = spell_triggered->begin(); i != spell_triggered->end(); ++i) - if (*i < 0) - m_caster->RemoveAurasDueToSpell(-(*i)); + for (int32 id : *spell_triggered) + { + if (id < 0) + m_caster->RemoveAurasDueToSpell(-id); else - m_caster->CastSpell(m_targets.GetUnitTarget() ? m_targets.GetUnitTarget() : m_caster, *i, true); + m_caster->CastSpell(m_targets.GetUnitTarget() ? m_targets.GetUnitTarget() : m_caster, id, true); + } } // Interrupt Spell casting diff --git a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp index 0c90c8fa6..6e60a9fa3 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp @@ -733,7 +733,7 @@ struct npc_akama_illidan : public ScriptedAI void Reset() override { scheduler.CancelAll(); - me->m_Events.KillAllEvents(true); + me->m_Events.KillAllEvents(false); me->SetReactState(REACT_AGGRESSIVE); if (instance->GetBossState(DATA_ILLIDAN_STORMRAGE) == DONE) me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);