From b451bdba572515b4e847313f815cdc85c9171dc8 Mon Sep 17 00:00:00 2001 From: armanmprr Date: Sat, 23 May 2026 00:10:09 -0700 Subject: [PATCH] fix lfg browser level locked scenarios and raids --- src/server/game/Handlers/LFGHandler.cpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/server/game/Handlers/LFGHandler.cpp b/src/server/game/Handlers/LFGHandler.cpp index 3bedf1f6812..a88382df0ca 100644 --- a/src/server/game/Handlers/LFGHandler.cpp +++ b/src/server/game/Handlers/LFGHandler.cpp @@ -28,6 +28,20 @@ #include "World.h" #include "WorldPacket.h" +namespace +{ +bool ShouldSendLfgLock(uint32 slot, lfg::LfgLockInfoData const& lock) +{ + if (lock.lockStatus != lfg::LFG_LOCKSTATUS_TOO_LOW_LEVEL && lock.lockStatus != lfg::LFG_LOCKSTATUS_TOO_HIGH_LEVEL) + return true; + + if (lfg::LFGDungeonData const* dungeon = sLFGMgr->GetLFGDungeon(slot & 0x00FFFFFF)) + return dungeon->subtype != lfg::LFG_SUBTYPE_LFR && dungeon->subtype != lfg::LFG_SUBTYPE_SCENARIO; + + return true; +} +} + void WorldSession::HandleLfgJoinOpcode(WorldPackets::LFG::DFJoin& dfJoin) { if (!sLFGMgr->isOptionEnabled(lfg::LFG_OPTION_ENABLE_DUNGEON_FINDER | lfg::LFG_OPTION_ENABLE_RAID_BROWSER) || @@ -150,7 +164,12 @@ void WorldSession::SendLfgPlayerLockInfo() // Get player locked Dungeons for (auto const& lock : sLFGMgr->GetLockedDungeons(_player->GetGUID())) + { + if (!ShouldSendLfgLock(lock.first, lock.second)) + continue; + lfgPlayerInfo.BlackList.Slot.emplace_back(lock.first, lock.second.lockStatus, lock.second.requiredItemLevel, lock.second.currentItemLevel); + } for (uint32 slot : randomDungeons) { @@ -223,7 +242,12 @@ void WorldSession::SendLfgPartyLockInfo() WorldPackets::LFG::LFGBlackList& lfgBlackList = lfgPartyInfo.Player.back(); lfgBlackList.PlayerGuid = pguid; for (auto const& lock : sLFGMgr->GetLockedDungeons(pguid)) + { + if (!ShouldSendLfgLock(lock.first, lock.second)) + continue; + lfgBlackList.Slot.emplace_back(lock.first, lock.second.lockStatus, lock.second.requiredItemLevel, lock.second.currentItemLevel); + } } TC_LOG_DEBUG("lfg", "SMSG_LFG_PARTY_INFO %s", GetPlayerInfo().c_str());