I decided to grab the Spades spreadsheet that Disquette posted to do some re-interpretations of the graphs. The x-axis label "time until next swing," is the same as "time left on swing if no parry," or "you parried, and this is the time left until the next swing if you hadn't parried," but that would have been a rather verbose for an axis label.
Anyways, to the point. Here is a re-interpretation of the exact same data in terms of absolute swing time (i.e. if no parries occured, it would be a flat line across the top at 3.6s). You can see that anything below 20% remaining time (0-0.72s) hits at base speed, that anything between 20-60% remaining time (0.72-2.16s) gets a variable reduction in swing time and that anything 60% and above remaining time recieves a flat 40% reduction in swing time (which in this case always sums to 2.16s which is 60% of 3.6s).
To make this plain as day I made another graph with Disquette/Spades' previous contributions.
This graph shows the data in terms of Base Attack Speed (BAS) increase. (i.e. 1.66 increased swing speed = 66% BAS increase = 40% reduction in swing timer)
Attack Speed = BAS/increase swing speed or
Attack Speed = BAS/(1+%BAS increase)
Take note of the "double hasted" parries with 186-215% increased BAS. I've also taken a look into the spreadsheet and nothing stands out to me either. There is not enough evidence of double parries or lag to explain these hasted swings. The only pattern I can discern from this is that they occur
only in the 75-100% until next swing time frame interval. My best guess is that there's a mechanic for if you parry within the first 25% time frame of your swing time (2.16-3.6s) to have a chance to proc a "crit parry" that doubles your base attack speed. We'd need more samples and character stats to know (parry rate, crit rate, etc).
The wowwiki parry formula definition is accurate except for the 20-60% range which is approximated in the graph below.
This is the 20-60% time section isolated from the rest of the swing data, converted into a swing time percentage and cleaned up a bit as some lag data was throwing off the poly-trendline (yes, this is not the proper thing to do statistically, but it's needed when the data point is 5 miles out and affecting the small sample size).
For example, a parry that occurs with 1.5 seconds remaining until your next swing (1.5/3.6 = 41.6% time) gets a BAS increase of [2.52*(.416)^2-0.3586*(.416)-0.005] x 100% = 28.3% increased BAS.
Note that this is a
very poor approximation as there are only 66 data points for this region which isn't statistically significant considering all the noise (lag) and the incredibly small sample size. Sadly I left my engineering statistics textbook at school so I can't tell you how big of a sample we'd need to hit 2σ, but hopefully somebody here is a stats/math major.
In Summary:
Swings occuring in 60-100% swing time - get a Base Attack Speed increase of 66.6% (Attack Speed = BAS/1.66 = 0.6*weapon speed).
Swings occuring in 0-20% swing time - swings at normal speed.
Swings occuring in 20-60% swing time - get an increase in Base Attack Speed of roughly X=[2.5*(%time until next swing)^2 - 0.36*(%time until next swing) - 0.005]
Thus, Attack Speed = BAS/(1+X)
OR a more simple equation is obtained by integrating, getting the area and dividing by the time frame to obtain the
average gives 28.806% Increased BAS:
Attack Speed = BAS/1.288 = BAS*0.776
In our case, the average swing time in the 20-60% region was: 3.6/1.288 = 2.795 seconds
Overall: 40%/1.66+40%/1.288+20% = 75% BAS
1% Parry Rating is
equivalent to 0.25% haste
=============================================================
To find actual haste you need parry rate, mob attackspeed and player attackspeed
Regarding Suicuique's Formula, it becomes apparent that it will not work when you create an extreme scenario.
If the mob_attackspeed is 4, and the player_attackspeed is 1 and we have 100% parry
The equation would be 1/(0.776) = 28.8% haste which can't happen because we can only parry haste one out of four attacks.
The equations obtained from the graphs assume that each attack table has one and only one mob attack. In the case that the mob attack speed facilitates two attacks before one of yours, then the probability becomes (1-parry)^2 rather than just (1-parry)^X. The exponent for this expression MUST be a whole integer if greater than or equal to 1 (There's no such thing as 2.5, swing count must be an integer)
The correct equation for equivalent haste due to parrty is as follows:
Let X = player_atkspd/mob_atkspd
Predicted Haste = (X)*{ (1/ [0.776 + (1-parry%)^(X
***)*0.224] ) -1} x 100%
X***
If 0 < X < 1, X∈R (real number domain)
If X > 1, N = {1,2,3...}
So, for your 3 observed cases:
1) PH = (0.9)*{(1/[0.776 + (0.77)^(0.9)*0.224]) - 1} = 4.4%
2) PH = (1.3)*{(1/[0.776 + (0.778)^1*0.224]) -1} = 6.8%
3) PH = (1.85)*{(1/[0.776 + (0.795)^1*0.224]) -1} = 8.9%
4) PH = (0.605)*{(1/[0.776 + (0.825)^(0.605)*0.224]) -1} = 1.5%
Predicted = Observed ∴ formula is likely to be correct (although we should get more data sets)
I believe these are the values you are looking for
