Core/SpawnTracking: Allow linking a spawn to more than one quest objective

Port From (https://github.com/TrinityCore/TrinityCore/commit/138b1b1a21ff871b54f1f2bd815de30a93b803eb)
This commit is contained in:
Hondacrx
2025-08-19 17:18:59 -04:00
parent a9fc9f454f
commit 877fb1a76f
7 changed files with 173 additions and 62 deletions
@@ -1126,7 +1126,9 @@ 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);
// Set StateWorldEffectsQuestObjectiveID if there is only one linked objective for this gameobject
if (data != null && data.spawnTrackingQuestObjectives.Count == 1)
SetUpdateFieldValue(m_values.ModifyValue(m_gameObjectData).ModifyValue(m_gameObjectData.StateWorldEffectsQuestObjectiveID), data.spawnTrackingQuestObjectives.First());
if (data.spawntimesecs >= 0)
{
@@ -2741,9 +2743,9 @@ namespace Game.Entities
GameObjectData data = GetGameObjectData();
if (data != null)
{
if (data.spawnTrackingQuestObjectiveId != 0 && data.spawnTrackingData != null)
if (data.spawnTrackingData != null && !data.spawnTrackingQuestObjectives.Empty())
{
SpawnTrackingState state = player.GetSpawnTrackingStateByObjective(data.spawnTrackingData.SpawnTrackingId, data.spawnTrackingQuestObjectiveId);
SpawnTrackingState state = player.GetSpawnTrackingStateByObjectives(data.spawnTrackingData.SpawnTrackingId, data.spawnTrackingQuestObjectives);
return data.spawnTrackingStates[(int)state];
}
}