From 2d4c3373c4adf9bdbd56ef0c0b4066e261a022ad Mon Sep 17 00:00:00 2001 From: rftrdev <102184004+rftrdev@users.noreply.github.com> Date: Wed, 9 Aug 2023 18:42:15 -0700 Subject: [PATCH 1/6] Copy grenade settings from demolitions to throwing --- GameSettings.cpp | 3 +++ GameSettings.h | 3 +++ 2 files changed, 6 insertions(+) diff --git a/GameSettings.cpp b/GameSettings.cpp index 28bf115122..73ca684f95 100644 --- a/GameSettings.cpp +++ b/GameSettings.cpp @@ -2785,6 +2785,9 @@ void LoadSkillTraitsExternalSettings() gSkillTraitValues.ubTHBladesSilentCriticalHitChance = iniReader.ReadInteger("Throwing","TH_BLADES_SILENT_CRITICAL_HIT_CHANCE", 20, 0, 100); gSkillTraitValues.ubTHBladesCriticalHitMultiplierBonus = iniReader.ReadInteger("Throwing","SILENT_CRITICAL_HIT_MULTIPLIER_BONUS", 1, 0, 50); gSkillTraitValues.ubTHBladesAimClicksAdded = iniReader.ReadInteger("Throwing","POSSIBLE_AIM_CLICK_ADDED_TH_KNIVES", 1, 0, 5); + gSkillTraitValues.ubTHAPsNeededToThrowGrenadesReduction = iniReader.ReadInteger("Throwing","APS_NEETHD_TO_THROW_GRENATHS_REDUCTION", 25, 0, 90); + gSkillTraitValues.ubTHMaxRangeToThrowGrenades = iniReader.ReadInteger("Throwing","MAX_RANGE_TO_THROW_GRENATHS", 20, 0, 250); + gSkillTraitValues.ubTHCtHWhenThrowingGrenades = iniReader.ReadInteger("Throwing","CTH_WHEN_THROWING_GRENATHS", 30, 0, 100); // NIGHT OPS gSkillTraitValues.ubNOeSightRangeBonusInDark = iniReader.ReadInteger("Night Ops","SIGHT_RANGE_BONUS_IN_DARK", 1, 0, 100); diff --git a/GameSettings.h b/GameSettings.h index 735538f3b2..a1cdeb6301 100644 --- a/GameSettings.h +++ b/GameSettings.h @@ -2177,6 +2177,9 @@ typedef struct UINT8 ubTHBladesSilentCriticalHitChance; UINT8 ubTHBladesCriticalHitMultiplierBonus; UINT8 ubTHBladesAimClicksAdded; + UINT8 ubTHAPsNeededToThrowGrenadesReduction; + UINT8 ubTHMaxRangeToThrowGrenades; + UINT8 ubTHCtHWhenThrowingGrenades; // NIGHT OPS UINT8 ubNOeSightRangeBonusInDark; From cf429048c1e3c24439eaf398d2e0c61a2fc10103 Mon Sep 17 00:00:00 2001 From: rftrdev <102184004+rftrdev@users.noreply.github.com> Date: Thu, 10 Aug 2023 01:31:37 -0700 Subject: [PATCH 2/6] Fix setting strings --- GameSettings.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/GameSettings.cpp b/GameSettings.cpp index 73ca684f95..1f3c1a265d 100644 --- a/GameSettings.cpp +++ b/GameSettings.cpp @@ -2785,9 +2785,9 @@ void LoadSkillTraitsExternalSettings() gSkillTraitValues.ubTHBladesSilentCriticalHitChance = iniReader.ReadInteger("Throwing","TH_BLADES_SILENT_CRITICAL_HIT_CHANCE", 20, 0, 100); gSkillTraitValues.ubTHBladesCriticalHitMultiplierBonus = iniReader.ReadInteger("Throwing","SILENT_CRITICAL_HIT_MULTIPLIER_BONUS", 1, 0, 50); gSkillTraitValues.ubTHBladesAimClicksAdded = iniReader.ReadInteger("Throwing","POSSIBLE_AIM_CLICK_ADDED_TH_KNIVES", 1, 0, 5); - gSkillTraitValues.ubTHAPsNeededToThrowGrenadesReduction = iniReader.ReadInteger("Throwing","APS_NEETHD_TO_THROW_GRENATHS_REDUCTION", 25, 0, 90); - gSkillTraitValues.ubTHMaxRangeToThrowGrenades = iniReader.ReadInteger("Throwing","MAX_RANGE_TO_THROW_GRENATHS", 20, 0, 250); - gSkillTraitValues.ubTHCtHWhenThrowingGrenades = iniReader.ReadInteger("Throwing","CTH_WHEN_THROWING_GRENATHS", 30, 0, 100); + gSkillTraitValues.ubTHAPsNeededToThrowGrenadesReduction = iniReader.ReadInteger("Throwing","APS_NEEDED_TO_THROW_GRENADES_REDUCTION", 25, 0, 90); + gSkillTraitValues.ubTHMaxRangeToThrowGrenades = iniReader.ReadInteger("Throwing","MAX_RANGE_TO_THROW_GRENADES", 20, 0, 250); + gSkillTraitValues.ubTHCtHWhenThrowingGrenades = iniReader.ReadInteger("Throwing","CTH_WHEN_THROWING_GRENADES", 30, 0, 100); // NIGHT OPS gSkillTraitValues.ubNOeSightRangeBonusInDark = iniReader.ReadInteger("Night Ops","SIGHT_RANGE_BONUS_IN_DARK", 1, 0, 100); From e04bbd741ad82808ace361a072b948642aafd752 Mon Sep 17 00:00:00 2001 From: rftrdev <102184004+rftrdev@users.noreply.github.com> Date: Thu, 10 Aug 2023 01:52:13 -0700 Subject: [PATCH 3/6] Add throwing bonuses to the same spots as demolitions --- Tactical/Points.cpp | 11 +++++++++-- Tactical/Weapons.cpp | 23 ++++++++++++++++++----- 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/Tactical/Points.cpp b/Tactical/Points.cpp index 020d8df1e4..c34f30067b 100644 --- a/Tactical/Points.cpp +++ b/Tactical/Points.cpp @@ -3640,11 +3640,18 @@ INT16 MinAPsToThrow( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT8 ubAddTurningCos iAPCost += ( ( ( 100 * iTop ) / iBottom) + 1) / 2; // SANDRO - STOMP traits - reduce APs needed to throw grenades if having Demolitions skill - if( HAS_SKILL_TRAIT( pSoldier, DEMOLITIONS_NT ) && gGameOptions.fNewTraitSystem ) + if( (HAS_SKILL_TRAIT( pSoldier, DEMOLITIONS_NT ) || HAS_SKILL_TRAIT( pSoldier, THROWING_NT )) && gGameOptions.fNewTraitSystem ) { if ( grenadAPreductionpossible ) { - iAPCost = max( 1, (INT32)(iAPCost * (100 - gSkillTraitValues.ubDEAPsNeededToThrowGrenadesReduction) / 100)); + INT32 skillBonus = 0; + + if (HAS_SKILL_TRAIT(pSoldier, DEMOLITIONS_NT)) + skillBonus = gSkillTraitValues.ubDEAPsNeededToThrowGrenadesReduction; + if (HAS_SKILL_TRAIT( pSoldier, THROWING_NT )) + skillBonus = max(skillBonus, gSkillTraitValues.ubTHAPsNeededToThrowGrenadesReduction); + + iAPCost = max( 1, (INT32)(iAPCost * (100 - skillBonus) / 100)); } } diff --git a/Tactical/Weapons.cpp b/Tactical/Weapons.cpp index b635debeda..a639145111 100644 --- a/Tactical/Weapons.cpp +++ b/Tactical/Weapons.cpp @@ -10175,10 +10175,16 @@ INT32 CalcMaxTossRange( SOLDIERTYPE * pSoldier, UINT16 usItem, BOOLEAN fArmed, O iRange += ((iRange * gSkillTraitValues.ubTHBladesMaxRange ) / 100); } // sevenfm: add range only for hand grenades and not launched grenades - else if ( (Item[ usItem ].usItemClass == IC_GRENADE) && Item[usItem].ubCursor == TOSSCURS && (HAS_SKILL_TRAIT( pSoldier, DEMOLITIONS_NT )) ) + else if ( (Item[ usItem ].usItemClass == IC_GRENADE) && Item[usItem].ubCursor == TOSSCURS && (HAS_SKILL_TRAIT( pSoldier, DEMOLITIONS_NT ) || HAS_SKILL_TRAIT( pSoldier, THROWING_NT )) ) { // better max range due to expertise - iRange += ((iRange * gSkillTraitValues.ubDEMaxRangeToThrowGrenades) / 100); + INT32 skillBonus = 0; + if (HAS_SKILL_TRAIT(pSoldier, DEMOLITIONS_NT)) + skillBonus = gSkillTraitValues.ubDEMaxRangeToThrowGrenades; + if (HAS_SKILL_TRAIT(pSoldier, THROWING_NT)) + skillBonus = max(skillBonus, gSkillTraitValues.ubTHMaxRangeToThrowGrenades); + + iRange += ((iRange * skillBonus) / 100); } } else @@ -10260,9 +10266,16 @@ UINT32 CalcThrownChanceToHit(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTi else { iChance += gSkillTraitValues.bCtHModifierThrowingGrenades; // -10% for untrained mercs + INT32 skillBonus = 0; + + // use whatever's higher between throwing and demolitions + if ( HAS_SKILL_TRAIT(pSoldier, THROWING_NT) ) + skillBonus = max(skillBonus, gSkillTraitValues.ubTHCtHWhenThrowingGrenades); - if ( HAS_SKILL_TRAIT( pSoldier, DEMOLITIONS_NT ) ) - iChance += gSkillTraitValues.ubDECtHWhenThrowingGrenades; // +30% chance + if ( HAS_SKILL_TRAIT(pSoldier, DEMOLITIONS_NT) ) + skillBonus = max(skillBonus, gSkillTraitValues.ubDECtHWhenThrowingGrenades); + + iChance += skillBonus; } } else @@ -12196,4 +12209,4 @@ BOOLEAN ArtilleryStrike( UINT16 usItem, UINT8 ubOwnerID, UINT32 usStartingGridNo //REAL_OBJECT* pObject = &( ObjectSlots[ iID ] ); return TRUE; -} \ No newline at end of file +} From dbac514781a67c1e01707d2218af3e378cb513a7 Mon Sep 17 00:00:00 2001 From: rftrdev <102184004+rftrdev@users.noreply.github.com> Date: Fri, 11 Aug 2023 01:09:30 -0700 Subject: [PATCH 4/6] Delete grenade bonuses from Demolitions --- GameSettings.cpp | 3 --- GameSettings.h | 3 --- Tactical/Points.cpp | 11 ++--------- Tactical/Weapons.cpp | 21 +++------------------ 4 files changed, 5 insertions(+), 33 deletions(-) diff --git a/GameSettings.cpp b/GameSettings.cpp index 1f3c1a265d..3263243bcb 100644 --- a/GameSettings.cpp +++ b/GameSettings.cpp @@ -2814,9 +2814,6 @@ void LoadSkillTraitsExternalSettings() gSkillTraitValues.usBBIncreasedNeededDamageToFallDown = iniReader.ReadInteger("Bodybuilding","INCREASE_DAMAGE_NEEDED_TO_FALL_DOWN_IF_HIT_TO_LEGS", 100, 0, 500); // DEMOLITIONS - gSkillTraitValues.ubDEAPsNeededToThrowGrenadesReduction = iniReader.ReadInteger("Demolitions","APS_NEEDED_TO_THROW_GRENADES_REDUCTION", 25, 0, 90); - gSkillTraitValues.ubDEMaxRangeToThrowGrenades = iniReader.ReadInteger("Demolitions","MAX_RANGE_TO_THROW_GRENADES", 20, 0, 250); - gSkillTraitValues.ubDECtHWhenThrowingGrenades = iniReader.ReadInteger("Demolitions","CTH_WHEN_THROWING_GRENADES", 30, 0, 100); gSkillTraitValues.ubDEDamageOfBombsAndMines = iniReader.ReadInteger("Demolitions","DAMAGE_OF_PLACED_BOMBS_AND_MINES", 25, 0, 250); gSkillTraitValues.ubDEAttachDetonatorCheckBonus = iniReader.ReadInteger("Demolitions","ATTACH_DETONATOR_CHECK_BONUS", 50, 0, 250); gSkillTraitValues.ubDEPlantAndRemoveBombCheckBonus = iniReader.ReadInteger("Demolitions","PLANT_AND_REMOVE_BOMBS_AND_MINES_BONUS", 50, 0, 250); diff --git a/GameSettings.h b/GameSettings.h index a1cdeb6301..207fa3dafc 100644 --- a/GameSettings.h +++ b/GameSettings.h @@ -2206,9 +2206,6 @@ typedef struct UINT16 usBBIncreasedNeededDamageToFallDown; // DEMOLITIONS - UINT8 ubDEAPsNeededToThrowGrenadesReduction; - UINT8 ubDEMaxRangeToThrowGrenades; - UINT8 ubDECtHWhenThrowingGrenades; UINT8 ubDEDamageOfBombsAndMines; UINT8 ubDEAttachDetonatorCheckBonus; UINT8 ubDEPlantAndRemoveBombCheckBonus; diff --git a/Tactical/Points.cpp b/Tactical/Points.cpp index c34f30067b..f16aacc88d 100644 --- a/Tactical/Points.cpp +++ b/Tactical/Points.cpp @@ -3640,18 +3640,11 @@ INT16 MinAPsToThrow( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT8 ubAddTurningCos iAPCost += ( ( ( 100 * iTop ) / iBottom) + 1) / 2; // SANDRO - STOMP traits - reduce APs needed to throw grenades if having Demolitions skill - if( (HAS_SKILL_TRAIT( pSoldier, DEMOLITIONS_NT ) || HAS_SKILL_TRAIT( pSoldier, THROWING_NT )) && gGameOptions.fNewTraitSystem ) + if( HAS_SKILL_TRAIT( pSoldier, THROWING_NT ) && gGameOptions.fNewTraitSystem ) { if ( grenadAPreductionpossible ) { - INT32 skillBonus = 0; - - if (HAS_SKILL_TRAIT(pSoldier, DEMOLITIONS_NT)) - skillBonus = gSkillTraitValues.ubDEAPsNeededToThrowGrenadesReduction; - if (HAS_SKILL_TRAIT( pSoldier, THROWING_NT )) - skillBonus = max(skillBonus, gSkillTraitValues.ubTHAPsNeededToThrowGrenadesReduction); - - iAPCost = max( 1, (INT32)(iAPCost * (100 - skillBonus) / 100)); + iAPCost = max( 1, (INT32)(iAPCost * (100 - gSkillTraitValues.ubTHAPsNeededToThrowGrenadesReduction) / 100)); } } diff --git a/Tactical/Weapons.cpp b/Tactical/Weapons.cpp index a639145111..fb0b75e666 100644 --- a/Tactical/Weapons.cpp +++ b/Tactical/Weapons.cpp @@ -10175,16 +10175,10 @@ INT32 CalcMaxTossRange( SOLDIERTYPE * pSoldier, UINT16 usItem, BOOLEAN fArmed, O iRange += ((iRange * gSkillTraitValues.ubTHBladesMaxRange ) / 100); } // sevenfm: add range only for hand grenades and not launched grenades - else if ( (Item[ usItem ].usItemClass == IC_GRENADE) && Item[usItem].ubCursor == TOSSCURS && (HAS_SKILL_TRAIT( pSoldier, DEMOLITIONS_NT ) || HAS_SKILL_TRAIT( pSoldier, THROWING_NT )) ) + else if ( (Item[ usItem ].usItemClass == IC_GRENADE) && Item[usItem].ubCursor == TOSSCURS && HAS_SKILL_TRAIT( pSoldier, THROWING_NT ) ) { // better max range due to expertise - INT32 skillBonus = 0; - if (HAS_SKILL_TRAIT(pSoldier, DEMOLITIONS_NT)) - skillBonus = gSkillTraitValues.ubDEMaxRangeToThrowGrenades; - if (HAS_SKILL_TRAIT(pSoldier, THROWING_NT)) - skillBonus = max(skillBonus, gSkillTraitValues.ubTHMaxRangeToThrowGrenades); - - iRange += ((iRange * skillBonus) / 100); + iRange += ((iRange * gSkillTraitValues.ubTHMaxRangeToThrowGrenades) / 100); } } else @@ -10266,16 +10260,7 @@ UINT32 CalcThrownChanceToHit(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTi else { iChance += gSkillTraitValues.bCtHModifierThrowingGrenades; // -10% for untrained mercs - INT32 skillBonus = 0; - - // use whatever's higher between throwing and demolitions - if ( HAS_SKILL_TRAIT(pSoldier, THROWING_NT) ) - skillBonus = max(skillBonus, gSkillTraitValues.ubTHCtHWhenThrowingGrenades); - - if ( HAS_SKILL_TRAIT(pSoldier, DEMOLITIONS_NT) ) - skillBonus = max(skillBonus, gSkillTraitValues.ubDECtHWhenThrowingGrenades); - - iChance += skillBonus; + iChance += gSkillTraitValues.ubTHCtHWhenThrowingGrenades; } } else From 687f2d00b1d69077a47a3600ffe3c46ee9397563 Mon Sep 17 00:00:00 2001 From: rftrdev <102184004+rftrdev@users.noreply.github.com> Date: Fri, 11 Aug 2023 01:17:42 -0700 Subject: [PATCH 5/6] Update text --- Laptop/personnel.cpp | 40 +++++++++++++++++++------------------- Utils/_Ja25ChineseText.cpp | 6 +++--- Utils/_Ja25DutchText.cpp | 6 +++--- Utils/_Ja25EnglishText.cpp | 6 +++--- Utils/_Ja25FrenchText.cpp | 6 +++--- Utils/_Ja25GermanText.cpp | 6 +++--- Utils/_Ja25ItalianText.cpp | 6 +++--- Utils/_Ja25PolishText.cpp | 6 +++--- Utils/_Ja25RussianText.cpp | 6 +++--- 9 files changed, 44 insertions(+), 44 deletions(-) diff --git a/Laptop/personnel.cpp b/Laptop/personnel.cpp index e2576e335c..935b5cf001 100644 --- a/Laptop/personnel.cpp +++ b/Laptop/personnel.cpp @@ -8165,6 +8165,21 @@ void AssignPersonnelSkillTraitHelpText( UINT8 ubTraitNumber, BOOLEAN fExpertLeve wcscat( apStr, atStr ); } + if( gSkillTraitValues.ubTHAPsNeededToThrowGrenadesReduction != 0 ) + { + swprintf( atStr, gzIMPMinorTraitsHelpTextsThrowing[10], gSkillTraitValues.ubTHAPsNeededToThrowGrenadesReduction, sSpecialCharacters[0]); + wcscat( apStr, atStr ); + } + if( gSkillTraitValues.ubTHMaxRangeToThrowGrenades != 0 ) + { + swprintf( atStr, gzIMPMinorTraitsHelpTextsThrowing[11], gSkillTraitValues.ubTHMaxRangeToThrowGrenades, sSpecialCharacters[0]); + wcscat( apStr, atStr ); + } + if( gSkillTraitValues.ubTHCtHWhenThrowingGrenades != 0 ) + { + swprintf( atStr, gzIMPMinorTraitsHelpTextsThrowing[12], gSkillTraitValues.ubTHCtHWhenThrowingGrenades, sSpecialCharacters[0]); + wcscat( apStr, atStr ); + } break; } case NIGHT_OPS_NT: @@ -8270,44 +8285,29 @@ void AssignPersonnelSkillTraitHelpText( UINT8 ubTraitNumber, BOOLEAN fExpertLeve case DEMOLITIONS_NT: { swprintf( apStr, L"" ); - if( gSkillTraitValues.ubDEAPsNeededToThrowGrenadesReduction != 0 ) - { - swprintf( atStr, gzIMPMinorTraitsHelpTextsDemolitions[0], gSkillTraitValues.ubDEAPsNeededToThrowGrenadesReduction, sSpecialCharacters[0]); - wcscat( apStr, atStr ); - } - if( gSkillTraitValues.ubDEMaxRangeToThrowGrenades != 0 ) - { - swprintf( atStr, gzIMPMinorTraitsHelpTextsDemolitions[1], gSkillTraitValues.ubDEMaxRangeToThrowGrenades, sSpecialCharacters[0]); - wcscat( apStr, atStr ); - } - if( gSkillTraitValues.ubDECtHWhenThrowingGrenades != 0 ) - { - swprintf( atStr, gzIMPMinorTraitsHelpTextsDemolitions[2], gSkillTraitValues.ubDECtHWhenThrowingGrenades, sSpecialCharacters[0]); - wcscat( apStr, atStr ); - } if( gSkillTraitValues.ubDEDamageOfBombsAndMines != 0 ) { - swprintf( atStr, gzIMPMinorTraitsHelpTextsDemolitions[3], gSkillTraitValues.ubDEDamageOfBombsAndMines, sSpecialCharacters[0]); + swprintf( atStr, gzIMPMinorTraitsHelpTextsDemolitions[0], gSkillTraitValues.ubDEDamageOfBombsAndMines, sSpecialCharacters[0]); wcscat( apStr, atStr ); } if( gSkillTraitValues.ubDEAttachDetonatorCheckBonus != 0 ) { - swprintf( atStr, gzIMPMinorTraitsHelpTextsDemolitions[4], gSkillTraitValues.ubDEAttachDetonatorCheckBonus, sSpecialCharacters[0]); + swprintf( atStr, gzIMPMinorTraitsHelpTextsDemolitions[1], gSkillTraitValues.ubDEAttachDetonatorCheckBonus, sSpecialCharacters[0]); wcscat( apStr, atStr ); } if( gSkillTraitValues.ubDEPlantAndRemoveBombCheckBonus != 0 ) { - swprintf( atStr, gzIMPMinorTraitsHelpTextsDemolitions[5], gSkillTraitValues.ubDEPlantAndRemoveBombCheckBonus, sSpecialCharacters[0]); + swprintf( atStr, gzIMPMinorTraitsHelpTextsDemolitions[2], gSkillTraitValues.ubDEPlantAndRemoveBombCheckBonus, sSpecialCharacters[0]); wcscat( apStr, atStr ); } if( gSkillTraitValues.ubDEPlacedBombLevelBonus != 0 ) { - swprintf( atStr, gzIMPMinorTraitsHelpTextsDemolitions[6], gSkillTraitValues.ubDEPlacedBombLevelBonus); + swprintf( atStr, gzIMPMinorTraitsHelpTextsDemolitions[3], gSkillTraitValues.ubDEPlacedBombLevelBonus); wcscat( apStr, atStr ); } if( gSkillTraitValues.ubDEShapedChargeDamageMultiplier != 0 ) { - swprintf( atStr, gzIMPMinorTraitsHelpTextsDemolitions[7], gSkillTraitValues.ubDEShapedChargeDamageMultiplier); + swprintf( atStr, gzIMPMinorTraitsHelpTextsDemolitions[4], gSkillTraitValues.ubDEShapedChargeDamageMultiplier); wcscat( apStr, atStr ); } break; diff --git a/Utils/_Ja25ChineseText.cpp b/Utils/_Ja25ChineseText.cpp index 1a6feedd43..919f2d14ee 100644 --- a/Utils/_Ja25ChineseText.cpp +++ b/Utils/_Ja25ChineseText.cpp @@ -310,6 +310,9 @@ STR16 gzIMPMinorTraitsHelpTextsThrowing[]= L"飞刀致命一击的额外伤害倍率 +%d\n",// L"+%d critical hit by throwing blade multiplier\n", L"飞刀的最大精瞄次数 +%d\n",// L"Adds %d more aim click for throwing blades\n", L"飞刀的最大精瞄次数 +%d\n",// L"Adds %d more aim clicks for throwing blades\n", + L"投掷手榴弹所需行动点 -%d%s\n",// L"-%d%s APs needed to throw grenades\n", + L"手榴弹最远投掷距离 +%d%s\n",// L"+%d%s max range when throwing grenades\n", + L"手榴弹的命中率 +%d%s\n",// L"+%d%s chance to hit when throwing grenades\n", }; STR16 gzIMPMinorTraitsHelpTextsNightOps[]= @@ -346,9 +349,6 @@ STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]= STR16 gzIMPMinorTraitsHelpTextsDemolitions[]= { - L"投掷手榴弹所需行动点 -%d%s\n",// L"-%d%s APs needed to throw grenades\n", - L"手榴弹最远投掷距离 +%d%s\n",// L"+%d%s max range when throwing grenades\n", - L"手榴弹的命中率 +%d%s\n",// L"+%d%s chance to hit when throwing grenades\n", L"安置的炸弹和地雷的伤害 +%d%s\n",// L"+%d%s damage of set bombs and mines\n", L"组合炸弹的成功率 +%d%s\n",// L"+%d%s to attaching detonators check\n", L"安置/拆除炸弹成功率 +%d%s\n",// L"+%d%s to planting/removing bombs check\n", diff --git a/Utils/_Ja25DutchText.cpp b/Utils/_Ja25DutchText.cpp index 4548c46eb3..a223486208 100644 --- a/Utils/_Ja25DutchText.cpp +++ b/Utils/_Ja25DutchText.cpp @@ -310,6 +310,9 @@ STR16 gzIMPMinorTraitsHelpTextsThrowing[]= L"+%d critical hit with throwing blade multiplier\n", L"Adds %d more aim click for throwing blades\n", L"Adds %d more aim clicks for throwing blades\n", + L"-%d%s APs to throw grenades\n", + L"+%d%s max range when throwing grenades\n", + L"+%d%s CtH when throwing grenades\n", }; STR16 gzIMPMinorTraitsHelpTextsNightOps[]= @@ -346,9 +349,6 @@ STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]= STR16 gzIMPMinorTraitsHelpTextsDemolitions[]= { - L"-%d%s APs to throw grenades\n", - L"+%d%s max range when throwing grenades\n", - L"+%d%s CtH when throwing grenades\n", L"+%d%s damage for set bombs and mines\n", L"+%d%s to attaching detonators check\n", L"+%d%s to planting/removing bombs check\n", diff --git a/Utils/_Ja25EnglishText.cpp b/Utils/_Ja25EnglishText.cpp index 63eb232a5b..b58a080d48 100644 --- a/Utils/_Ja25EnglishText.cpp +++ b/Utils/_Ja25EnglishText.cpp @@ -310,6 +310,9 @@ STR16 gzIMPMinorTraitsHelpTextsThrowing[]= L"+%d critical hit with throwing blade multiplier\n", L"Adds %d more aim click for throwing blades\n", L"Adds %d more aim clicks for throwing blades\n", + L"-%d%s APs to throw grenades\n", + L"+%d%s max range when throwing grenades\n", + L"+%d%s CtH when throwing grenades\n", }; STR16 gzIMPMinorTraitsHelpTextsNightOps[]= @@ -346,9 +349,6 @@ STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]= STR16 gzIMPMinorTraitsHelpTextsDemolitions[]= { - L"-%d%s APs to throw grenades\n", - L"+%d%s max range when throwing grenades\n", - L"+%d%s CtH when throwing grenades\n", L"+%d%s damage for set bombs and mines\n", L"+%d%s to attaching detonators check\n", L"+%d%s to planting/removing bombs check\n", diff --git a/Utils/_Ja25FrenchText.cpp b/Utils/_Ja25FrenchText.cpp index 290158fcd9..f20af04a00 100644 --- a/Utils/_Ja25FrenchText.cpp +++ b/Utils/_Ja25FrenchText.cpp @@ -309,6 +309,9 @@ STR16 gzIMPMinorTraitsHelpTextsThrowing[]= L"+%d de dégâts critiques, si vous lancez plusieurs couteaux\n", L"Ajoute %d niveau(x) de visée pour lancer un couteau\n", L"Ajoute %d niveau(x) de visée pour lancer un couteau\n", + L"-%d%s du nombre de PA nécessaire pour lancer une grenade\n", + L"+%d%s de la portée maximale d'une grenade\n", + L"+%d%s de chance de toucher votre cible avec une grenade\n", }; STR16 gzIMPMinorTraitsHelpTextsNightOps[]= @@ -344,9 +347,6 @@ STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]= }; STR16 gzIMPMinorTraitsHelpTextsDemolitions[]= { - L"-%d%s du nombre de PA nécessaire pour lancer une grenade\n", - L"+%d%s de la portée maximale d'une grenade\n", - L"+%d%s de chance de toucher votre cible avec une grenade\n", L"+%d%s de dégâts causés par un explosif ou une mine\n", L"+%d%s pour contrôler un détonateur\n", L"+%d%s pour placer/retirer un contrôleur d'explosif\n", diff --git a/Utils/_Ja25GermanText.cpp b/Utils/_Ja25GermanText.cpp index c1e9666e8f..a19fa526ad 100644 --- a/Utils/_Ja25GermanText.cpp +++ b/Utils/_Ja25GermanText.cpp @@ -310,6 +310,9 @@ STR16 gzIMPMinorTraitsHelpTextsThrowing[]= L"+%d Multiplikator für kritische Treffer durch Wurfwaffen\n", L"Gibt einen weiteren Zielklick beim Einsatz von Wurfwaffen\n", L"Gibt %d weitere Zielklicks beim Einsatz von Wurfwaffen\n", + L"-%d%s APs benötigt um Handgranaten (und ähnliche Objekte) zu werfen\n", + L"+%d%s höhere Reichweite beim Werfen von Handgranaten (und ähnliche Objekten)\n", + L"+%d%s höhere Trefferwahrscheinlichkeit beim Werfen von Handgranaten (und ähnlichen Objekten)\n", }; STR16 gzIMPMinorTraitsHelpTextsNightOps[]= @@ -346,9 +349,6 @@ STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]= STR16 gzIMPMinorTraitsHelpTextsDemolitions[]= { - L"-%d%s APs benötigt um Handgranaten (und ähnliche Objekte) zu werfen\n", - L"+%d%s höhere Reichweite beim Werfen von Handgranaten (und ähnliche Objekten)\n", - L"+%d%s höhere Trefferwahrscheinlichkeit beim Werfen von Handgranaten (und ähnlichen Objekten)\n", L"+%d%s höherer Schaden für gelegte Bomben und Minen\n", L"+%d%s mehr Erfolg beim Anbringen von Zündern\n", L"+%d%s mehr Erfolg beim Legen und Entschärfen von Bomben\n", diff --git a/Utils/_Ja25ItalianText.cpp b/Utils/_Ja25ItalianText.cpp index 5bd9c79008..4ffb9454f9 100644 --- a/Utils/_Ja25ItalianText.cpp +++ b/Utils/_Ja25ItalianText.cpp @@ -308,6 +308,9 @@ STR16 gzIMPMinorTraitsHelpTextsThrowing[]= L"+%d critical hit with throwing blade multiplier\n", L"Adds %d more aim click for throwing blades\n", L"Adds %d more aim clicks for throwing blades\n", + L"-%d%s APs to throw grenades\n", + L"+%d%s max range when throwing grenades\n", + L"+%d%s CtH when throwing grenades\n", }; STR16 gzIMPMinorTraitsHelpTextsNightOps[]= @@ -344,9 +347,6 @@ STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]= STR16 gzIMPMinorTraitsHelpTextsDemolitions[]= { - L"-%d%s APs to throw grenades\n", - L"+%d%s max range when throwing grenades\n", - L"+%d%s CtH when throwing grenades\n", L"+%d%s damage for set bombs and mines\n", L"+%d%s to attaching detonators check\n", L"+%d%s to planting/removing bombs check\n", diff --git a/Utils/_Ja25PolishText.cpp b/Utils/_Ja25PolishText.cpp index 506e37c1c3..9446a5b218 100644 --- a/Utils/_Ja25PolishText.cpp +++ b/Utils/_Ja25PolishText.cpp @@ -310,6 +310,9 @@ STR16 gzIMPMinorTraitsHelpTextsThrowing[]= L"+%d critical hit with throwing blade multiplier\n", L"Adds %d more aim click for throwing blades\n", L"Adds %d more aim clicks for throwing blades\n", + L"-%d%s APs to throw grenades\n", + L"+%d%s max range when throwing grenades\n", + L"+%d%s CtH when throwing grenades\n", }; STR16 gzIMPMinorTraitsHelpTextsNightOps[]= @@ -346,9 +349,6 @@ STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]= STR16 gzIMPMinorTraitsHelpTextsDemolitions[]= { - L"-%d%s APs to throw grenades\n", - L"+%d%s max range when throwing grenades\n", - L"+%d%s CtH when throwing grenades\n", L"+%d%s damage for set bombs and mines\n", L"+%d%s to attaching detonators check\n", L"+%d%s to planting/removing bombs check\n", diff --git a/Utils/_Ja25RussianText.cpp b/Utils/_Ja25RussianText.cpp index 022b1f59f4..8ce7b35f78 100644 --- a/Utils/_Ja25RussianText.cpp +++ b/Utils/_Ja25RussianText.cpp @@ -310,6 +310,9 @@ STR16 gzIMPMinorTraitsHelpTextsThrowing[]= L"+%d к множителю критического урона при броске ножа\n", L"+%d клик прицеливания для метательных ножей\n", L"+%d кликов прицеливания для метательных ножей\n", + L"-%d%s ОД для броска гранаты\n", + L"+%d%s к максимальной дальности броска гранаты\n", + L"+%d%s к точности броска гранаты\n", }; STR16 gzIMPMinorTraitsHelpTextsNightOps[]= @@ -346,9 +349,6 @@ STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]= STR16 gzIMPMinorTraitsHelpTextsDemolitions[]= { - L"-%d%s ОД для броска гранаты\n", - L"+%d%s к максимальной дальности броска гранаты\n", - L"+%d%s к точности броска гранаты\n", L"+%d%s к урону для установленных бомб и мин\n", L"+%d%s к умению устанавливать детонатор\n", L"+%d%s к установке/разминированию бомб\n", From bf14edf0996968ecc609561d7141f9eb41678b08 Mon Sep 17 00:00:00 2001 From: rftrdev <102184004+rftrdev@users.noreply.github.com> Date: Fri, 11 Aug 2023 01:37:27 -0700 Subject: [PATCH 6/6] Reapply throwing check --- Tactical/Weapons.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Tactical/Weapons.cpp b/Tactical/Weapons.cpp index fb0b75e666..55acbf88af 100644 --- a/Tactical/Weapons.cpp +++ b/Tactical/Weapons.cpp @@ -10260,7 +10260,8 @@ UINT32 CalcThrownChanceToHit(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTi else { iChance += gSkillTraitValues.bCtHModifierThrowingGrenades; // -10% for untrained mercs - iChance += gSkillTraitValues.ubTHCtHWhenThrowingGrenades; + if ( HAS_SKILL_TRAIT( pSoldier, THROWING_NT ) ) + iChance += gSkillTraitValues.ubTHCtHWhenThrowingGrenades; } } else