Core/Maps: add new FLAG_ALLIANCE_ONLY and FLAG_HORDE_ONLY for instance spawn groups
Port From (https://github.com/TrinityCore/TrinityCore/commit/203dfec2a1d1d628469ed0d68fefac33c15e65d6)
This commit is contained in:
@@ -239,8 +239,10 @@ namespace Framework.Constants
|
|||||||
{
|
{
|
||||||
ActivateSpawn = 0x01,
|
ActivateSpawn = 0x01,
|
||||||
BlockSpawn = 0x02,
|
BlockSpawn = 0x02,
|
||||||
|
AllianceOnly = 0x04,
|
||||||
|
HordeOnly = 0x08,
|
||||||
|
|
||||||
All = (ActivateSpawn | BlockSpawn)
|
All = ActivateSpawn | BlockSpawn | AllianceOnly | HordeOnly
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum AreaHeaderFlags : ushort
|
public enum AreaHeaderFlags : ushort
|
||||||
|
|||||||
@@ -5677,6 +5677,12 @@ namespace Game
|
|||||||
else
|
else
|
||||||
info.Flags = flags;
|
info.Flags = flags;
|
||||||
|
|
||||||
|
if (flags.HasFlag(InstanceSpawnGroupFlags.AllianceOnly) && flags.HasFlag(InstanceSpawnGroupFlags.HordeOnly))
|
||||||
|
{
|
||||||
|
info.Flags = flags & ~(InstanceSpawnGroupFlags.AllianceOnly | InstanceSpawnGroupFlags.HordeOnly);
|
||||||
|
Log.outError(LogFilter.Sql, $"Instance spawn group ({instanceMapId},{spawnGroupId}) FLAG_ALLIANCE_ONLY and FLAG_HORDE_ONLY may not be used together in a single entry - truncated to {info.Flags}.");
|
||||||
|
}
|
||||||
|
|
||||||
_instanceSpawnGroupStorage.Add(instanceMapId, info);
|
_instanceSpawnGroupStorage.Add(instanceMapId, info);
|
||||||
|
|
||||||
++count;
|
++count;
|
||||||
|
|||||||
@@ -217,6 +217,7 @@ namespace Game.Maps
|
|||||||
}
|
}
|
||||||
|
|
||||||
enum states { Block, Spawn, ForceBlock };
|
enum states { Block, Spawn, ForceBlock };
|
||||||
|
|
||||||
void UpdateSpawnGroups()
|
void UpdateSpawnGroups()
|
||||||
{
|
{
|
||||||
if (_instanceSpawnGroups.Empty())
|
if (_instanceSpawnGroups.Empty())
|
||||||
@@ -234,8 +235,13 @@ namespace Game.Maps
|
|||||||
if (((1 << (int)GetBossState(info.BossStateId)) & info.BossStates) == 0)
|
if (((1 << (int)GetBossState(info.BossStateId)) & info.BossStates) == 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
if (((instance.GetTeamIdInInstance() == TeamId.Alliance) && info.Flags.HasFlag(InstanceSpawnGroupFlags.HordeOnly))
|
||||||
|
|| ((instance.GetTeamIdInInstance() == TeamId.Horde) && info.Flags.HasFlag(InstanceSpawnGroupFlags.AllianceOnly)))
|
||||||
|
continue;
|
||||||
|
|
||||||
if (info.Flags.HasAnyFlag(InstanceSpawnGroupFlags.BlockSpawn))
|
if (info.Flags.HasAnyFlag(InstanceSpawnGroupFlags.BlockSpawn))
|
||||||
newStates[info.SpawnGroupId] = states.ForceBlock;
|
newStates[info.SpawnGroupId] = states.ForceBlock;
|
||||||
|
|
||||||
else if (info.Flags.HasAnyFlag(InstanceSpawnGroupFlags.ActivateSpawn))
|
else if (info.Flags.HasAnyFlag(InstanceSpawnGroupFlags.ActivateSpawn))
|
||||||
newStates[info.SpawnGroupId] = states.Spawn;
|
newStates[info.SpawnGroupId] = states.Spawn;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user