diff --git a/Strategic/Map Screen Helicopter.cpp b/Strategic/Map Screen Helicopter.cpp index 3315137c..271b79f0 100644 --- a/Strategic/Map Screen Helicopter.cpp +++ b/Strategic/Map Screen Helicopter.cpp @@ -1393,7 +1393,7 @@ UINT8 MoveAllInHelicopterToFootMovementGroup( INT8 bNewSquad ) } // Flugente: we are leaving the helicopter and instantly deploy into combat - this must be an airdrop - pSoldier->bSoldierFlagMask |= SOLDIER_AIRDROP; + pSoldier->bSoldierFlagMask |= (SOLDIER_AIRDROP_TURN|SOLDIER_AIRDROP); } } diff --git a/Tactical/Soldier Control.cpp b/Tactical/Soldier Control.cpp index 6e706a56..fe6fefea 100644 --- a/Tactical/Soldier Control.cpp +++ b/Tactical/Soldier Control.cpp @@ -16896,7 +16896,7 @@ INT16 SOLDIERTYPE::GetAPBonus() { INT16 bonus = 0; - if ( this->bSoldierFlagMask & SOLDIER_AIRDROP_BONUS ) + if ( this->bSoldierFlagMask & SOLDIER_AIRDROP_TURN ) bonus += this->GetBackgroundValue(BG_AIRDROP); if ( this->bSoldierFlagMask & SOLDIER_ASSAULT_BONUS ) @@ -16975,9 +16975,19 @@ INT16 SOLDIERTYPE::GetInterruptModifier( UINT8 usDistance ) { INT16 bonus = 0; + // drugs can alter our perception + if ( this->drugs.bDrugEffect[ DRUG_TYPE_PERCEPTION ] ) + bonus += 2; + else if ( this->drugs.bDrugSideEffect[ DRUG_TYPE_PERCEPTION ] ) + bonus -= 2; + // if we are listening on our radio, our mind will be somewhere else... we will be less focused if ( this->IsRadioListening() ) bonus -= 3; + + // if we are airdropping and do not have the 'airdrop' background, we receive a substantial malus to our interrupt level. Roping down takes a lot of attention + if ( this->bSoldierFlagMask & SOLDIER_AIRDROP_TURN && (this->GetBackgroundValue(BG_AIRDROP) == 0) ) + bonus -= 8; return bonus; } @@ -16985,7 +16995,7 @@ INT16 SOLDIERTYPE::GetInterruptModifier( UINT8 usDistance ) void SOLDIERTYPE::SoldierPropertyUpkeep() { // these flags are only used for the first turn, and thus always removed - this->bSoldierFlagMask &= ~(SOLDIER_AIRDROP_BONUS|SOLDIER_ASSAULT_BONUS); + this->bSoldierFlagMask &= ~(SOLDIER_AIRDROP_TURN|SOLDIER_ASSAULT_BONUS); if ( HasBackgroundFlag( BACKGROUND_EXP_UNDERGROUND ) && this->bSectorZ ) ++bExtraExpLevel; diff --git a/Tactical/Soldier Control.h b/Tactical/Soldier Control.h index 303765c1..969d19f5 100644 --- a/Tactical/Soldier Control.h +++ b/Tactical/Soldier Control.h @@ -374,13 +374,13 @@ enum #define SOLDIER_REDOFLASHLIGHT 0x00008000 //32768 // this flag signifies that we somehow interacted with the items in our hands. Thus we have to possible redo lighting from flashlights #define SOLDIER_LIGHT_OWNER 0x00010000 //65536 // we 'own' at least one light source (via flashlights) -#define SOLDIER_AIRDROP_BONUS 0x00020000 //131072 // backgrounds: special AP bonus during the first turn of an airdrop +#define SOLDIER_AIRDROP_TURN 0x00020000 //131072 // we are entering a sector via airdrop this turn #define SOLDIER_ASSAULT_BONUS 0x00040000 //262144 // backgrounds: our first turn in an assault #define SOLDIER_RADIO_OPERATOR_LISTENING 0x00080000 //524288 // radio operator is listening with his set #define SOLDIER_RADIO_OPERATOR_JAMMING 0x00100000 //1048576 // radio operator is jamming frequencies #define SOLDIER_RADIO_OPERATOR_SCANNING 0x00200000 //2097152 // radio operator is scanning for jammers -#define SOLDIER_AIRDROP 0x00400000 //4194304 // soldier is entering the sector via airdrop from a helicopter +#define SOLDIER_AIRDROP 0x00400000 //4194304 // soldier is entering the sector via airdrop from a helicopter. Sligthly different from SOLDIER_AIRDROP_TURN /*#define PLAYER_NET_4_LVL_2 0x00800000 //8388608 #define PLAYER_NET_1_LVL_3 0x01000000 //16777216 @@ -535,7 +535,7 @@ enum //Flugente skills from traits and other sources enum{ - // psyker skills + // first skill SKILLS_FIRST = 0, // radio operator diff --git a/Tactical/TeamTurns.cpp b/Tactical/TeamTurns.cpp index 556da7d7..cbab6d2a 100644 --- a/Tactical/TeamTurns.cpp +++ b/Tactical/TeamTurns.cpp @@ -1935,16 +1935,6 @@ INT8 CalcInterruptDuelPts( SOLDIERTYPE * pSoldier, UINT8 ubOpponentID, BOOLEAN f } } - // Flugente: drugs can alter our perception - if ( pSoldier->drugs.bDrugEffect[ DRUG_TYPE_PERCEPTION ] ) - { - iPoints += 1; - } - else if ( pSoldier->drugs.bDrugSideEffect[ DRUG_TYPE_PERCEPTION ] ) - { - iPoints -= 1; - } - // Flugente: interrupt modifier from special stats iPoints += pSoldier->GetInterruptModifier( ubDistance );