From 33f64861806cb97bbaa4a36b95595ef532c897b1 Mon Sep 17 00:00:00 2001 From: Kitzunu <24550914+Kitzunu@users.noreply.github.com> Date: Sun, 8 May 2022 10:42:35 +0200 Subject: [PATCH] fix(Core/ItemHandler): fix selling items over gold limit (#11673) * cherry-pick commit (https://github.com/TrinityCore/TrinityCore/commit/d0b8fb87f29c6fe5a100c4f1f85cad2b349d9619) Co-Authored-By: okfok <44704482+okfok@users.noreply.github.com> Co-authored-by: okfok <44704482+okfok@users.noreply.github.com> --- src/server/game/Handlers/ItemHandler.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/server/game/Handlers/ItemHandler.cpp b/src/server/game/Handlers/ItemHandler.cpp index e22d4f5b2..19bcc766c 100644 --- a/src/server/game/Handlers/ItemHandler.cpp +++ b/src/server/game/Handlers/ItemHandler.cpp @@ -807,6 +807,14 @@ void WorldSession::HandleSellItemOpcode(WorldPacket& recvData) { if (pProto->SellPrice > 0) { + uint32 money = pProto->SellPrice * count; + if (_player->GetMoney() >= MAX_MONEY_AMOUNT - money) // prevent exceeding gold limit + { + _player->SendEquipError(EQUIP_ERR_TOO_MUCH_GOLD, nullptr, nullptr); + _player->SendSellError(SELL_ERR_UNK, creature, itemguid, 0); + return; + } + if (sWorld->getBoolConfig(CONFIG_ITEMDELETE_VENDOR)) recoveryItem(pItem); @@ -839,7 +847,6 @@ void WorldSession::HandleSellItemOpcode(WorldPacket& recvData) _player->UpdateTitansGrip(); } - uint32 money = pProto->SellPrice * count; _player->ModifyMoney(money); _player->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_MONEY_FROM_VENDORS, money); }