Core/Auras: Fixed removing auras triggered by aurastates

Closes #17868

(cherry picked from commit f94e6cee38241e10daed711247a18b8706cb8924)
This commit is contained in:
Shauren authored and Aokromes committed 2016-11-15 05:43:30 +01:00
1 parent 67edf04835
commit 5ddf50bdee
1 file changed
+7 -10
+7 -10
View File
@@ -7926,17 +7926,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;
}
}
}