mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-31 14:17:28 +01:00
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:
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user