diff options
author | okfok <44704482+okfok@users.noreply.github.com> | 2022-04-27 15:35:22 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-04-27 14:35:22 +0200 |
commit | d0b8fb87f29c6fe5a100c4f1f85cad2b349d9619 (patch) | |
tree | 8715ef215c33d0e238c6bd90a448ca077913aeb8 | |
parent | 0d8672732552b0474e22b077a2318fa87446f25f (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.cpp | 9 |
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); } |