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.