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
This commit is contained in:
okfok
2022-04-27 15:35:22 +03:00
committed by GitHub
parent 0d86727325
commit d0b8fb87f2

View File

@@ -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);
}