I play a warlock since TBC came out (i was playing a Warrior before, and am still playing it in arena), and i often witnessed some strange behaviour with Partials Resistances(PR) amount from my Shadow Bolts.
After a few search about the data available on the net (from this forum, wikipedia or the WoW forums), i found out that no real studies about it was really performed, except a big data parsing from Frosbolt Resistance rate (a binary spell).
So, i made the decision to make my own research, in order to understand why the logged PR seemed to be so inconsistant with the damage not resisted, and why most reports on WWS show a PR under 6%.
The data used from logs are from pre 2.4, but some post 2.4 log parsing have confirmed that nothing has changed.
A) The mystery of the logged PR amounts.
Have you never noticed some very peculiar amount of PR from your Shadow Bolt or Fireball in the log in raid ?
For example :
3/20 21:17:19.015 Your Shadow Bolt crits Teron Gorefiend for 1794 Shadow damage. (2026 resisted)
What ? a
1794 SB crit ? with only 2026 resisted ? How come ? It would have give us a 3820 crit, which is simply impossible. One of the following line confirm it :
3/20 21:17:50.812 Your Shadow Bolt crits Teron Gorefiend for 8658 Shadow damage.
So there is clearly something fishy here.
At first, i just looked up on the internet, and the only really valuable data are from wowwiki and this forum.
Formulas:Magical resistance - WoWWiki - Your guide to the World of Warcraft
Resistance - WoWWiki - Your guide to the World of Warcraft
Spell hit - WoWWiki - Your guide to the World of Warcraft even if it doen't speak about PR
and the great
Working Theories of Theorycrafting as of 2.3
The 2nd link is probably the more interesting one, even if i knew this information from the blizzard page on resistance since Molten Core and Ragnaros.
The PR table show us that every PR is a multiple of 25%, and that the sum of PR against a mob is equal to the well known formula :
Average Resistance = (Target's Resistance / (Caster's Level * 5)) * 0.75
The 4th link just tell us that the amount of PR on a mob is +2% per lvl of the mob above the player, and that it cannot be avoided in any way. So it gives us 6% for a world boss.
This data was determined from big Frosbolt Resist log parsing, and is the base of the current consensus about PR rate.
We have a problem :
3/20 21:16:10.640 Your Shadow Bolt hits Teron Gorefiend for 3254 Shadow damage. (711 resisted)
3/20 21:17:14.343 Your Shadow Bolt hits Teron Gorefiend for 2071 Shadow damage. (1358 resisted)
3/20 21:17:19.015 Your Shadow Bolt crits Teron Gorefiend for 1794 Shadow damage. (2026 resisted)
3/20 21:33:18.000 Your Shadow Bolt crits Essence of Suffering for 4983 Shadow damage. (675 resisted)
3/20 21:33:51.281 Your Shadow Bolt hits Essence of Suffering for 978 Shadow damage. (1924 resisted)
Line 1 :
17.93% resist (711/(3254+711))
Line 2 :
39.60% resist (same calc)
Line 3 :
53.04% resist
Line 4 :
11.93% resist
Line 5 :
66.30% resist
Where are the x*25% resists ? It gives me a headache... but not for too long.
We can see some sort of logic here. The PR is quite stable, being for a hit or a crit, and there is a correlation between the resists amount.
For example : 1358 ~= 2*675, and 2026 ~= 3*675. The resisted amounts seem to follow the x*25% rule, but there is no stable link with the non resisted damage ones.
So i played a little with those data, and had the idea to not take into account the boss shadow debuff, and maybe after, my own shadow buffs.
We take the line
"Your Shadow Bolt crits Teron Gorefiend for 8658 Shadow damage"
With my gear and without a shaman, i could not have crit for this high without ISB being up.
8658 / 1.2 =
7215 without ISB
7215 / 1.1 ~=
6559.09 whitout CoS (no affli warlock in raid)
6559 / 1.1 =
5962,81 without Shadow Weaving
5962.81 / 1.05 =
5678,87 without Misery
the ~675 resist multiplicator i seem to have on the same fight is only is ~11.9% of this.
But if it was a hit ?
5678.87 / 2.09 =
2717,16 (i have CSD)
And 25% of
2717.16 is
679,29
Hey, what a strange coincidence.
Let's check for another line with a PR this time.
3/20 21:17:19.015 Your Shadow Bolt crits Teron Gorefiend for 1794 Shadow damage. (2026 resisted)
2026... this must be a
75% PR.
so
1794 would have been
7176, a crit without ISB.
1794/1.1 =
1630.91 without CoS
1630.91/1.1 =
1482,64 without SW
1482,64/1.05 =
1412,04 without Misery
1412.04/2.09 =
675,62 if it was a hit
And... 2026 = 3 * 675,34 or 3 * 25% resist.
For a simple hit :
3/20 21:17:14.343 Your Shadow Bolt hits Teron Gorefiend for 2071 Shadow damage. (1358 resisted)
1358 seems to be a
50% PR.
2071 would have been
4142, so ISB was up.
2071/(1.2*1.1*1.1*1.05) =
1358,4 which is exactly what was being resisted.
So we can assume that this is the way the PR are computed and logged by WoW.
What we can deduct from this data, is that the PR logged are misleading : they represent the resisted amount before any debuff from the target, but also, and this is quite surprising, before knowing if it was a crit or not.
Note : This 2nd statement just tend to confirm that the probability to get a crit is computed after the probability to hit a boss, and that the 2 roll theory must be the good one, even if it's still not 100% sure. What we can assume, is that the engine must know if there was a resist or a PR before determining if we have a crit or not.
So, what does it change for the WWS parses ?
It first means that the amount of PR on a non debuffed target will always be
x*25% for non critical spells.
But, it also means that the more debuff you have on the boss that favor your damage, the less the PR will be in your WWS.
The same statement is also true for crits, as the PR remain a multiple of a base hit without debuff. The more crit you have, the less the PR will be high in WWS (or in any other parser that compute your PR from the resisted part in wow logs)
For a warlock which have 30% crit (with CSD) who spam SB on a boss debuffed with CoS, Misery, SW and an average uptime of 65% for ISB, the PR logged by WWS is in fact only :
1.1 * 1.05 * 1.1 * (1+(0.2*0.65)) * (0.7+0.3*2.09) ~=
1,905 less than the real damage loss due to PR.
For a mage with 40% crit it's
1.1 * 1.05 * 1.15 * (0.6+0.4*1.5*1.03) ~=
1,618 less than the real damage loss due to PR.
B) Parsing some datas
So, what is the real DPS loss due to PR ?
We are going to parse some data to find out.
I wrote a very basic log parser pre 2.4 which let me get every Shadow Bolt landed against a named World Boss.
We will exclude those bosses :
- Shade of Akama, because he is taking a debuff which increase damage done against him
- Gurtogg Bloodboil, because of the felrage
- Essence of Desire and Essence of Anger, which can be debuffed or buff the raid
- Mother Shahraz, who buff the raid
- Illidari council because it was not very simple to handle
- Illidan Stormrage who can be debuffed with the trap
I am the main WWS updater of my guild, so i have a good amount of saved log i could parse, which provided me around 10k SB.
The algorithm to check the resist % is really simple :
if no PR, PR = 0%
else if PR > 1 and PR < 832, PR = 25%
else if PR > 832 and PR < 1665 PR = 50%
else PR = 75%
100% resist are handled separatly, because they are logged differently.
The one and only source of error, is if a 25% PR is > 832 (more than +2200 shadow), or < to 555 (less than +1285 shadow). It wasn't the case for all the log parsed here.
Also, every warlock on those logs were 0/21/40 with ruin.
The results :
Total Damage 48364810
Cast Count 10558
Hits 7285
Crits 3094
Resists 179
Partial Resists 1764
-----> 25% 1180 (11.176%)
-----> 50% 489 (4.632%)
-----> 75% 95 (0.9%)
Partial Damage resisted in logs 1629599
Partial Damage REALLY lost 2987247
Mitigation from PR in logs ~3.266%
REAL Mitigation from PR ~5.817%
This value of
5.8% damage loss from PR is quite stable, we get it with only 2k casts.
5.8% is the DPS loss from the SB that did damage against the boss, so this is not the mitigation to expect above every cast.
5.8% is a
27 base resistance for a boss.
If we compute the average resist to expect only from the PR %, we get : 0.9*0.75 + 4.632*0.5 + 11.176*0.25 = 5,785% of every cast, or 5.88% from the SB that did damage.
We can see that we still miss a lot of data to have a really precise average PR, but it's really close to the 6% commonly accepted.
Conclusion :
What did we learned ?
To be honest... nothing at all. The average PR of 6% already known is quite accurate, and determining it to a sub 0.1% precision would require such a tremendous amount of data that it will demotivate anyone to ever do it. Only a website like WWS could do something like that.
What we have here, is a simple enlightment about the discrepancy between the logged PR amounts and the "true" ones. It doesn't change anything in the game, we just know how to interpret parses data more accurately.
PS : My apologizes for all the mistakes i'm doing in english but that i cannot see as i it isn't my mother language.