Core/Maps: add new FLAG_ALLIANCE_ONLY and FLAG_HORDE_ONLY for instance spawn groups (PR #25656)

(cherry picked from commit 4abbeb2a60)
This commit is contained in:
Ovah
2020-11-17 23:41:15 +01:00
committed by Shauren
parent 191fea6055
commit 203dfec2a1
3 changed files with 13 additions and 2 deletions

View File

@@ -2886,6 +2886,12 @@ void ObjectMgr::LoadInstanceSpawnGroups()
else
info.Flags = flags;
if ((flags & InstanceSpawnGroupInfo::FLAG_ALLIANCE_ONLY) && (flags & InstanceSpawnGroupInfo::FLAG_HORDE_ONLY))
{
info.Flags = flags & ~(InstanceSpawnGroupInfo::FLAG_ALLIANCE_ONLY | InstanceSpawnGroupInfo::FLAG_HORDE_ONLY);
TC_LOG_ERROR("sql.sql", "Instance spawn group (%u,%u) FLAG_ALLIANCE_ONLY and FLAG_HORDE_ONLY may not be used together in a single entry - truncated to %u.", instanceMapId, spawnGroupId, info.Flags);
}
++n;
} while (result->NextRow());

View File

@@ -435,9 +435,11 @@ struct TC_GAME_API InstanceSpawnGroupInfo
enum
{
FLAG_ACTIVATE_SPAWN = 0x01,
FLAG_BLOCK_SPAWN = 0x02,
FLAG_BLOCK_SPAWN = 0x02,
FLAG_ALLIANCE_ONLY = 0x04,
FLAG_HORDE_ONLY = 0x08,
FLAG_ALL = (FLAG_ACTIVATE_SPAWN | FLAG_BLOCK_SPAWN)
FLAG_ALL = (FLAG_ACTIVATE_SPAWN | FLAG_BLOCK_SPAWN | FLAG_ALLIANCE_ONLY | FLAG_HORDE_ONLY)
};
uint8 BossStateId;
uint8 BossStates;

View File

@@ -262,6 +262,9 @@ void InstanceScript::UpdateSpawnGroups()
continue;
if (!((1 << GetBossState(info.BossStateId)) & info.BossStates))
continue;
if (((instance->GetTeamIdInInstance() == TEAM_ALLIANCE) && (info.Flags & InstanceSpawnGroupInfo::FLAG_HORDE_ONLY))
|| ((instance->GetTeamIdInInstance() == TEAM_HORDE) && (info.Flags & InstanceSpawnGroupInfo::FLAG_ALLIANCE_ONLY)))
continue;
if (info.Flags & InstanceSpawnGroupInfo::FLAG_BLOCK_SPAWN)
curValue = FORCEBLOCK;
else if (info.Flags & InstanceSpawnGroupInfo::FLAG_ACTIVATE_SPAWN)