diff --git a/Source/Game/Combat/ThreatManager.cs b/Source/Game/Combat/ThreatManager.cs index bc2f243fa..0e334d782 100644 --- a/Source/Game/Combat/ThreatManager.cs +++ b/Source/Game/Combat/ThreatManager.cs @@ -891,7 +891,11 @@ namespace Game.Combat { if (_victim.IsImmunedToDamage(_owner.GetMeleeDamageSchoolMask())) return true; - if (_victim.HasBreakableByDamageCrowdControlAura()) + + if (_victim.HasAuraType(AuraType.ModConfuse)) + return true; + + if (_victim.HasBreakableByDamageAuraType(AuraType.ModStun)) return true; return false; diff --git a/Source/Game/Entities/Unit/Unit.Spells.cs b/Source/Game/Entities/Unit/Unit.Spells.cs index 10e2cf687..2299c9a46 100644 --- a/Source/Game/Entities/Unit/Unit.Spells.cs +++ b/Source/Game/Entities/Unit/Unit.Spells.cs @@ -1076,7 +1076,7 @@ namespace Game.Entities return false; } - bool HasBreakableByDamageAuraType(AuraType type, uint excludeAura) + public bool HasBreakableByDamageAuraType(AuraType type, uint excludeAura = 0) { var auras = GetAuraEffectsByType(type); foreach (var eff in auras) diff --git a/Source/Game/Spells/Auras/AuraEffect.cs b/Source/Game/Spells/Auras/AuraEffect.cs index 383d1c0d2..b3f5c1bef 100644 --- a/Source/Game/Spells/Auras/AuraEffect.cs +++ b/Source/Game/Spells/Auras/AuraEffect.cs @@ -1580,8 +1580,6 @@ namespace Game.Spells } } } - - target.GetThreatManager().EvaluateSuppressed(); } [AuraEffectHandler(AuraType.ModScale)] @@ -2381,7 +2379,9 @@ namespace Game.Spells Unit target = aurApp.GetTarget(); target.SetControlled(apply, UnitState.Confused); - target.GetThreatManager().EvaluateSuppressed(); + + if (apply) + target.GetThreatManager().EvaluateSuppressed(); } [AuraEffectHandler(AuraType.ModFear)] @@ -2393,7 +2393,6 @@ namespace Game.Spells Unit target = aurApp.GetTarget(); target.SetControlled(apply, UnitState.Fleeing); - target.GetThreatManager().EvaluateSuppressed(); } [AuraEffectHandler(AuraType.ModStun)] @@ -2405,7 +2404,9 @@ namespace Game.Spells Unit target = aurApp.GetTarget(); target.SetControlled(apply, UnitState.Stunned); - target.GetThreatManager().EvaluateSuppressed(); + + if (apply) + target.GetThreatManager().EvaluateSuppressed(); } [AuraEffectHandler(AuraType.ModRoot)] @@ -2418,7 +2419,6 @@ namespace Game.Spells Unit target = aurApp.GetTarget(); target.SetControlled(apply, UnitState.Root); - target.GetThreatManager().EvaluateSuppressed(); } [AuraEffectHandler(AuraType.PreventsFleeing)] @@ -2815,7 +2815,8 @@ namespace Game.Spells target.RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags.StealthOrInvis); } - target.GetThreatManager().EvaluateSuppressed(); + if (apply) + target.GetThreatManager().EvaluateSuppressed(); } [AuraEffectHandler(AuraType.DamageImmunity)] @@ -2827,7 +2828,8 @@ namespace Game.Spells Unit target = aurApp.GetTarget(); m_spellInfo.ApplyAllSpellImmunitiesTo(target, GetSpellEffectInfo(), apply); - target.GetThreatManager().EvaluateSuppressed(); + if (apply) + target.GetThreatManager().EvaluateSuppressed(); } [AuraEffectHandler(AuraType.DispelImmunity)]