aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/ItemHandler.cpp
diff options
context:
space:
mode:
authorroc13x <roc13x@gmail.com>2017-08-17 02:00:42 -0600
committerShauren <shauren.trinity@gmail.com>2017-08-20 18:10:11 +0200
commite04f75bd962006662bc0f77f0034f061605fb1c6 (patch)
tree5e8d1bf38ab41319634e104bdb08dce56d16ac9d /src/server/game/Handlers/ItemHandler.cpp
parent26d63a276e51db88e293e61b190ca3789fea13db (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.cpp14
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);