New option: Reduced stat growth at high levels (#183)

Add optional stat growth reduction at 80+ and 90+

This makes mercs with high base stats more valuable as it is harder to grow to their levels
This commit is contained in:
rftrdev
2023-07-21 22:53:40 -07:00
committed by GitHub
parent c036160959
commit 06d4b53d3e
3 changed files with 19 additions and 0 deletions
+5
View File
@@ -1428,6 +1428,11 @@ void LoadGameExternalOptions()
gGameExternalOptions.usLeadershipSubpointsToImprove = iniReader.ReadInteger("Tactical Difficulty Settings","LEADERSHIP_SUBPOINTS_TO_IMPROVE", 25, 1, 1000 );
gGameExternalOptions.usLevelSubpointsToImprove = iniReader.ReadInteger("Tactical Difficulty Settings","LEVEL_SUBPOINTS_TO_IMPROVE", 350, 1, 6500);
// rftr: optionally slow stat growth at 80+ and 90+. this gives more value to mercs with high base stats
gGameExternalOptions.ubMaxGrowthChanceAt80 = iniReader.ReadInteger("Tactical Difficulty Settings", "MAX_GROWTH_CHANCE_AT_80", 100, 1, 100);
gGameExternalOptions.ubMaxGrowthChanceAt90 = iniReader.ReadInteger("Tactical Difficulty Settings", "MAX_GROWTH_CHANCE_AT_90", 100, 1, 100);
// Alternate algorithm for choosing equipment level. Mostly disregards soldier's class and puts less emphasis on distance from Sector P3.
// SANDRO - moved into the game
//gGameExternalOptions.fSlowProgressForEnemyItemsChoice = iniReader.ReadBoolean("Tactical Difficulty Settings", "SLOW_PROGRESS_FOR_ENEMY_ITEMS_CHOICE", TRUE);
+4
View File
@@ -1149,6 +1149,10 @@ typedef struct
UINT16 usLeadershipSubpointsToImprove;
UINT16 usLevelSubpointsToImprove;
// rftr: optionally slow stat growth at 80+ and 90+. this gives more value to mercs with high base stats
UINT8 ubMaxGrowthChanceAt80;
UINT8 ubMaxGrowthChanceAt90;
// HEADROCK HAM B2.7: When turned on, this will give a CTH approximation instead of an exact value, on CTH Bars and "F" key feedback.
BOOLEAN fApproximateCTH;
+10
View File
@@ -305,6 +305,16 @@ void ProcessStatChange(MERCPROFILESTRUCT *pProfile, UINT8 ubStat, UINT16 usNumCh
usChance += (usChance * (pProfile->bWisdom + (pProfile->sWisdomGain / SubpointsPerPoint(WISDOMAMT, pProfile->bExpLevel)) - 50)) / 100;
}
// rftr: reduced growth rates at 80+ and 90+ (to make mercs with higher base stats more valuable)
if (bCurrentRating >= 90)
{
usChance = min(min(gGameExternalOptions.ubMaxGrowthChanceAt80, gGameExternalOptions.ubMaxGrowthChanceAt90), usChance);
}
else if (bCurrentRating >= 80)
{
usChance = min(gGameExternalOptions.ubMaxGrowthChanceAt80, usChance);
}
/*
// if the stat is Marksmanship, and the guy is a hopeless shot
if ((ubStat == MARKAMT) && (pProfile->bSpecialTrait == HOPELESS_SHOT))