diff options
Diffstat (limited to 'src/server/game/Spells/Spell.cpp')
| -rw-r--r-- | src/server/game/Spells/Spell.cpp | 32 |
1 files changed, 12 insertions, 20 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 0071aa23f37..810fd9c8a68 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -2979,13 +2979,10 @@ void Spell::prepare(SpellCastTargets const* targets, AuraEffect const* triggered triggeredByAura->GetBase()->SetDuration(0); } + // cleanup after mod system + // triggered spell pointer can be not removed in some cases if (m_caster->GetTypeId() == TYPEID_PLAYER) - { - m_caster->ToPlayer()->RestoreSpellMods(this); - // cleanup after mod system - // triggered spell pointer can be not removed in some cases m_caster->ToPlayer()->SetSpellModTakingSpell(this, false); - } if (param1 || param2) SendCastResult(result, ¶m1, ¶m2); @@ -3091,8 +3088,6 @@ void Spell::cancel() { case SPELL_STATE_PREPARING: CancelGlobalCooldown(); - if (m_caster->GetTypeId() == TYPEID_PLAYER) - m_caster->ToPlayer()->RestoreSpellMods(this); // no break case SPELL_STATE_DELAYED: SendInterrupted(0); @@ -3187,14 +3182,12 @@ void Spell::cast(bool skipCheck) { SendCastResult(castResult, ¶m1, ¶m2); SendInterrupted(0); - //restore spell mods + + // cleanup after mod system + // triggered spell pointer can be not removed in some cases if (m_caster->GetTypeId() == TYPEID_PLAYER) - { - m_caster->ToPlayer()->RestoreSpellMods(this); - // cleanup after mod system - // triggered spell pointer can be not removed in some cases m_caster->ToPlayer()->SetSpellModTakingSpell(this, false); - } + finish(false); SetExecutedCurrently(false); return; @@ -3214,10 +3207,11 @@ void Spell::cast(bool skipCheck) my_trade->SetSpell(m_spellInfo->Id, m_CastItem); SendCastResult(SPELL_FAILED_DONT_REPORT); SendInterrupted(0); - m_caster->ToPlayer()->RestoreSpellMods(this); + // cleanup after mod system // triggered spell pointer can be not removed in some cases m_caster->ToPlayer()->SetSpellModTakingSpell(this, false); + finish(false); SetExecutedCurrently(false); return; @@ -3240,14 +3234,12 @@ void Spell::cast(bool skipCheck) if (m_spellState == SPELL_STATE_FINISHED) { SendInterrupted(0); - //restore spell mods + + // cleanup after mod system + // triggered spell pointer can be not removed in some cases if (m_caster->GetTypeId() == TYPEID_PLAYER) - { - m_caster->ToPlayer()->RestoreSpellMods(this); - // cleanup after mod system - // triggered spell pointer can be not removed in some cases m_caster->ToPlayer()->SetSpellModTakingSpell(this, false); - } + finish(false); SetExecutedCurrently(false); return; |
