Actual Resist Reduction formula

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:

1. X Reduced target’s Resistance
2. –Y% Resitance
3. 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:
then “Z% Reduced” multiplicatively,

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.

10 Likes

then “Z% Reduced” multiplicatively,

Very interesting. This means a bunch of stuff such as Wind devil, bwc, maniticore, rowans… will not get the multiplicative bonus of %reduced and further emphasizes the importance of prioritizing -%RR stacking. Especially when trying to get bigger numbers with the <0 resist goal.

Edit: but also means something like viper 20%RR might give consistently better overall RR than thought, when not a lot of -%RR. Such as a build without access to a lot of -%RR equipment but does have some of the skills/devotions that give x reduced. Viper needs a nerf .

1 Like

So if I have -10% cold resistance and -20% cold resistance, I only get -20% cold resistance because “Works only strongest of Reduction of each type”

?

Or more mathematically phrased

If I have -Y1% and -Y2% of same damage type, such that Y1>Y2 then will Y in the formula be -Y1 or will it be -(Y1+Y2)?

If you have -10% cold resistance and -20% cold resistance, you will get -30% cold resistance, because they don’t have word “Reduction”.
Slightly corrected post.

And, Let me quote Game Guide “Buffs, Debuffs and Damage over Time” section:
This works similarly for debuff effects. If you apply a % reduction to a monster’s damage by using a skill and then apply the same effect with a weapon attack, only the strongest debuff will take effect. The effects do not stack. In the case that a strong effect has a shorter duration than a weaker effect, the weaker effect will become active once the stronger effect expires. A special exception to this rule are debuff effects which directly modify specific stats or resistances, such as -% Vitality resistance. If two differently named debuffs (ex. Curse of Frailty and Devouring Swarm) both reduce a target’s specific Resistance by -%, the effect will stack as they are two unique debuff effects altering the same attributes.

I see.

Could you add that to the forumla then that

Z = max(Z_i)
X = max(X_i)
Y = sum(Y_i)

?

Edit: I was asleep when first writing this, sorry malawiglenn.

Verifying the actual math on this one on my own.

Did I propose that they stack?

This is a translation error. You mean “All Y-s are summed over”

You did in the sleepy haze of me just waking up.

Confirming the findings of this thread.

TL;DR is that X Reduced Resistance occurs after X% Reduced Resistance. Overall, this makes Resistance Reduction as a whole weaker than previously supposed when you have a lot of it, but stronger than previously supposed if you don’t have much of it.

That’s some really good shit, thanks so much for making this post.

Thanks for testing and confirming this.

Not sure if it matters but I’m also curious if the same logic applies to enemy resist reduction where % reduced is applied before flat reductions.

Excellent work. How does this apply to something like DA reduction?

For example, imagine you’re a pyromancer with
Flashbang: X reduced target’s DA
Vulnerability: -Y DA
Fevered Rage: -Z% DA

Which order do these apply in? Based on the results of the OP I would now guess 1) Vulnerability -> 2) Fevered Rage -> 3) Flashbang. Is this true?

Still not tested DA Reduction, but theoretically it must working same way.

In this case order must be: Vulnerability - Fevered Rage - Flashbang, because “-Z% DA” is not Reduction but direct stats modifier.

I also know that Damage Reduction works like this, although there is no available flat Damage Reduction.

The order is Fevered Rage -> Vulnerability/Flashbang. As you noted, Fevered Rage is a modifier for the stat, not a reduction. Dunno why you got that one wrong in your list. There is no “X% Reduced Target’s Defensive Ability”.

Yes. Fevered Rage is stat modifer, and as all of stat modifiers percent bonus working after flat bonus. Literally -DA and -%DA debuffs equal to +DA and +%DA equipment (like this). So Feral Rage must apply second.

Thanks to the OP who tested and discovered this :).

Yeah. It’s a good thing as it slightly narrows the gap between class combo that don’t have two sources of RR and classes that do against resistant bosses, eg fire commando vs sharzul compared to fire purifier vs sharzul. Personally I consider %RR valuable only if it helps on the most resistant monsters in the game. For the fire purifier it seems viper is practically useless as after -% res are close to 0. For the commando it will be much better however.

This is really useful, thanks. I always thought flat reduction were all in the same parenthesis.

Rather Dmg=D0*(1-Resist). A resistance is 80% for example not 80.

Credit for this should go to Gray from russian forum for finding out that numbers don’t match if using the established formulae and correctly guessing the reason, and then to Maeror who confirmed it with simple mod. OP also confirmed it and made a good work with referrence materials which you could see in his post.

2 Likes

So now begs the question. How much RR does the average build need, before it’s less effective?

Both right, just If you check Resist formula again you will see that i operate with flat values even they reflect percentage.

Absolutely