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.