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:
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user