From: Keith F. <ven...@us...> - 2007-03-19 02:33:54
|
Update of /cvsroot/planeshift/planeshift/src/server In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7290/src/server Modified Files: psserverchar.cpp Log Message: - Fixed bug 2510, where last item in a consumable stack moves when you consume the 2nd to last one in the stack. Index: psserverchar.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/psserverchar.cpp,v retrieving revision 1.480 retrieving revision 1.481 diff -C2 -d -r1.480 -r1.481 *** psserverchar.cpp 18 Mar 2007 23:36:07 -0000 1.480 --- psserverchar.cpp 19 Mar 2007 02:33:53 -0000 1.481 *************** *** 2051,2060 **** UnequipHolding(srcSlot,chr); // Check for splitting stack if (msg.stackCount != itemProposed->GetStackCount() ) { ! item = itemProposed->Copy(msg.stackCount); ! chr->Inventory().Add(item,false,false, destSlot); ! item->Save(false); // the only thing that changes in the original source item is the count itemProposed->SetStackCount(itemProposed->GetStackCount() - msg.stackCount); --- 2051,2061 ---- UnequipHolding(srcSlot,chr); + psItem *itemMoving=NULL; // Check for splitting stack if (msg.stackCount != itemProposed->GetStackCount() ) { ! itemMoving = itemProposed->Copy(msg.stackCount); ! chr->Inventory().Add(itemMoving,false,false, destSlot); ! itemMoving->Save(false); // the only thing that changes in the original source item is the count itemProposed->SetStackCount(itemProposed->GetStackCount() - msg.stackCount); *************** *** 2063,2068 **** else // entire stack { ! itemProposed->UpdateInventoryStatus(chr,parent,destSlot); ! itemProposed->Save(false); if (item) { --- 2064,2070 ---- else // entire stack { ! itemMoving = itemProposed; ! itemMoving->UpdateInventoryStatus(chr,parent,destSlot); ! itemMoving->Save(false); if (item) { *************** *** 2077,2086 **** if (msg.fromContainer == CONTAINER_INVENTORY_EQUIPMENT) // De-equip { ! psserver->GetCharManager()->SendOutEquipmentMessages( chr->GetActor(), srcSlot, itemProposed, psEquipmentMessage::DEEQUIP); } if (msg.toContainer == CONTAINER_INVENTORY_EQUIPMENT) // To Equip { ! if (msg.stackCount == itemProposed->GetStackCount()) ! item = itemProposed; int ret = PlaceItemInEquipment(chr,destSlot, item,false); --- 2079,2087 ---- if (msg.fromContainer == CONTAINER_INVENTORY_EQUIPMENT) // De-equip { ! psserver->GetCharManager()->SendOutEquipmentMessages( chr->GetActor(), srcSlot, itemMoving, psEquipmentMessage::DEEQUIP); } if (msg.toContainer == CONTAINER_INVENTORY_EQUIPMENT) // To Equip { ! item = itemMoving; int ret = PlaceItemInEquipment(chr,destSlot, item,false); |