Little Alien

New feature: Swap items
- Press Shift+N in tactical to swap sungoggles and nightgoggles




git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@67 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
lalien
2006-05-11 23:47:22 +00:00
parent c9535d1e70
commit 2d68e4e02c
+79 -3
View File
@@ -2889,6 +2889,76 @@ void GetKeyboardInput( UINT32 *puiNewEvent )
} }
break; break;
case 'N':
{
SOLDIERTYPE *pTeamSoldier;
INT8 bLoop, bSlot1, bSlot2;
for (bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID, pTeamSoldier=MercPtrs[bLoop]; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; bLoop++, pTeamSoldier++)
{
if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->bAssignment == CurrentSquad( ) && !AM_A_ROBOT( pTeamSoldier ) )
{
//2 head slots
for (bSlot1 = HEAD1POS; bSlot1 <= HEAD2POS; bSlot1++)
{
if ( (pTeamSoldier->inv[bSlot1].usItem == SUNGOGGLES)||(pTeamSoldier->inv[bSlot1].usItem == NIGHTGOGGLES)||(pTeamSoldier->inv[bSlot1].usItem == UVGOGGLES) )
{
switch (pTeamSoldier->inv[bSlot1].usItem)
{
case SUNGOGGLES:
{
bSlot2 = FindObjWithin( pTeamSoldier, UVGOGGLES, HANDPOS, SMALLPOCK8POS );
if ( bSlot2 != -1 )
{
SwapObjs( &(pTeamSoldier->inv[bSlot1]), &(pTeamSoldier->inv[bSlot2] ) );
}
else
{
bSlot2 = FindObjWithin( pTeamSoldier, NIGHTGOGGLES, HANDPOS, SMALLPOCK8POS );
if ( bSlot2 != -1 )
{
SwapObjs( &(pTeamSoldier->inv[bSlot1]), &(pTeamSoldier->inv[bSlot2] ) );
}
}
}
break;
case NIGHTGOGGLES:
{
bSlot2 = FindObjWithin( pTeamSoldier, SUNGOGGLES, HANDPOS, SMALLPOCK8POS );
if ( bSlot2 != -1 )
{
SwapObjs( &(pTeamSoldier->inv[bSlot1]), &(pTeamSoldier->inv[bSlot2] ) );
}
}
break;
case UVGOGGLES:
{
bSlot2 = FindObjWithin( pTeamSoldier, SUNGOGGLES, HANDPOS, SMALLPOCK8POS );
if ( bSlot2 != -1 )
{
SwapObjs( &(pTeamSoldier->inv[bSlot1]), &(pTeamSoldier->inv[bSlot2] ) );
}
}
break;
}
fCharacterInfoPanelDirty = TRUE;
fInterfacePanelDirty = DIRTYLEVEL2;
}
}
}
}
}
break;
case 'n': case 'n':
if( fAlt ) if( fAlt )
@@ -3008,7 +3078,6 @@ void GetKeyboardInput( UINT32 *puiNewEvent )
if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->bAssignment == CurrentSquad( ) && !AM_A_ROBOT( pTeamSoldier ) ) if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->bAssignment == CurrentSquad( ) && !AM_A_ROBOT( pTeamSoldier ) )
{ {
// Search for gun // Search for gun
for (UINT32 bLoop2 = 0; bLoop2 < NUM_INV_SLOTS; bLoop2++) for (UINT32 bLoop2 = 0; bLoop2 < NUM_INV_SLOTS; bLoop2++)
{ {
@@ -3022,11 +3091,16 @@ void GetKeyboardInput( UINT32 *puiNewEvent )
// Search for ammo in sector // Search for ammo in sector
for ( UINT32 uiLoop = 0; uiLoop < guiNumWorldItems; uiLoop++ ) for ( UINT32 uiLoop = 0; uiLoop < guiNumWorldItems; uiLoop++ )
{ {
if ( gWorldItems[ uiLoop ].fExists) if ( gWorldItems[ uiLoop ].fExists) //item exists
{
if ( ( Item[ gWorldItems[ uiLoop ].o.usItem ].usItemClass & IC_AMMO ) ) // the item is ammo
{ {
pAmmo = &( gWorldItems[ uiLoop ].o ); pAmmo = &( gWorldItems[ uiLoop ].o );
if ( CompatibleAmmoForGun( pAmmo, pGun ) ) if ( CompatibleAmmoForGun( pAmmo, pGun ) ) // can use the ammo with this gun
{
// same ammo type in gun and magazine
if ( Magazine[Item[pGun->usGunAmmoItem].ubClassIndex].ubAmmoType == Magazine[Item[pAmmo->usItem].ubClassIndex].ubAmmoType )
{ {
ReloadGun( pTeamSoldier, pGun, pAmmo ); ReloadGun( pTeamSoldier, pGun, pAmmo );
} }
@@ -3043,6 +3117,8 @@ void GetKeyboardInput( UINT32 *puiNewEvent )
} }
} }
} }
}
}
else else
{ {
SOLDIERTYPE *pTeamSoldier; SOLDIERTYPE *pTeamSoldier;