aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorokfok <44704482+okfok@users.noreply.github.com>2022-04-27 15:35:22 +0300
committerGitHub <noreply@github.com>2022-04-27 14:35:22 +0200
commitd0b8fb87f29c6fe5a100c4f1f85cad2b349d9619 (patch)
tree8715ef215c33d0e238c6bd90a448ca077913aeb8
parent0d8672732552b0474e22b077a2318fa87446f25f (diff)
Core/ItemHandler: fix selling items over gold limit (#27930)
* Core/ItemHandler: fix selling items over gold limit * Core/ItemHandler: fix selling items over gold limit codestyle edit * Core/ItemHandler: move code, fix condition * codestyle
-rw-r--r--src/server/game/Handlers/ItemHandler.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/server/game/Handlers/ItemHandler.cpp b/src/server/game/Handlers/ItemHandler.cpp
index be942a06389..407f501438e 100644
--- a/src/server/game/Handlers/ItemHandler.cpp
+++ b/src/server/game/Handlers/ItemHandler.cpp
@@ -442,6 +442,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 (count < pItem->GetCount()) // need split items
{
Item* pNewItem = pItem->CloneItem(count, _player);
@@ -470,7 +478,6 @@ void WorldSession::HandleSellItemOpcode(WorldPacket& recvData)
_player->AddItemToBuyBackSlot(pItem);
}
- uint32 money = pProto->SellPrice * count;
_player->ModifyMoney(money);
_player->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_MONEY_FROM_VENDORS, money);
}