diff --git a/GameSettings.cpp b/GameSettings.cpp index 55214e7c..c7d58330 100644 --- a/GameSettings.cpp +++ b/GameSettings.cpp @@ -1040,7 +1040,12 @@ void LoadGameExternalOptions() gGameExternalOptions.sEnemyRegularCtHBonusPercent = iniReader.ReadInteger("Tactical Difficulty Settings", "REGULAR_CTH_BONUS_PERCENT", 0, -100, 500); gGameExternalOptions.sEnemyEliteCtHBonusPercent = iniReader.ReadInteger("Tactical Difficulty Settings", "ELITE_CTH_BONUS_PERCENT", 10, -100, 500); - // Damage the enemz suffer is reduced by this percentage - applies during tactical combat only + // Enemy equipment quality modifiers + gGameExternalOptions.sEnemyAdminEquipmentQualityModifier = iniReader.ReadInteger("Tactical Difficulty Settings", "ADMIN_EQUIPMENT_QUALITY_MODIFIER", 0, -5, 10); + gGameExternalOptions.sEnemyRegularEquipmentQualityModifier = iniReader.ReadInteger("Tactical Difficulty Settings", "REGULAR_EQUIPMENT_QUALITY_MODIFIER", 0, -5, 10); + gGameExternalOptions.sEnemyEliteEquipmentQualityModifier = iniReader.ReadInteger("Tactical Difficulty Settings", "ELITE_EQUIPMENT_QUALITY_MODIFIER", 0, -5, 10); + + // Damage the enemy suffer is reduced by this percentage - applies during tactical combat only gGameExternalOptions.sEnemyAdminDamageResistance = iniReader.ReadInteger("Tactical Difficulty Settings", "ADMIN_DAMAGE_RESISTANCE", 0, -50, 95); gGameExternalOptions.sEnemyRegularDamageResistance = iniReader.ReadInteger("Tactical Difficulty Settings", "REGULAR_DAMAGE_RESISTANCE", 0, -50, 95); gGameExternalOptions.sEnemyEliteDamageResistance = iniReader.ReadInteger("Tactical Difficulty Settings", "ELITE_DAMAGE_RESISTANCE", 0, -50, 95); diff --git a/GameSettings.h b/GameSettings.h index eb5e553c..fa11053a 100644 --- a/GameSettings.h +++ b/GameSettings.h @@ -329,6 +329,10 @@ typedef struct INT16 sEnemyRegularCtHBonusPercent; INT16 sEnemyEliteCtHBonusPercent; + INT8 sEnemyAdminEquipmentQualityModifier; + INT8 sEnemyRegularEquipmentQualityModifier; + INT8 sEnemyEliteEquipmentQualityModifier; + INT8 sEnemyAdminDamageResistance; INT8 sEnemyRegularDamageResistance; INT8 sEnemyEliteDamageResistance; diff --git a/Tactical/Inventory Choosing.cpp b/Tactical/Inventory Choosing.cpp index 1d3f1485..ba6827b3 100644 --- a/Tactical/Inventory Choosing.cpp +++ b/Tactical/Inventory Choosing.cpp @@ -343,6 +343,10 @@ void GenerateRandomEquipment( SOLDIERCREATE_STRUCT *pp, INT8 bSoldierClass, INT8 //else bRating = BAD_ADMINISTRATOR_EQUIPMENT_RATING + bEquipmentModifier; + // Equipment quality modifier + if ( gGameExternalOptions.sEnemyAdminEquipmentQualityModifier != 0 ) + bRating += gGameExternalOptions.sEnemyAdminEquipmentQualityModifier; + bRating = (INT8)max( MIN_EQUIPMENT_CLASS, min( MAX_EQUIPMENT_CLASS, bRating ) ); bWeaponClass = bRating; @@ -438,6 +442,11 @@ void GenerateRandomEquipment( SOLDIERCREATE_STRUCT *pp, INT8 bSoldierClass, INT8 // bRating = bEquipmentModifier - ( bSoldierClass == SOLDIER_CLASS_ARMY ); //else bRating = BAD_ARMY_EQUIPMENT_RATING + bEquipmentModifier; + + // Equipment quality modifier + if ( gGameExternalOptions.sEnemyRegularEquipmentQualityModifier != 0 ) + bRating += gGameExternalOptions.sEnemyRegularEquipmentQualityModifier; + bRating = (INT8)max( MIN_EQUIPMENT_CLASS, min( MAX_EQUIPMENT_CLASS, bRating ) ); bWeaponClass = bRating; @@ -662,6 +671,11 @@ void GenerateRandomEquipment( SOLDIERCREATE_STRUCT *pp, INT8 bSoldierClass, INT8 // bRating = bEquipmentModifier - ( bSoldierClass == SOLDIER_CLASS_ELITE ); //else bRating = BAD_ELITE_EQUIPMENT_RATING + bEquipmentModifier; + + // Equipment quality modifier + if ( gGameExternalOptions.sEnemyEliteEquipmentQualityModifier != 0 ) + bRating += gGameExternalOptions.sEnemyEliteEquipmentQualityModifier; + bRating = (INT8)max( MIN_EQUIPMENT_CLASS, min( MAX_EQUIPMENT_CLASS, bRating ) ); bWeaponClass = bRating;