diff options
Diffstat (limited to 'src/game/SpellEffects.cpp')
-rw-r--r-- | src/game/SpellEffects.cpp | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index bae4dc25382..b5e6b36c463 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -2059,8 +2059,7 @@ void Spell::EffectTriggerSpell(uint32 i) // ignore positive and passive auras && !iter->second->IsPositive() && !iter->second->IsPassive()) { - m_caster->RemoveAurasDueToSpell(spell->Id); - iter = Auras.begin(); + m_caster->RemoveAura(iter->second); } } return; @@ -4533,23 +4532,21 @@ void Spell::EffectScriptEffect(uint32 effIndex) // Removes snares and roots. uint32 mechanic_mask = (1<<MECHANIC_ROOT) | (1<<MECHANIC_SNARE); Unit::AuraMap& Auras = unitTarget->GetAuras(); - for(Unit::AuraMap::iterator iter = Auras.begin(), next; iter != Auras.end(); iter = next) + for(Unit::AuraMap::iterator iter = Auras.begin(), next; iter != Auras.end();) { - next = iter; - ++next; Aura *aur = iter->second; if (!aur->IsPositive()) //only remove negative spells { // check for mechanic mask if(GetAllSpellMechanicMask(aur->GetSpellProto()) & mechanic_mask) { - unitTarget->RemoveAurasDueToSpell(aur->GetId()); - if(Auras.empty()) - break; - else - next = Auras.begin(); + unitTarget->RemoveAura(iter); } + else + iter++; } + else + iter++; } break; } |