diff --git a/Tactical/Overhead.cpp b/Tactical/Overhead.cpp index 1ca23cd9b..95478d421 100644 --- a/Tactical/Overhead.cpp +++ b/Tactical/Overhead.cpp @@ -8008,7 +8008,7 @@ INT8 CalcSuppressionTolerance( SOLDIERTYPE * pSoldier ) } // Flugente: add personal bonus to suppresion tolerance - bTolerance += pSoldier->GetSuppressionResistanceBonus(); + bTolerance = (bTolerance * (100 + pSoldier->GetSuppressionResistanceBonus() ) / 100); bTolerance = __max(bTolerance, gGameExternalOptions.ubSuppressionToleranceMin); bTolerance = __min(bTolerance, gGameExternalOptions.ubSuppressionToleranceMax); diff --git a/Tactical/Soldier Add.cpp b/Tactical/Soldier Add.cpp index b56083aa6..a6169098d 100644 --- a/Tactical/Soldier Add.cpp +++ b/Tactical/Soldier Add.cpp @@ -1492,7 +1492,7 @@ void AddSoldierToSectorGridNo( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT8 ubDir fUpdateFinalPosition = FALSE; } - // Flugente: if we are airdropping, center screen on the action adn remove soldier initially. He will be dropped into the sector by the helicopter + // Flugente: if we are airdropping, center screen on the action and remove soldier initially. He will be dropped into the sector by the helicopter if ( pSoldier->bSoldierFlagMask & SOLDIER_AIRDROP ) { pSoldier->bSoldierFlagMask &= ~SOLDIER_AIRDROP; diff --git a/Tactical/Soldier Control.cpp b/Tactical/Soldier Control.cpp index a2e975e34..0f16a7d07 100644 --- a/Tactical/Soldier Control.cpp +++ b/Tactical/Soldier Control.cpp @@ -14296,9 +14296,9 @@ INT32 SOLDIERTYPE::GetDamageResistance(BOOLEAN fAutoResolve, BOOLEAN fCalcBreath resistance += this->GetBackgroundValue(BG_RESI_PHYSICAL); - // resistance is between -100% and 100% - resistance = max( 0, resistance); - resistance = min(100, resistance); + // resistance is between -100% and 95% + resistance = max(-100, resistance); + resistance = min( 95, resistance); return( resistance ); } @@ -16983,7 +16983,7 @@ INT16 SOLDIERTYPE::GetInterruptModifier( UINT8 usDistance ) 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) ) + if ( this->bSoldierFlagMask & SOLDIER_AIRDROP_TURN && (this->GetBackgroundValue(BG_AIRDROP) <= 0) ) bonus -= 8; return bonus; diff --git a/Tactical/XML_Background.cpp b/Tactical/XML_Background.cpp index 6cc3e0ed7..cb53c2b0c 100644 --- a/Tactical/XML_Background.cpp +++ b/Tactical/XML_Background.cpp @@ -368,7 +368,7 @@ backgroundEndElementHandle(void *userData, const XML_Char *name) else if(strcmp(name, "resistance_physical") == 0) { pData->curElement = ELEMENT; - pData->curBackground.value[BG_RESI_PHYSICAL] = min(XML_BACKGROUND_RESI_MAX, max(-XML_BACKGROUND_RESI_MAX, (INT8) atol(pData->szCharData) )); + pData->curBackground.value[BG_RESI_PHYSICAL] = min(10, max(-10, (INT8) atol(pData->szCharData) )); } else if(strcmp(name, "resistance_alcohol") == 0) { @@ -388,12 +388,12 @@ backgroundEndElementHandle(void *userData, const XML_Char *name) else if(strcmp(name, "betterprices_guns") == 0) { pData->curElement = ELEMENT; - pData->curBackground.value[BG_PERC_PRICES_GUNS] = min(20, max(-20, (INT16) atol(pData->szCharData) )); + pData->curBackground.value[BG_PERC_PRICES_GUNS] = min(10, max(-10, (INT16) atol(pData->szCharData) )); } else if(strcmp(name, "betterprices") == 0) { pData->curElement = ELEMENT; - pData->curBackground.value[BG_PERC_PRICES] = min(20, max(-20, (INT16) atol(pData->szCharData) )); + pData->curBackground.value[BG_PERC_PRICES] = min(10, max(-10, (INT16) atol(pData->szCharData) )); } else if(strcmp(name, "capitulation") == 0) { @@ -403,7 +403,7 @@ backgroundEndElementHandle(void *userData, const XML_Char *name) else if(strcmp(name, "speed_run") == 0) { pData->curElement = ELEMENT; - pData->curBackground.value[BG_PERC_SPEED_RUNNING] = min(50, max(-50, (INT16) atol(pData->szCharData) )); + pData->curBackground.value[BG_PERC_SPEED_RUNNING] = min(30, max(-30, (INT16) atol(pData->szCharData) )); } else if(strcmp(name, "speed_bandaging") == 0) { @@ -418,7 +418,7 @@ backgroundEndElementHandle(void *userData, const XML_Char *name) else if(strcmp(name, "carrystrength") == 0) { pData->curElement = ELEMENT; - pData->curBackground.value[BG_PERC_CARRYSTRENGTH] = min(50, max(-50, (INT16) atol(pData->szCharData) )); + pData->curBackground.value[BG_PERC_CARRYSTRENGTH] = min(20, max(-20, (INT16) atol(pData->szCharData) )); } else if(strcmp(name, "food") == 0) { @@ -433,7 +433,7 @@ backgroundEndElementHandle(void *userData, const XML_Char *name) else if(strcmp(name, "sleep") == 0) { pData->curElement = ELEMENT; - pData->curBackground.value[BG_PERC_SLEEP] = min(2, max(-2, (INT16) atol(pData->szCharData) )); + pData->curBackground.value[BG_PERC_SLEEP] = min(1, max(-1, (INT16) atol(pData->szCharData) )); } else if(strcmp(name, "meleedamage") == 0) { @@ -448,12 +448,12 @@ backgroundEndElementHandle(void *userData, const XML_Char *name) else if(strcmp(name, "camo") == 0) { pData->curElement = ELEMENT; - pData->curBackground.value[BG_PERC_CAMO] = min(20, max(-20, (INT16) atol(pData->szCharData) )); + pData->curBackground.value[BG_PERC_CAMO] = min(10, max(-20, (INT16) atol(pData->szCharData) )); } else if(strcmp(name, "stealth") == 0) { pData->curElement = ELEMENT; - pData->curBackground.value[BG_PERC_STEALTH] = min(20, max(-20, (INT16) atol(pData->szCharData) )); + pData->curBackground.value[BG_PERC_STEALTH] = min(10, max(-20, (INT16) atol(pData->szCharData) )); } else if(strcmp(name, "increased_maxcth") == 0) { @@ -463,32 +463,32 @@ backgroundEndElementHandle(void *userData, const XML_Char *name) else if(strcmp(name, "hearing_night") == 0) { pData->curElement = ELEMENT; - pData->curBackground.value[BG_PERC_HEARING_NIGHT] = min(10, max(-10, (INT16) atol(pData->szCharData) )); + pData->curBackground.value[BG_PERC_HEARING_NIGHT] = min(2, max(-5, (INT16) atol(pData->szCharData) )); } else if(strcmp(name, "hearing_day") == 0) { pData->curElement = ELEMENT; - pData->curBackground.value[BG_PERC_HEARING_DAY] = min(10, max(-10, (INT16) atol(pData->szCharData) )); + pData->curBackground.value[BG_PERC_HEARING_DAY] = min(2, max(-5, (INT16) atol(pData->szCharData) )); } else if(strcmp(name, "approach_friendly") == 0) { pData->curElement = ELEMENT; - pData->curBackground.value[BG_PERC_APPROACH_FRIENDLY] = min(50, max(-50, (INT16) atol(pData->szCharData) )); + pData->curBackground.value[BG_PERC_APPROACH_FRIENDLY] = min(20, max(-50, (INT16) atol(pData->szCharData) )); } else if(strcmp(name, "approach_direct") == 0) { pData->curElement = ELEMENT; - pData->curBackground.value[BG_PERC_APPROACH_DIRECT] = min(50, max(-50, (INT16) atol(pData->szCharData) )); + pData->curBackground.value[BG_PERC_APPROACH_DIRECT] = min(20, max(-50, (INT16) atol(pData->szCharData) )); } else if(strcmp(name, "approach_threaten") == 0) { pData->curElement = ELEMENT; - pData->curBackground.value[BG_PERC_APPROACH_THREATEN] = min(50, max(-50, (INT16) atol(pData->szCharData) )); + pData->curBackground.value[BG_PERC_APPROACH_THREATEN] = min(20, max(-50, (INT16) atol(pData->szCharData) )); } else if(strcmp(name, "approach_recruit") == 0) { pData->curElement = ELEMENT; - pData->curBackground.value[BG_PERC_APPROACH_RECRUIT] = min(50, max(-50, (INT16) atol(pData->szCharData) )); + pData->curBackground.value[BG_PERC_APPROACH_RECRUIT] = min(20, max(-50, (INT16) atol(pData->szCharData) )); } else if(strcmp(name, "breachingcharge") == 0) { @@ -498,7 +498,7 @@ backgroundEndElementHandle(void *userData, const XML_Char *name) else if(strcmp(name, "cth_vs_creatures") == 0) { pData->curElement = ELEMENT; - pData->curBackground.value[BG_PERC_CTH_CREATURE] = min(20, max(-20, (INT16) atol(pData->szCharData) )); + pData->curBackground.value[BG_PERC_CTH_CREATURE] = min(10, max(-10, (INT16) atol(pData->szCharData) )); } else if(strcmp(name, "insurance") == 0) {