From 066d2ef85b7bb1a3b86e4e2b6d09b739ef68fd74 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Mon, 6 Sep 2021 18:24:41 +0200 Subject: [PATCH] feat(Core/Loot): add configurable option to specify ilv restriction for items below player class in NeedBeforeGreed loot mode in DF (#7701) --- src/server/game/Entities/Player/PlayerStorage.cpp | 2 +- src/server/game/World/IWorld.h | 1 + src/server/game/World/World.cpp | 2 ++ src/server/worldserver/worldserver.conf.dist | 8 ++++++++ 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/server/game/Entities/Player/PlayerStorage.cpp b/src/server/game/Entities/Player/PlayerStorage.cpp index c98cbb744..c552df277 100644 --- a/src/server/game/Entities/Player/PlayerStorage.cpp +++ b/src/server/game/Entities/Player/PlayerStorage.cpp @@ -2423,7 +2423,7 @@ InventoryResult Player::CanRollForItemInLFG(ItemTemplate const* proto, WorldObje { return EQUIP_ERR_CANT_DO_RIGHT_NOW; } - else if (proto->ItemLevel > 70) + else if (sWorld->getIntConfig(CONFIG_LOOT_NEED_BEFORE_GREED_ILVL_RESTRICTION) && proto->ItemLevel > sWorld->getIntConfig(CONFIG_LOOT_NEED_BEFORE_GREED_ILVL_RESTRICTION)) { if (proto->SubClass < subclassToCompare) { diff --git a/src/server/game/World/IWorld.h b/src/server/game/World/IWorld.h index a0ef8f077..fe36f4da5 100644 --- a/src/server/game/World/IWorld.h +++ b/src/server/game/World/IWorld.h @@ -381,6 +381,7 @@ enum WorldIntConfigs CONFIG_NPC_EVADE_IF_NOT_REACHABLE, CONFIG_NPC_REGEN_TIME_IF_NOT_REACHABLE_IN_RAID, CONFIG_FFA_PVP_TIMER, + CONFIG_LOOT_NEED_BEFORE_GREED_ILVL_RESTRICTION, INT_CONFIG_VALUE_COUNT }; diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index b750c0989..4bc56d3c9 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -1233,6 +1233,8 @@ void World::LoadConfigSettings(bool reload) m_int_configs[CONFIG_FFA_PVP_TIMER] = sConfigMgr->GetOption("FFAPvPTimer", 30); + m_int_configs[CONFIG_LOOT_NEED_BEFORE_GREED_ILVL_RESTRICTION] = sConfigMgr->GetOption("LootNeedBeforeGreedILvlRestriction", 70); + ///- 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 f4d623c90..b054acf3d 100644 --- a/src/server/worldserver/worldserver.conf.dist +++ b/src/server/worldserver/worldserver.conf.dist @@ -3541,6 +3541,14 @@ Item.SetItemTradeable = 1 FFAPvPTimer = 30 +# +# LootNeedBeforeGreedILvlRestriction +# Description: Specify level restriction for items below player's subclass in Need Before Greed loot mode in DF groups +# Default: 70 +# 0 - Disabled + +LootNeedBeforeGreedILvlRestriction = 70 + # ###################################################################################################