From 36d67602fdae093ed3d519b3f2efe33d300e7394 Mon Sep 17 00:00:00 2001 From: Sevenfm Date: Sun, 24 Oct 2021 09:02:48 +0000 Subject: [PATCH] Added camouflage bonus to the survival trait (by rftr). git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@9193 3b4a5df2-a311-0410-b5c6-a8a6f20db521 --- GameSettings.cpp | 1 + GameSettings.h | 1 + Laptop/personnel.cpp | 6 ++++++ Tactical/LOS.cpp | 14 ++++++++++++-- Utils/_Ja25ChineseText.cpp | 2 +- Utils/_Ja25DutchText.cpp | 1 + Utils/_Ja25EnglishText.cpp | 2 +- Utils/_Ja25FrenchText.cpp | 2 +- Utils/_Ja25GermanText.cpp | 2 +- Utils/_Ja25ItalianText.cpp | 1 + Utils/_Ja25PolishText.cpp | 1 + Utils/_Ja25RussianText.cpp | 2 +- 12 files changed, 28 insertions(+), 7 deletions(-) diff --git a/GameSettings.cpp b/GameSettings.cpp index f80a2423..7b2cba78 100644 --- a/GameSettings.cpp +++ b/GameSettings.cpp @@ -2685,6 +2685,7 @@ void LoadSkillTraitsExternalSettings() gSkillTraitValues.sSVFoodConsumption = iniReader.ReadInteger( "Survival", "FOOD_CONSUMPTION", -20, -100, 100 ); gSkillTraitValues.sSVDrinkConsumption = iniReader.ReadInteger( "Survival", "DRINK_CONSUMPTION", -10, -100, 100 ); gSkillTraitValues.usSVSnakeDefense = iniReader.ReadInteger( "Survival", "SNAKE_EVADE_BONUS", 10, 0, 50 ); + gSkillTraitValues.ubSVCamoEffectivenessBonus = iniReader.ReadInteger( "Survival", "CAMO_EFFECTIVENESS_BONUS", 20, 0, 100); } //DBrot: Grids diff --git a/GameSettings.h b/GameSettings.h index 0743996c..e3146c72 100644 --- a/GameSettings.h +++ b/GameSettings.h @@ -2101,6 +2101,7 @@ typedef struct INT8 sSVFoodConsumption; // alters food consumption rate INT8 sSVDrinkConsumption; UINT8 usSVSnakeDefense; // increases chance to evade a snake attack + UINT8 ubSVCamoEffectivenessBonus; } 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 ea135a96..43e4c49b 100644 --- a/Laptop/personnel.cpp +++ b/Laptop/personnel.cpp @@ -8365,6 +8365,12 @@ void AssignPersonnelSkillTraitHelpText( UINT8 ubTraitNumber, BOOLEAN fExpertLeve } } + if ( gSkillTraitValues.ubSVCamoEffectivenessBonus != 0 ) + { + swprintf( atStr, gzIMPMajorTraitsHelpTextsSurvival[10], gSkillTraitValues.ubSVCamoEffectivenessBonus ); + wcscat( apStr, atStr ); + } + break; } case NO_SKILLTRAIT_NT: diff --git a/Tactical/LOS.cpp b/Tactical/LOS.cpp index bdd02a97..88d02d5a 100644 --- a/Tactical/LOS.cpp +++ b/Tactical/LOS.cpp @@ -630,12 +630,17 @@ INT8 GetSightAdjustmentCamouflageOnTerrain( SOLDIERTYPE* pSoldier, const UINT8& return 0; } - INT8 scaler = -(ANIM_STAND+1 - ubStance); // stand = 7-6 => 10%, crouch = 7-3 => 66%, prone = 7-1 => 100%; + INT16 scaler = -(ANIM_STAND+1 - ubStance); // stand = 7-6 => 10%, crouch = 7-3 => 66%, prone = 7-1 => 100%; UINT8 effectiveness = gGameExternalOptions.ubCamouflageEffectiveness; effectiveness += (UINT8)(pSoldier->GetBackgroundValue(BG_PERC_CAMO)); + if (ProfileHasSkillTrait(pSoldier->ubProfile, SURVIVAL_NT)) + { + effectiveness += gSkillTraitValues.ubSVCamoEffectivenessBonus; + } + scaler = effectiveness * scaler / 6; switch(ubTerrainType) { @@ -668,12 +673,17 @@ INT8 GetDetailedSightAdjustmentCamouflageOnTerrain( SOLDIERTYPE* pSoldier, const INT8 bStanceModifier = zGivenTileProperties.bCamoStanceModifer; - INT8 scaler = -(ANIM_STAND+1 - max(ANIM_PRONE, ubStance - bStanceModifier)); // stand = 7-6 => 10%, crouch = 7-3 => 66%, prone = 7-1 => 100%; + INT16 scaler = -(ANIM_STAND+1 - max(ANIM_PRONE, ubStance - bStanceModifier)); // stand = 7-6 => 10%, crouch = 7-3 => 66%, prone = 7-1 => 100%; UINT8 effectiveness = gGameExternalOptions.ubCamouflageEffectiveness; effectiveness += (UINT8)(pSoldier->GetBackgroundValue(BG_PERC_CAMO)); + if (ProfileHasSkillTrait(pSoldier->ubProfile, SURVIVAL_NT)) + { + effectiveness += gSkillTraitValues.ubSVCamoEffectivenessBonus; + } + scaler = effectiveness * scaler / 6; if(gGameExternalOptions.fAlternateMultiTerrainCamoCalculation) { diff --git a/Utils/_Ja25ChineseText.cpp b/Utils/_Ja25ChineseText.cpp index c3e7f7c3..8c3cf689 100644 --- a/Utils/_Ja25ChineseText.cpp +++ b/Utils/_Ja25ChineseText.cpp @@ -397,7 +397,6 @@ STR16 gzIMPMajorTraitsHelpTextsSurvival[] = L"队伍在区域间乘车移动的速度 +%d%s \n",// L"+%d%s group travelling speed between sectors if traveling in vehicle (except helicopter)\n", L"区域间移动时体力消耗 -%d%s\n",// L"-%d%s less energy spent for travelling between sectors\n", L"天气效果惩罚 -%d%s\n",// L"-%d%s weather penalties\n", - //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"能够发现%d格之内的脚印 \n", //L"Can spot tracks up to %d tiles away\n", @@ -405,6 +404,7 @@ STR16 gzIMPMajorTraitsHelpTextsSurvival[] = L"食物消耗 %s%d%%\n",//L" %s%d%% food consumption\n", L"水 消 耗 %s%d%%\n",//L" %s%d%% water consumption\n", L"回避几率 +%d%%\n", //L"+%d%% snake evasion\n", + L"迷彩涂装效果 +%d%%\n",// L"+%d%s camouflage effectiveness\n", }; STR16 gzIMPMinorTraitsHelpTextsNone[]= diff --git a/Utils/_Ja25DutchText.cpp b/Utils/_Ja25DutchText.cpp index 9acac57f..91e54248 100644 --- a/Utils/_Ja25DutchText.cpp +++ b/Utils/_Ja25DutchText.cpp @@ -404,6 +404,7 @@ STR16 gzIMPMajorTraitsHelpTextsSurvival[] = // TODO.Translate L"%s%d%% food consumption\n", L"%s%d%% water consumption\n", L"+%d%% snake evasion\n", // TODO.Translate + L"+%d%% camouflage effectiveness\n", }; STR16 gzIMPMinorTraitsHelpTextsNone[]= diff --git a/Utils/_Ja25EnglishText.cpp b/Utils/_Ja25EnglishText.cpp index 3bc1b926..fac56fb6 100644 --- a/Utils/_Ja25EnglishText.cpp +++ b/Utils/_Ja25EnglishText.cpp @@ -397,7 +397,6 @@ STR16 gzIMPMajorTraitsHelpTextsSurvival[] = L"-%d%s travel time needed between sectors if traveling in vehicle (except helicopter)\n", L"-%d%s less energy spent for travelling between sectors\n", L"-%d%s weather penalties\n", - //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", @@ -405,6 +404,7 @@ STR16 gzIMPMajorTraitsHelpTextsSurvival[] = L"%s%d%% food consumption\n", L"%s%d%% water consumption\n", L"+%d%% snake evasion\n", + L"+%d%% camouflage effectiveness\n", }; STR16 gzIMPMinorTraitsHelpTextsNone[]= diff --git a/Utils/_Ja25FrenchText.cpp b/Utils/_Ja25FrenchText.cpp index 2023a68a..0707be3b 100644 --- a/Utils/_Ja25FrenchText.cpp +++ b/Utils/_Ja25FrenchText.cpp @@ -395,7 +395,6 @@ STR16 gzIMPMajorTraitsHelpTextsSurvival[] = // TODO.Translate L"+%d%s de vitesse de déplacement du groupe entre les secteurs, s'ils sont dans un véhicule (sauf l'hélicoptère)\n", L"-%d%s d'énergies nécessaire pour traverser les secteurs\n", L"-%d%s de pénalités du temps\n", - //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 @@ -403,6 +402,7 @@ STR16 gzIMPMajorTraitsHelpTextsSurvival[] = // TODO.Translate L"%s%d%% food consumption\n", L"%s%d%% water consumption\n", L"+%d%% snake evasion\n", // TODO.Translate + L"+%d%% d'efficacité du camouflage\n", }; STR16 gzIMPMinorTraitsHelpTextsNone[]= diff --git a/Utils/_Ja25GermanText.cpp b/Utils/_Ja25GermanText.cpp index dfa2ad24..d5a4474c 100644 --- a/Utils/_Ja25GermanText.cpp +++ b/Utils/_Ja25GermanText.cpp @@ -398,7 +398,6 @@ STR16 gzIMPMajorTraitsHelpTextsSurvival[] = L"-%d%s Reisezeit der Gruppe zwischen Sektoren bei Benutzung von Fahrzeugen (außer dem Helikopter)\n", L"-%d%s weniger Energieverlust beim Reisen zwischen Sektoren\n", L"-%d%s Einfluss durch schlechtes Wetter\n", - //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", @@ -406,6 +405,7 @@ STR16 gzIMPMajorTraitsHelpTextsSurvival[] = L"%s%d%% food consumption\n", L"%s%d%% water consumption\n", L"+%d%% snake evasion\n", // TODO.Translate + L"+%d%% Tarnungs-Effektivität\n", }; STR16 gzIMPMinorTraitsHelpTextsNone[]= diff --git a/Utils/_Ja25ItalianText.cpp b/Utils/_Ja25ItalianText.cpp index 29209cd4..2ab565f1 100644 --- a/Utils/_Ja25ItalianText.cpp +++ b/Utils/_Ja25ItalianText.cpp @@ -402,6 +402,7 @@ STR16 gzIMPMajorTraitsHelpTextsSurvival[] = // TODO.Translate L"%s%d%% food consumption\n", L"%s%d%% water consumption\n", L"+%d%% snake evasion\n", // TODO.Translate + L"+%d%% camouflage effectiveness\n", }; STR16 gzIMPMinorTraitsHelpTextsNone[]= diff --git a/Utils/_Ja25PolishText.cpp b/Utils/_Ja25PolishText.cpp index 62855b54..32c8f6a6 100644 --- a/Utils/_Ja25PolishText.cpp +++ b/Utils/_Ja25PolishText.cpp @@ -404,6 +404,7 @@ STR16 gzIMPMajorTraitsHelpTextsSurvival[] = // TODO.Translate L"%s%d%% food consumption\n", L"%s%d%% water consumption\n", L"+%d%% snake evasion\n", // TODO.Translate + L"+%d%% camouflage effectiveness\n", }; STR16 gzIMPMinorTraitsHelpTextsNone[]= diff --git a/Utils/_Ja25RussianText.cpp b/Utils/_Ja25RussianText.cpp index 1164df68..4ae1adcb 100644 --- a/Utils/_Ja25RussianText.cpp +++ b/Utils/_Ja25RussianText.cpp @@ -397,7 +397,6 @@ STR16 gzIMPMajorTraitsHelpTextsSurvival[] = L"+%d%s к скорости передвижения группы на транспорте между квадратами (кроме вертолёта)\n", L"-%d%s к потере сил при переходе в другой квадрат\n", L"-%d%s к погодным трудностям\n", - //L"+%d%s к эффективности камуфляжа\n", L"-%d%s к износу камуфляжного покрытия из-за воды и времени\n", L"Может заметить следы за %d метров\n", @@ -405,6 +404,7 @@ STR16 gzIMPMajorTraitsHelpTextsSurvival[] = L"%s%d%% к потреблению еды\n", L"%s%d%% к потреблению воды\n", L"+%d%% к уклонению от атак змей\n", + L"+%d%% к эффективности камуфляжа\n", }; STR16 gzIMPMinorTraitsHelpTextsNone[]=