From 5d6de52be9744c3cb0582b5339f5c1582184d2d0 Mon Sep 17 00:00:00 2001 From: silversurfer Date: Mon, 12 Jun 2017 11:15:29 +0000 Subject: [PATCH] Fix: NPCs could get covert flags in old trait system which prevented them from ever losing it making them undetectable. git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8405 3b4a5df2-a311-0410-b5c6-a8a6f20db521 --- GameVersion.cpp | 18 +++++++++--------- SaveLoadGame.cpp | 20 +++++++++++++------- Tactical/Soldier Control.cpp | 4 ---- Tactical/Soldier Profile.cpp | 19 +++++++++++-------- 4 files changed, 33 insertions(+), 28 deletions(-) diff --git a/GameVersion.cpp b/GameVersion.cpp index e9c7a6f7d..54f49c226 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.8401 (Development Build)" }; + CHAR16 zVersionLabel[256] = { L"Unfinished Business - Map Editor v1.13.8405 (Development Build)" }; #else - CHAR16 zVersionLabel[256] = { L"Map Editor v1.13.8401 (Development Build)" }; + CHAR16 zVersionLabel[256] = { L"Map Editor v1.13.8405 (Development Build)" }; #endif // ------------------------------ @@ -27,11 +27,11 @@ //DEBUG BUILD VERSION #ifdef JA2UB - CHAR16 zVersionLabel[256] = { L"Debug: Unfinished Business - v1.13.8401 (Development Build)" }; + CHAR16 zVersionLabel[256] = { L"Debug: Unfinished Business - v1.13.8405 (Development Build)" }; #elif defined (JA113DEMO) - CHAR16 zVersionLabel[256] = { L"Debug: JA2 Demo - v1.13.8401 (Development Build)" }; + CHAR16 zVersionLabel[256] = { L"Debug: JA2 Demo - v1.13.8405 (Development Build)" }; #else - CHAR16 zVersionLabel[256] = { L"Debug: v1.13.8401 (Development Build)" }; + CHAR16 zVersionLabel[256] = { L"Debug: v1.13.8405 (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.8401 (Development Build)" }; + CHAR16 zVersionLabel[256] = { L"Release Unfinished Business - v1.13.8405 (Development Build)" }; #elif defined (JA113DEMO) - CHAR16 zVersionLabel[256] = { L"Release JA2 Demo - v1.13.8401 (Development Build)" }; + CHAR16 zVersionLabel[256] = { L"Release JA2 Demo - v1.13.8405 (Development Build)" }; #else - CHAR16 zVersionLabel[256] = { L"Release v1.13.8401 (Development Build)" }; + CHAR16 zVersionLabel[256] = { L"Release v1.13.8405 (Development Build)" }; #endif #endif -CHAR8 czVersionNumber[16] = { "Build 17.04.14" }; //YY.MM.DD +CHAR8 czVersionNumber[16] = { "Build 17.06.12" }; //YY.MM.DD CHAR16 zTrackingNumber[16] = { L"Z" }; // SAVE_GAME_VERSION is defined in header, change it there diff --git a/SaveLoadGame.cpp b/SaveLoadGame.cpp index 67ea4012c..67d286780 100644 --- a/SaveLoadGame.cpp +++ b/SaveLoadGame.cpp @@ -6628,20 +6628,26 @@ BOOLEAN LoadSavedGame( int ubSavedGameID ) //now change the savegame format so that temp files are saved and loaded correctly guiCurrentSaveGameVersion = SAVE_GAME_VERSION; - // silversurfer: added additional check to only remove the flags when there is no boxing activity going on at the moment. - // WANNE: This should fix the bug if any merc are still under PC control. This could happen after boxing in SAN MONA. - if ( gTacticalStatus.bBoxingState == NOT_BOXING ) + // player team character fixes + SOLDIERTYPE *pTeamSoldier; + for (INT8 bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; bLoop++) { - SOLDIERTYPE *pTeamSoldier; - for (INT8 bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; bLoop++) - { - pTeamSoldier=MercPtrs[bLoop]; + pTeamSoldier=MercPtrs[bLoop]; + // silversurfer: added additional check to only remove the flags when there is no boxing activity going on at the moment. + // WANNE: This should fix the bug if any merc are still under PC control. This could happen after boxing in SAN MONA. + if ( gTacticalStatus.bBoxingState == NOT_BOXING ) + { if (pTeamSoldier->flags.uiStatusFlags & SOLDIER_PCUNDERAICONTROL) pTeamSoldier->flags.uiStatusFlags &= (~SOLDIER_PCUNDERAICONTROL); pTeamSoldier->DeleteBoxingFlag(); } + + // silversurfer: check for covert flags that shouldn't be active on a robot/vehicle and when playing with old traits + if ( (pTeamSoldier->flags.uiStatusFlags & (SOLDIER_ROBOT | SOLDIER_VEHICLE) && pTeamSoldier->usSoldierFlagMask & (SOLDIER_COVERT_CIV | SOLDIER_COVERT_SOLDIER | SOLDIER_COVERT_NPC_SPECIAL)) + || (!gGameOptions.fNewTraitSystem && pTeamSoldier->usSoldierFlagMask & (SOLDIER_COVERT_CIV | SOLDIER_COVERT_SOLDIER | SOLDIER_COVERT_NPC_SPECIAL)) ) + pTeamSoldier->LooseDisguise( ); } // Reinforcement parameter is not stored in the savegame so we have to reset it here. diff --git a/Tactical/Soldier Control.cpp b/Tactical/Soldier Control.cpp index 9b8eb90a9..0907c1354 100644 --- a/Tactical/Soldier Control.cpp +++ b/Tactical/Soldier Control.cpp @@ -15651,10 +15651,6 @@ BOOLEAN SOLDIERTYPE::RecognizeAsCombatant( UINT8 ubTargetID ) if ( !pSoldier ) return TRUE; - // brutal fix: robots cannot be disguised - if ( AM_A_ROBOT( pSoldier ) && pSoldier->usSoldierFlagMask & (SOLDIER_COVERT_CIV | SOLDIER_COVERT_SOLDIER | SOLDIER_COVERT_NPC_SPECIAL) ) - pSoldier->LooseDisguise( ); - // zombies don't care about disguises if ( IsZombie( ) ) return TRUE; diff --git a/Tactical/Soldier Profile.cpp b/Tactical/Soldier Profile.cpp index a1ebe8ea5..458cba40c 100644 --- a/Tactical/Soldier Profile.cpp +++ b/Tactical/Soldier Profile.cpp @@ -1924,14 +1924,17 @@ BOOLEAN RecruitRPC( UINT8 ubCharNum ) GiveQuestRewardPoint( pSoldier->sSectorX, pSoldier->sSectorY, 6, MIGUEL ); } - // Flugente: people recruited in Arulco are known to the enemy as civilians or even soldiers. So they will be covert when recruited. Of course, this is not for the rebels... - if ( ubCharNum == DEVIN || ubCharNum == HAMOUS || ubCharNum == SLAY || ubCharNum == VINCE || ubCharNum == MADDOG || ubCharNum == MICKY ) + if ( gGameOptions.fNewTraitSystem ) { - pNewSoldier->usSoldierFlagMask |= (SOLDIER_COVERT_CIV|SOLDIER_COVERT_NPC_SPECIAL); - } - else if ( ubCharNum == IGGY || ubCharNum == CONRAD ) - { - pNewSoldier->usSoldierFlagMask |= (SOLDIER_COVERT_SOLDIER|SOLDIER_COVERT_NPC_SPECIAL); + // Flugente: people recruited in Arulco are known to the enemy as civilians or even soldiers. So they will be covert when recruited. Of course, this is not for the rebels... + if ( ubCharNum == DEVIN || ubCharNum == HAMOUS || ubCharNum == SLAY || ubCharNum == VINCE || ubCharNum == MADDOG || ubCharNum == MICKY ) + { + pNewSoldier->usSoldierFlagMask |= (SOLDIER_COVERT_CIV|SOLDIER_COVERT_NPC_SPECIAL); + } + else if ( ubCharNum == IGGY || ubCharNum == CONRAD ) + { + pNewSoldier->usSoldierFlagMask |= (SOLDIER_COVERT_SOLDIER|SOLDIER_COVERT_NPC_SPECIAL); + } } // handle town loyalty adjustment @@ -2050,7 +2053,7 @@ BOOLEAN RecruitEPC( UINT8 ubCharNum ) pNewSoldier->ubWhatKindOfMercAmI = MERC_TYPE__EPC; // Flugente: people recruited in Arulco are known to the enemy as civilians or even soldiers. So they will be covert when recruited. Of course, this is not for the rebels/vehicles/robots - if ( !(pNewSoldier->flags.uiStatusFlags & (SOLDIER_ROBOT | SOLDIER_VEHICLE) ) ) + if ( gGameOptions.fNewTraitSystem && !(pNewSoldier->flags.uiStatusFlags & (SOLDIER_ROBOT | SOLDIER_VEHICLE)) ) { pNewSoldier->usSoldierFlagMask |= (SOLDIER_COVERT_CIV | SOLDIER_COVERT_NPC_SPECIAL); }