From 5560d27be55da981847c6ffd4f09bfcba983c1ca Mon Sep 17 00:00:00 2001 From: SylvaniaCore deploy Date: Tue, 11 Aug 2026 22:58:01 +0200 Subject: [PATCH] BG BotFill : la file aleatoire (RB=32) est resolue vers un BG couvert par l IA des bots L UI PvP Legion n envoie que la file aleatoire, que le core bloquait en dur (message 'This Battleground has been disabled'). On tire desormais au sort un BG parmi WS/AB/EY/AV/IC dont le bracket existe pour le niveau du joueur. Co-Authored-By: Claude Fable 5 --- .../game/Handlers/BattleGroundHandler.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/server/game/Handlers/BattleGroundHandler.cpp b/src/server/game/Handlers/BattleGroundHandler.cpp index 507efda..e7b2cf6 100644 --- a/src/server/game/Handlers/BattleGroundHandler.cpp +++ b/src/server/game/Handlers/BattleGroundHandler.cpp @@ -67,6 +67,23 @@ void WorldSession::HandleBattlemasterJoinOpcode(WorldPackets::Battleground::Batt Group* grp = NULL; uint32 bgTypeId_ = battlemasterJoin.QueueID & 0xFFFF; + // SylvaniaCore (module BG BotFill): l UI Legion ne propose que la file aleatoire (RB=32). + // On la resout cote serveur vers un BG couvert par l IA des bots (CommandBG), en ne + // retenant que les BG dont un bracket existe pour le niveau du joueur. + if (bgTypeId_ == BATTLEGROUND_RB && _player) + { + std::vector pool; + uint32 candidates[] = { BATTLEGROUND_WS, BATTLEGROUND_AB, BATTLEGROUND_EY, BATTLEGROUND_AV, BATTLEGROUND_IC }; + for (uint32 candidate : candidates) + { + Battleground* bgTemplate = sBattlegroundMgr->GetBattlegroundTemplate(BattlegroundTypeId(candidate)); + if (bgTemplate && sDB2Manager.GetBattlegroundBracketByLevel(bgTemplate->GetMapId(), _player->getLevel())) + pool.push_back(candidate); + } + if (!pool.empty()) + bgTypeId_ = pool[urand(0, uint32(pool.size()) - 1)]; + } + if (bgTypeId_ >= 32 || bgTypeId_ == 9) { ChatHandler(this).PSendSysMessage(LANG_BG_DISABLED);