feat(Core/LFG): Implemented LFG_OPTION_ENABLE_SEASONAL_BOSSES. (#8219)

Closes #8098
This commit is contained in:
UltraNix
2021-10-09 19:57:23 +02:00
committed by GitHub
parent 89f0c42c0e
commit 0eec867c3b
6 changed files with 23 additions and 18 deletions
+4 -2
View File
@@ -272,7 +272,7 @@ namespace lfg
void LFGMgr::Update(uint32 tdiff, uint8 task) void LFGMgr::Update(uint32 tdiff, uint8 task)
{ {
if (!isOptionEnabled(LFG_OPTION_ENABLE_DUNGEON_FINDER | LFG_OPTION_ENABLE_RAID_BROWSER)) if (!isOptionEnabled(LFG_OPTION_ENABLE_DUNGEON_FINDER | LFG_OPTION_ENABLE_RAID_BROWSER | LFG_OPTION_ENABLE_SEASONAL_BOSSES))
return; return;
if (task == 0) if (task == 0)
@@ -394,6 +394,8 @@ namespace lfg
LfgDungeonSet const& dungeons = GetDungeonsByRandom(0); LfgDungeonSet const& dungeons = GetDungeonsByRandom(0);
LfgLockMap lock; LfgLockMap lock;
bool onlySeasonalBosses = m_options == LFG_OPTION_ENABLE_SEASONAL_BOSSES;
float avgItemLevel = player->GetAverageItemLevelForDF(); float avgItemLevel = player->GetAverageItemLevelForDF();
for (LfgDungeonSet::const_iterator it = dungeons.begin(); it != dungeons.end(); ++it) for (LfgDungeonSet::const_iterator it = dungeons.begin(); it != dungeons.end(); ++it)
@@ -405,7 +407,7 @@ namespace lfg
DungeonProgressionRequirements const* ar = sObjectMgr->GetAccessRequirement(dungeon->map, Difficulty(dungeon->difficulty)); DungeonProgressionRequirements const* ar = sObjectMgr->GetAccessRequirement(dungeon->map, Difficulty(dungeon->difficulty));
uint32 lockData = 0; uint32 lockData = 0;
if (dungeon->expansion > expansion) if (dungeon->expansion > expansion || (onlySeasonalBosses && !dungeon->seasonal))
lockData = LFG_LOCKSTATUS_INSUFFICIENT_EXPANSION; lockData = LFG_LOCKSTATUS_INSUFFICIENT_EXPANSION;
else if (DisableMgr::IsDisabledFor(DISABLE_TYPE_MAP, dungeon->map, player)) else if (DisableMgr::IsDisabledFor(DISABLE_TYPE_MAP, dungeon->map, player))
lockData = LFG_LOCKSTATUS_RAID_LOCKED; lockData = LFG_LOCKSTATUS_RAID_LOCKED;
+1
View File
@@ -38,6 +38,7 @@ namespace lfg
{ {
LFG_OPTION_ENABLE_DUNGEON_FINDER = 0x01, LFG_OPTION_ENABLE_DUNGEON_FINDER = 0x01,
LFG_OPTION_ENABLE_RAID_BROWSER = 0x02, LFG_OPTION_ENABLE_RAID_BROWSER = 0x02,
LFG_OPTION_ENABLE_SEASONAL_BOSSES = 0x04
}; };
enum LFGMgrEnum enum LFGMgrEnum
@@ -36,7 +36,7 @@ namespace lfg
void LFGPlayerScript::OnLevelChanged(Player* player, uint8 /*oldLevel*/) void LFGPlayerScript::OnLevelChanged(Player* player, uint8 /*oldLevel*/)
{ {
if (!sLFGMgr->isOptionEnabled(LFG_OPTION_ENABLE_DUNGEON_FINDER | LFG_OPTION_ENABLE_RAID_BROWSER)) if (!sLFGMgr->isOptionEnabled(LFG_OPTION_ENABLE_DUNGEON_FINDER | LFG_OPTION_ENABLE_RAID_BROWSER | LFG_OPTION_ENABLE_SEASONAL_BOSSES))
return; return;
sLFGMgr->InitializeLockedDungeons(player); sLFGMgr->InitializeLockedDungeons(player);
@@ -44,7 +44,7 @@ namespace lfg
void LFGPlayerScript::OnLogout(Player* player) void LFGPlayerScript::OnLogout(Player* player)
{ {
if (!sLFGMgr->isOptionEnabled(LFG_OPTION_ENABLE_DUNGEON_FINDER | LFG_OPTION_ENABLE_RAID_BROWSER)) if (!sLFGMgr->isOptionEnabled(LFG_OPTION_ENABLE_DUNGEON_FINDER | LFG_OPTION_ENABLE_RAID_BROWSER | LFG_OPTION_ENABLE_SEASONAL_BOSSES))
return; return;
if (!player->GetGroup() || !player->GetGroup()->isLFGGroup()) if (!player->GetGroup() || !player->GetGroup()->isLFGGroup())
@@ -64,7 +64,7 @@ namespace lfg
void LFGPlayerScript::OnLogin(Player* player) void LFGPlayerScript::OnLogin(Player* player)
{ {
if (!sLFGMgr->isOptionEnabled(LFG_OPTION_ENABLE_DUNGEON_FINDER | LFG_OPTION_ENABLE_RAID_BROWSER)) if (!sLFGMgr->isOptionEnabled(LFG_OPTION_ENABLE_DUNGEON_FINDER | LFG_OPTION_ENABLE_RAID_BROWSER | LFG_OPTION_ENABLE_SEASONAL_BOSSES))
return; return;
// Temporal: Trying to determine when group data and LFG data gets desynched // Temporal: Trying to determine when group data and LFG data gets desynched
@@ -138,7 +138,7 @@ namespace lfg
void LFGGroupScript::OnAddMember(Group* group, ObjectGuid guid) void LFGGroupScript::OnAddMember(Group* group, ObjectGuid guid)
{ {
if (!sLFGMgr->isOptionEnabled(LFG_OPTION_ENABLE_DUNGEON_FINDER | LFG_OPTION_ENABLE_RAID_BROWSER)) if (!sLFGMgr->isOptionEnabled(LFG_OPTION_ENABLE_DUNGEON_FINDER | LFG_OPTION_ENABLE_RAID_BROWSER | LFG_OPTION_ENABLE_SEASONAL_BOSSES))
return; return;
ObjectGuid gguid = group->GetGUID(); ObjectGuid gguid = group->GetGUID();
@@ -183,7 +183,7 @@ namespace lfg
(void)kicker; (void)kicker;
(void)reason; (void)reason;
if (!sLFGMgr->isOptionEnabled(LFG_OPTION_ENABLE_DUNGEON_FINDER | LFG_OPTION_ENABLE_RAID_BROWSER)) if (!sLFGMgr->isOptionEnabled(LFG_OPTION_ENABLE_DUNGEON_FINDER | LFG_OPTION_ENABLE_RAID_BROWSER | LFG_OPTION_ENABLE_SEASONAL_BOSSES))
return; return;
ObjectGuid gguid = group->GetGUID(); ObjectGuid gguid = group->GetGUID();
@@ -249,7 +249,7 @@ namespace lfg
void LFGGroupScript::OnDisband(Group* group) void LFGGroupScript::OnDisband(Group* group)
{ {
if (!sLFGMgr->isOptionEnabled(LFG_OPTION_ENABLE_DUNGEON_FINDER | LFG_OPTION_ENABLE_RAID_BROWSER)) if (!sLFGMgr->isOptionEnabled(LFG_OPTION_ENABLE_DUNGEON_FINDER | LFG_OPTION_ENABLE_RAID_BROWSER | LFG_OPTION_ENABLE_SEASONAL_BOSSES))
return; return;
ObjectGuid gguid = group->GetGUID(); ObjectGuid gguid = group->GetGUID();
@@ -264,7 +264,7 @@ namespace lfg
void LFGGroupScript::OnChangeLeader(Group* group, ObjectGuid newLeaderGuid, ObjectGuid oldLeaderGuid) void LFGGroupScript::OnChangeLeader(Group* group, ObjectGuid newLeaderGuid, ObjectGuid oldLeaderGuid)
{ {
if (!sLFGMgr->isOptionEnabled(LFG_OPTION_ENABLE_DUNGEON_FINDER | LFG_OPTION_ENABLE_RAID_BROWSER)) if (!sLFGMgr->isOptionEnabled(LFG_OPTION_ENABLE_DUNGEON_FINDER | LFG_OPTION_ENABLE_RAID_BROWSER | LFG_OPTION_ENABLE_SEASONAL_BOSSES))
return; return;
ObjectGuid gguid = group->GetGUID(); ObjectGuid gguid = group->GetGUID();
@@ -283,7 +283,7 @@ namespace lfg
// used only with EXTRA_LOGS // used only with EXTRA_LOGS
(void)guid; (void)guid;
if (!sLFGMgr->isOptionEnabled(LFG_OPTION_ENABLE_DUNGEON_FINDER | LFG_OPTION_ENABLE_RAID_BROWSER)) if (!sLFGMgr->isOptionEnabled(LFG_OPTION_ENABLE_DUNGEON_FINDER | LFG_OPTION_ENABLE_RAID_BROWSER | LFG_OPTION_ENABLE_SEASONAL_BOSSES))
return; return;
ObjectGuid gguid = group->GetGUID(); ObjectGuid gguid = group->GetGUID();
+1 -1
View File
@@ -45,7 +45,7 @@ void BuildPartyLockDungeonBlock(WorldPacket& data, const lfg::LfgLockPartyMap& l
void WorldSession::HandleLfgJoinOpcode(WorldPacket& recvData) void WorldSession::HandleLfgJoinOpcode(WorldPacket& recvData)
{ {
if (!sLFGMgr->isOptionEnabled(lfg::LFG_OPTION_ENABLE_DUNGEON_FINDER | lfg::LFG_OPTION_ENABLE_RAID_BROWSER)) if (!sLFGMgr->isOptionEnabled(lfg::LFG_OPTION_ENABLE_DUNGEON_FINDER | lfg::LFG_OPTION_ENABLE_RAID_BROWSER | lfg::LFG_OPTION_ENABLE_SEASONAL_BOSSES))
{ {
recvData.rfinish(); recvData.rfinish();
return; return;
+1 -1
View File
@@ -1320,7 +1320,7 @@ void World::LoadConfigSettings(bool reload)
m_int_configs[CONFIG_WARDEN_CLIENT_RESPONSE_DELAY] = sConfigMgr->GetOption<int32>("Warden.ClientResponseDelay", 600); m_int_configs[CONFIG_WARDEN_CLIENT_RESPONSE_DELAY] = sConfigMgr->GetOption<int32>("Warden.ClientResponseDelay", 600);
// Dungeon finder // Dungeon finder
m_int_configs[CONFIG_LFG_OPTIONSMASK] = sConfigMgr->GetOption<int32>("DungeonFinder.OptionsMask", 3); m_int_configs[CONFIG_LFG_OPTIONSMASK] = sConfigMgr->GetOption<int32>("DungeonFinder.OptionsMask", 5);
// Max instances per hour // Max instances per hour
m_int_configs[CONFIG_MAX_INSTANCES_PER_HOUR] = sConfigMgr->GetOption<int32>("AccountInstancesPerHour", 5); m_int_configs[CONFIG_MAX_INSTANCES_PER_HOUR] = sConfigMgr->GetOption<int32>("AccountInstancesPerHour", 5);
+4 -2
View File
@@ -1248,9 +1248,11 @@ DeletedCharacterTicketTrace = 0
# Value is a bitmask consisting of: # Value is a bitmask consisting of:
# LFG_OPTION_ENABLE_DUNGEON_FINDER = 1, Enable the dungeon finder browser # LFG_OPTION_ENABLE_DUNGEON_FINDER = 1, Enable the dungeon finder browser
# LFG_OPTION_ENABLE_RAID_BROWSER = 2, Enable the raid browser # LFG_OPTION_ENABLE_RAID_BROWSER = 2, Enable the raid browser
# Default: 1 # LFG_OPTION_ENABLE_SEASONAL_BOSSES = 4, Enable seasonal bosses
DungeonFinder.OptionsMask = 1 # Default: 5
DungeonFinder.OptionsMask = 5
# #
# AccountInstancesPerHour # AccountInstancesPerHour