Core/Misc: Implemented spawn tracking

Port From (https://github.com/TrinityCore/TrinityCore/commit/c9099c87567ead635811ef71b990ae7f19103509)
This commit is contained in:
Hondacrx
2025-05-25 20:13:24 -04:00
parent 84642c2ccf
commit 2043ac37f9
17 changed files with 953 additions and 44 deletions
+20 -2
View File
@@ -283,8 +283,6 @@ namespace Game.Entities
SetGoState(goState);
SetGoArtKit(artKit);
SetUpdateFieldValue(m_values.ModifyValue(m_gameObjectData).ModifyValue(m_gameObjectData.SpawnTrackingStateAnimID), Global.DB2Mgr.GetEmptyAnimStateID());
switch (goInfo.type)
{
case GameObjectTypes.FishingHole:
@@ -1128,6 +1126,8 @@ namespace Game.Entities
PhasingHandler.InitDbPhaseShift(GetPhaseShift(), data.PhaseUseFlags, data.PhaseId, data.PhaseGroup);
PhasingHandler.InitDbVisibleMapId(GetPhaseShift(), data.terrainSwapMap);
SetUpdateFieldValue(m_values.ModifyValue(m_gameObjectData).ModifyValue(m_gameObjectData.StateWorldEffectsQuestObjectiveID), data != null ? data.spawnTrackingQuestObjectiveId : 0);
if (data.spawntimesecs >= 0)
{
m_spawnedByDefault = true;
@@ -2730,6 +2730,24 @@ namespace Game.Entities
public string GetStringId(StringIdType type) { return m_stringIds[(int)type]; }
public override SpawnTrackingStateData GetSpawnTrackingStateDataForPlayer(Player player)
{
if (player == null)
return null;
SpawnMetadata data = Global.ObjectMgr.GetSpawnMetadata(SpawnObjectType.GameObject, GetSpawnId());
if (data != null)
{
if (data.spawnTrackingQuestObjectiveId != 0 && data.spawnTrackingData != null)
{
SpawnTrackingState state = player.GetSpawnTrackingStateByObjective(data.spawnTrackingData.SpawnTrackingId, data.spawnTrackingQuestObjectiveId);
return data.spawnTrackingStates[(int)state];
}
}
return null;
}
public override string GetName(Locale locale = Locale.enUS)
{
if (locale != Locale.enUS)