diff options
Diffstat (limited to 'src/game/Unit.cpp')
-rw-r--r-- | src/game/Unit.cpp | 20 |
1 files changed, 6 insertions, 14 deletions
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index b31a406e185..195bc6230ee 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -3977,16 +3977,12 @@ inline void Unit::RemoveAuraFromStack(AuraMap::iterator &iter, AuraRemoveMode re RemoveOwnedAura(iter, removeMode); } -void Unit::RemoveAurasDueToSpellByDispel(Aura * aura, Unit *dispeller) +void Unit::RemoveAurasDueToSpellByDispel(uint32 spellId, uint64 casterGUID, Unit *dispeller) { - if (aura->IsRemoved()) - return; - - uint32 spellId = aura->GetId(); - for (AuraMap::iterator iter = m_ownedAuras.lower_bound(spellId); iter != m_ownedAuras.upper_bound(spellId);) { - if (aura == iter->second) + Aura * aura = iter->second; + if (aura->GetCasterGUID() == casterGUID) { if (aura->GetSpellProto()->AttributesEx7 & SPELL_ATTR_EX7_DISPEL_CHARGES) aura->DropCharge(); @@ -4039,16 +4035,12 @@ void Unit::RemoveAurasDueToSpellByDispel(Aura * aura, Unit *dispeller) } } -void Unit::RemoveAurasDueToSpellBySteal(Aura * aura, Unit *stealer) +void Unit::RemoveAurasDueToSpellBySteal(uint32 spellId, uint64 casterGUID, Unit *stealer) { - if (aura->IsRemoved()) - return; - - uint32 spellId = aura->GetId(); - for (AuraMap::iterator iter = m_ownedAuras.lower_bound(spellId); iter != m_ownedAuras.upper_bound(spellId);) { - if (aura == iter->second) + Aura * aura = iter->second; + if (aura->GetCasterGUID() == casterGUID) { int32 damage[MAX_SPELL_EFFECTS]; int32 baseDamage[MAX_SPELL_EFFECTS]; |