Armor / Damage calculation formula help

Users who are viewing this thread

fisheye

Grandmaster Knight
Armagan said:
Thank you for the suggesting it. The workaround I found for this is adding two new variables to module.ini file: armor_soak_multiplier and armor_percentage_reduction_multiplier. I am setting these to 0.5 and 1.0 now respectively for the native module. You can set them to 0.0 and 1.0 to make a fully percentage based system. To return to the old system one can set them to 1.0 and 0.0.

Okay, so that was really rather vague. Can someone describe the meaning of soak and reduction in precise mathematical terms? Especially which one is applied first? Thanks a lot!

We have this for .891:

armor_soak_factor_against_cut      = 0.5
armor_soak_factor_against_pierce    = 0.33
armor_soak_factor_against_blunt    = 0.25

armor_reduction_factor_against_cut      = 1.0
armor_reduction_factor_against_pierce    = 0.65
armor_reduction_factor_against_blunt    = 0.65

As far as I can determine, reduction is a percentage factor multiplied against damage. Soak is a subtraction against damage.

Sooo, for a blunt hit vs armor, say blunt damage rolled base=20 and armor value is armor=40. I'm guessing it's

Final damage = (base - (armor * 0.25))  *  (armor/100 * 0.65) = 2.6

Hmm looks a bit low. Can someone please clarify?
 
hrm...
#setting speed_power to 2.0 makes damage scale with the square of missile's speed.
# you can set it to 1.0 to make it scale linearly as it was before.
missile_damage_speed_power = 2.0;
melee_damage_speed_power = 2.0;

So a 20b at speed of 2 (2 power 2, 2 x 2) would do 80b (20 x 4)
soak reduces it to (80 x 0.25) 60b, then 40 armor reduce it to 26 (40 x 065)

As I guess...
 
Hi Fisheye,

You have got it mostly right. The correct formula should be:

Reduced_damage =base_damage - (armor * 0.25) = 10
Final damage =  Reduced_damage * (1 -  (armor/100 * 0.65))  = 7.4
 
Yeah,a nd thanks again for this change. To me it is the most important one and will help dramatically with balancing!

You rock, armagan!
 
armagan said:
You have got it mostly right. The correct formula should be:

Reduced_damage =base_damage - (armor * 0.25) = 10
Final damage =  Reduced_damage * (1 -  (armor/100 * 0.65))  = 7.4
There's something worrying about the formula.
Given that armor value width is 8 bit, it can be assigned a value greater than 100

That means the expression (1 -  (armor/100 * reduction)) can evaluate to a negative number.
Doesn't it make it possible for Final Damage to be negative?
 
Certainly I think it's no greater a concern than armour > damage under the old, pure subtractive, system.  Armagan would be a fool to floor the value at zero in between the steps of the algorithm he describes above.
 
Hellequin said:
Certainly I think it's no greater a concern than armour > damage under the old, pure subtractive, system.  Armagan would be a fool to floor the value at zero in between the steps of the algorithm he describes above.

Agreed; I think it's probably something slong the lines of max(<formula result>,0)
 
Back
Top Bottom