Skip to content

Commit

Permalink
Stat/armor growth per difficulty in abs. values
Browse files Browse the repository at this point in the history
  • Loading branch information
MeridianOXC committed Dec 9, 2023
1 parent 3ea637d commit f2f1af2
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 0 deletions.
14 changes: 14 additions & 0 deletions src/Mod/Mod.cpp
Expand Up @@ -498,11 +498,13 @@ Mod::Mod() :
_statAdjustment.resize(MaxDifficultyLevels);
_statAdjustment[0].aimMultiplier = 0.5;
_statAdjustment[0].armorMultiplier = 0.5;
_statAdjustment[0].armorMultiplierAbs = 0;
_statAdjustment[0].growthMultiplier = 0;
for (size_t i = 1; i != MaxDifficultyLevels; ++i)
{
_statAdjustment[i].aimMultiplier = 1.0;
_statAdjustment[i].armorMultiplier = 1.0;
_statAdjustment[i].armorMultiplierAbs = 0;
_statAdjustment[i].growthMultiplier = (int)i;
}

Expand Down Expand Up @@ -3418,6 +3420,18 @@ void Mod::loadFile(const FileMap::FileRecord &filerec, ModScript &parsers)
_statAdjustment[count].armorMultiplier = (*i).as<double>(_statAdjustment[count].armorMultiplier);
++count;
}
count = 0;
for (YAML::const_iterator i = doc["armorMultipliersAbs"].begin(); i != doc["armorMultipliersAbs"].end() && count < MaxDifficultyLevels; ++i)
{
_statAdjustment[count].armorMultiplierAbs = (*i).as<double>(_statAdjustment[count].armorMultiplierAbs);
++count;
}
count = 0;
for (YAML::const_iterator i = doc["statGrowthMultipliersAbs"].begin(); i != doc["statGrowthMultipliersAbs"].end() && count < MaxDifficultyLevels; ++i)
{
_statAdjustment[count].statGrowthAbs = (*i).as<UnitStats>(_statAdjustment[count].statGrowthAbs);
++count;
}
if (doc["statGrowthMultipliers"])
{
_statAdjustment[0].statGrowth = doc["statGrowthMultipliers"].as<UnitStats>(_statAdjustment[0].statGrowth);
Expand Down
2 changes: 2 additions & 0 deletions src/Mod/Unit.h
Expand Up @@ -411,9 +411,11 @@ struct StatAdjustment
static void ScriptRegister(ScriptParserBase* parser);

UnitStats statGrowth;
UnitStats statGrowthAbs;
int growthMultiplier;
double aimMultiplier;
double armorMultiplier;
int armorMultiplierAbs;
};

/**
Expand Down
3 changes: 3 additions & 0 deletions src/Savegame/BattleUnit.cpp
Expand Up @@ -4709,9 +4709,12 @@ void BattleUnit::adjustStats(const StatAdjustment &adjustment)
_stats += UnitStats::percent(_stats, adjustment.statGrowth, adjustment.growthMultiplier);

_stats.firing *= adjustment.aimMultiplier;
_stats += adjustment.statGrowthAbs;

for (int i = 0; i < SIDE_MAX; ++i)
{
_maxArmor[i] *= adjustment.armorMultiplier;
_maxArmor[i] += adjustment.armorMultiplierAbs;
_currentArmor[i] = _maxArmor[i];
}

Expand Down

0 comments on commit f2f1af2

Please sign in to comment.