diff options
author | Shauren <shauren.trinity@gmail.com> | 2016-11-13 00:41:56 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2016-11-13 00:43:13 +0100 |
commit | 08057b6d8b076eb62d65b68fb613858d8c3b5cbd (patch) | |
tree | 615dd082ffddb1dbe0ca1a65d2e497d3a5c8529c /src | |
parent | 83afc5d9f13249ae591a3001c56a3d31828c737e (diff) |
Core/Auras: Fixed removing auras triggered by aurastates
Closes #17868
(cherry picked from commit f94e6cee38241e10daed711247a18b8706cb8924)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 99dd13d4d86..c18bf3ac22d 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -5920,17 +5920,14 @@ void Unit::ModifyAuraState(AuraStateType flag, bool apply) { RemoveFlag(UNIT_FIELD_AURASTATE, 1<<(flag-1)); - if (flag != AURA_STATE_ENRAGE) // enrage aura state triggering continues auras + Unit::AuraApplicationMap& tAuras = GetAppliedAuras(); + for (Unit::AuraApplicationMap::iterator itr = tAuras.begin(); itr != tAuras.end();) { - Unit::AuraApplicationMap& tAuras = GetAppliedAuras(); - for (Unit::AuraApplicationMap::iterator itr = tAuras.begin(); itr != tAuras.end();) - { - SpellInfo const* spellProto = (*itr).second->GetBase()->GetSpellInfo(); - if (spellProto->CasterAuraState == uint32(flag)) - RemoveAura(itr); - else - ++itr; - } + SpellInfo const* spellProto = itr->second->GetBase()->GetSpellInfo(); + if (itr->second->GetBase()->GetCasterGUID() == GetGUID() && spellProto->CasterAuraState == uint32(flag) && (spellProto->IsPassive() || flag != AURA_STATE_ENRAGE)) + RemoveAura(itr); + else + ++itr; } } } |