From a2b40cd51b1001c25879c719c1ce23d3b412135a Mon Sep 17 00:00:00 2001 From: Wanne Date: Fri, 3 Oct 2014 09:47:15 +0000 Subject: [PATCH] Driveable Vehicles Tanks Update (by Ocular) - New ja2_options.ini entry: TANK_MINIMUM_PROGRESS - This defines the progress (0-100), when the enemy can use tanks for attacks and patrols git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@7541 3b4a5df2-a311-0410-b5c6-a8a6f20db521 --- GameSettings.cpp | 4 +++- GameSettings.h | 1 + Strategic/Strategic AI.cpp | 14 +++++++------- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/GameSettings.cpp b/GameSettings.cpp index 3e3ec6bc0..8a6ba5c31 100644 --- a/GameSettings.cpp +++ b/GameSettings.cpp @@ -2181,7 +2181,9 @@ void LoadGameExternalOptions() gGameExternalOptions.fNoRemoveRandomSectorItems = iniReader.ReadBoolean("Strategic GamePlay Settings", "NO_REMOVE_RANDOM_SECTOR_ITEMS", true, false); gGameExternalOptions.fArmyUsesTanksInAttacks = iniReader.ReadBoolean("Strategic Gameplay Settings","ARMY_USES_TANKS_IN_ATTACKS", FALSE); - gGameExternalOptions.fArmyUsesTanksInPatrols = iniReader.ReadBoolean("Strategic Gameplay Settings","ARMY_USES_TANKS_IN_PATROLS", FALSE); + gGameExternalOptions.fArmyUsesTanksInPatrols = iniReader.ReadBoolean("Strategic Gameplay Settings","ARMY_USES_TANKS_IN_PATROLS", FALSE); + gGameExternalOptions.usTankMinimumProgress = iniReader.ReadInteger("Strategic Gameplay Settings","TANK_MINIMUM_PROGRESS", 0, 0, 100); + // WANNE: This is just a debug setting. Only in debug version we set that property to TRUE. // In Release version this should always be set to FALSE diff --git a/GameSettings.h b/GameSettings.h index 3b681821b..451adb5aa 100644 --- a/GameSettings.h +++ b/GameSettings.h @@ -773,6 +773,7 @@ typedef struct BOOLEAN fArmyUsesTanksInAttacks; BOOLEAN fArmyUsesTanksInPatrols; + UINT8 usTankMinimumProgress; // WANNE: Always use "prof.dat". BOOLEAN fUseDifficultyBasedProfDat; diff --git a/Strategic/Strategic AI.cpp b/Strategic/Strategic AI.cpp index d8471086f..dc2896f15 100644 --- a/Strategic/Strategic AI.cpp +++ b/Strategic/Strategic AI.cpp @@ -1504,7 +1504,7 @@ void InitStrategicAI() ubNumTroops = (UINT8)max( gubMinEnemyGroupSize, min( iMaxEnemyGroupSize, ubNumTroops ) ); ubNumTanks = 0; - if( ubNumTroops && gGameExternalOptions.fArmyUsesTanksInPatrols ) + if( ubNumTroops && gGameExternalOptions.fArmyUsesTanksInPatrols && HighestPlayerProgressPercentage() >= gGameExternalOptions.usTankMinimumProgress ) { UINT32 val2; @@ -4503,7 +4503,7 @@ void ExecuteStrategicAIAction( UINT16 usActionCode, INT16 sSectorX, INT16 sSecto { grouptroops[ubCounter] = ubNumSoldiers; grouptanks[ubCounter] = 0; - if( ubNumSoldiers && gGameExternalOptions.fArmyUsesTanksInAttacks ) + if( ubNumSoldiers && gGameExternalOptions.fArmyUsesTanksInAttacks && HighestPlayerProgressPercentage() >= gGameExternalOptions.usTankMinimumProgress ) { if( Random(10) < val ) //if( Random(10) < gGameOptions.ubDifficultyLevel ) @@ -4588,7 +4588,7 @@ void ExecuteStrategicAIAction( UINT16 usActionCode, INT16 sSectorX, INT16 sSecto { grouptroops[ubCounter] = ubNumSoldiers; grouptanks[ubCounter] = 0; - if( ubNumSoldiers && gGameExternalOptions.fArmyUsesTanksInAttacks ) + if( ubNumSoldiers && gGameExternalOptions.fArmyUsesTanksInAttacks && HighestPlayerProgressPercentage() >= gGameExternalOptions.usTankMinimumProgress ) { if( Random(10) < gGameOptions.ubDifficultyLevel ) // if( Random(10) < value ) @@ -4797,7 +4797,7 @@ void ExecuteStrategicAIAction( UINT16 usActionCode, INT16 sSectorX, INT16 sSecto ubNumSoldiers = (UINT8)( gubMinEnemyGroupSize + value2 * 3); //ubNumSoldiers = (UINT8)( gubMinEnemyGroupSize + gGameOptions.ubDifficultyLevel * 3); // anv: replace one of soldiers with tank - if( ubNumSoldiers && gGameExternalOptions.fArmyUsesTanksInAttacks ) + if( ubNumSoldiers && gGameExternalOptions.fArmyUsesTanksInAttacks && HighestPlayerProgressPercentage() >= gGameExternalOptions.usTankMinimumProgress ) { ubNumSoldiers--; ubNumTanks++; @@ -5061,7 +5061,7 @@ void ExecuteStrategicAIAction( UINT16 usActionCode, INT16 sSectorX, INT16 sSecto ubNumSoldiers = (UINT8)( gubMinEnemyGroupSize + value4 * 4); //ubNumSoldiers = (UINT8)( gubMinEnemyGroupSize + gGameOptions.ubDifficultyLevel * 4); // anv: replace one of soldiers with tank - if( ubNumSoldiers && gGameExternalOptions.fArmyUsesTanksInAttacks ) + if( ubNumSoldiers && gGameExternalOptions.fArmyUsesTanksInAttacks && HighestPlayerProgressPercentage() >= gGameExternalOptions.usTankMinimumProgress ) { if( Random( 10 ) < value4 ) //if( Random( 10 ) < gGameOptions.ubDifficultyLevel ) @@ -5188,7 +5188,7 @@ void ExecuteStrategicAIAction( UINT16 usActionCode, INT16 sSectorX, INT16 sSecto } Assert(adminsThisSquad + troopsThisSquad + elitesThisSquad == soldiersThisSquad); // anv: replace one of soldiers with tank - if( ubNumSoldiers && gGameExternalOptions.fArmyUsesTanksInAttacks ) + if( ubNumSoldiers && gGameExternalOptions.fArmyUsesTanksInAttacks && HighestPlayerProgressPercentage() >= gGameExternalOptions.usTankMinimumProgress ) { if( Random( 10 * 100 ) < value5 * direness ) @@ -5345,7 +5345,7 @@ void ExecuteStrategicAIAction( UINT16 usActionCode, INT16 sSectorX, INT16 sSecto giReinforcementPool -= ubNumSoldiers; // anv: replace one of soldiers with tank - if( ubNumSoldiers && gGameExternalOptions.fArmyUsesTanksInAttacks ) + if( ubNumSoldiers && gGameExternalOptions.fArmyUsesTanksInAttacks && HighestPlayerProgressPercentage() >= gGameExternalOptions.usTankMinimumProgress ) { if( Random( 10 * 100 ) < value7 * HighestPlayerProgressPercentage() ) //if( Random( 10 * 100 ) < gGameOptions.ubDifficultyLevel * HighestPlayerProgressPercentage() )