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
+5 -3
View File
@@ -338,7 +338,9 @@ namespace Game.Entities
ReplaceAllDynamicFlags(UnitDynFlags.None);
SetUpdateFieldValue(m_values.ModifyValue(m_unitData).ModifyValue(m_unitData.StateWorldEffectsQuestObjectiveID), data != null ? data.spawnTrackingQuestObjectiveId : 0);
// Set StateWorldEffectsQuestObjectiveID if there is only one linked objective for this creature
if (data != null && data.spawnTrackingQuestObjectives.Count == 1)
SetUpdateFieldValue(m_values.ModifyValue(m_unitData).ModifyValue(m_unitData.StateWorldEffectsQuestObjectiveID), data.spawnTrackingQuestObjectives.First());
SetCanDualWield(cInfo.FlagsExtra.HasAnyFlag(CreatureFlagsExtra.UseOffhandAttack));
@@ -3033,9 +3035,9 @@ namespace Game.Entities
CreatureData data = GetCreatureData();
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];
}
}