diff --git a/zone/trading.cpp b/zone/trading.cpp index b5f26eb4d..a0e9d711c 100644 --- a/zone/trading.cpp +++ b/zone/trading.cpp @@ -2947,6 +2947,20 @@ void Client::BuyTraderItemOutsideBazaar(TraderBuy_Struct *tbs, const EQApplicati else { charges = buy_item->GetCharges(); } + } else { + if (charges <= 0) { + LogTrading("Rejecting purchase with zero/negative quantity [{}] for stackable item [{}]", + charges, buy_item->GetItem()->Name); + in->method = BazaarByParcel; + in->sub_action = Failed; + TraderRepository::UpdateActiveTransaction(database, trader_item.id, false); + TradeRequestFailed(app); + return; + } + if (charges > trader_item.item_charges) { + charges = trader_item.item_charges; + } + tbs->quantity = static_cast(charges); } LogTrading(