diff --git a/GameSettings.cpp b/GameSettings.cpp index 2b0d13db..d7ece1a8 100644 --- a/GameSettings.cpp +++ b/GameSettings.cpp @@ -2140,6 +2140,7 @@ void LoadSkillTraitsExternalSettings() gSkillTraitValues.ubRABonusCtHShotguns = iniReader.ReadInteger("Ranger","BONUS_CTH_SHOTGUNS", 10, 0, 100); gSkillTraitValues.ubRAPumpShotgunsAPsReduction = iniReader.ReadInteger("Ranger","PUMP_SHOTGUNS_APS_REDUCTION", 25, 0, 45); gSkillTraitValues.ubRAFiringSpeedBonusShotguns = iniReader.ReadInteger("Ranger","FIRING_SPEED_BONUS_SHOTGUNS", 10, 0, 45); + gSkillTraitValues.ubRAAimClicksAdded = iniReader.ReadInteger("Ranger","POSSIBLE_AIM_CLICK_ADDED_SHOTGUNS", 1, 0, 3); gSkillTraitValues.ubRAGroupTimeSpentForTravellingFoot = iniReader.ReadInteger("Ranger","GROUP_TIME_SPENT_FOR_TRAVELLING_BY_FOOT_REDUCTION", 20, 0, 100); gSkillTraitValues.ubRAGroupTimeSpentForTravellingVehicle = iniReader.ReadInteger("Ranger","GROUP_TIME_SPENT_FOR_TRAVELLING_IN_VEHICLE_REDUCTION", 10, 0, 100); gSkillTraitValues.ubRAMaxBonusesToTravelSpeed = iniReader.ReadInteger("Ranger","MAX_STACKABLE_LESS_TRAVEL_TIME_BONUSES", 2, 0, 20); diff --git a/GameSettings.h b/GameSettings.h index 7f675b62..9be468b2 100644 --- a/GameSettings.h +++ b/GameSettings.h @@ -1387,6 +1387,7 @@ typedef struct //UINT8 ubRACamoEffectivenessBonus; UINT8 ubRACamoWornountSpeedReduction; UINT8 ubRAFiringSpeedBonusShotguns; + UINT8 ubRAAimClicksAdded; // GUNSLINGER UINT8 ubGSFiringSpeedBonusPistols; diff --git a/Laptop/IMP Skill Trait.cpp b/Laptop/IMP Skill Trait.cpp index 62216082..81e4db0a 100644 --- a/Laptop/IMP Skill Trait.cpp +++ b/Laptop/IMP Skill Trait.cpp @@ -1989,34 +1989,43 @@ void AssignSkillTraitHelpText( UINT8 ubTraitNumber, BOOLEAN fExpertLevel ) swprintf( atStr, gzIMPMajorTraitsHelpTextsRanger[3], ( gSkillTraitValues.ubRAFiringSpeedBonusShotguns * (fExpertLevel ? 2 : 1)), L"%"); wcscat( apStr, atStr ); } + if( gSkillTraitValues.ubRAAimClicksAdded != 0 ) + { + if( gSkillTraitValues.ubRAAimClicksAdded == 1 && !fExpertLevel ) + swprintf( atStr, gzIMPMajorTraitsHelpTextsRanger[4], ( gSkillTraitValues.ubRAAimClicksAdded * (fExpertLevel ? 2 : 1))); + else + swprintf( atStr, gzIMPMajorTraitsHelpTextsRanger[5], ( gSkillTraitValues.ubRAAimClicksAdded * (fExpertLevel ? 2 : 1))); + + wcscat( apStr, atStr ); + } if( gSkillTraitValues.ubRAGroupTimeSpentForTravellingFoot != 0 ) { - swprintf( atStr, gzIMPMajorTraitsHelpTextsRanger[4], ( gSkillTraitValues.ubRAGroupTimeSpentForTravellingFoot * (fExpertLevel ? 2 : 1)), L"%"); + swprintf( atStr, gzIMPMajorTraitsHelpTextsRanger[6], ( gSkillTraitValues.ubRAGroupTimeSpentForTravellingFoot * (fExpertLevel ? 2 : 1)), L"%"); wcscat( apStr, atStr ); } if( gSkillTraitValues.ubRAGroupTimeSpentForTravellingVehicle != 0 ) { - swprintf( atStr, gzIMPMajorTraitsHelpTextsRanger[5], ( gSkillTraitValues.ubRAGroupTimeSpentForTravellingVehicle * (fExpertLevel ? 2 : 1)), L"%"); + swprintf( atStr, gzIMPMajorTraitsHelpTextsRanger[7], ( gSkillTraitValues.ubRAGroupTimeSpentForTravellingVehicle * (fExpertLevel ? 2 : 1)), L"%"); wcscat( apStr, atStr ); } if( gSkillTraitValues.ubRABreathForTravellingReduction != 0 ) { - swprintf( atStr, gzIMPMajorTraitsHelpTextsRanger[6], ( gSkillTraitValues.ubRABreathForTravellingReduction * (fExpertLevel ? 2 : 1)), L"%"); + swprintf( atStr, gzIMPMajorTraitsHelpTextsRanger[8], ( gSkillTraitValues.ubRABreathForTravellingReduction * (fExpertLevel ? 2 : 1)), L"%"); wcscat( apStr, atStr ); } if( gSkillTraitValues.ubRAWeatherPenaltiesReduction != 0 ) { - swprintf( atStr, gzIMPMajorTraitsHelpTextsRanger[7], ( gSkillTraitValues.ubRAWeatherPenaltiesReduction * (fExpertLevel ? 2 : 1)), L"%"); + swprintf( atStr, gzIMPMajorTraitsHelpTextsRanger[9], ( gSkillTraitValues.ubRAWeatherPenaltiesReduction * (fExpertLevel ? 2 : 1)), L"%"); wcscat( apStr, atStr ); } // if( gSkillTraitValues.ubRACamoEffectivenessBonus != 0 ) // { - // swprintf( atStr, gzIMPMajorTraitsHelpTextsRanger[8], ( gSkillTraitValues.ubRACamoEffectivenessBonus * (fExpertLevel ? 2 : 1)), L"%"); + // swprintf( atStr, gzIMPMajorTraitsHelpTextsRanger[10], ( gSkillTraitValues.ubRACamoEffectivenessBonus * (fExpertLevel ? 2 : 1)), L"%"); // wcscat( apStr, atStr ); // } if( gSkillTraitValues.ubRACamoWornountSpeedReduction != 0 ) { - swprintf( atStr, gzIMPMajorTraitsHelpTextsRanger[9], ( gSkillTraitValues.ubRACamoWornountSpeedReduction * (fExpertLevel ? 2 : 1)), L"%"); + swprintf( atStr, gzIMPMajorTraitsHelpTextsRanger[11], ( gSkillTraitValues.ubRACamoWornountSpeedReduction * (fExpertLevel ? 2 : 1)), L"%"); wcscat( apStr, atStr ); } break; diff --git a/Laptop/personnel.cpp b/Laptop/personnel.cpp index e7e3ec31..0b748c91 100644 --- a/Laptop/personnel.cpp +++ b/Laptop/personnel.cpp @@ -7247,34 +7247,43 @@ void AssignPersonnelSkillTraitHelpText( UINT8 ubTraitNumber, BOOLEAN fExpertLeve swprintf( atStr, gzIMPMajorTraitsHelpTextsRanger[3], ( gSkillTraitValues.ubRAFiringSpeedBonusShotguns * (fExpertLevel ? 2 : 1)), L"%"); wcscat( apStr, atStr ); } + if( gSkillTraitValues.ubRAAimClicksAdded != 0 ) + { + if( gSkillTraitValues.ubRAAimClicksAdded == 1 && !fExpertLevel ) + swprintf( atStr, gzIMPMajorTraitsHelpTextsRanger[4], ( gSkillTraitValues.ubRAAimClicksAdded * (fExpertLevel ? 2 : 1))); + else + swprintf( atStr, gzIMPMajorTraitsHelpTextsRanger[5], ( gSkillTraitValues.ubRAAimClicksAdded * (fExpertLevel ? 2 : 1))); + + wcscat( apStr, atStr ); + } if( gSkillTraitValues.ubRAGroupTimeSpentForTravellingFoot != 0 ) { - swprintf( atStr, gzIMPMajorTraitsHelpTextsRanger[4], ( gSkillTraitValues.ubRAGroupTimeSpentForTravellingFoot * (fExpertLevel ? 2 : 1)), L"%"); + swprintf( atStr, gzIMPMajorTraitsHelpTextsRanger[6], ( gSkillTraitValues.ubRAGroupTimeSpentForTravellingFoot * (fExpertLevel ? 2 : 1)), L"%"); wcscat( apStr, atStr ); } if( gSkillTraitValues.ubRAGroupTimeSpentForTravellingVehicle != 0 ) { - swprintf( atStr, gzIMPMajorTraitsHelpTextsRanger[5], ( gSkillTraitValues.ubRAGroupTimeSpentForTravellingVehicle * (fExpertLevel ? 2 : 1)), L"%"); + swprintf( atStr, gzIMPMajorTraitsHelpTextsRanger[7], ( gSkillTraitValues.ubRAGroupTimeSpentForTravellingVehicle * (fExpertLevel ? 2 : 1)), L"%"); wcscat( apStr, atStr ); } if( gSkillTraitValues.ubRABreathForTravellingReduction != 0 ) { - swprintf( atStr, gzIMPMajorTraitsHelpTextsRanger[6], ( gSkillTraitValues.ubRABreathForTravellingReduction * (fExpertLevel ? 2 : 1)), L"%"); + swprintf( atStr, gzIMPMajorTraitsHelpTextsRanger[8], ( gSkillTraitValues.ubRABreathForTravellingReduction * (fExpertLevel ? 2 : 1)), L"%"); wcscat( apStr, atStr ); } if( gSkillTraitValues.ubRAWeatherPenaltiesReduction != 0 ) { - swprintf( atStr, gzIMPMajorTraitsHelpTextsRanger[7], ( gSkillTraitValues.ubRAWeatherPenaltiesReduction * (fExpertLevel ? 2 : 1)), L"%"); + swprintf( atStr, gzIMPMajorTraitsHelpTextsRanger[9], ( gSkillTraitValues.ubRAWeatherPenaltiesReduction * (fExpertLevel ? 2 : 1)), L"%"); wcscat( apStr, atStr ); } //if( gSkillTraitValues.ubRACamoEffectivenessBonus != 0 ) //{ - // swprintf( atStr, gzIMPMajorTraitsHelpTextsRanger[8], ( gSkillTraitValues.ubRACamoEffectivenessBonus * (fExpertLevel ? 2 : 1)), L"%"); + // swprintf( atStr, gzIMPMajorTraitsHelpTextsRanger[10], ( gSkillTraitValues.ubRACamoEffectivenessBonus * (fExpertLevel ? 2 : 1)), L"%"); // wcscat( apStr, atStr ); //} if( gSkillTraitValues.ubRACamoWornountSpeedReduction != 0 ) { - swprintf( atStr, gzIMPMajorTraitsHelpTextsRanger[9], ( gSkillTraitValues.ubRACamoWornountSpeedReduction * (fExpertLevel ? 2 : 1)), L"%"); + swprintf( atStr, gzIMPMajorTraitsHelpTextsRanger[11], ( gSkillTraitValues.ubRACamoWornountSpeedReduction * (fExpertLevel ? 2 : 1)), L"%"); wcscat( apStr, atStr ); } break; diff --git a/Strategic/Quests.h b/Strategic/Quests.h index 08fe297f..64c2398b 100644 --- a/Strategic/Quests.h +++ b/Strategic/Quests.h @@ -353,6 +353,7 @@ enum Facts FACT_PLAYER_STOLE_MEDICAL_SUPPLIES_AGAIN,// 151 FACT_VINCE_RECRUITABLE,// 152 + FACT_SLAY_OFFERED_DEAL = 155, FACT_ALL_TERRORISTS_KILLED = 156, FACT_ELGIN_ALIVE,// 157 diff --git a/Tactical/Items.cpp b/Tactical/Items.cpp index 687b8730..35516124 100644 --- a/Tactical/Items.cpp +++ b/Tactical/Items.cpp @@ -10321,9 +10321,11 @@ INT32 GetAimLevelsTraitModifier( SOLDIERTYPE *pSoldier, OBJECTTYPE *pObj ) if( gGameOptions.fNewTraitSystem ) { if ( Weapon[Item[pObj->usItem].ubClassIndex].ubWeaponType == GUN_PISTOL || Weapon[Item[pObj->usItem].ubClassIndex].ubWeaponType == GUN_M_PISTOL ) - ubSkillModifier -= NUM_SKILL_TRAITS( pSoldier, GUNSLINGER_NT ); + ubSkillModifier -= gSkillTraitValues.ubGSAimClicksAdded * NUM_SKILL_TRAITS( pSoldier, GUNSLINGER_NT ); + else if ( Weapon[Item[pObj->usItem].ubClassIndex].ubWeaponType == GUN_SHOTGUN ) + ubSkillModifier -= gSkillTraitValues.ubRAAimClicksAdded * NUM_SKILL_TRAITS( pSoldier, RANGER_NT ); else - ubSkillModifier -= NUM_SKILL_TRAITS( pSoldier, SNIPER_NT ); + ubSkillModifier -= gSkillTraitValues.ubSNAimClicksAdded * NUM_SKILL_TRAITS( pSoldier, SNIPER_NT ); } else { @@ -13056,7 +13058,21 @@ UINT8 AllowedAimingLevels(SOLDIERTYPE * pSoldier, INT32 sGridNo) aimLevels = 1; maxAimWithoutBipod = 2; } - else if (weaponType == GUN_SHOTGUN || weaponType == GUN_LMG || (weaponType == GUN_SMG && fTwoHanded == 1)) + else if (weaponType == GUN_SHOTGUN) + { + maxAimForType = 3; + aimLevels = 2; + maxAimWithoutBipod = 3; + + // silversurfer added this - STOMP traits - Ranger bonus aim clicks + if ( gGameOptions.fNewTraitSystem && HAS_SKILL_TRAIT( pSoldier, RANGER_NT ) ) + { + maxAimForType += (gSkillTraitValues.ubRAAimClicksAdded * NUM_SKILL_TRAITS( pSoldier, RANGER_NT )); + aimLevels += (gSkillTraitValues.ubRAAimClicksAdded * NUM_SKILL_TRAITS( pSoldier, RANGER_NT )); + maxAimWithoutBipod += (gSkillTraitValues.ubRAAimClicksAdded * NUM_SKILL_TRAITS( pSoldier, RANGER_NT )); + } + } + else if (weaponType == GUN_LMG || (weaponType == GUN_SMG && fTwoHanded == 1)) { maxAimForType = 3; aimLevels = 2; @@ -13246,6 +13262,13 @@ UINT8 AllowedAimingLevels(SOLDIERTYPE * pSoldier, INT32 sGridNo) aimLevels += (gSkillTraitValues.ubGSAimClicksAdded * NUM_SKILL_TRAITS( pSoldier, GUNSLINGER_NT )); } + // silversurfer added this - STOMP traits - Ranger bonus aim clicks + if ( weaponType == GUN_SHOTGUN && + gGameOptions.fNewTraitSystem && HAS_SKILL_TRAIT( pSoldier, RANGER_NT ) ) + { + aimLevels += (gSkillTraitValues.ubRAAimClicksAdded * NUM_SKILL_TRAITS( pSoldier, RANGER_NT )); + } + // SANDRO - if using alternative weapon holding, we reduce the aim levels available if ( pSoldier->bScopeMode == USE_ALT_WEAPON_HOLD && gGameExternalOptions.fScopeModes ) { diff --git a/Utils/_Ja25ChineseText.cpp b/Utils/_Ja25ChineseText.cpp index 66e7fc52..8b79bd9a 100644 --- a/Utils/_Ja25ChineseText.cpp +++ b/Utils/_Ja25ChineseText.cpp @@ -146,6 +146,8 @@ STR16 gzIMPMajorTraitsHelpTextsRanger[]= L"霰弹枪命中率 +%d%s\n",// L"+%d%s Chance to Hit with Shotguns\n", L"泵动式霰弹上膛所需行动点 -%d%s \n",// L"-%d%s APs needed to pump Shotguns\n", L"-%d%s APs to fire Shotguns\n", //TODO.Translate + L"Adds %d more aim click for Shotguns\n", //TODO.Translate + L"Adds %d more aim clicks for Shotguns\n", //TODO.Translate L"队伍在区域间步行移动的速度 +%d%s\n",// L"+%d%s group travelling speed between sectors if traveling by foot\n", 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", diff --git a/Utils/_Ja25DutchText.cpp b/Utils/_Ja25DutchText.cpp index 2e916636..1fd5246f 100644 --- a/Utils/_Ja25DutchText.cpp +++ b/Utils/_Ja25DutchText.cpp @@ -146,6 +146,8 @@ STR16 gzIMPMajorTraitsHelpTextsRanger[]= L"+%d%s CtH with Shotguns\n", L"-%d%s APs needed to pump Shotguns\n", L"-%d%s APs to fire Shotguns\n", + L"Adds %d more aim click for Shotguns\n", + L"Adds %d more aim clicks for Shotguns\n", L"+%d%s group traveling speed between sectors if traveling by foot\n", L"+%d%s group traveling speed between sectors if traveling in vehicle (except helicopter)\n", L"-%d%s less energy spent for travelling between sectors\n", diff --git a/Utils/_Ja25EnglishText.cpp b/Utils/_Ja25EnglishText.cpp index 23efe0dd..c1fbf94d 100644 --- a/Utils/_Ja25EnglishText.cpp +++ b/Utils/_Ja25EnglishText.cpp @@ -146,6 +146,8 @@ STR16 gzIMPMajorTraitsHelpTextsRanger[]= L"+%d%s CtH with Shotguns\n", L"-%d%s APs needed to pump Shotguns\n", L"-%d%s APs to fire Shotguns\n", + L"Adds %d more aim click for Shotguns\n", + L"Adds %d more aim clicks for Shotguns\n", L"+%d%s group traveling speed between sectors if traveling by foot\n", L"+%d%s group traveling speed between sectors if traveling in vehicle (except helicopter)\n", L"-%d%s less energy spent for travelling between sectors\n", diff --git a/Utils/_Ja25FrenchText.cpp b/Utils/_Ja25FrenchText.cpp index d57442f9..d9625217 100644 --- a/Utils/_Ja25FrenchText.cpp +++ b/Utils/_Ja25FrenchText.cpp @@ -147,6 +147,8 @@ STR16 gzIMPMajorTraitsHelpTextsRanger[]= L"+%d%s de chance de toucher avec un fusil à pompe\n", L"-%d%s du nombre de PA nécessaire pour recharger le fusil à pompe\n", L"-%d%s APs to fire Shotguns\n", //TODO.Translate + L"Adds %d more aim click for Shotguns\n", //TODO.Translate + L"Adds %d more aim clicks for Shotguns\n", //TODO.Translate L"+%d%s de vitesse de déplacement du groupe entre les secteurs si ils sont à pieds\n", L"+%d%s de vitesse de déplacement du groupe entre les secteurs si ils sont dans un véhicule (excepté l'hélicopter)\n", L"-%d%s d'énergies nécessaire pour traverser les secteurs\n", diff --git a/Utils/_Ja25GermanText.cpp b/Utils/_Ja25GermanText.cpp index 60370834..eb9c6a0f 100644 --- a/Utils/_Ja25GermanText.cpp +++ b/Utils/_Ja25GermanText.cpp @@ -144,6 +144,8 @@ STR16 gzIMPMajorTraitsHelpTextsRanger[]= L"+%d%s Trefferchance mit Schrotflinten\n", L"-%d%s APs benötigt um Schrotflinten zu repetieren\n", L"-%d%s APs benötigt um Schrotflinten abzufeuern\n", + L"Gibt Schrotflinten einen weiteren Zielklick\n", + L"%d weitere Zielklicks für Schrotflinten\n", L"+%d%s Marschgeschwindigkeit der Gruppe zwischen Sektoren zu Fuß\n", L"+%d%s Marschgeschwindigkeit der Gruppe zwischen Sektoren bei Benutzung von Fahrzeugen (außer dem Helikopter)\n", L"-%d%s weniger Energieverlust beim Reisen zwischen Sektoren\n", diff --git a/Utils/_Ja25ItalianText.cpp b/Utils/_Ja25ItalianText.cpp index e27b1e99..24344695 100644 --- a/Utils/_Ja25ItalianText.cpp +++ b/Utils/_Ja25ItalianText.cpp @@ -144,6 +144,8 @@ STR16 gzIMPMajorTraitsHelpTextsRanger[]= L"+%d%s CtH with Shotguns\n", L"-%d%s APs needed to pump Shotguns\n", L"-%d%s APs to fire Shotguns\n", + L"Adds %d more aim click for Shotguns\n", + L"Adds %d more aim clicks for Shotguns\n", L"+%d%s group traveling speed between sectors if traveling by foot\n", L"+%d%s group traveling speed between sectors if traveling in vehicle (except helicopter)\n", L"-%d%s less energy spent for travelling between sectors\n", diff --git a/Utils/_Ja25PolishText.cpp b/Utils/_Ja25PolishText.cpp index 7fdb5859..b4647f42 100644 --- a/Utils/_Ja25PolishText.cpp +++ b/Utils/_Ja25PolishText.cpp @@ -146,6 +146,8 @@ STR16 gzIMPMajorTraitsHelpTextsRanger[]= L"+%d%s CtH with Shotguns\n", L"-%d%s APs needed to pump Shotguns\n", L"-%d%s APs to fire Shotguns\n", + L"Adds %d more aim click for Shotguns\n", + L"Adds %d more aim clicks for Shotguns\n", L"+%d%s group traveling speed between sectors if traveling by foot\n", L"+%d%s group traveling speed between sectors if traveling in vehicle (except helicopter)\n", L"-%d%s less energy spent for travelling between sectors\n", diff --git a/Utils/_Ja25RussianText.cpp b/Utils/_Ja25RussianText.cpp index 09c0eab5..89f3f8b3 100644 --- a/Utils/_Ja25RussianText.cpp +++ b/Utils/_Ja25RussianText.cpp @@ -146,6 +146,8 @@ STR16 gzIMPMajorTraitsHelpTextsRanger[]= L"+%d%s к шансу поразить из ружья\n", L"-%d%s ОД на перезарядку ружья\n", L"-%d%s APs to fire Shotguns\n", //TODO.Translate + L"Adds %d more aim click for Shotguns\n", //TODO.Translate + L"Adds %d more aim clicks for Shotguns\n", //TODO.Translate L"+%d%s к скорости передвижения группы между секторами, если идти пешком\n", L"+%d%s к скорости передвижения группы между секторами, \nесли передвигаться на транспорте (в особенности на вертолёте)\n", L"-%d%s к затрате энергии при переходе между секторами\n", //меньше тратит сил diff --git a/Utils/_Ja25TaiwaneseText.cpp b/Utils/_Ja25TaiwaneseText.cpp index 01a363ab..6f03cf16 100644 --- a/Utils/_Ja25TaiwaneseText.cpp +++ b/Utils/_Ja25TaiwaneseText.cpp @@ -147,6 +147,8 @@ STR16 gzIMPMajorTraitsHelpTextsRanger[]= L"+%d%s CtH with Shotguns\n", L"-%d%s APs needed to pump Shotguns\n", L"-%d%s APs to fire Shotguns\n", + L"Adds %d more aim click for Shotguns\n", + L"Adds %d more aim clicks for Shotguns\n", L"+%d%s group traveling speed between sectors if traveling by foot\n", L"+%d%s group traveling speed between sectors if traveling in vehicle (except helicopter)\n", L"-%d%s less energy spent for travelling between sectors\n",