diff --git a/Source/Game/Entities/Unit/Unit.Spells.cs b/Source/Game/Entities/Unit/Unit.Spells.cs index add7b2a0c..a8d7c9a88 100644 --- a/Source/Game/Entities/Unit/Unit.Spells.cs +++ b/Source/Game/Entities/Unit/Unit.Spells.cs @@ -3937,7 +3937,7 @@ namespace Game.Entities { Aura aura = aurApp.GetBase(); - _RemoveNoStackAurasDueToAura(aura); + _RemoveNoStackAurasDueToAura(aura, false); if (aurApp.HasRemoveMode()) return; @@ -3995,7 +3995,7 @@ namespace Game.Entities Cypher.Assert(!m_cleanupDone); m_ownedAuras.Add(aura.GetId(), aura); - _RemoveNoStackAurasDueToAura(aura); + _RemoveNoStackAurasDueToAura(aura, true); if (aura.IsRemoved()) return; @@ -4084,7 +4084,7 @@ namespace Game.Entities return null; } - void _RemoveNoStackAurasDueToAura(Aura aura) + void _RemoveNoStackAurasDueToAura(Aura aura, bool owned) { SpellInfo spellProto = aura.GetSpellInfo(); @@ -4098,13 +4098,10 @@ namespace Game.Entities return; } - foreach (var app in GetAppliedAuras()) - { - if (aura.CanStackWith(app.Value.GetBase())) - continue; - - RemoveAura(app, AuraRemoveMode.Default); - } + if (owned) + RemoveOwnedAuras(ownedAura => !aura.CanStackWith(ownedAura), AuraRemoveMode.Default); + else + RemoveAppliedAuras(appliedAura => !aura.CanStackWith(appliedAura.GetBase()), AuraRemoveMode.Default); } public int GetHighestExclusiveSameEffectSpellGroupValue(AuraEffect aurEff, AuraType auraType, bool checkMiscValue = false, int miscValue = 0) {