diff options
author | QAston <none@none> | 2010-01-10 20:09:44 +0100 |
---|---|---|
committer | QAston <none@none> | 2010-01-10 20:09:44 +0100 |
commit | ef24d90472d979697d234a54510320edcdc9ae61 (patch) | |
tree | fbf9b20183ae2e95c3c090bb8e5332296e4cadcf /src/game/BattleGround.cpp | |
parent | 4bd6d06e26e6d09297139ce08abcc5225c430e1b (diff) |
* Make sure that aura is applied on unit before trying to remove it.
--HG--
branch : trunk
Diffstat (limited to 'src/game/BattleGround.cpp')
-rw-r--r-- | src/game/BattleGround.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/game/BattleGround.cpp b/src/game/BattleGround.cpp index 19643a6003e..1828a04fa8a 100644 --- a/src/game/BattleGround.cpp +++ b/src/game/BattleGround.cpp @@ -428,16 +428,17 @@ void BattleGround::Update(uint32 diff) { plr->RemoveAurasDueToSpell(SPELL_ARENA_PREPARATION); // remove auras with duration lower than 30s - Unit::AuraMap & auraMap = plr->GetOwnedAuras(); - for (Unit::AuraMap::iterator iter = auraMap.begin(); iter != auraMap.end();) + Unit::AuraApplicationMap & auraMap = plr->GetAppliedAuras(); + for (Unit::AuraApplicationMap::iterator iter = auraMap.begin(); iter != auraMap.end();) { - Aura * aura = iter->second; + AuraApplication * aurApp = iter->second; + Aura * aura = aurApp->GetBase(); if (!aura->IsPermanent() && aura->GetDuration() <= 30*IN_MILISECONDS - && aura->IsPositive(plr) + && aurApp->IsPositive() && (!(aura->GetSpellProto()->Attributes & SPELL_ATTR_UNAFFECTED_BY_INVULNERABILITY)) && (!aura->HasEffectType(SPELL_AURA_MOD_INVISIBILITY))) - plr->RemoveOwnedAura(iter); + plr->RemoveAura(iter); else ++iter; } |