From 0e8cb3e4b2552d8421d2d0832be5d97e3ebc67dd Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Wed, 24 Mar 2021 22:19:58 +0100 Subject: [PATCH] feat(Core/Game): Add option to disable trading BoP items among raid members (#4895) --- src/server/game/Entities/Player/Player.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/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 51455e3a4..1c4326290 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -12704,7 +12704,7 @@ Item* Player::StoreNewItem(ItemPosCountVec const& dest, uint32 item, bool update UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_OWN_ITEM, item, count); pItem = StoreItem(dest, pItem, update); - if (allowedLooters.size() > 1 && pItem->GetTemplate()->GetMaxStackSize() == 1 && pItem->IsSoulBound()) + if (allowedLooters.size() > 1 && pItem->GetTemplate()->GetMaxStackSize() == 1 && pItem->IsSoulBound() && sWorld->getBoolConfig(CONFIG_SET_BOP_ITEM_TRADEABLE)) { pItem->SetSoulboundTradeable(allowedLooters); pItem->SetUInt32Value(ITEM_FIELD_CREATE_PLAYED_TIME, GetTotalPlayedTime()); diff --git a/src/server/game/World/IWorld.h b/src/server/game/World/IWorld.h index 6d6a1a7c6..b077dbbec 100644 --- a/src/server/game/World/IWorld.h +++ b/src/server/game/World/IWorld.h @@ -165,6 +165,7 @@ enum WorldBoolConfigs CONFIG_DEBUG_ARENA, CONFIG_REGEN_HP_CANNOT_REACH_TARGET_IN_RAID, CONFIG_SET_SHAPASSHASH, + CONFIG_SET_BOP_ITEM_TRADEABLE, BOOL_CONFIG_VALUE_COUNT }; diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index 40b98cf79..7360e7a04 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -1415,6 +1415,8 @@ void World::LoadConfigSettings(bool reload) m_bool_configs[CONFIG_SET_SHAPASSHASH] = sConfigMgr->GetBoolDefault("SetDeprecatedExternalPasswords", false); + m_bool_configs[CONFIG_SET_BOP_ITEM_TRADEABLE] = sConfigMgr->GetOption("Item.SetItemTradeable", true); + // call ScriptMgr if we're reloading the configuration sScriptMgr->OnAfterConfigLoad(reload); } diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist index fa2a94b2c..11e48c42c 100644 --- a/src/server/worldserver/worldserver.conf.dist +++ b/src/server/worldserver/worldserver.conf.dist @@ -3633,6 +3633,14 @@ LFG.Location.All = 0 ICC.Buff.Horde = 73822 ICC.Buff.Alliance = 73828 +# +# Item.SetItemTradeable +# Description: Enabled/Disabled trading BoP items among raid members. +# Default: 1 - (Set BoP items tradeable timer to 2 hours) +# 0 - (Disable trading BoP items among raid members) + +Item.SetItemTradeable = 1 + # ###################################################################################################