Core/Maps: Properly set initial spawn group state for groups that have conditions
Port From (https://github.com/TrinityCore/TrinityCore/commit/fb64d7fe8efe5ecba40123cdc96195d3ca52d7c0)
This commit is contained in:
@@ -2374,6 +2374,13 @@ namespace Game.Maps
|
|||||||
return _toggledSpawnGroupIds.Contains(groupId) != !data.flags.HasAnyFlag(SpawnGroupFlags.ManualSpawn);
|
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()
|
public void UpdateSpawnGroupConditions()
|
||||||
{
|
{
|
||||||
var spawnGroups = Global.ObjectMgr.GetSpawnGroupsForMap(GetId());
|
var spawnGroups = Global.ObjectMgr.GetSpawnGroupsForMap(GetId());
|
||||||
|
|||||||
@@ -49,6 +49,7 @@ namespace Game.Entities
|
|||||||
Map map = new Map(mapId, i_gridCleanUpDelay, instanceId, Difficulty.None);
|
Map map = new Map(mapId, i_gridCleanUpDelay, instanceId, Difficulty.None);
|
||||||
map.LoadRespawnTimes();
|
map.LoadRespawnTimes();
|
||||||
map.LoadCorpseData();
|
map.LoadCorpseData();
|
||||||
|
map.InitSpawnGroupState();
|
||||||
|
|
||||||
if (WorldConfig.GetBoolValue(WorldCfg.BasemapLoadGrids))
|
if (WorldConfig.GetBoolValue(WorldCfg.BasemapLoadGrids))
|
||||||
map.LoadAllCells();
|
map.LoadAllCells();
|
||||||
@@ -82,6 +83,7 @@ namespace Game.Entities
|
|||||||
|
|
||||||
map.CreateInstanceData();
|
map.CreateInstanceData();
|
||||||
map.SetInstanceScenario(Global.ScenarioMgr.CreateInstanceScenario(map, team));
|
map.SetInstanceScenario(Global.ScenarioMgr.CreateInstanceScenario(map, team));
|
||||||
|
map.InitSpawnGroupState();
|
||||||
|
|
||||||
if (WorldConfig.GetBoolValue(WorldCfg.InstancemapLoadGrids))
|
if (WorldConfig.GetBoolValue(WorldCfg.InstancemapLoadGrids))
|
||||||
map.LoadAllCells();
|
map.LoadAllCells();
|
||||||
@@ -97,6 +99,7 @@ namespace Game.Entities
|
|||||||
Cypher.Assert(map.IsBattlegroundOrArena());
|
Cypher.Assert(map.IsBattlegroundOrArena());
|
||||||
map.SetBG(bg);
|
map.SetBG(bg);
|
||||||
bg.SetBgMap(map);
|
bg.SetBgMap(map);
|
||||||
|
map.InitSpawnGroupState();
|
||||||
|
|
||||||
if (WorldConfig.GetBoolValue(WorldCfg.BattlegroundMapLoadGrids))
|
if (WorldConfig.GetBoolValue(WorldCfg.BattlegroundMapLoadGrids))
|
||||||
map.LoadAllCells();
|
map.LoadAllCells();
|
||||||
@@ -108,6 +111,7 @@ namespace Game.Entities
|
|||||||
{
|
{
|
||||||
GarrisonMap map = new GarrisonMap(mapId, i_gridCleanUpDelay, instanceId, owner.GetGUID());
|
GarrisonMap map = new GarrisonMap(mapId, i_gridCleanUpDelay, instanceId, owner.GetGUID());
|
||||||
Cypher.Assert(map.IsGarrison());
|
Cypher.Assert(map.IsGarrison());
|
||||||
|
map.InitSpawnGroupState();
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user