here's the fix for the charged item duping:
in PlayerCorpse.cpp find method: void Corpse::MoveItemToCorpse(Client *client, ItemInst *item, sint16 equipslot)
then find:
Code:
client->DeleteItemInInventory(interior_slot, interior_item->GetCharges(), false);
and delete the last 2 args so it looks like:
Code:
client->DeleteItemInInventory(interior_slot);
and the same for the one a couple of lines below it find:
Code:
client->DeleteItemInInventory(equipslot, item->GetCharges(), false);
change to:
Code:
client->DeleteItemInInventory(equipslot);