GetStatModifiersFixed
Tracking Issue: #313
Tags: compatibility
The base game provides a function
native function GetStatModifiers(ECharStatType Stat, out array<XComGameState_Effect> Mods, out array<float> ModValues, optional XComGameStateHistory GameStateHistoryObject);
that can be used to identify how much different effects contribute to the calculated stat total.
For example, X2AbilityToHitCalc_StandardAim
wants to show how many percentage points to-hit or to-crit
different effects provide or diminish.
However, the function is subtly broken in the presence of
multiplicative modifiers (MODOP_Multiplication
or MODOP_PostMultiplication
), where it doesn't
return the correct contribution but instead simply returns MultiplicationMod * BaseStat
. This
makes multiplicative modifiers unusable for eStat_Offense
and eStat_CritChance
.
The Highlander function GetStatModifiersFixed
wraps the broken function and fixes the numbers.
Additionally, X2AbilityToHitCalc_StandardAim
is changed to call this modified function.
Compatibility
Mods that override/replace X2AbilityToHitCalc_StandardAim:GetHitChance
may undo the Highlander's
changes and use the broken function. In particular, XModBase versions prior to 2.0.2 are
known to undo this fix.
It is recommended that mods using XModBase upgrade to 2.0.2, and otherwise affected mods check whether
GetStatModifiersFixed
exists and call it instead:
if (Function'XComGame.XComGameState_Unit.GetStatModifiersFixed' != none)
{
// call GetStatModifiersFixed
}
else
{
// call GetStatModifiers
}