diff --git a/zone/client_packet.cpp b/zone/client_packet.cpp index a743639f3..3a7703e23 100644 --- a/zone/client_packet.cpp +++ b/zone/client_packet.cpp @@ -2211,7 +2211,14 @@ void Client::Handle_OP_AdventureMerchantSell(const EQApplicationPacket *app) } // 06/11/2016 This formula matches RoF2 client side calculation. - int32 price = (item->LDoNPrice + 1) * item->LDoNSellBackRate / 100; + uint32 price = EQ::Clamp( + price, + EQ::ClampUpper( + (item->LDoNPrice + 1) * item->LDoNSellBackRate / 100, + item->LDoNPrice + ), + item->LDoNPrice + ); if (price == 0) { @@ -2696,7 +2703,14 @@ void Client::Handle_OP_AltCurrencySell(const EQApplicationPacket *app) if (item->ID == inst->GetItem()->ID) { // 06/11/2016 This formula matches RoF2 client side calculation. - cost = (ml.alt_currency_cost + 1) * item->LDoNSellBackRate / 100; + cost = EQ::Clamp( + cost, + EQ::ClampUpper( + static_cast((ml.alt_currency_cost + 1) * item->LDoNSellBackRate / 100), + static_cast(ml.alt_currency_cost) + ), + static_cast(ml.alt_currency_cost) + ); found = true; break; } @@ -2801,7 +2815,14 @@ void Client::Handle_OP_AltCurrencySellSelection(const EQApplicationPacket *app) if (item->ID == inst->GetItem()->ID) { // 06/11/2016 This formula matches RoF2 client side calculation. - cost = (ml.alt_currency_cost + 1) * item->LDoNSellBackRate / 100; + cost = EQ::Clamp( + cost, + EQ::ClampUpper( + static_cast((ml.alt_currency_cost + 1) * item->LDoNSellBackRate / 100), + static_cast(ml.alt_currency_cost) + ), + static_cast(ml.alt_currency_cost) + ); found = true; break; }