Here is the 'solution' and it's more than a bit stupid:

integer overflow of the percentage.

Since it appears to be a signed value this:

`new entry "_Bow_Piercing_WeaponBoost"`

type "Weapon"

using "_BOOSTS_Weapon"

data "Damage Type" "Piercing"

data "DamageFromBase" "2147483597"

Which is 'signed 32 bits int max - 50' appears to turn into '-50 percentage' for some reason when it tries to 'add' the multiplication it to the existing value, for reasons that are obvious after you think of the probable formula:

`[base_value_min + (base_value_min * percentage), base_value_max + (base_value_max * percentage)]`

the addition overflows to a value '50% under each value, and since base_value(s) is unsigned, it starts from 0. Presto, 50%.

Devs deving around, could not do normal negative percentages but left this overflow thankfully.

Last edited by i30817; 03/12/21 07:09 AM.