Core/Creatures: Implemented UNIT_NPC_FLAG_GOSSIP as viewer dependent and update npcflags on quest changes

Port From (https://github.com/TrinityCore/TrinityCore/commit/dd15d763cc0529afc9b7f077817645d875608626)
This commit is contained in:
hondacrx
2024-02-24 16:07:23 -05:00
parent 3eca0ad68c
commit fa5e0f0c14
6 changed files with 92 additions and 2 deletions
+29
View File
@@ -5490,6 +5490,35 @@ namespace Game.Entities
return go;
}
public void UpdateNearbyCreatureNpcFlags()
{
List<Creature> creatures = GetCreatureListWithOptionsInGrid(GetVisibilityRange(), new() { IgnorePhases = false });
UpdateData udata = new(GetMapId());
ObjectFieldData objMask = new();
UnitData unitMask = new();
for (int i = 0; i < m_unitData.NpcFlags.GetSize(); ++i)
unitMask.MarkChanged(m_unitData.NpcFlags, i);
foreach (Creature creature in creatures)
{
if (!HaveAtClient(creature))
continue;
// skip creatures which dont have any npcflags set
if (creature.GetNpcFlags() == 0 && creature.GetNpcFlags2() == 0)
continue;
creature.BuildValuesUpdateForPlayerWithMask(udata, objMask.GetUpdateMask(), unitMask.GetUpdateMask(), this);
}
if (!udata.HasData())
return;
udata.BuildPacket(out UpdateObject packet);
SendPacket(packet);
}
public void SendInitialPacketsBeforeAddToMap()
{
if (!m_teleport_options.HasAnyFlag(TeleportToOptions.Seamless))