feat(Core: new hook OnPlayerQueueRandomDungeon() and revert (now unnecessary) PR (#8196)

This commit is contained in:
Francesco Borzì
2021-10-02 09:18:33 +02:00
committed by GitHub
parent ca47fc96f2
commit 775c6744d2
6 changed files with 11 additions and 13 deletions

View File

@@ -405,7 +405,7 @@ namespace lfg
DungeonProgressionRequirements const* ar = sObjectMgr->GetAccessRequirement(dungeon->map, Difficulty(dungeon->difficulty));
uint32 lockData = 0;
if (dungeon->expansion > expansion || dungeon->expansion > sWorld->getIntConfig(CONFIG_LFG_DUNGEON_FINDER_EXPANSION))
if (dungeon->expansion > expansion)
lockData = LFG_LOCKSTATUS_INSUFFICIENT_EXPANSION;
else if (DisableMgr::IsDisabledFor(DISABLE_TYPE_MAP, dungeon->map, player))
lockData = LFG_LOCKSTATUS_RAID_LOCKED;
@@ -572,6 +572,7 @@ namespace lfg
else
{
rDungeonId = (*dungeons.begin());
sScriptMgr->OnPlayerQueueRandomDungeon(player, rDungeonId);
}
// No break on purpose (Random can only be dungeon or heroic dungeon)
[[fallthrough]];

View File

@@ -1629,6 +1629,11 @@ void ScriptMgr::OnPlayerAddToBattleground(Player* player, Battleground* bg)
FOREACH_SCRIPT(PlayerScript)->OnAddToBattleground(player, bg);
}
void ScriptMgr::OnPlayerQueueRandomDungeon(Player* player, uint32 & rDungeonId)
{
FOREACH_SCRIPT(PlayerScript)->OnQueueRandomDungeon(player, rDungeonId);
}
void ScriptMgr::OnPlayerRemoveFromBattleground(Player* player, Battleground* bg)
{
FOREACH_SCRIPT(PlayerScript)->OnRemoveFromBattleground(player, bg);

View File

@@ -841,6 +841,9 @@ public:
// Called when a player is added to battleground
virtual void OnAddToBattleground(Player* /*player*/, Battleground* /*bg*/) { }
// Called when a player queues a Random Dungeon using the RDF (Random Dungeon Finder)
virtual void OnQueueRandomDungeon(Player* /*player*/, uint32 & /*rDungeonId*/) { }
// Called when a player is removed from battleground
virtual void OnRemoveFromBattleground(Player* /*player*/, Battleground* /*bg*/) { }
@@ -1646,6 +1649,7 @@ public: /* PlayerScript */
bool OnBeforePlayerTeleport(Player* player, uint32 mapid, float x, float y, float z, float orientation, uint32 options, Unit* target);
void OnPlayerUpdateFaction(Player* player);
void OnPlayerAddToBattleground(Player* player, Battleground* bg);
void OnPlayerQueueRandomDungeon(Player* player, uint32 & rDungeonId);
void OnPlayerRemoveFromBattleground(Player* player, Battleground* bg);
void OnAchievementComplete(Player* player, AchievementEntry const* achievement);
bool OnBeforeAchievementComplete(Player* player, AchievementEntry const* achievement);

View File

@@ -344,7 +344,6 @@ enum WorldIntConfigs
CONFIG_PRESERVE_CUSTOM_CHANNEL_DURATION,
CONFIG_PERSISTENT_CHARACTER_CLEAN_FLAGS,
CONFIG_LFG_OPTIONSMASK,
CONFIG_LFG_DUNGEON_FINDER_EXPANSION,
CONFIG_MAX_INSTANCES_PER_HOUR,
CONFIG_WINTERGRASP_PLR_MAX,
CONFIG_WINTERGRASP_PLR_MIN,

View File

@@ -1321,7 +1321,6 @@ void World::LoadConfigSettings(bool reload)
// Dungeon finder
m_int_configs[CONFIG_LFG_OPTIONSMASK] = sConfigMgr->GetOption<int32>("DungeonFinder.OptionsMask", 3);
m_int_configs[CONFIG_LFG_DUNGEON_FINDER_EXPANSION] = sConfigMgr->GetOption<int32>("DungeonFinder.Expansion", 2);
// Max instances per hour
m_int_configs[CONFIG_MAX_INSTANCES_PER_HOUR] = sConfigMgr->GetOption<int32>("AccountInstancesPerHour", 5);

View File

@@ -1252,16 +1252,6 @@ DeletedCharacterTicketTrace = 0
DungeonFinder.OptionsMask = 1
#
# DungeonFinder.Expansion
# Description: Allow setting which expansion can be used in LFG
# 2 - Wotlk (Default)
# 1 - TBC
# 0 - Classic
# Default: 2
DungeonFinder.Expansion = 2
#
# AccountInstancesPerHour
# Description: Controls the max amount of different instances player can enter within hour