diff --git a/GameSettings.cpp b/GameSettings.cpp index fcda4f75..9a92439c 100644 --- a/GameSettings.cpp +++ b/GameSettings.cpp @@ -2547,6 +2547,7 @@ void LoadSkillTraitsExternalSettings() gSkillTraitValues.usVOMortarPointsElite = iniReader.ReadInteger("Radio Operator","RADIO_OPERATOR_MORTAR_POINTS_ELITE", 25, 0, 100); gSkillTraitValues.usVOMortarRadius = iniReader.ReadInteger("Radio Operator","RADIO_OPERATOR_MORTAR_RADIUS", 10, 5, 100); gSkillTraitValues.usVOMortarSignalShellRadius = iniReader.ReadInteger("Radio Operator","RADIO_OPERATOR_MORTAR_SIGNAL_SHELL_RADIUS", 2, 2, 100); + gSkillTraitValues.usVOReinforcementSetting = iniReader.ReadInteger("Radio Operator","RADIO_OPERATOR_REINFORCEMENT_SETTING", 2, 0, 3 ); gSkillTraitValues.sVOScanAssignmentBaseRange = iniReader.ReadInteger("Radio Operator","RADIO_OPERATOR_ASSIGNMENT_SCAN_BASE_RANGE", 5, 0, 20); gSkillTraitValues.sVOListeningHearingBonus = iniReader.ReadInteger("Radio Operator","RADIO_OPERATOR_LISTENING_HEARING_BONUS", 20, 0, 100); gSkillTraitValues.fVOJammingBlocksRemoteBombs = iniReader.ReadBoolean("Radio Operator","RADIO_OPERATOR_JAMMING_BLOCKSRADIOBOMBS", FALSE); diff --git a/GameSettings.h b/GameSettings.h index 6efc8aa4..0b6e197e 100644 --- a/GameSettings.h +++ b/GameSettings.h @@ -1836,6 +1836,7 @@ typedef struct UINT8 usVOMortarPointsElite; UINT8 usVOMortarRadius; UINT8 usVOMortarSignalShellRadius; + UINT8 usVOReinforcementSetting; INT8 sVOScanAssignmentBaseRange; INT8 sVOListeningHearingBonus; BOOLEAN fVOJammingBlocksRemoteBombs; diff --git a/GameVersion.cpp b/GameVersion.cpp index f66eb249..65131719 100644 --- a/GameVersion.cpp +++ b/GameVersion.cpp @@ -15,9 +15,9 @@ #ifdef JA2EDITOR #ifdef JA2UB - CHAR16 zVersionLabel[256] = { L"Unfinished Business - Map Editor v1.13.8034 (Development Build)" }; + CHAR16 zVersionLabel[256] = { L"Unfinished Business - Map Editor v1.13.8043 (Development Build)" }; #else - CHAR16 zVersionLabel[256] = { L"Map Editor v1.13.8034 (Development Build)" }; + CHAR16 zVersionLabel[256] = { L"Map Editor v1.13.8043 (Development Build)" }; #endif // ------------------------------ @@ -27,11 +27,11 @@ //DEBUG BUILD VERSION #ifdef JA2UB - CHAR16 zVersionLabel[256] = { L"Debug: Unfinished Business - v1.13.8034 (Development Build)" }; + CHAR16 zVersionLabel[256] = { L"Debug: Unfinished Business - v1.13.8043 (Development Build)" }; #elif defined (JA113DEMO) - CHAR16 zVersionLabel[256] = { L"Debug: JA2 Demo - v1.13.8034 (Development Build)" }; + CHAR16 zVersionLabel[256] = { L"Debug: JA2 Demo - v1.13.8043 (Development Build)" }; #else - CHAR16 zVersionLabel[256] = { L"Debug: v1.13.8034 (Development Build)" }; + CHAR16 zVersionLabel[256] = { L"Debug: v1.13.8043 (Development Build)" }; #endif #elif defined CRIPPLED_VERSION @@ -46,16 +46,16 @@ //RELEASE BUILD VERSION #ifdef JA2UB - CHAR16 zVersionLabel[256] = { L"Release Unfinished Business - v1.13.8034 (Development Build)" }; + CHAR16 zVersionLabel[256] = { L"Release Unfinished Business - v1.13.8043 (Development Build)" }; #elif defined (JA113DEMO) - CHAR16 zVersionLabel[256] = { L"Release JA2 Demo - v1.13.8034 (Development Build)" }; + CHAR16 zVersionLabel[256] = { L"Release JA2 Demo - v1.13.8043 (Development Build)" }; #else - CHAR16 zVersionLabel[256] = { L"Release v1.13.8034 (Development Build)" }; + CHAR16 zVersionLabel[256] = { L"Release v1.13.8043 (Development Build)" }; #endif #endif -CHAR8 czVersionNumber[16] = { "Build 16.01.24" }; //YY.MM.DD +CHAR8 czVersionNumber[16] = { "Build 16.01.28" }; //YY.MM.DD CHAR16 zTrackingNumber[16] = { L"Z" }; // SAVE_GAME_VERSION is defined in header, change it there diff --git a/Strategic/strategicmap.cpp b/Strategic/strategicmap.cpp index c730dc2b..d4836b36 100644 --- a/Strategic/strategicmap.cpp +++ b/Strategic/strategicmap.cpp @@ -7576,16 +7576,38 @@ BOOLEAN MoveEnemyFromGridNoToRoofGridNo( UINT32 sSourceGridNo, UINT32 sDestGridN // Flugente: militia movement: can we order militia reinforcements from( sSrcMapX, sSrcMapY ) to( sMapX, sMapY ) ? BOOLEAN CanRequestMilitiaReinforcements( INT16 sMapX, INT16 sMapY, INT16 sSrcMapX, INT16 sSrcMapY ) { - if ( !gGameExternalOptions.gfAllowReinforcements ) - return FALSE; - - // we can request reinforcements only inside towns - if ( GetTownIdForSector( sMapX, sMapY ) != BLANK_SECTOR && GetTownIdForSector( sMapX, sMapY ) != GetTownIdForSector( sSrcMapX, sSrcMapY ) ) + if ( !gGameExternalOptions.gfAllowReinforcements || !gSkillTraitValues.usVOReinforcementSetting ) return FALSE; // not possible of nobody is there if ( !NumNonPlayerTeamMembersInSector( sSrcMapX, sSrcMapY, MILITIA_TEAM ) ) return FALSE; - return TRUE; + UINT8 townid_A = GetTownIdForSector( sMapX, sMapY ); + UINT8 townid_B = GetTownIdForSector( sSrcMapX, sSrcMapY ); + + switch ( gSkillTraitValues.usVOReinforcementSetting ) + { + // reinforcements allowed inside town + case 1: + if ( townid_A != BLANK_SECTOR && townid_A == townid_B ) + return TRUE; + break; + + // reinforcements allowed to and from town + case 2: + if ( townid_A != BLANK_SECTOR || townid_B != BLANK_SECTOR ) + return TRUE; + break; + + // reinforcements allowed everywhere + case 3: + return TRUE; + break; + + default: + break; + } + + return FALSE; }