From 0ef2781ede6a469be0c20378c51fbf3ffdcabe2b Mon Sep 17 00:00:00 2001 From: Nefertumm Date: Sat, 2 Apr 2022 11:46:57 -0300 Subject: [PATCH] feat(Config): Max gold on change faction (#11147) * feat(Config): Max gold on change faction * build --- src/server/game/Handlers/CharacterHandler.cpp | 9 ++------- src/server/game/World/IWorld.h | 1 + src/server/game/World/World.cpp | 2 ++ src/server/worldserver/worldserver.conf.dist | 9 +++++++++ 4 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index 6c684aa4a..9612246e7 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -2015,13 +2015,8 @@ void WorldSession::HandleCharFactionOrRaceChangeCallback(std::shared_ptrRace); - if ((level < 10 && money <= 0) || (level > 10 && level <= 30 && money <= 3000000) || (level > 30 && level <= 50 && money <= 10000000) || - (level > 50 && level <= 70 && money <= 50000000) || (level > 70 && money <= 200000000)) - valid = true; - - if (!valid) + uint32 maxMoney = sWorld->getIntConfig(CONFIG_CHANGE_FACTION_MAX_MONEY); + if (maxMoney && money > maxMoney) { SendCharFactionChange(CHAR_CREATE_CHARACTER_GOLD_LIMIT, factionChangeInfo.get()); return; diff --git a/src/server/game/World/IWorld.h b/src/server/game/World/IWorld.h index 05d3045e4..3a5e21ce2 100644 --- a/src/server/game/World/IWorld.h +++ b/src/server/game/World/IWorld.h @@ -398,6 +398,7 @@ enum WorldIntConfigs CONFIG_LOOT_NEED_BEFORE_GREED_ILVL_RESTRICTION, CONFIG_LFG_MAX_KICK_COUNT, CONFIG_LFG_KICK_PREVENTION_TIMER, + CONFIG_CHANGE_FACTION_MAX_MONEY, INT_CONFIG_VALUE_COUNT }; diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index 4263c34ee..cd2fd180c 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -1263,6 +1263,8 @@ void World::LoadConfigSettings(bool reload) m_bool_configs[CONFIG_ALLOW_JOIN_BG_AND_LFG] = sConfigMgr->GetOption("JoinBGAndLFG.Enable", false); + m_int_configs[CONFIG_CHANGE_FACTION_MAX_MONEY] = sConfigMgr->GetOption("ChangeFaction.MaxMoney", 0); + ///- Read the "Data" directory from the config file std::string dataPath = sConfigMgr->GetOption("DataDir", "./"); if (dataPath.empty() || (dataPath.at(dataPath.length() - 1) != '/' && dataPath.at(dataPath.length() - 1) != '\\')) diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist index e4b1f979b..cb2204d09 100644 --- a/src/server/worldserver/worldserver.conf.dist +++ b/src/server/worldserver/worldserver.conf.dist @@ -3709,6 +3709,15 @@ EnablePlayerSettings = 0 JoinBGAndLFG.Enable = 0 +# +# ChangeFaction.MaxMoney +# Description: Maximum amount of gold allowed on the character to perform a faction change. +# Default: 0 - Disabled +# > 0 - Enabled (money in copper) +# Example: If set to 10000, the maximum amount of money allowed on the character would be 1 gold. + +ChangeFaction.MaxMoney = 0 + # ###################################################################################################