Greetings, comrades.
Today I want to speak about actual Resist Reduction and it order of it applying. All of the above is relevant for version 1.0.6.1
As we know there is 3 way to reduce enemies’ resistance:
- X Reduced target’s Resistance
- –Y% Resitance
- Z% Reduced target’s Resistance
I write in this order, because based on Advanced mechanics post and this Zantai’s post it was considered correct: X and Y applying first additively and Z applies last multiplicatively.
But, several test and discussion in Russian Community gave rise to doubt this.
So, I conducted a large-scale test. Using mods as usual for controlled environment.
Initial conditions:
Olexra’s Flash Freeze: 178 cold damage
Curse of Frailty + Vulnerability: -30% Elemental Resistance (suppose as -30% Cold Resistance)
Custom weapon with 2 types of RR:
43 Reduced target’s Resistance
51% Reduced target’s Resistance
Targets are Training Dummy with 0 Cold Resistance and Custom skeleton with 0, 50, 75, 100 and -50 Cold Resistance
Casts OFF with combination of RR and get table:
If you try calculate dealt damage using old Order of RR you will fail.
The thing is that, as I said old order is wrong.
After analyzing the results of the experiment, one can come to the conclusion, that correct RR order are next:
First “-Y% Resistance” additive debuff,
then “Z% Reduced” multiplicatively,
and last “X Reduced” Additive.
What about stacking same type of RR, all rules are save:
Works only strongest of Reduction of each type; (Strongest of X and Strongest of Z)
All other different source debuffs stacks. (All Y-s are summed over)
In this way, Final Resistance formula could be written as follows:
Resist=(R0+Y)*(1-sgn(R0+Y)*Z/100)-X
Where: Resist – Final enemy Resistance
R0 – Initial enemy resistance
X – “X Reduced target’s Resistance” (For current example X=43)
Y – “-Y% Resistance” (For current example Y=-30. Be noticed: not 30, -30% or 30%)
Z – “Z% Reduced target’s Resistance” (For current example Z=51. Be noticed: not 51%)
sgn() – sign function
If You have many various RR, general form is:
Resist=(R0+sum(Yi))*(1-sgn(R0+sum(Yi))*max(Zi)/100)-max(Xi)
Dealt damage could be calculated accordingly with next formula:
Dmg=D0*(100-Resist)/100
Using these 2 formulas you can check that the calculated values fully correspond to the experimental data.
This new information will allow to consider efficiency of RR and also separate builds.
I hope that this thread was useful to you. Good luck on the vastness of Cairn and don’t forget reduce resistance.