diff --git a/GameSettings.cpp b/GameSettings.cpp index 5f20ab38..02028d04 100644 --- a/GameSettings.cpp +++ b/GameSettings.cpp @@ -1059,6 +1059,9 @@ void LoadGameExternalOptions() // SANDRO - Special NPCs strength increased by percent gGameExternalOptions.usSpecialNPCStronger = iniReader.ReadInteger("Tactical Difficulty Settings", "SPECIAL_NPCS_STRONGER",0, 0, 200); + // Flugente: the assassins are disguised initially, so it is harder for the player to detect them + gGameExternalOptions.fAssassinsAreDisguised = iniReader.ReadBoolean("Tactical Difficulty Settings", "ASSASSINS_DISGUISED", TRUE); + //################# Tactical Vision Settings ################# diff --git a/GameSettings.h b/GameSettings.h index b0867d04..d43d268b 100644 --- a/GameSettings.h +++ b/GameSettings.h @@ -360,6 +360,7 @@ typedef struct BOOLEAN fEnableChanceOfEnemyAmbushes; INT8 bChanceModifierEnemyAmbushes; UINT8 usSpecialNPCStronger; + BOOLEAN fAssassinsAreDisguised; // added by Flugente /////////////////////////////////////// // System settings diff --git a/Tactical/Overhead.cpp b/Tactical/Overhead.cpp index 921d27d8..d96e963c 100644 --- a/Tactical/Overhead.cpp +++ b/Tactical/Overhead.cpp @@ -3938,6 +3938,7 @@ void HandleNPCTeamMemberDeath( SOLDIERTYPE *pSoldierOld ) case T_REX: case DRUGGIST: case GENERAL: + case JIM: case JACK: case OLAF: case RAY: diff --git a/Tactical/Soldier Control.cpp b/Tactical/Soldier Control.cpp index dec3c298..5240441b 100644 --- a/Tactical/Soldier Control.cpp +++ b/Tactical/Soldier Control.cpp @@ -2114,6 +2114,7 @@ INT16 SOLDIERTYPE::CalcActionPoints( void ) case T_REX: case DRUGGIST: case GENERAL: + case JIM: case JACK: case OLAF: case RAY: @@ -2232,6 +2233,7 @@ void SOLDIERTYPE::CalcNewActionPoints( void ) case T_REX: case DRUGGIST: case GENERAL: + case JIM: case JACK: case OLAF: case RAY: @@ -13893,6 +13895,7 @@ INT32 SOLDIERTYPE::GetDamageResistance(BOOLEAN fAutoResolve, BOOLEAN fCalcBreath case T_REX: case DRUGGIST: case GENERAL: + case JIM: case JACK: case OLAF: case RAY: diff --git a/Tactical/Soldier Create.cpp b/Tactical/Soldier Create.cpp index 1afca45e..eaafc2fb 100644 --- a/Tactical/Soldier Create.cpp +++ b/Tactical/Soldier Create.cpp @@ -1248,6 +1248,78 @@ BOOLEAN TacticalCopySoldierFromProfile( SOLDIERTYPE *pSoldier, SOLDIERCREATE_STR // pSoldier->snowCamo = 100; //} } + + // Flugente: if playing with the covert trait, the assasins come covert, so they are tougher to find + if ( gGameExternalOptions.fAssassinsAreDisguised && gGameOptions.fNewTraitSystem && pSoldier->ubProfile >= JIM && pSoldier->ubProfile <= TYRONE ) + { + pSoldier->bSoldierFlagMask |= (SOLDIER_COVERT_SOLDIER|SOLDIER_COVERT_NPC_SPECIAL|SOLDIER_NEW_VEST|SOLDIER_NEW_PANTS); + + UINT8 rnd = Random(11); + + // Vest + switch ( rnd ) + { + case 0: + SET_PALETTEREP_ID( pSoldier->VestPal, "BROWNVEST" ); + break; + case 1: + SET_PALETTEREP_ID( pSoldier->VestPal, "greyVEST" ); + break; + case 2: + SET_PALETTEREP_ID( pSoldier->VestPal, "GREENVEST" ); + break; + case 3: + SET_PALETTEREP_ID( pSoldier->VestPal, "JEANVEST" ); + break; + case 4: + SET_PALETTEREP_ID( pSoldier->VestPal, "REDVEST" ); + break; + case 5: + SET_PALETTEREP_ID( pSoldier->VestPal, "BLUEVEST" ); + break; + case 6: + SET_PALETTEREP_ID( pSoldier->VestPal, "YELLOWVEST" ); + break; + case 7: + SET_PALETTEREP_ID( pSoldier->VestPal, "WHITEVEST" ); + break; + case 8: + SET_PALETTEREP_ID( pSoldier->VestPal, "BLACKSHIRT" ); + break; + case 9: + SET_PALETTEREP_ID( pSoldier->VestPal, "GYELLOWSHIRT" ); + break; + default: + SET_PALETTEREP_ID( pSoldier->VestPal, "PURPLESHIRT" ); + break; + } + + rnd = Random(6); + + // Pants + switch ( rnd ) + { + case 0: + SET_PALETTEREP_ID( pSoldier->PantsPal, "GREENPANTS" ); + break; + case 1: + SET_PALETTEREP_ID( pSoldier->PantsPal, "JEANPANTS" ); + break; + case 2: + SET_PALETTEREP_ID( pSoldier->PantsPal, "TANPANTS" ); + break; + case 3: + SET_PALETTEREP_ID( pSoldier->PantsPal, "BLACKPANTS" ); + break; + case 4: + SET_PALETTEREP_ID( pSoldier->PantsPal, "BLUEPANTS" ); + break; + default: + SET_PALETTEREP_ID( pSoldier->PantsPal, "BEIGEPANTS" ); + break; + } + } + return( TRUE ); } diff --git a/Tactical/Weapons.cpp b/Tactical/Weapons.cpp index eff2ee76..bc9155fd 100644 --- a/Tactical/Weapons.cpp +++ b/Tactical/Weapons.cpp @@ -5165,6 +5165,7 @@ UINT32 CalcNewChanceToHitGun(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTi case T_REX: case DRUGGIST: case GENERAL: + case JIM: case JACK: case OLAF: case RAY: @@ -7087,6 +7088,7 @@ UINT32 CalcChanceToHitGun(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTime, case T_REX: case DRUGGIST: case GENERAL: + case JIM: case JACK: case OLAF: case RAY: @@ -8513,6 +8515,7 @@ UINT32 CalcChanceToHitGun(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTime, case T_REX: case DRUGGIST: case GENERAL: + case JIM: case JACK: case OLAF: case RAY: diff --git a/TileEngine/Explosion Control.cpp b/TileEngine/Explosion Control.cpp index d30feac2..61ffb48b 100644 --- a/TileEngine/Explosion Control.cpp +++ b/TileEngine/Explosion Control.cpp @@ -1833,6 +1833,7 @@ BOOLEAN DamageSoldierFromBlast( UINT8 ubPerson, UINT8 ubOwner, INT32 sBombGridNo case T_REX: case DRUGGIST: case GENERAL: + case JIM: case JACK: case OLAF: case RAY: