From 7f01c4b82e14c3e81ddd80ced96b38a01f2b0b9a Mon Sep 17 00:00:00 2001 From: Hondacrx Date: Mon, 26 Aug 2024 16:50:56 -0400 Subject: [PATCH] Core/Players: Allow GMs to target npcs with UNIT_FLAG2_UNTARGETABLE_BY_CLIENT flag Port From (https://github.com/TrinityCore/TrinityCore/commit/5ee28a9161e763c516a968bd83127da7073dc1e7) --- Source/Game/Entities/Object/Update/UpdateFields.cs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/Source/Game/Entities/Object/Update/UpdateFields.cs b/Source/Game/Entities/Object/Update/UpdateFields.cs index 0d505bce1..f9c0cb383 100644 --- a/Source/Game/Entities/Object/Update/UpdateFields.cs +++ b/Source/Game/Entities/Object/Update/UpdateFields.cs @@ -1336,7 +1336,7 @@ namespace Game.Entities VirtualItems[i].WriteCreate(data, owner, receiver); data.WriteUInt32(GetViewerDependentFlags(this, owner, receiver)); - data.WriteUInt32(Flags2); + data.WriteUInt32(GetViewerDependentFlags2(this, owner, receiver)); data.WriteUInt32(GetViewerDependentFlags3(this, owner, receiver)); data.WriteUInt32(GetViewerDependentAuraState(this, owner, receiver)); for (int i = 0; i < 2; ++i) @@ -1723,7 +1723,7 @@ namespace Game.Entities } if (changesMask[43]) { - data.WriteUInt32(Flags2); + data.WriteUInt32(GetViewerDependentFlags2(this, owner, receiver)); } if (changesMask[44]) { @@ -2386,6 +2386,15 @@ namespace Game.Entities return flags; } + uint GetViewerDependentFlags2(UnitData unitData, Unit unit, Player receiver) + { + uint flags = unitData.Flags2; + // Gamemasters should be always able to interact with units - remove uninteractible flag + if (receiver.IsGameMaster()) + flags &= ~(uint)UnitFlags2.UntargetableByClient; + + return flags; + } uint GetViewerDependentFlags3(UnitData unitData, Unit unit, Player receiver) { uint flags = unitData.Flags3;