mirror of
https://github.com/1dot13/source.git
synced 2026-09-02 14:36:06 +02:00
Resolved a problem where ItemSize=99 items would cause a CTD because of a mission condition.
Adjusted the ALT+W function so it runs a bit better. git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@2094 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
@@ -2813,18 +2813,23 @@ void CycleItemDescriptionItem( INT16 sX, INT16 sY )
|
|||||||
// Delete old box...
|
// Delete old box...
|
||||||
DeleteItemDescriptionBox( );
|
DeleteItemDescriptionBox( );
|
||||||
|
|
||||||
// Make new item....
|
// Cycle item....
|
||||||
usOldItem = gpItemDescSoldier->inv[ HANDPOS ].usItem;
|
usOldItem = CycleItems(gpItemDescSoldier->inv[ HANDPOS ].usItem);
|
||||||
|
|
||||||
|
CreateItem( (UINT16)usOldItem, 100, &( gpItemDescSoldier->inv[ HANDPOS ] ) );
|
||||||
|
|
||||||
|
InternalInitItemDescriptionBox( &( gpItemDescSoldier->inv[ HANDPOS ] ), sX, sY, gubItemDescStatusIndex, gpItemDescSoldier );
|
||||||
|
}
|
||||||
|
|
||||||
|
INT16 CycleItems( INT16 usOldItem )
|
||||||
|
{
|
||||||
if ( _KeyDown( SHIFT ) )
|
if ( _KeyDown( SHIFT ) )
|
||||||
{
|
{
|
||||||
usOldItem--;
|
usOldItem--;
|
||||||
|
|
||||||
if ( usOldItem < 1 )
|
if ( usOldItem < 1 )
|
||||||
{
|
{
|
||||||
usOldItem = MAXITEMS-1;
|
usOldItem = MAXITEMS-1;
|
||||||
}
|
}
|
||||||
|
|
||||||
while ( usOldItem > 0 && ( Item[usOldItem].usItemClass == IC_NONE || Item[usOldItem].usItemClass == 0 ))
|
while ( usOldItem > 0 && ( Item[usOldItem].usItemClass == IC_NONE || Item[usOldItem].usItemClass == 0 ))
|
||||||
{
|
{
|
||||||
usOldItem--;
|
usOldItem--;
|
||||||
@@ -2835,12 +2840,10 @@ void CycleItemDescriptionItem( INT16 sX, INT16 sY )
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
usOldItem++;
|
usOldItem++;
|
||||||
|
|
||||||
if ( usOldItem > MAXITEMS )
|
if ( usOldItem > MAXITEMS )
|
||||||
{
|
{
|
||||||
usOldItem = 0;
|
usOldItem = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
while (usOldItem < MAXITEMS && (Item[usOldItem].usItemClass == IC_NONE || Item[usOldItem].usItemClass == 0 ))
|
while (usOldItem < MAXITEMS && (Item[usOldItem].usItemClass == IC_NONE || Item[usOldItem].usItemClass == 0 ))
|
||||||
{
|
{
|
||||||
usOldItem++;
|
usOldItem++;
|
||||||
@@ -2849,9 +2852,12 @@ void CycleItemDescriptionItem( INT16 sX, INT16 sY )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CreateItem( (UINT16)usOldItem, 100, &( gpItemDescSoldier->inv[ HANDPOS ] ) );
|
if ( usOldItem > MAXITEMS )
|
||||||
|
{
|
||||||
|
usOldItem = 0;
|
||||||
|
}
|
||||||
|
|
||||||
InternalInitItemDescriptionBox( &( gpItemDescSoldier->inv[ HANDPOS ] ), sX, sY, gubItemDescStatusIndex, gpItemDescSoldier );
|
return(usOldItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOLEAN InitItemDescriptionBox( SOLDIERTYPE *pSoldier, UINT8 ubPosition, INT16 sX, INT16 sY, UINT8 ubStatusIndex )
|
BOOLEAN InitItemDescriptionBox( SOLDIERTYPE *pSoldier, UINT8 ubPosition, INT16 sX, INT16 sY, UINT8 ubStatusIndex )
|
||||||
|
|||||||
@@ -197,6 +197,7 @@ BOOLEAN HandleCompatibleAmmoUIForMapInventory( SOLDIERTYPE *pSoldier, INT32 bInv
|
|||||||
void ResetCompatibleItemArray( );
|
void ResetCompatibleItemArray( );
|
||||||
|
|
||||||
void CycleItemDescriptionItem( INT16 sX, INT16 sY );
|
void CycleItemDescriptionItem( INT16 sX, INT16 sY );
|
||||||
|
INT16 CycleItems( INT16 usOldItem );
|
||||||
|
|
||||||
BOOLEAN InitializeStealItemPickupMenu( SOLDIERTYPE *pSoldier, SOLDIERTYPE *pOpponent, ITEM_POOL *pItemPool, UINT8 ubCount);
|
BOOLEAN InitializeStealItemPickupMenu( SOLDIERTYPE *pSoldier, SOLDIERTYPE *pOpponent, ITEM_POOL *pItemPool, UINT8 ubCount);
|
||||||
|
|
||||||
|
|||||||
@@ -1433,6 +1433,7 @@ UINT8 ItemSlotLimit( OBJECTTYPE * pObject, INT16 bSlot, SOLDIERTYPE *pSoldier, B
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
iSize = Item[pObject->usItem].ItemSize;
|
iSize = Item[pObject->usItem].ItemSize;
|
||||||
|
iSize = __min(iSize,34);
|
||||||
ubSlotLimit = LBEPocketType[pIndex].ItemCapacityPerSize[iSize];
|
ubSlotLimit = LBEPocketType[pIndex].ItemCapacityPerSize[iSize];
|
||||||
|
|
||||||
//this could be changed, we know guns are physically able to stack
|
//this could be changed, we know guns are physically able to stack
|
||||||
|
|||||||
@@ -4257,48 +4257,16 @@ void TestExplosion()
|
|||||||
void CycleSelectedMercsItem()
|
void CycleSelectedMercsItem()
|
||||||
{
|
{
|
||||||
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("CycleSelectedMercsItem"));
|
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("CycleSelectedMercsItem"));
|
||||||
UINT16 usOldItem;
|
INT16 usOldItem;
|
||||||
SOLDIERTYPE *pSoldier;
|
SOLDIERTYPE *pSoldier;
|
||||||
// Cycle selected guy's item...
|
// Cycle selected guy's item...
|
||||||
if ( gfUIFullTargetFound )
|
if( gusSelectedSoldier != NOBODY )
|
||||||
{
|
{
|
||||||
// Get soldier...
|
// Get soldier...
|
||||||
pSoldier = MercPtrs[ gusUIFullTargetID ];
|
pSoldier = MercPtrs[ gusSelectedSoldier ];
|
||||||
|
|
||||||
usOldItem = pSoldier->inv[ HANDPOS ].usItem;
|
// Cycle item....
|
||||||
|
usOldItem = CycleItems(pSoldier->inv[ HANDPOS ].usItem);
|
||||||
//CHRISL: Why not make this work like CycleItemDescriptionItem in that holding the SHIFT key reverses the cycle?
|
|
||||||
if ( _KeyDown( SHIFT ) )
|
|
||||||
{
|
|
||||||
usOldItem--;
|
|
||||||
while ( usOldItem > 0 && ( Item[usOldItem].usItemClass == IC_NONE || Item[usOldItem].usItemClass == 0 ) && (UsingNewInventorySystem() == false || (UsingNewInventorySystem() == true && Item[usOldItem].ItemSize <= 34)) )
|
|
||||||
{
|
|
||||||
usOldItem--;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( usOldItem < 0 )
|
|
||||||
{
|
|
||||||
usOldItem = MAXITEMS-1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
usOldItem++;
|
|
||||||
if ( usOldItem > MAXITEMS )
|
|
||||||
{
|
|
||||||
usOldItem = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (usOldItem < MAXITEMS && (Item[usOldItem].usItemClass == IC_NONE || Item[usOldItem].usItemClass == 0 ) && (UsingNewInventorySystem() == false || (UsingNewInventorySystem() == true && Item[usOldItem].ItemSize <= 34)) )
|
|
||||||
{
|
|
||||||
usOldItem++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( usOldItem > MAXITEMS )
|
|
||||||
{
|
|
||||||
usOldItem = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
CreateItem( (UINT16)usOldItem, 100, &( pSoldier->inv[ HANDPOS ]) );
|
CreateItem( (UINT16)usOldItem, 100, &( pSoldier->inv[ HANDPOS ]) );
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user