[Bug Fix] Fix for charges not being sold correctly (#1357)

* fix for charges not being sold correctly

https://github.com/EQEmu/Server/issues/1350 this fixes this issue

* Update client_packet.cpp

* Update zone.cpp

this completes the fix for all charge items being sold to merchants

* code opmizations

could probably be fixed up better but this is a little cleaner

* Update snake_casing

Co-authored-by: Chris Miles <akkadius1@gmail.com>
This commit is contained in:
Dencelle
2021-05-24 21:16:46 -05:00
committed by GitHub
parent e14acd6802
commit 542ec38660
2 changed files with 6 additions and 10 deletions
+3 -6
View File
@@ -12990,9 +12990,9 @@ void Client::Handle_OP_ShopPlayerBuy(const EQApplicationPacket *app)
int16 freeslotid = INVALID_INDEX;
int16 charges = 0;
if (item->Stackable || item->MaxCharges > 1)
if (item->Stackable || tmpmer_used)
charges = mp->quantity;
else
else if ( item->MaxCharges > 1)
charges = item->MaxCharges;
EQ::ItemInstance* inst = database.CreateItem(item, charges);
@@ -13238,12 +13238,9 @@ void Client::Handle_OP_ShopPlayerSell(const EQApplicationPacket *app)
LogMerchant(this, vendor, mp->quantity, price, item, false);
int charges = mp->quantity;
//Hack workaround so usable items with 0 charges aren't simply deleted
if (charges == 0 && item->ItemType != 11 && item->ItemType != 17 && item->ItemType != 19 && item->ItemType != 21)
charges = 1;
int freeslot = 0;
if (charges > 0 && (freeslot = zone->SaveTempItem(vendor->CastToNPC()->MerchantType, vendor->GetNPCTypeID(), itemid, charges, true)) > 0) {
if ((freeslot = zone->SaveTempItem(vendor->CastToNPC()->MerchantType, vendor->GetNPCTypeID(), itemid, charges, true)) > 0) {
EQ::ItemInstance* inst2 = inst->Clone();
while (true) {