diff --git a/Ja2/GameSettings.cpp b/Ja2/GameSettings.cpp index eaa0f8c2..a5dc3823 100644 --- a/Ja2/GameSettings.cpp +++ b/Ja2/GameSettings.cpp @@ -2749,6 +2749,7 @@ void LoadSkillTraitsExternalSettings() gSkillTraitValues.ubTERepairRobotPenaltyReduction = iniReader.ReadInteger("Technician","REPAIR_SPEED_ROBOT_PENALTY_REDUCTION", 30, 0, 100); if (gSkillTraitValues.ubTETraitsNumToRepairRobot == 2) {gSkillTraitValues.ubTERepairRobotPenaltyReduction /= 2; } gSkillTraitValues.fTETraitsCanRestoreItemThreshold = iniReader.ReadBoolean( "Technician", "MERCS_CAN_DO_ADVANCED_REPAIRS", FALSE ); + gSkillTraitValues.ubTechLevelNeededForAdvancedRepair = iniReader.ReadInteger("Technician", "TECH_LEVEL_NEEDED_FOR_ADVANCED_REPAIR", 2, 1, 2); // DOCTOR gSkillTraitValues.ubDONumberTraitsNeededForSurgery = iniReader.ReadInteger("Doctor","NUMBER_OF_TRAITS_NEEDED_FOR_SURGERY", 1, 0, 2); diff --git a/Ja2/GameSettings.h b/Ja2/GameSettings.h index 54027660..8c689562 100644 --- a/Ja2/GameSettings.h +++ b/Ja2/GameSettings.h @@ -2145,6 +2145,7 @@ typedef struct UINT8 ubTERepairRobotPenaltyReduction; UINT8 ubTETraitsNumToRepairRobot; BOOLEAN fTETraitsCanRestoreItemThreshold; + UINT8 ubTechLevelNeededForAdvancedRepair; // if we have a high enough technician level, we can repair items above the normal threshold (1 for technician, 2 for engineer) // DOCTOR UINT8 ubDONumberTraitsNeededForSurgery; diff --git a/Strategic/Assignments.cpp b/Strategic/Assignments.cpp index de89ae79..05a0e6fe 100644 --- a/Strategic/Assignments.cpp +++ b/Strategic/Assignments.cpp @@ -5171,8 +5171,12 @@ BOOLEAN RepairObject( SOLDIERTYPE * pSoldier, SOLDIERTYPE * pOwner, OBJECTTYPE * INT16 threshold = 100; if ( gGameExternalOptions.fAdvRepairSystem && (Item[pObj->usItem].usItemClass & (IC_WEAPON|IC_ARMOUR)) ) { - if ( !gSkillTraitValues.fTETraitsCanRestoreItemThreshold || !HAS_SKILL_TRAIT( pSoldier, TECHNICIAN_NT ) ) + if (gSkillTraitValues.fTETraitsCanRestoreItemThreshold && NUM_SKILL_TRAITS(pSoldier, TECHNICIAN_NT) >= gSkillTraitValues.ubTechLevelNeededForAdvancedRepair) // Greysa: added skill check for advanced repair. If we have a high enough technician level, we can repair items above the normal threshold (1 for technician, 2 for engineer) { + threshold = 100; + } + else + { threshold = (*pObj)[ubLoop]->data.sRepairThreshold; } }