diff --git a/GameSettings.cpp b/GameSettings.cpp index aca247bb0..90cf9a9b4 100644 --- a/GameSettings.cpp +++ b/GameSettings.cpp @@ -2526,15 +2526,19 @@ void LoadSkillTraitsExternalSettings() gSkillTraitValues.fSNTPrisonSnitchGuardStrengthMultiplier = iniReader.ReadFloat("Snitch","PRISON_SNITCH_GUARD_STRENGTH_MULTIPLIER", 3.0, 0.0, 10.0); // Flugente: SURVIVAL - gSkillTraitValues.ubSVGroupTimeSpentForTravellingFoot = iniReader.ReadInteger( "Survival", "GROUP_TIME_SPENT_FOR_TRAVELLING_BY_FOOT_REDUCTION", 20, 0, 100 ); - gSkillTraitValues.ubSVGroupTimeSpentForTravellingVehicle = iniReader.ReadInteger( "Survival", "GROUP_TIME_SPENT_FOR_TRAVELLING_IN_VEHICLE_REDUCTION", 10, 0, 100 ); - gSkillTraitValues.ubSVMaxBonusesToTravelSpeed = iniReader.ReadInteger( "Survival", "MAX_STACKABLE_LESS_TRAVEL_TIME_BONUSES", 2, 0, 20 ); - gSkillTraitValues.ubSVBreathForTravellingReduction = iniReader.ReadInteger( "Survival", "ENERGY_SPENT_TRAVEL_REDUCTION", 30, 0, 100 ); - gSkillTraitValues.ubSVWeatherPenaltiesReduction = iniReader.ReadInteger( "Survival", "WEATHER_PENALTIES_REDUCTION", 50, 0, 100 ); - gSkillTraitValues.ubSVCamoWornountSpeedReduction = iniReader.ReadInteger( "Survival", "CAMO_WORNOUT_SPEED_REDUCTION", 50, 0, 100 ); - gSkillTraitValues.usSVTrackerMaxRange = iniReader.ReadInteger( "Survival", "TRACKER_MAX_RANGE", 30, 0, 50 ); - gSkillTraitValues.usSVTrackerAbility = iniReader.ReadInteger( "Survival", "TRACKER_ABILITY", 30, 0, 50 ); + gSkillTraitValues.ubSVGroupTimeSpentForTravellingFoot = iniReader.ReadInteger( "Survival", "GROUP_TIME_SPENT_FOR_TRAVELLING_BY_FOOT_REDUCTION", 30, 0, 100 ); + gSkillTraitValues.ubSVGroupTimeSpentForTravellingVehicle = iniReader.ReadInteger( "Survival", "GROUP_TIME_SPENT_FOR_TRAVELLING_IN_VEHICLE_REDUCTION", 15, 0, 100 ); + gSkillTraitValues.ubSVMaxBonusesToTravelSpeed = iniReader.ReadInteger( "Survival", "MAX_STACKABLE_LESS_TRAVEL_TIME_BONUSES", 2, 0, 20 ); + gSkillTraitValues.ubSVBreathForTravellingReduction = iniReader.ReadInteger( "Survival", "ENERGY_SPENT_TRAVEL_REDUCTION", 50, 0, 100 ); + gSkillTraitValues.ubSVWeatherPenaltiesReduction = iniReader.ReadInteger( "Survival", "WEATHER_PENALTIES_REDUCTION", 35, 0, 100 ); + gSkillTraitValues.ubSVCamoWornountSpeedReduction = iniReader.ReadInteger( "Survival", "CAMO_WORNOUT_SPEED_REDUCTION", 75, 0, 100 ); + gSkillTraitValues.usSVTrackerMaxRange = iniReader.ReadInteger( "Survival", "TRACKER_MAX_RANGE", 30, 0, 50 ); + gSkillTraitValues.usSVTrackerAbility = iniReader.ReadInteger( "Survival", "TRACKER_ABILITY", 30, 0, 50 ); + gSkillTraitValues.usSVDiseaseResistance = iniReader.ReadInteger( "Survival", "DISEASE_RESISTANCE", 10, 0, 100 ); + gSkillTraitValues.sSVFoodConsumption = iniReader.ReadInteger( "Survival", "FOOD_CONSUMPTION", -20, -100, 100 ); + gSkillTraitValues.sSVDrinkConsumption = iniReader.ReadInteger( "Survival", "DRINK_CONSUMPTION", -10, -100, 100 ); } + //DBrot: Grids void LoadModSettings(){ CIniReader iniReader(MOD_SETTINGS_FILE); diff --git a/GameSettings.h b/GameSettings.h index d4a641ab6..6ad146e4d 100644 --- a/GameSettings.h +++ b/GameSettings.h @@ -1826,6 +1826,9 @@ typedef struct UINT8 ubSVCamoWornountSpeedReduction; UINT16 usSVTrackerMaxRange; UINT8 usSVTrackerAbility; + UINT8 usSVDiseaseResistance; + INT8 sSVFoodConsumption; // alters food consumption rate + INT8 sSVDrinkConsumption; } SKILL_TRAIT_VALUES; // HEADROCK HAM 4: Constants used as coefficients by the various parts of the new CTH system. diff --git a/Laptop/personnel.cpp b/Laptop/personnel.cpp index 16fa9ae85..78cbd3e8d 100644 --- a/Laptop/personnel.cpp +++ b/Laptop/personnel.cpp @@ -8315,6 +8315,31 @@ void AssignPersonnelSkillTraitHelpText( UINT8 ubTraitNumber, BOOLEAN fExpertLeve swprintf( atStr, gzIMPMajorTraitsHelpTextsSurvival[5], (gSkillTraitValues.usSVTrackerAbility * gSkillTraitValues.usSVTrackerMaxRange / 100) ); wcscat( apStr, atStr ); } + + if ( gGameExternalOptions.fDisease ) + { + if ( gSkillTraitValues.usSVDiseaseResistance != 0 ) + { + swprintf( atStr, gzIMPMajorTraitsHelpTextsSurvival[6], gSkillTraitValues.usSVDiseaseResistance > 0 ? L"+" : L"", gSkillTraitValues.usSVDiseaseResistance ); + wcscat( apStr, atStr ); + } + } + + if ( gGameOptions.fFoodSystem ) + { + if ( gSkillTraitValues.sSVFoodConsumption != 0 ) + { + swprintf( atStr, gzIMPMajorTraitsHelpTextsSurvival[7], gSkillTraitValues.sSVFoodConsumption > 0 ? L"+" : L"", gSkillTraitValues.sSVFoodConsumption ); + wcscat( apStr, atStr ); + } + + if ( gSkillTraitValues.sSVDrinkConsumption != 0 ) + { + swprintf( atStr, gzIMPMajorTraitsHelpTextsSurvival[8], gSkillTraitValues.sSVDrinkConsumption > 0 ? L"+" : L"", gSkillTraitValues.sSVDrinkConsumption ); + wcscat( apStr, atStr ); + } + } + break; } case NO_SKILLTRAIT_NT: diff --git a/Tactical/Food.cpp b/Tactical/Food.cpp index e06b60894..b07d7346e 100644 --- a/Tactical/Food.cpp +++ b/Tactical/Food.cpp @@ -384,8 +384,14 @@ void HourlyFoodSituationUpdate( SOLDIERTYPE *pSoldier ) FLOAT temperaturemodifier = (FLOAT)(3 + sectortemperaturemod)/3; - FLOAT specialfoodmodifier = 100.0 + pSoldier->GetBackgroundValue(BG_PERC_FOOD); - FLOAT specialdrinkmodifier = 100.0 + pSoldier->GetBackgroundValue(BG_PERC_WATER); + FLOAT specialfoodmodifier = 100.0 + pSoldier->GetBackgroundValue( BG_PERC_FOOD ); + FLOAT specialdrinkmodifier = 100.0 + pSoldier->GetBackgroundValue( BG_PERC_WATER ); + + if ( HAS_SKILL_TRAIT( pSoldier, SURVIVAL_NT ) ) + { + specialfoodmodifier += gSkillTraitValues.sSVFoodConsumption; + specialdrinkmodifier += gSkillTraitValues.sSVDrinkConsumption; + } for ( int i = 0; i < NUM_DISEASES; ++i ) { diff --git a/Tactical/Soldier Control.cpp b/Tactical/Soldier Control.cpp index 18a72b24a..258fa07f3 100644 --- a/Tactical/Soldier Control.cpp +++ b/Tactical/Soldier Control.cpp @@ -18939,6 +18939,9 @@ INT16 SOLDIERTYPE::GetDiseaseResistance( ) // Flugente: resistance can per definition only be between -100 and 100 (at least that's my definition) INT16 val = 0; + if ( HAS_SKILL_TRAIT( this, SURVIVAL_NT ) ) + val += gSkillTraitValues.usSVDiseaseResistance; + val += this->GetBackgroundValue( BG_RESI_DISEASE ); val = max( -100, val ); diff --git a/Utils/_Ja25ChineseText.cpp b/Utils/_Ja25ChineseText.cpp index f686bb536..4f959459d 100644 --- a/Utils/_Ja25ChineseText.cpp +++ b/Utils/_Ja25ChineseText.cpp @@ -393,6 +393,10 @@ STR16 gzIMPMajorTraitsHelpTextsSurvival[] = // TODO.Translate //L"迷彩涂装效果 +%d%s\n",// L"+%d%s camouflage effectiveness\n", L"迷彩涂装退色的速度 -%d%s\n",// L"-%d%s worn out speed of camouflage by water or time\n", L"Can spot tracks up to %d tiles away\n", // TODO.Translate + + L" %s%d%% disease resistance\n", + L" %s%d%% food consumption\n", + L" %s%d%% water consumption\n", }; STR16 gzIMPMinorTraitsHelpTextsNone[]= diff --git a/Utils/_Ja25DutchText.cpp b/Utils/_Ja25DutchText.cpp index 57758302c..d62443daf 100644 --- a/Utils/_Ja25DutchText.cpp +++ b/Utils/_Ja25DutchText.cpp @@ -394,6 +394,10 @@ STR16 gzIMPMajorTraitsHelpTextsSurvival[] = // TODO.Translate L"-%d%s weather penalties\n", L"-%d%s worn out speed of camouflage by water or time\n", L"Can spot tracks up to %d tiles away\n", + + L" %s%d%% disease resistance\n", + L" %s%d%% food consumption\n", + L" %s%d%% water consumption\n", }; STR16 gzIMPMinorTraitsHelpTextsNone[]= diff --git a/Utils/_Ja25EnglishText.cpp b/Utils/_Ja25EnglishText.cpp index b166f5049..ae5a9137e 100644 --- a/Utils/_Ja25EnglishText.cpp +++ b/Utils/_Ja25EnglishText.cpp @@ -395,6 +395,10 @@ STR16 gzIMPMajorTraitsHelpTextsSurvival[] = //L"+%d%s camouflage effectiveness\n", L"-%d%s worn out speed of camouflage by water or time\n", L"Can spot tracks up to %d tiles away\n", + + L" %s%d%% disease resistance\n", + L" %s%d%% food consumption\n", + L" %s%d%% water consumption\n", }; STR16 gzIMPMinorTraitsHelpTextsNone[]= diff --git a/Utils/_Ja25FrenchText.cpp b/Utils/_Ja25FrenchText.cpp index 8b0b00271..4d28dfc8f 100644 --- a/Utils/_Ja25FrenchText.cpp +++ b/Utils/_Ja25FrenchText.cpp @@ -393,6 +393,10 @@ STR16 gzIMPMajorTraitsHelpTextsSurvival[] = // TODO.Translate //L"+%d%s d'efficacité du camouflage\n", L"-%d%s de l'usure du camouflage due au temps ou à l'eau\n", L"Can spot tracks up to %d tiles away\n", // TODO.Translate + + L" %s%d%% disease resistance\n", + L" %s%d%% food consumption\n", + L" %s%d%% water consumption\n", }; STR16 gzIMPMinorTraitsHelpTextsNone[]= diff --git a/Utils/_Ja25GermanText.cpp b/Utils/_Ja25GermanText.cpp index 9b2191637..ef780a2e0 100644 --- a/Utils/_Ja25GermanText.cpp +++ b/Utils/_Ja25GermanText.cpp @@ -396,6 +396,10 @@ STR16 gzIMPMajorTraitsHelpTextsSurvival[] = //L"+%d%s Tarnungs-Effektivität\n", L"-%d%s Abnutzung von Tarnfarbe durch Wasser oder Zeit\n", L"Kann Spuren bis zu %d Felder weit erkennen\n", + + L" %s%d%% disease resistance\n", //TODO.Translate + L" %s%d%% food consumption\n", + L" %s%d%% water consumption\n", }; STR16 gzIMPMinorTraitsHelpTextsNone[]= diff --git a/Utils/_Ja25ItalianText.cpp b/Utils/_Ja25ItalianText.cpp index 938ef4c30..a991d033b 100644 --- a/Utils/_Ja25ItalianText.cpp +++ b/Utils/_Ja25ItalianText.cpp @@ -392,6 +392,10 @@ STR16 gzIMPMajorTraitsHelpTextsSurvival[] = // TODO.Translate L"-%d%s weather penalties\n", L"-%d%s worn out speed of camouflage by water or time\n", L"Can spot tracks up to %d tiles away\n", + + L" %s%d%% disease resistance\n", + L" %s%d%% food consumption\n", + L" %s%d%% water consumption\n", }; STR16 gzIMPMinorTraitsHelpTextsNone[]= diff --git a/Utils/_Ja25PolishText.cpp b/Utils/_Ja25PolishText.cpp index 9de19bb92..831974596 100644 --- a/Utils/_Ja25PolishText.cpp +++ b/Utils/_Ja25PolishText.cpp @@ -394,6 +394,10 @@ STR16 gzIMPMajorTraitsHelpTextsSurvival[] = // TODO.Translate L"-%d%s weather penalties\n", L"-%d%s worn out speed of camouflage by water or time\n", L"Can spot tracks up to %d tiles away\n", + + L" %s%d%% disease resistance\n", + L" %s%d%% food consumption\n", + L" %s%d%% water consumption\n", }; STR16 gzIMPMinorTraitsHelpTextsNone[]= diff --git a/Utils/_Ja25RussianText.cpp b/Utils/_Ja25RussianText.cpp index 6bb7752a1..bd6c4aef0 100644 --- a/Utils/_Ja25RussianText.cpp +++ b/Utils/_Ja25RussianText.cpp @@ -400,6 +400,10 @@ STR16 gzIMPMajorTraitsHelpTextsSurvival[] = // TODO.Translate L"-%d%s weather penalties\n", L"-%d%s worn out speed of camouflage by water or time\n", L"Can spot tracks up to %d tiles away\n", + + L" %s%d%% disease resistance\n", + L" %s%d%% food consumption\n", + L" %s%d%% water consumption\n", }; STR16 gzIMPMinorTraitsHelpTextsNone[]=