diff --git a/GameInitOptionsScreen.h b/GameInitOptionsScreen.h index 3f629bad..b0dd9c37 100644 --- a/GameInitOptionsScreen.h +++ b/GameInitOptionsScreen.h @@ -89,8 +89,12 @@ typedef struct BOOLEAN bRadioSightings; BOOLEAN bRadioSightings2; - FLOAT NewDifficultySettingsBASE_DIFFICULTY; - FLOAT NewDifficultySettingsAIM_DIFFICULTY; + FLOAT fCTHSettingsBaseDifficultyEnemy; + FLOAT fCTHSettingsAimDifficultyEnemy; + FLOAT fCTHSettingsBaseDifficultyMilitia; + FLOAT fCTHSettingsAimDifficultyMilitia; + FLOAT fCTHSettingsBaseDifficultyPlayer; + FLOAT fCTHSettingsAimDifficultyPlayer; BOOLEAN bEnemyMoraleWorried; diff --git a/GameVersion.cpp b/GameVersion.cpp index 8297ec3a..6aba200f 100644 --- a/GameVersion.cpp +++ b/GameVersion.cpp @@ -55,8 +55,8 @@ #endif -CHAR8 czVersionNumber[16] = { "Build 18.02.09" }; //YY.MM.DD +CHAR8 czVersionNumber[16] = { "Build 18.20.09" }; //YY.MM.DD CHAR16 zTrackingNumber[16] = { L"Z" }; -CHAR16 zRevisionNumber[16] = { L"Revision 8610" }; +CHAR16 zRevisionNumber[16] = { L"Revision 8612" }; // SAVE_GAME_VERSION is defined in header, change it there diff --git a/Strategic/Strategic AI.cpp b/Strategic/Strategic AI.cpp index 7d1f23dc..0cdb68ff 100644 --- a/Strategic/Strategic AI.cpp +++ b/Strategic/Strategic AI.cpp @@ -4588,7 +4588,7 @@ void ExecuteStrategicAIAction( UINT16 usActionCode, INT16 sSectorX, INT16 sSecto if ( gGameOptions.ubDifficultyLevel > 0 ) { groupelites[ubCounter] = grouptroops[ubCounter] - grouptroops[ubCounter] / gGameOptions.ubDifficultyLevel; - grouptroops[ubCounter] -= groupelites[ubCounter]; + //grouptroops[ubCounter] -= groupelites[ubCounter]; } totalusedsoldiers += grouptroops[ubCounter] + groupelites[ubCounter] + grouptanks[ubCounter] + groupjeeps[ubCounter]; diff --git a/Tactical/Weapons.cpp b/Tactical/Weapons.cpp index ad7c9b0d..3fef9f9e 100644 --- a/Tactical/Weapons.cpp +++ b/Tactical/Weapons.cpp @@ -11804,9 +11804,15 @@ FLOAT CalcNewChanceToHitBaseSpecialBonus(SOLDIERTYPE *pSoldier) // GAME DIFFICULTY if ( !(pSoldier->flags.uiStatusFlags & SOLDIER_PC ) && (pSoldier->bSide != gbPlayerNum) ) { - fBaseModifier += zDiffSetting[gGameOptions.ubDifficultyLevel].NewDifficultySettingsBASE_DIFFICULTY; + fBaseModifier += zDiffSetting[gGameOptions.ubDifficultyLevel].fCTHSettingsBaseDifficultyEnemy; } - + else if ( pSoldier->bTeam == MILITIA_TEAM ) + { + fBaseModifier += zDiffSetting[gGameOptions.ubDifficultyLevel].fCTHSettingsBaseDifficultyMilitia; + } + else + fBaseModifier += __max( 0, ( 30 - CurrentPlayerProgressPercentage() ) ) * zDiffSetting[gGameOptions.ubDifficultyLevel].fCTHSettingsBaseDifficultyPlayer / 30; + return fBaseModifier; } @@ -12122,8 +12128,14 @@ FLOAT CalcNewChanceToHitAimSpecialBonus(SOLDIERTYPE *pSoldier) // GAME DIFFICULTY if ( !(pSoldier->flags.uiStatusFlags & SOLDIER_PC ) && (pSoldier->bSide != gbPlayerNum) ) { - fAimModifier += zDiffSetting[gGameOptions.ubDifficultyLevel].NewDifficultySettingsAIM_DIFFICULTY; + fAimModifier += zDiffSetting[gGameOptions.ubDifficultyLevel].fCTHSettingsAimDifficultyEnemy; } + else if ( pSoldier->bTeam == MILITIA_TEAM ) + { + fAimModifier += zDiffSetting[gGameOptions.ubDifficultyLevel].fCTHSettingsAimDifficultyMilitia; + } + else + fAimModifier += __max( 0, ( 30 - CurrentPlayerProgressPercentage() ) ) * zDiffSetting[gGameOptions.ubDifficultyLevel].fCTHSettingsAimDifficultyPlayer / 30; return fAimModifier; } diff --git a/XML_DifficultySettings.cpp b/XML_DifficultySettings.cpp index becb2ec8..5d2cbecb 100644 --- a/XML_DifficultySettings.cpp +++ b/XML_DifficultySettings.cpp @@ -110,7 +110,11 @@ DifficultySettingsParseDataStartElementHandle(void *userData, const XML_Char *na strcmp(name, "EnemyMoraleWorried") == 0 || strcmp(name, "MaxMortarsPerTeam" ) == 0 || strcmp(name, "CthConstantsAimDifficulty") == 0 || - strcmp(name, "CthConstantsBaseDifficulty") == 0 + strcmp(name, "CthConstantsBaseDifficulty") == 0 || + strcmp(name, "CthConstantsAimDifficultyMilitia") == 0 || + strcmp(name, "CthConstantsBaseDifficultyMilitia") == 0 || + strcmp(name, "CthConstantsAimDifficultyPlayer") == 0 || + strcmp(name, "CthConstantsBaseDifficultyPlayer") == 0 )) { pData->curElement = ELEMENT_PROPERTY; @@ -229,8 +233,12 @@ difficultySettingsEndElementHandle(void *userData, const XML_Char *name) zDiffSetting[pData->curDifficultySettings.uiIndex].bRadioSightings = pData->curDifficultySettings.bRadioSightings; zDiffSetting[pData->curDifficultySettings.uiIndex].bRadioSightings2 = pData->curDifficultySettings.bRadioSightings2; - zDiffSetting[pData->curDifficultySettings.uiIndex].NewDifficultySettingsAIM_DIFFICULTY = pData->curDifficultySettings.NewDifficultySettingsAIM_DIFFICULTY; - zDiffSetting[pData->curDifficultySettings.uiIndex].NewDifficultySettingsBASE_DIFFICULTY = pData->curDifficultySettings.NewDifficultySettingsBASE_DIFFICULTY; + zDiffSetting[pData->curDifficultySettings.uiIndex].fCTHSettingsAimDifficultyEnemy = pData->curDifficultySettings.fCTHSettingsAimDifficultyEnemy; + zDiffSetting[pData->curDifficultySettings.uiIndex].fCTHSettingsBaseDifficultyEnemy = pData->curDifficultySettings.fCTHSettingsBaseDifficultyEnemy; + zDiffSetting[pData->curDifficultySettings.uiIndex].fCTHSettingsAimDifficultyMilitia = pData->curDifficultySettings.fCTHSettingsAimDifficultyMilitia; + zDiffSetting[pData->curDifficultySettings.uiIndex].fCTHSettingsBaseDifficultyMilitia = pData->curDifficultySettings.fCTHSettingsBaseDifficultyMilitia; + zDiffSetting[pData->curDifficultySettings.uiIndex].fCTHSettingsAimDifficultyPlayer = pData->curDifficultySettings.fCTHSettingsAimDifficultyPlayer; + zDiffSetting[pData->curDifficultySettings.uiIndex].fCTHSettingsBaseDifficultyPlayer = pData->curDifficultySettings.fCTHSettingsBaseDifficultyPlayer; zDiffSetting[pData->curDifficultySettings.uiIndex].bEnemyMoraleWorried = pData->curDifficultySettings.bEnemyMoraleWorried; @@ -567,12 +575,32 @@ difficultySettingsEndElementHandle(void *userData, const XML_Char *name) else if(strcmp(name, "CthConstantsAimDifficulty") == 0) { pData->curElement = ELEMENT; - pData->curDifficultySettings.NewDifficultySettingsAIM_DIFFICULTY = (FLOAT) atol(pData->szCharData); + pData->curDifficultySettings.fCTHSettingsAimDifficultyEnemy = (FLOAT) atol(pData->szCharData); } else if(strcmp(name, "CthConstantsBaseDifficulty") == 0) { pData->curElement = ELEMENT; - pData->curDifficultySettings.NewDifficultySettingsBASE_DIFFICULTY = (FLOAT) atol(pData->szCharData); + pData->curDifficultySettings.fCTHSettingsBaseDifficultyEnemy = (FLOAT) atol(pData->szCharData); + } + else if(strcmp(name, "CthConstantsAimDifficultyMilitia") == 0) + { + pData->curElement = ELEMENT; + pData->curDifficultySettings.fCTHSettingsAimDifficultyMilitia = (FLOAT) atol(pData->szCharData); + } + else if(strcmp(name, "CthConstantsBaseDifficultyMilitia") == 0) + { + pData->curElement = ELEMENT; + pData->curDifficultySettings.fCTHSettingsBaseDifficultyMilitia = (FLOAT) atol(pData->szCharData); + } + else if(strcmp(name, "CthConstantsAimDifficultyPlayer") == 0) + { + pData->curElement = ELEMENT; + pData->curDifficultySettings.fCTHSettingsAimDifficultyPlayer = (FLOAT) atol(pData->szCharData); + } + else if(strcmp(name, "CthConstantsBaseDifficultyPlayer") == 0) + { + pData->curElement = ELEMENT; + pData->curDifficultySettings.fCTHSettingsBaseDifficultyPlayer = (FLOAT) atol(pData->szCharData); } pData->maxReadDepth--; }