From 00de526f7dff3d7ad6545efa37e65779414cdf80 Mon Sep 17 00:00:00 2001 From: hondacrx Date: Sun, 4 Feb 2024 14:49:04 -0500 Subject: [PATCH] Core/Maps: Properly set initial spawn group state for groups that have conditions Port From (https://github.com/TrinityCore/TrinityCore/commit/fb64d7fe8efe5ecba40123cdc96195d3ca52d7c0) --- Source/Game/Maps/Map.cs | 7 +++++++ Source/Game/Maps/MapManager.cs | 4 ++++ 2 files changed, 11 insertions(+) diff --git a/Source/Game/Maps/Map.cs b/Source/Game/Maps/Map.cs index cf03dcf46..c07334173 100644 --- a/Source/Game/Maps/Map.cs +++ b/Source/Game/Maps/Map.cs @@ -2374,6 +2374,13 @@ namespace Game.Maps return _toggledSpawnGroupIds.Contains(groupId) != !data.flags.HasAnyFlag(SpawnGroupFlags.ManualSpawn); } + public void InitSpawnGroupState() + { + var spawnGroups = Global.ObjectMgr.GetSpawnGroupsForMap(GetId()); + foreach (uint spawnGroupId in spawnGroups) + SetSpawnGroupActive(spawnGroupId, Global.ConditionMgr.IsMapMeetingNotGroupedConditions(ConditionSourceType.SpawnGroup, spawnGroupId, this)); + } + public void UpdateSpawnGroupConditions() { var spawnGroups = Global.ObjectMgr.GetSpawnGroupsForMap(GetId()); diff --git a/Source/Game/Maps/MapManager.cs b/Source/Game/Maps/MapManager.cs index b97912714..6c1ccbf5e 100644 --- a/Source/Game/Maps/MapManager.cs +++ b/Source/Game/Maps/MapManager.cs @@ -49,6 +49,7 @@ namespace Game.Entities Map map = new Map(mapId, i_gridCleanUpDelay, instanceId, Difficulty.None); map.LoadRespawnTimes(); map.LoadCorpseData(); + map.InitSpawnGroupState(); if (WorldConfig.GetBoolValue(WorldCfg.BasemapLoadGrids)) map.LoadAllCells(); @@ -82,6 +83,7 @@ namespace Game.Entities map.CreateInstanceData(); map.SetInstanceScenario(Global.ScenarioMgr.CreateInstanceScenario(map, team)); + map.InitSpawnGroupState(); if (WorldConfig.GetBoolValue(WorldCfg.InstancemapLoadGrids)) map.LoadAllCells(); @@ -97,6 +99,7 @@ namespace Game.Entities Cypher.Assert(map.IsBattlegroundOrArena()); map.SetBG(bg); bg.SetBgMap(map); + map.InitSpawnGroupState(); if (WorldConfig.GetBoolValue(WorldCfg.BattlegroundMapLoadGrids)) map.LoadAllCells(); @@ -108,6 +111,7 @@ namespace Game.Entities { GarrisonMap map = new GarrisonMap(mapId, i_gridCleanUpDelay, instanceId, owner.GetGUID()); Cypher.Assert(map.IsGarrison()); + map.InitSpawnGroupState(); return map; }