Jump to content
  • 0

-% recovery stacking neither multiplicative nor additive?


SaruNi

Question

Tested with -50% recovery from dual wielding and -20% recovery from Streetfighter's Heating Up. Additive stacking would predict -70% recovery therefore 0.3*2 = 0.6 second recovery. Multiplicative would be .5*.8*2 = 0.8 recovery. But the number it's returning is 0.9 recovery. 

 

There were no action speed bonuses or maluses, just -% recovery speed. The difference between expected and actual becomes larger (and worse for the player) when you add in the expected -% recovery from +action speed.

 

Edit:

0.9 would be about the right result if -% recovery speed were stacked by first converting it into +action speed, adding up all the +action speed bonuses, and then re-converting it into -% recovery speed.

z = x/(1+x)
z + zx = x
(1-z)x = z
x = z/(1-z)
.5/.5 = 1
.2/.8 = .25
1.25/2.25 = 0.555
(1-0.555...)*2 = about 0.8889
 
But that is a ridiculously counterintuitive and complicated way of doing it.
Edited by SaruNi
  • Like 3
Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 0

Thank you for delving into the inner workings of Accuracy. I'd love to know for sure how it works too. If your last calculation is correct, then users of the game will have a very hard time to grasp what any Accuracy bonuses really mean for their specific character. Perhaps Bmac can help us out here?

*** "The words of someone who feels ever more the ent among saplings when playing CRPGs" ***

 

Link to comment
Share on other sites

  • 0

Tested with -50% recovery from dual wielding and -20% recovery from Streetfighter's Heating Up. Additive stacking would predict -70% recovery therefore 0.3*2 = 0.6 second recovery. Multiplicative would be .5*.8*2 = 0.8 recovery. But the number it's returning is 0.9 recovery.

You are using two fast 1h weapons with base values of 0.5s attack / 2.0s recovery, right?

 

P.S. Looking at AttackBase.NotifyAttackComplete() I see that nothing has changed in recovery calculation logic in comparisson to PoE1. Well except for recoveryFactor which is a constant, and allows for a different ratio between attack and recovery durations.

 

But still something is odd, specifically base values and rounding:

- fast melee weapons have base 0.5s att and 2.0s rec

- slow melee weapons have base 0.7s att and 3.0s rec

which is technically impossible, since they both go through the same function and thus should be proportional.

 

My current guess is that fast weapons actually have 0.46(6)s attack duration (or exactly 14 frames).

So it's likely is:

- fast melee weapons have base 14 frames att and 60 frames rec

- slow melee weapons have base 21 frames att and 90 frames rec

Will be able to tell precisely when will find the value of new recoveryFactor. 

 

Thank you for delving into the inner workings of Accuracy.

SaruNi is speaking of recovery duration)

 

In the other thread, someone has said that it took him 1300 dexterity to reach 0 recovery time. Might it be a hint that it's actually the division that gets used here, similar to the reload time from the first game?

Dexterity bonus is applied multiplicatively. Both in PoE1 and in Deadfire.

 

Also DEX does not allow you to reach 0 recovery... but huge numbers can bring you close to it. Specifically if you are at 0.0499 recovery it could be rounded to 0 by UI. So let's compute how much DEX would we need for UI to indeed display 0 recovery duration for a fast weapon (provided there are no other bonuses/maluses):

 

2s / dexBonus = 0.0499s

40 = dexBonus

40 = 1 + (dex - 10) / 33.3

39 * 33.33 = dex - 10

1298.7 + 10 = dex

 

result: 1309 dex or above

Edited by MaxQuest
  • Like 2
Link to comment
Share on other sites

  • 0

i have tested this extensively : to match the tooltip recovery value you have to sum up any bonus expressed in action speed term  ( or dps increase with regard to recovery )  (A),

sum up any malus expressed in recovery term  (B)

 

A-B is to be read as action speed ( applied to recovery on;y) if positive and if negative  B-A needs to read as a recovery increase.

tool tip tend to express all value in recovery term so you have to switch indeed with formula  a = -r / ( 1+r)  or r =-a (1+a), notably for the dual wielding which is confusingly expressed as -50% recovery rate and not +100% action speed ( applied only to recovery).

 

the formula worked also with high speed enhancement, where summing negative recovery would have created problem.   When  the sum gets close to 1, action speed would have become infinite.

 

Zero recovery looks not possible save for an unreachable high amount of dex, so at last one game mechanic gets fixed for the better.

Link to comment
Share on other sites

  • 0

Zero recovery looks not possible save for an unreachable high amount of dex, so at last one game mechanic gets fixed for the better.

 

I disagree. 0 recovery was fun and certainly not inherently wrong.

 

There goes a huge chunk of my play style...

"Time is not your enemy. Forever is."

— Fall-From-Grace, Planescape: Torment

"It's the questions we can't answer that teach us the most. They teach us how to think. If you give a man an answer, all he gains is a little fact. But give him a question, and he'll look for his own answers."

— Kvothe, The Wise Man's Fears

My Deadfire mods: Brilliant Mod | Faster Deadfire | Deadfire Unnerfed | Helwalker Rekke | Permanent Per-Rest Bonuses | PoE Items for Deadfire | No Recyled Icons | Soul Charged Nautilus

 

Link to comment
Share on other sites

  • 0

i have tested this extensively : to match the tooltip recovery value you have to sum up any bonus expressed in action speed term  ( or dps increase with regard to recovery )  (A),

sum up any malus expressed in recovery term  (B)

 

A-B is to be read as action speed ( applied to recovery on;y) if positive and if negative  B-A needs to read as a recovery increase.

tool tip tend to express all value in recovery term so you have to switch indeed with formula  a = -r / ( 1+r)  or r =-a (1+a), notably for the dual wielding which is confusingly expressed as -50% recovery rate and not +100% action speed ( applied only to recovery).

Do I understand it right?: in order to match final result indicated in tooltips: speed coefficients need to be added up, their sum converted to duration_coefficient and after that base recovery value is divided by it?:

A = 0 + 0.5 + 0.2 = 0.7

B = 0

a = B - A = -0.7 => coef = [0.7 / (1 - 0.7)] = 2.333 =>

 

2.0s / 2.333 = 0.857s ~= 0.9s (which matches SaruNi's experience)

 

If so, there must be something off,.. because if those B and A are equal (e.g. situation when there are no buffs) coef would be zero instead of 1, leading to infinite recovery when in fact it is 2s.

 


Not sure yet, but have a feeling that tooltip result does not reflect real value of current recovery. The source code for recovery calculation is still the same in Deadfire as it was in PoE1. And if I do the computation in the same manner as before, I get the value of 0.6s:

 

recovery_duration = attack_duration * max(0, 1 - 2 * speed_coef) / recovery_factor

 

base_recovery_duration = 2.0s = base_attack_duration * max(0, 1 - 2 * speed_coef_1) / recovery_factor

current_recovery_duration = x = base_attack_duration * max(0, 1 - 2 * speed_coef_2) / recovery_factor

 

x = 2 * max(0, 1 - 2 * speed_coef_2) / max(0, 1 - 2 * speed_coef_1)

 

speed_coef_1 = 0 - 0.5 (because of speed penalty for non dual-wielding)

speed_coef_2 = 0 + 0.2 (dual-wielding with Streetfighter's Heating Up)

 

x = 2 * (0.6 / 2) = 0.6

 

Hence recovery duration when dual-wielding fast 1h melee weapons (with Streetfighter's Heating Up) should be 0.6s (according to old system)

 

Edited by MaxQuest
  • Like 1
Link to comment
Share on other sites

×
×
  • Create New...