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; }