diff --git a/zone/client_packet.cpp b/zone/client_packet.cpp index 83af9b13d..14ee222f3 100644 --- a/zone/client_packet.cpp +++ b/zone/client_packet.cpp @@ -2731,6 +2731,14 @@ void Client::Handle_OP_AltCurrencyReclaim(const EQApplicationPacket *app) return; } + if (IsTrader()) { + TraderEndTrader(); + } + + if (IsBuyer()) { + ToggleBuyerMode(false); + } + /* Item to Currency Storage */ if (reclaim->reclaim_flag == 1) { uint32 removed = NukeItem(item_id, invWhereWorn | invWherePersonal | invWhereCursor); diff --git a/zone/trading.cpp b/zone/trading.cpp index ac36f014f..ac142319e 100644 --- a/zone/trading.cpp +++ b/zone/trading.cpp @@ -3497,7 +3497,7 @@ void Client::BuyTraderItemOutsideBazaar(TraderBuy_Struct *tbs, const EQApplicati ps.item_slot = parcel_out.slot_id; strn0cpy(ps.send_to, GetCleanName(), sizeof(ps.send_to)); - if (trader_item.item_charges <= static_cast(tbs->quantity)) { + if (trader_item.item_charges <= static_cast(tbs->quantity) || !buy_item->IsStackable()) { TraderRepository::DeleteOne(database, trader_item.id); } else { TraderRepository::UpdateQuantity(