diff options
| author | roc13x <roc13x@gmail.com> | 2017-08-17 02:00:42 -0600 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2017-08-20 18:10:11 +0200 |
| commit | e04f75bd962006662bc0f77f0034f061605fb1c6 (patch) | |
| tree | 5e8d1bf38ab41319634e104bdb08dce56d16ac9d /src/server/game/Handlers/ItemHandler.cpp | |
| parent | 26d63a276e51db88e293e61b190ca3789fea13db (diff) | |
Core/Players: Several gold handling improvements
* Update gold limit to 10 million
* Updated auction house gold handling to 64-bit
* Fixed some vendor checks for when BuyCount > 1
* Tweaked some checks for available gold space
* Updated guild bank gold handling to 64-bit and fix withdraw limits
* Enforce gold limit on guild bank
* Check correct rank right when withdrawing from bank
* Other small changes to update money to 64-bit
Closes #19195
Closes #20152
Diffstat (limited to 'src/server/game/Handlers/ItemHandler.cpp')
| -rw-r--r-- | src/server/game/Handlers/ItemHandler.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/server/game/Handlers/ItemHandler.cpp b/src/server/game/Handlers/ItemHandler.cpp index 3f7aae6f91a..0e14a16d415 100644 --- a/src/server/game/Handlers/ItemHandler.cpp +++ b/src/server/game/Handlers/ItemHandler.cpp @@ -445,6 +445,16 @@ void WorldSession::HandleSellItemOpcode(WorldPackets::Item::SellItem& packet) { if (pProto->GetSellPrice() > 0) { + uint64 money = uint64(pProto->GetSellPrice()) * packet.Amount; + + if (!_player->ModifyMoney(money)) // ensure player doesn't exceed gold limit + { + _player->SendSellError(SELL_ERR_CANT_SELL_ITEM, creature, packet.ItemGUID); + return; + } + + _player->UpdateCriteria(CRITERIA_TYPE_MONEY_FROM_VENDORS, money); + if (packet.Amount < pItem->GetCount()) // need split items { Item* pNewItem = pItem->CloneItem(packet.Amount, _player); @@ -472,10 +482,6 @@ void WorldSession::HandleSellItemOpcode(WorldPackets::Item::SellItem& packet) RemoveItemFromUpdateQueueOf(pItem, _player); _player->AddItemToBuyBackSlot(pItem); } - - uint32 money = pProto->GetSellPrice() * packet.Amount; - _player->ModifyMoney(money); - _player->UpdateCriteria(CRITERIA_TYPE_MONEY_FROM_VENDORS, money); } else _player->SendSellError(SELL_ERR_CANT_SELL_ITEM, creature, packet.ItemGUID); |
