After scouring the net and not finding anything satisfactory, I decided to reverse engineer the FoT damage formula.
Currently it's accurate for 'Straight' weapons as long as rounding doesn't kick in.
Shotguns aren't quite right. I imagine the 'Cone' weapons all share the same problem where range plays a part.
I didn't even bother trying to figure out burst - I assume it rolls accuracy for each projectile and applies this formula for each hit.
Dmg = Original weapon damage (from weapon range)
aDM = ammo Damage Modifier
aPen= ammo Armor Penetration
DR = Damage Resistance %
DT = Damage Threshold %
aMod = ammo armor modifier, a percentage that increases / decreases armor effectiveness.
aMod = 1 - aPen/100
Total = trunc( trunc(Dmg * (1 + aDM/100)) - truc(DT * aMod) ) * (1 - DR * aMod)
Ex: Uzi with 9mm AP (-25%, 50%) hits Enviro2 (6, 45) with 10 dmg
aMod = 1 - 50/100 = 0.5
( 10 * (1 - 25/100 ) - 6 * 0.5 ) * (1 - .45 * 0.5)
( 10 * 0.75 - 3 ) * ( 1 - .225 )
( 7 - 3 ) * ( .775 )
3 damage
Edit: Thanks to Cubik for pointing out where truncation occurs.
Currently it's accurate for 'Straight' weapons as long as rounding doesn't kick in.
Shotguns aren't quite right. I imagine the 'Cone' weapons all share the same problem where range plays a part.
I didn't even bother trying to figure out burst - I assume it rolls accuracy for each projectile and applies this formula for each hit.
Dmg = Original weapon damage (from weapon range)
aDM = ammo Damage Modifier
aPen= ammo Armor Penetration
DR = Damage Resistance %
DT = Damage Threshold %
aMod = ammo armor modifier, a percentage that increases / decreases armor effectiveness.
aMod = 1 - aPen/100
Total = trunc( trunc(Dmg * (1 + aDM/100)) - truc(DT * aMod) ) * (1 - DR * aMod)
Ex: Uzi with 9mm AP (-25%, 50%) hits Enviro2 (6, 45) with 10 dmg
aMod = 1 - 50/100 = 0.5
( 10 * (1 - 25/100 ) - 6 * 0.5 ) * (1 - .45 * 0.5)
( 10 * 0.75 - 3 ) * ( 1 - .225 )
( 7 - 3 ) * ( .775 )
3 damage
Edit: Thanks to Cubik for pointing out where truncation occurs.