Thanks, MaxQuest. And holy large json file, Batman! TIL that vim will struggle to open a 14mb file with no line wrapping.
Frankly the information you provide is disappointing, mostly because it talks about a murkiness in the game when I thought Obsidian was trying to clear all that up from pillars.
Second, Obsidian takes all coefficient values in respect to the base value. And they do use 0.75 value for coefficients when they want to denote -25% speed. And tbh, I am not convinced yet that they should store 0.8 instead.
So my thinking is that the way the modifiers are being combined, and with the inversion, what Obsidian is approximating is that all of these adjustments are to a rate of how quickly or slowly you move through attack frames. For all below cases I assume a 5s recovery:
The example is simple with most positive cases: 5/(1 + sum(x)). +100% action speed really means we are increasing how many attack frames we process in the same time frame by +100%, so 5/(1 + 1) is how we represent that (we now have 2.5s recovery, or double speed advancing through attack frames). This is the same as dex and gunner from POE1.
For net maluses, we can't just do 5/(1-x), because when we say you have +100% increased recovery, we are not saying that you take infinitely long to recover from an attack. Instead what we are saying is that +100% increased recovery means we have +100% delay between attack frames. The way you do this is 5/(1/(1-x)). We take the negative bonus (-1) and we reverse the sign so we get 1/2. Then we invert that, so that instead of increasing how quickly we are going through attack frames, we are decreasing our speed through attack frames (hence, a double-inversion of a malus). So 5/(1(1-(-1))) = 10s, or half as many action in the same time frame. So I was predisposed to thinking of maluses in terms of this thinking, where a malus means degradation in your action/recovery time (instead of action/recovery speed).
MaxQuest, you've shown that for a -25% modifier, Obsidian is storing .75 as the coefficient. So OK, in your example with the car, it makes sense because .75 would literally mean -25% actions for any given unit of time. However, it is clear that in other places Obsidian do care about things being modified as an effect on time (e.g. instead of slowing down by 25%, you extend the time it takes by 25%); thanks to your spreadsheet and the .bundle file, we see that arbalest ia a .75 coefficient, but warbow overdraw is a 1/1.5 coefficient. The former directly reduces how many actions you should take by 25% (which translates to a +33% degradation in your recovery time), whereas the latter is formulated directly as a degradation of your recovery time (a coefficient of .66 or -33% action speed).
That above distinction between how certain coefficients are computed just leads to a murkiness that is frustrating and requires a lot of care to pay attention to exactly what tool-tips are saying (and hoping that Obsidian was precise with their wording on each tooltip).
So, one of my original points still stands though. Unless I'm misunderstanding what you mean by "double-inversion", double-inversion is not what makes things bad, because when the double-inversion is applied to something that lengthens your recovery time (warbow overdraw), it is basically a negative additive modifier to most positive modifiers which affect speed. What makes things bad are maluses that are targeting your action speed directly (like arbalest overbearing) because by their very nature they overpower identical magnitude improvements also to your action speed. Interestingly, there's a flip side here: Sure-Handed Ila stores a 1/.8 coefficient, instead of a 1.2, because I guess it is targeting giving you 20% less recovery time (effectively a 25% improvement in your action speed), instead of improving your action speed by 20% (like potions of deftness do by 15% for coeff of 1.15), so Sure Handed, too, will overweight against maluses that merely degrade your recovery speed (like warbow overdraw or armor). Something similar happens with dual-wield (given that its coefficient is stored as 1/.7 and not 1.3). (So, dual-wielding an implement with Sure-Handed will outweigh the penalty for wearing heavy armor, even though the tool-tip penalty for heavy armor exceeds a naive* sum of the tooltip bonuses for dual-wielding and sure-handed).
* I use naive not to be insulting, but more in the math-y way of saying "possibly the obvious, but apparently incorrect" approach.
Personally, I think we should try to spit out a list of coefficients and normalize them, or at least be explicitly clear into how they are put into the equation, because there are clearly some maluses are no different from bonuses (warbow, rapier needle, armor) and some that are significantly overweighted (arbalest overbearing but there are also bonuses that are overweighted: sure handed, dual-wielding).
EDIT: i am also pretty busy the next couple of weeks, but I might take a stab at doing this when I have more time. Coefficients are just way too murky for my game-analytical needs as it stands.
EDIT2: i tried to clear up terminology. It's a little confusing because it's a bit asymmetric. TL;DR: bonuses to your action speed are equally weighted to maluses to your recovery time. bonuses to your recovery time are equally weighted to maluses to your action speed. On the other hand, bonuses to your action speed are outweighed by maluses to your action speed, and maluses to your recovery time are outweighed by bonuses to your recovery time. UGH
Edited by thelee, 15 May 2018 - 11:24 AM.