From 030716421f17bf94d1729a7efd2dce022abee95d Mon Sep 17 00:00:00 2001 From: Kitzunu <24550914+Kitzunu@users.noreply.github.com> Date: Wed, 14 Aug 2024 14:19:56 +0200 Subject: [PATCH] feat(Core/LFG): Option to disable deserter (#19618) * feat(Core/LFG): Option to disable deserter * closes https://github.com/azerothcore/azerothcore-wotlk/issues/19569 * Update IWorld.h --- src/server/apps/worldserver/worldserver.conf.dist | 9 +++++++++ src/server/game/DungeonFinding/LFGScripts.cpp | 3 ++- src/server/game/World/IWorld.h | 1 + src/server/game/World/World.cpp | 4 +++- 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/server/apps/worldserver/worldserver.conf.dist b/src/server/apps/worldserver/worldserver.conf.dist index 32c4606a4..cf8af58cf 100644 --- a/src/server/apps/worldserver/worldserver.conf.dist +++ b/src/server/apps/worldserver/worldserver.conf.dist @@ -3285,6 +3285,15 @@ LFG.KickPreventionTimer = 900 DungeonAccessRequirements.LFGLevelDBCOverride = 0 +# +# DungeonFinder.CastDeserter +# +# Description: Cast Deserter to player who leave a dungeon prematurely +# Default: 1 - (Enabled, Blizzlike) +# 0 - (Disabled) + +DungeonFinder.CastDeserter = 1 + # ################################################################################################### diff --git a/src/server/game/DungeonFinding/LFGScripts.cpp b/src/server/game/DungeonFinding/LFGScripts.cpp index 27081db22..53823525b 100644 --- a/src/server/game/DungeonFinding/LFGScripts.cpp +++ b/src/server/game/DungeonFinding/LFGScripts.cpp @@ -246,7 +246,8 @@ namespace lfg { // xinef: fixed dungeon deserter if (method != GROUP_REMOVEMETHOD_KICK_LFG && state != LFG_STATE_FINISHED_DUNGEON && - player->HasAura(LFG_SPELL_DUNGEON_COOLDOWN) && players >= LFG_GROUP_KICK_VOTES_NEEDED) + player->HasAura(LFG_SPELL_DUNGEON_COOLDOWN) && players >= LFG_GROUP_KICK_VOTES_NEEDED && + sWorld->getBoolConfig(CONFIG_LFG_CAST_DESERTER)) { player->AddAura(LFG_SPELL_DUNGEON_DESERTER, player); } diff --git a/src/server/game/World/IWorld.h b/src/server/game/World/IWorld.h index c11197211..78eab7d7b 100644 --- a/src/server/game/World/IWorld.h +++ b/src/server/game/World/IWorld.h @@ -139,6 +139,7 @@ enum WorldBoolConfigs CONFIG_AUTOBROADCAST, CONFIG_ALLOW_TICKETS, CONFIG_DELETE_CHARACTER_TICKET_TRACE, + CONFIG_LFG_CAST_DESERTER, CONFIG_DBC_ENFORCE_ITEM_ATTRIBUTES, CONFIG_PRESERVE_CUSTOM_CHANNELS, CONFIG_PDUMP_NO_PATHS, diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index f780a3ff7..96cb3dd14 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -1362,7 +1362,9 @@ void World::LoadConfigSettings(bool reload) _int_configs[CONFIG_WARDEN_CLIENT_RESPONSE_DELAY] = sConfigMgr->GetOption("Warden.ClientResponseDelay", 600); // Dungeon finder - _int_configs[CONFIG_LFG_OPTIONSMASK] = sConfigMgr->GetOption("DungeonFinder.OptionsMask", 5); + _int_configs[CONFIG_LFG_OPTIONSMASK] = sConfigMgr->GetOption("DungeonFinder.OptionsMask", 5); + + _bool_configs[CONFIG_LFG_CAST_DESERTER] = sConfigMgr->GetOption("DungeonFinder.CastDeserter", true); // DBC_ItemAttributes _bool_configs[CONFIG_DBC_ENFORCE_ITEM_ATTRIBUTES] = sConfigMgr->GetOption("DBC.EnforceItemAttributes", true);