From b204754f51fe58243a27e01b09e53b07b43be52f Mon Sep 17 00:00:00 2001 From: hondacrx Date: Mon, 20 Jun 2022 22:46:50 -0400 Subject: [PATCH] Core/Spells: Corrected unit flag checked with SPELL_ATTR6_CAN_TARGET_UNTARGETABLE Port From (https://github.com/TrinityCore/TrinityCore/commit/61263bf74dfa6d8ee6e54b56f54a8b3e01c80140) --- Source/Game/Entities/Object/WorldObject.cs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/Source/Game/Entities/Object/WorldObject.cs b/Source/Game/Entities/Object/WorldObject.cs index 97113cb5b..0bb7892e3 100644 --- a/Source/Game/Entities/Object/WorldObject.cs +++ b/Source/Game/Entities/Object/WorldObject.cs @@ -2510,7 +2510,10 @@ namespace Game.Entities return false; // can't attack untargetable - if ((bySpell == null || !bySpell.HasAttribute(SpellAttr6.CanTargetUntargetable)) && unitTarget != null && unitTarget.HasUnitFlag(UnitFlags.Uninteractible)) + if ((bySpell == null || !bySpell.HasAttribute(SpellAttr6.CanTargetUntargetable)) && unitTarget != null && unitTarget.HasUnitFlag(UnitFlags.NonAttackable2)) + return false; + + if (unitTarget != null && unitTarget.HasUnitFlag(UnitFlags.Uninteractible)) return false; Player playerAttacker = ToPlayer(); @@ -2521,7 +2524,7 @@ namespace Game.Entities } // check flags - if (unitTarget != null && unitTarget.HasUnitFlag(UnitFlags.NonAttackable | UnitFlags.OnTaxi | UnitFlags.NotAttackable1 | UnitFlags.NonAttackable2)) + if (unitTarget != null && unitTarget.HasUnitFlag(UnitFlags.NonAttackable | UnitFlags.OnTaxi | UnitFlags.NotAttackable1)) return false; Unit unitOrOwner = unit; @@ -2668,11 +2671,14 @@ namespace Game.Entities return false; // can't assist untargetable - if ((bySpell == null || !bySpell.HasAttribute(SpellAttr6.CanTargetUntargetable)) && unitTarget && unitTarget.HasUnitFlag(UnitFlags.Uninteractible)) + if ((bySpell == null || !bySpell.HasAttribute(SpellAttr6.CanTargetUntargetable)) && unitTarget != null && unitTarget.HasUnitFlag(UnitFlags.NonAttackable2)) + return false; + + if (unitTarget != null && unitTarget.HasUnitFlag(UnitFlags.Uninteractible)) return false; // check flags for negative spells - if (isNegativeSpell && unitTarget != null && unitTarget.HasUnitFlag(UnitFlags.NonAttackable | UnitFlags.OnTaxi | UnitFlags.NotAttackable1 | UnitFlags.NonAttackable2)) + if (isNegativeSpell && unitTarget != null && unitTarget.HasUnitFlag(UnitFlags.NonAttackable | UnitFlags.OnTaxi | UnitFlags.NotAttackable1)) return false; if (isNegativeSpell || bySpell == null || !bySpell.HasAttribute(SpellAttr6.CanAssistImmunePc))