Core/Conditions: Implemented conditions for spawn groups

Port From (https://github.com/TrinityCore/TrinityCore/commit/5d27939667cf3ca985a33b93646fa4e34445c8d3)
This commit is contained in:
hondacrx
2022-06-24 22:08:58 -04:00
parent a0d4a4f522
commit e56f3792de
6 changed files with 166 additions and 64 deletions
+5
View File
@@ -5639,7 +5639,10 @@ namespace Game
else
{
if (groupTemplate.mapId == 0xFFFFFFFF)
{
groupTemplate.mapId = data.MapId;
_spawnGroupsByMap.Add(data.MapId, groupId);
}
else if (groupTemplate.mapId != data.MapId && !groupTemplate.flags.HasAnyFlag(SpawnGroupFlags.System))
{
Log.outError(LogFilter.Sql, $"Spawn group {groupId} has map ID {groupTemplate.mapId}, but spawn ({spawnType},{spawnId}) has map id {data.MapId} - spawn NOT added to group!");
@@ -5808,6 +5811,7 @@ namespace Game
public SpawnGroupTemplateData GetDefaultSpawnGroup() { return _spawnGroupDataStorage.ElementAt(0).Value; }
public SpawnGroupTemplateData GetLegacySpawnGroup() { return _spawnGroupDataStorage.ElementAt(1).Value; }
public List<SpawnMetadata> GetSpawnMetadataForGroup(uint groupId) { return _spawnGroupMapStorage.LookupByKey(groupId); }
public List<uint> GetSpawnGroupsForMap(uint mapId) { return _spawnGroupsByMap.LookupByKey(mapId); }
public SpawnMetadata GetSpawnMetadata(SpawnObjectType type, ulong spawnId)
{
if (SpawnData.TypeHasData(type))
@@ -10794,6 +10798,7 @@ namespace Game
List<ushort> _transportMaps = new();
Dictionary<uint, SpawnGroupTemplateData> _spawnGroupDataStorage = new();
MultiMap<uint, SpawnMetadata> _spawnGroupMapStorage = new();
MultiMap<uint, uint> _spawnGroupsByMap = new();
MultiMap<ushort, InstanceSpawnGroupInfo> _instanceSpawnGroupStorage = new();
//Spells /Skills / Phases