From 2134a20d9daf001308ded29f0eb605b25a2840be Mon Sep 17 00:00:00 2001 From: lalien Date: Sun, 21 May 2006 12:25:22 +0000 Subject: [PATCH] Little Alien Automatic reload - Bug fix: reload from sector inventory only when no enemy in sector - When in turn based mode make fast reload for the weapon in hands - When in real time mode reload all weapons with magazines from soldier inventory Rearrange sector inventory - Bug fix: rearrange sector inventory only when no enemy in sector git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@76 3b4a5df2-a311-0410-b5c6-a8a6f20db521 --- GameVersion.cpp | 4 +-- JA2.vcproj | 4 +-- Tactical/Turn Based Input.cpp | 58 ++++++++++++++++++++++++++++++----- 3 files changed, 54 insertions(+), 12 deletions(-) diff --git a/GameVersion.cpp b/GameVersion.cpp index d60ceecf7..4f8a80d1d 100644 --- a/GameVersion.cpp +++ b/GameVersion.cpp @@ -23,12 +23,12 @@ INT16 zVersionLabel[256] = { L"Beta v. 0.98" }; #else //RELEASE BUILD VERSION - INT16 zVersionLabel[256] = { L"Release v1.13.71 2006.05.18" }; + INT16 zVersionLabel[256] = { L"Release v1.13.76 2006.05.21" }; #endif -INT8 czVersionNumber[16] = { "Build 06.05.20" }; +INT8 czVersionNumber[16] = { "Build 06.05.21" }; INT16 zTrackingNumber[16] = { L"Z" }; diff --git a/JA2.vcproj b/JA2.vcproj index 792ffbf0e..7d13e239a 100644 --- a/JA2.vcproj +++ b/JA2.vcproj @@ -43,7 +43,7 @@ inv[HANDPOS].usItem].usItemClass & IC_GUN) || (Item[pTeamSoldier->inv[HANDPOS].usItem].usItemClass == IC_LAUNCHER) ) { - pGun = &(pTeamSoldier->inv[HANDPOS]); - - //magazine is not full - if ( pGun->ubGunShotsLeft < GetMagSize( pGun ) ) + if ( ( gTacticalStatus.uiFlags & INCOMBAT ) ) { - AutoReload( pTeamSoldier ); + pGun = &(pTeamSoldier->inv[HANDPOS]); + + //magazine is not full + if ( pGun->ubGunShotsLeft < GetMagSize( pGun ) ) + { + AutoReload( pTeamSoldier ); + } } + else + { + // Search for gun in soldier inventory + for (UINT32 bLoop2 = 0; bLoop2 < NUM_INV_SLOTS; bLoop2++) + { + if ( (Item[pTeamSoldier->inv[bLoop2].usItem].usItemClass & IC_GUN) || (Item[pTeamSoldier->inv[bLoop2].usItem].usItemClass == IC_LAUNCHER) ) + { + pGun = &(pTeamSoldier->inv[bLoop2]); + //if magazine is not full + if ( pGun->ubGunShotsLeft < GetMagSize( pGun ) ) + { + + // Search for ammo in soldier inventory + for ( UINT32 uiLoop = 0; uiLoop < NUM_INV_SLOTS; uiLoop++ ) + { + if ( (Item[pTeamSoldier->inv[uiLoop].usItem].usItemClass & IC_AMMO ) ) // the item is ammo + { + pAmmo = &(pTeamSoldier->inv[uiLoop]); + + 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 ); + + fCharacterInfoPanelDirty = TRUE; + fInterfacePanelDirty = DIRTYLEVEL2; + } + } + } + } + } + } + } + + + } + } } } @@ -3210,7 +3252,7 @@ void GetKeyboardInput( UINT32 *puiNewEvent ) case 'S': - if (! (gTacticalStatus.uiFlags & INCOMBAT) ) + if (! ( gTacticalStatus.fEnemyInSector ) ) { for ( UINT32 uiLoop = 0; uiLoop < guiNumWorldItems; uiLoop++ ) {