Core/Players: Allow GMs to target npcs with UNIT_FLAG2_UNTARGETABLE_BY_CLIENT flag

Port From (https://github.com/TrinityCore/TrinityCore/commit/5ee28a9161e763c516a968bd83127da7073dc1e7)
This commit is contained in:
Hondacrx
2024-08-26 16:50:56 -04:00
parent 7a43203e0c
commit 7f01c4b82e
@@ -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;