Fixed a bug in the "sell all" strategic inventory screen options. Money now gets sold without modification and unreachable items can't accidentally be sold.

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@2039 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
ChrisL
2008-04-17 16:47:50 +00:00
parent bffdfcc75d
commit 2d5c6e2996
4 changed files with 33 additions and 21 deletions
@@ -2309,6 +2309,15 @@ INT32 SellItem( OBJECTTYPE& object, BOOLEAN useModifier )
iPrice += (INT32)( itemPrice * (float) object[bLoop]->data.ubShotsLeft / magSize );
}
}
//CHRISL: If we're dealing with money, we want to use the money's amount and just return that value with no modification
else if(Item[usItemType].usItemClass == IC_MONEY)
{
for (INT8 bLoop = 0; bLoop < object.ubNumberOfObjects; bLoop++)
{
iPrice += (INT32)(object[bLoop]->data.money.uiMoneyAmount);
}
return iPrice;
}
else if(Item[usItemType].usItemClass == IC_LBEGEAR && UsingNewInventorySystem() == true)
{
//CHRISL: If we're selling an LBE Item, we need to verify if it's an LBENODE, first. If it is, we need to sell
+18 -15
View File
@@ -1075,23 +1075,26 @@ void BeginSellAllCallBack( UINT8 bExitValue )
}
for(UINT32 wItem = 0; wItem < guiNumWorldItems; wItem++)
{
if(0 == pInventoryPoolList[wItem].object.MoveThisObjectTo(gItemPointer,-1,0,NUM_INV_SLOTS,MAX_OBJECTS_PER_SLOT))
if(pInventoryPoolList[wItem].object.exists() == true && (pInventoryPoolList[wItem].usFlags & WORLD_ITEM_REACHABLE))
{
if (pInventoryPoolList[wItem].object.exists() == false) {
pInventoryPoolList[wItem].object.initialize();
if(0 == pInventoryPoolList[wItem].object.MoveThisObjectTo(gItemPointer,-1,0,NUM_INV_SLOTS,MAX_OBJECTS_PER_SLOT))
{
if (pInventoryPoolList[wItem].object.exists() == false) {
pInventoryPoolList[wItem].object.initialize();
}
// Dirty interface
fMapPanelDirty = TRUE;
gpItemPointer = &gItemPointer;
// Sell Item
iPrice += SellItem( gItemPointer );
gpItemPointer = NULL;
fMapInventoryItem = FALSE;
if (iPrice == 0) {
iPrice = 1;
}
anythingSold = true;
HandleButtonStatesWhileMapInventoryActive();
}
// Dirty interface
fMapPanelDirty = TRUE;
gpItemPointer = &gItemPointer;
// Sell Item
iPrice += SellItem( gItemPointer );
gpItemPointer = NULL;
fMapInventoryItem = FALSE;
if (iPrice == 0) {
iPrice = 1;
}
anythingSold = true;
HandleButtonStatesWhileMapInventoryActive();
}
}
if(anythingSold == true)