diff options
Diffstat (limited to 'src/game/BattleGround.cpp')
-rw-r--r-- | src/game/BattleGround.cpp | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/src/game/BattleGround.cpp b/src/game/BattleGround.cpp index 554f8555627..19643a6003e 100644 --- a/src/game/BattleGround.cpp +++ b/src/game/BattleGround.cpp @@ -34,6 +34,7 @@ #include "MapManager.h" #include "Object.h" #include "SpellAuras.h" +#include "SpellAuraEffects.h" #include "Util.h" namespace Trinity @@ -427,15 +428,16 @@ void BattleGround::Update(uint32 diff) { plr->RemoveAurasDueToSpell(SPELL_ARENA_PREPARATION); // remove auras with duration lower than 30s - Unit::AuraMap & aurMap = plr->GetAuras(); - for (Unit::AuraMap::iterator iter = aurMap.begin(); iter != aurMap.end();) + Unit::AuraMap & auraMap = plr->GetOwnedAuras(); + for (Unit::AuraMap::iterator iter = auraMap.begin(); iter != auraMap.end();) { - if (!iter->second->IsPermanent() - && iter->second->GetAuraDuration()<=30*IN_MILISECONDS - && iter->second->IsPositive() - && (!(iter->second->GetSpellProto()->Attributes & SPELL_ATTR_UNAFFECTED_BY_INVULNERABILITY)) - && (!iter->second->IsAuraType(SPELL_AURA_MOD_INVISIBILITY))) - plr->RemoveAura(iter); + Aura * aura = iter->second; + if (!aura->IsPermanent() + && aura->GetDuration() <= 30*IN_MILISECONDS + && aura->IsPositive(plr) + && (!(aura->GetSpellProto()->Attributes & SPELL_ATTR_UNAFFECTED_BY_INVULNERABILITY)) + && (!aura->HasEffectType(SPELL_AURA_MOD_INVISIBILITY))) + plr->RemoveOwnedAura(iter); else ++iter; } |