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;