summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorkissingers <33601959+kissingers@users.noreply.github.com>2025-12-07 01:38:47 +0800
committerGitHub <noreply@github.com>2025-12-06 14:38:47 -0300
commit34f261b92c0e64c47ec5c79a61b82af612f454a0 (patch)
tree26284acab7995087a1b0b329e84e5f05584a5e3a /src
parent5dc2382805e278538cabcd1e3e1570b354cb9e56 (diff)
feat(Core/LFG): Add option to exclude locked heroic dungeons in RDF (#24055)
Diffstat (limited to 'src')
-rw-r--r--src/server/apps/worldserver/worldserver.conf.dist9
-rw-r--r--src/server/game/DungeonFinding/LFGMgr.cpp2
-rw-r--r--src/server/game/World/WorldConfig.cpp2
-rw-r--r--src/server/game/World/WorldConfig.h1
4 files changed, 12 insertions, 2 deletions
diff --git a/src/server/apps/worldserver/worldserver.conf.dist b/src/server/apps/worldserver/worldserver.conf.dist
index 089c1911a5..fd9c61cfed 100644
--- a/src/server/apps/worldserver/worldserver.conf.dist
+++ b/src/server/apps/worldserver/worldserver.conf.dist
@@ -3376,6 +3376,15 @@ DungeonAccessRequirements.LFGLevelDBCOverride = 0
DungeonFinder.CastDeserter = 1
#
+# DungeonFinder.AllowCompleted
+#
+# Description: Controls whether completed heroic dungeons are excluded from LFG queue.
+# 0 - (Classic WLK mode: Dungeons completed by any group member today are excluded (daily lockout enforced))
+# Default: 1 - (Blizzlike: All dungeons are available for queue, even if already completed)
+
+DungeonFinder.AllowCompleted = 1
+
+#
###################################################################################################
###################################################################################################
diff --git a/src/server/game/DungeonFinding/LFGMgr.cpp b/src/server/game/DungeonFinding/LFGMgr.cpp
index b48138a8ba..4b19fac35c 100644
--- a/src/server/game/DungeonFinding/LFGMgr.cpp
+++ b/src/server/game/DungeonFinding/LFGMgr.cpp
@@ -1496,7 +1496,7 @@ namespace lfg
{
uint32 dungeonId = (it2->first & 0x00FFFFFF); // Compare dungeon ids
- if (it2->second == LFG_LOCKSTATUS_RAID_LOCKED && isRDF)
+ if (it2->second == LFG_LOCKSTATUS_RAID_LOCKED && isRDF && sWorld->getBoolConfig(CONFIG_LFG_ALLOW_COMPLETED))
continue;
LfgDungeonSet::iterator itDungeon = dungeons.find(dungeonId);
diff --git a/src/server/game/World/WorldConfig.cpp b/src/server/game/World/WorldConfig.cpp
index 761b8dd7be..6ae1b16cec 100644
--- a/src/server/game/World/WorldConfig.cpp
+++ b/src/server/game/World/WorldConfig.cpp
@@ -555,8 +555,8 @@ void WorldConfig::BuildConfigCache()
// Dungeon finder
SetConfigValue<uint32>(CONFIG_LFG_OPTIONSMASK, "DungeonFinder.OptionsMask", 5);
-
SetConfigValue<bool>(CONFIG_LFG_CAST_DESERTER, "DungeonFinder.CastDeserter", true);
+ SetConfigValue<bool>(CONFIG_LFG_ALLOW_COMPLETED, "DungeonFinder.AllowCompleted", true);
// DBC_ItemAttributes
SetConfigValue<bool>(CONFIG_DBC_ENFORCE_ITEM_ATTRIBUTES, "DBC.EnforceItemAttributes", true);
diff --git a/src/server/game/World/WorldConfig.h b/src/server/game/World/WorldConfig.h
index 540fd8324c..7a34aad36e 100644
--- a/src/server/game/World/WorldConfig.h
+++ b/src/server/game/World/WorldConfig.h
@@ -94,6 +94,7 @@ enum ServerConfigs
CONFIG_ALLOW_TICKETS,
CONFIG_DELETE_CHARACTER_TICKET_TRACE,
CONFIG_LFG_CAST_DESERTER,
+ CONFIG_LFG_ALLOW_COMPLETED,
CONFIG_DBC_ENFORCE_ITEM_ATTRIBUTES,
CONFIG_PRESERVE_CUSTOM_CHANNELS,
CONFIG_PDUMP_NO_PATHS,