Jump to content


Photo

Resistance Mechanics in WotLK


  • Please log in to reply
84 replies to this topic

#1 Shamgarr

Shamgarr

    Von Kaiser

  • Members
  • 78 posts

Posted 31 January 2009 - 03:42 AM

I personally haven't seen a lot of thorough research into the new resistance mechanics, so thought it would be helpful to post this in a more public forum. The motivation came from discussion in the Druid Sartharion MT thread.

Summary:

1. Partial resists occur in multiples of 10% (not 25% like pre-WotLK).

2. At a given value of resistance, only 3-4 resist percentages are possible.

3. The long-term average damage resisted at a given value of resistance appears to follow the formula

Average Resist = Resistance/(Constant+ Resistance)

For level 80 mobs, the Constant is 400.
For level 83 bosses, the Constant appears to be 510 (pending final confirmation).

4. The possibility of a given partial resist % is eliminated when the average resistance (from the above formula) is 20% higher. This results in the following thresholds for an 83 boss, assuming the constant of 510 is correct:

Resistance | Minimum Possible Resist
128 | 10%
219 | 20%
340 | 30%
510 | 40%
765 | 50%



6. All damage reduction / amplification effects (Defensive stance, Power of Shadron) affect only the unresisted portion of damage. All effects are still multiplicative, this simply means that when reviewing logs, the resisted portion in parentheses will be a flat percent of the base damage of the spell, with no other modifications (the exception being the reduction of periodic damage from resilience - this effect is applied before the partial resist check).

7. The probability of each partial resist seems to obey a triangular distribution. Mathematically:

C = Constant (400 for level 80, assumed 510 for 83)
R = Resistance
AR = Average Resist = R/(C+R)

x = Possible Resist. This must take values of 0.10*n, where n is an integer.

The probability of any x is thus

P(x) = 0.5 - 2.5*|x - AR|

or

P(x) = 0.5 - 2.5*|x - R/(C+R)|

Negative probabilities are simply treated as zero. This distribution matches the observed data well.

Graphs and Tables
This graph shows the relationship between resistance and the average amount resisted. These curves follow the formula provided above. As discussed, this average amount resisted determines the probability of any potential partial resist.
Posted Image

The following table lists the resistance amounts (from the above chart) which correspond to each average resist. These amounts are different vs. level 80 and 83 mobs.
Average Resist | Level 80 | Level 83
10% | 45 | 57
15% | 71 | 90
20% | 100 | 128
25% | 134 | 170
30% | 172 | 219
35% | 216 | 275
40% | 267 | 340
45% | 328 | 418
50% | 400 | 510
55% | 489 | 624
60% | 600 | 765


This table illustrates the probability of each partial resist at a few common amounts of resistance. These probabilities come from the formula P(x) = 0.5 - 2.5*|x - AR|. The resistance amounts were selected from various combinations of buffs, consumables, and available resistance gear. All values are for a level 83 boss.
Posted Image

The final graph displays the probability of each partial resist, as a function of resistance (for a level 83 boss). This information is the same as that in the previous table, at arbitrary values of resistance between 75 and 765. To read this chart, look on the horizontal axis for the amount of resistance you plan to wear, and trace a vertical line upwards. The curves with non-zero values at this resistance represent the possible partial resists. The magnitude at the intersection represents the probability of this resist.

For instance, at a resistance value of 400, the chart indicates nonzero probabilities for the yellow, purple, red, and light blue curves. These correspond to 60%, 30%, 50%, and 40% partial resists. Visually, the probabilities of each are about 10%, 15%, 35%, and 40%. This can be confirmed with the formula above.
Posted Image

#2 FalseMyrmidon

FalseMyrmidon

    Don Flamenco

  • Members
  • 452 posts

Posted 31 January 2009 - 05:27 AM

That would explain some of the weird resist numbers I've seen in WotLK.

#3 Falk

Falk

    Soda Popinski

  • Members
  • 3,015 posts

Posted 31 January 2009 - 11:26 AM

With item budget going up x2 and the cap (according to the original pre-WotLK formula) only going from 365 to 415 for capped mitigation (75%), this was an expected change... the test/results are really welcome for planning for eventual resist fights.

The most significant change is that unlike the old formula where each additional point of resistance was better up to the cap, the new formula suffers diminishing return. That is, as a simple example, to cut damage by half against a level 80 source, you'd need 400 resist. To cut it by half again, you'd need another 800 resist (where (1200 / 400 + 1200) = 3/4)

This means that the first piece of resist gear is the most valuable in terms of stats tradeoff, compared to resorting to greens to cover that last bit to cap on pre-nerf Shahraz when available SR crafting was limited by trash drops.

That in turn would show how beneficial, say, the 60res bracer LW emboss and other similar-stat-tradeoff FR is for Sartharion.

#4 TJourney

TJourney

    Glass Joe

  • Members
  • 2 posts

Posted 31 January 2009 - 12:42 PM

Many questions are begged by this thought-provoking data. My primary thoughts concern the previous cap of 75% overall mitigation via resistance, achieved by 5xEnemyLevel Resistance.

I will certainly mull over data parses from Sapphiron on my next kill; with my previous assumption that resistance calculations were unchanged, I had been stating that 415 Frost Resistance would grant 75% mitigation overall and was the cap. This new data begs the further question, is 75% mitigation still the cap for magical damage?

Is it not potential that the cap could have been changed from 75% to an even lower number, with the expectation that players would rely less on resistance? After all, it seems clear that this resistance calculation change was motivated by Blizzard's desire to avoid the "Resistance Fight Gear Ups" of yesteryear, there was public outcry during beta on that specific prospect continuing in WotLK. By adjusting the resistance calculation to make the initial points of resistance the most powerful, they have quite deftly eased the process of gearing an entire raid up for a resistance fight. It seems probable that another motivator is to likewise render near-immunity on the part of the tank to be impossible, instead encouraging a more natural level of mitigation.

Additional data at extremely high levels of resistance, in excess of 500, would be necessary to determine if the cap has changed from 75%

#5 songster

songster

    Chief Passenger

  • Members
  • 3,613 posts

Posted 31 January 2009 - 05:18 PM

Are you sure it's not a symmetrical distribution? While your data is asymmetric, that's not the same thing.

#6 Shamgarr

Shamgarr

    Von Kaiser

  • Members
  • 78 posts

Posted 31 January 2009 - 05:31 PM

Edit: I've moved my first data into this post, to keep the first post a little cleaner.

What follows is some of the original data used in determining these relationships, some of which is a bit dated. Further data to support the above conclusions can be found in several posts in the thread.

Level 80 Data:

Posted Image

The above chart shows the results of tests at different values of resistance. For each case, the sample size is between 480 and 1300. For those interested, the actual data, in terms of probability of each result, is below.

FR | 0%| 10% | 20% | 30% | 40% | 50% | 60% | 70%
54 | 0.1916 | 0.4723 | 0.2953 | 0.0408 | 0 | 0 | 0 | 0
100 | 0 | 0.2751 | 0.4988 | 0.2261 | 0 | 0 | 0 | 0
300 | 0 | 0 | 0 | 0.1735 | 0.4534 | 0.2985 | 0.0746 0
350 | 0 | 0 | 0 | 0.0977 | 0.3015 | 0.4449 | 0.1559 0
399 | 0 | 0 | 0 | 0.0063 | 0.2338 | 0.5324 | 0.2275 0
429 | 0 | 0 | 0 | 0 | 0.2379 | 0.4368 | 0.2862 | 0.0390


Posted Image

This graph shows the average damage resisted for each value of resistance, as well as the proposed relationship of Resistance/(400+Resistance).

The observed mean resist (calculated from the above table), and the predicted mean resist (calculated from this formula) are provided below for each case.

FR | Observed | Predicted
54 | 0.1185 | 0.1189
100 | 0.1950 | 0.2
300 | 0.4274 | 0.4286
350 | 0.4659 | 0.4667
399 | 0.4981 | 0.4994
429 | 0.5126 | 0.5175


This data was collected from the Magma in Obsidian Sanctum, which has the advantage of 30 samples per minute. Unfortunately level 80 resist mechanics apply, not 83. It is a plausible assumption that for a boss level mob, the constant in the above formula becomes 415.

Regarding the proposed formulas, the one "problem" case that exists is 100 FR. The predicted mean is 20%, while the observed mean, over a very high number of samples, is 19.5%. If this were the actual mean, 0% resists should still have a 1.2% probability according to the proposed behavior, but this is definitely not the case. Yet, the observed probability of each partial resist matches a distribution centered on 19.5% extremely well, with 0% rolls simply converted to 10% rolls, and added to the probability. This behavior is not observed at lower or higher resists tested, and raises some questions.

Level 83 Data

1424 samples were collected from a 10-man Sapphiron where all players had 75 frost resist. The observed probabilities of each partial resist were

Observed Probabilities:

0%: 0.1699
10%: 0.4305
20%: 0.3272
30%: 0.07233

Average Resist: 0.1302

The predicted average resistance, using a constant of 500, is 0.1304.
The probability of each partial resist agrees well with predictions from the triangular distribution described above:

Predicted Probabilites

0%: 0.1739
10%: 0.4239
20%: 0.3261
30%: 0.07609

Average Resist: 0.1304

42 Samples were taken from Kel'Thuzad's Frostbolt at 430 frost resist. While this is not enough data to draw precise probabilities from, it is important to note that 30% partial resists were observed, effectively ruling out the previous assumption of a constant of 415 for boss level mobs. A constant of 500 fits the data well, again with the caveat of a small sample size.


Original 1/31/09 post:

Added a 5th case, at 399 FR. It seems to confirm the expected cutoff behavior - at 399 FR there remains a very small (~0.5%) chance of a 30% resist. From the nature of the formula, and the 429 FR results, it's fairly safe to presume that 400 FR is the value that eliminates this chance.

Regarding caps, there may simply not be any hard cap on the amount that can be resisted, because the diminishing returns of the new formula does that on its own to an extent. That said, it only takes 601+ resistance to find out if 80% partial resists are possible, or if the formula changes. This is easily achievable with frost atm, though I doubt anyone has actually bothered to acquire gear beyond the polar sets and enchant it with even more frost resist.

As far as remaining things to be found out here, I plan to run more 100 FR cases, because the asymmetrical behavior definitely contrasts that at higher FR. The other data are within confidence bounds of being fit by symmetrical distributions, though the standard deviations aren't clear yet. I'll probably run more tests at low values of resistance to see if the behavior is simply different there, and this would be relevant to cases of only having MotW.

Other than that, the level 80 data is looking pretty predictable and following the proposed formulas, so the main thing is to get actual boss-level data of sufficient sample size. If it can be confirmed that the long-term average resistance is 415/400 times the level 80 expectation, then all the claims based on level 80 values can be fairly safely justified. Alternatively, tests can be run at a "cutoff" value like 104 resistance to verify no 0% resists. Both of these would require quite a large sample pool however, so I'm still trying to think of a boss to mess around with.

#7 Shamgarr

Shamgarr

    Von Kaiser

  • Members
  • 78 posts

Posted 31 January 2009 - 05:53 PM

Are you sure it's not a symmetrical distribution? While your data is asymmetric, that's not the same thing.


Well what kind of escaped me earlier, is that the distributions have to be symmetrical to support the proposed behavior. This means any asymmetry in the data would actually indicate an inaccurate mean value. "Symmetry" is still within the confidence bounds of the 100 FR data, so I'll be running more and seeing if the mean changes at all. If it doesn't, the formula for average resist vs. FR might be slightly different, or have some correction at lower values of resistance, so I'll run tests at other low values.

#8 Falk

Falk

    Soda Popinski

  • Members
  • 3,015 posts

Posted 31 January 2009 - 07:36 PM

Additional data at extremely high levels of resistance, in excess of 500, would be necessary to determine if the cap has changed from 75%


The old 75% cap according to the proposed formula would be 1200 for lv80, not feasible with gear in the game. :P I guess you COULD try lowbie elementals (caveat being they'd have to follow the (x / level*5 + x) graph without any other factors i.e. pertaining to level difference, etc - same deal with boss level mobs) and see where the benefit of additional resistance cuts off (if at all). For all practical purposes though, you won't be able to hit even 60-65% mitigation on meaningful content.

About testing boss-level mobs, I'm wondering if Baron Geddon would be a useful punching bag.

#9 Mijae

Mijae

    Don Flamenco

  • Members
  • 443 posts

Posted 01 February 2009 - 05:59 AM

I personally haven't seen a lot of thorough research into the new resistance mechanics, so thought it would be helpful to post this in a more public forum. The motivation came from discussion in the Druid Sartharion MT thread.

Summary:

1. Partial resists occur in multiples of 10% (not 25% like pre-WotLK).
2. At a given value of resistance, only 3-4 resist percentages are possible. Thus, by achieving sufficient amounts of resistance, you eliminate the possibility of partial resists lower than 10%, 20%, etc.
3. The long-term average damage resisted at a given value of resistance appears to follow the formula

Resistance/(Level*5 + Resistance)

4. While the average either obeys the above formula, or one extremely close to it, the exact distribution of possible partial resists as a function of Resistance is not yet known.
5. It is suspected that the possibility of a given partial resist % is eliminated when the average resistance (from the above formula) is 20% higher.


You have the formula changing in multiple places. I believe it should be:

Level*5/(Level*5 + Resistance)

#10 Falk

Falk

    Soda Popinski

  • Members
  • 3,015 posts

Posted 01 February 2009 - 07:21 AM

x / (5l + x) fits the graph/data perfectly.

5l / (5l + x) implies uh... average damage resisted at 0 resist is 100%?

Edit: 5l / (5l + x) is the average damage taken, not average damage resisted. Both formulae are correct.

#11 Shamgarr

Shamgarr

    Von Kaiser

  • Members
  • 78 posts

Posted 01 February 2009 - 02:30 PM

Ya the original formula was for damage taken, while all other data/discussion was in terms of damage resisted, so I just went with damage resisted here to hopefully keep things clearer.

#12 Shamgarr

Shamgarr

    Von Kaiser

  • Members
  • 78 posts

Posted 03 February 2009 - 03:00 AM

Updated with more current stuff

#13 Prinsesa

Prinsesa

    Bald Bull

  • Members
  • 1,527 posts

Posted 03 February 2009 - 03:58 AM

Do we have some established numbers on partial resists based on the level-gap? Given the dearth of actual resist fights in current content, this is probably the most relevant application of the data.

I've heard a 30% figure being tossed around as the average reduction of spell damage against a level 83 boss from these partial resists. Do they still occur in PvP against an even-leveled player, though?
"We do want Sanctuary to be the tanking seal"

- Ghostcrawler

#14 nightcrowler

nightcrowler

    Don Flamenco

  • Members
  • 448 posts

Posted 03 February 2009 - 01:52 PM

It seems to me that instead of using a 2 roll system, we ca achive the same results using a triangular probability distribution:

P'(x) = Theta[ADT-x]*2.5*(0.2+x-ADT)+Theta[x-ADT]*2.5*(0.2+ADT-x)

P(x) = Theta[P'(x)]

Where:
x is the % of damage taken and can take only 0.1*n value where n is integer
ADT = 5l / (5l + RES) is the average damage taken
Theta is the theta function following the rule Theta(x)=1 if x>=0, Theta(x)=0 if x<0

For example:
from the above table, with 300 FR we axpect a 0.1735 chance to take a 70% breath so:

ADT = 400/(400+300) = 0.5714

P(0.7) = 2.5*(0.2+0.5714-0.7) = 0.1785 that is in line with the 0.1735 value for a 30% resist shown on the table.

For low or high end value, the most probable things is that probability distribution is "reflected" along the y-axis with y=0 and y=1 as reflection axes.

#15 Erdluf

Erdluf

    Great Tiger

  • Members
  • 960 posts

Posted 03 February 2009 - 03:07 PM

Do we have some established numbers on partial resists based on the level-gap? Given the dearth of actual resist fights in current content, this is probably the most relevant application of the data.

I've heard a 30% figure being tossed around as the average reduction of spell damage against a level 83 boss from these partial resists. Do they still occur in PvP against an even-leveled player, though?


I don't see partial resists against level 80 targets.

For a level 83 target, let's assume:

- 15 resist (=5 * level difference)
- The two-roll system described in the top post is used.
- Rolls that would imply -10% resistance are converted to 0% resistance.

15 resist = 15/415 average resist = 3.6145% average resist (before converting -10% resists into 0% resists).

The two-roll system for a 3.6145% resist would have

9.0% of attacks would be 20% resisted.
34.0% of attacks would be 10% resisted.

The remaining attacks would have either 0% resist, or -10% resist (converted to 0% resist).

Overall, 43% of attacks would show a non-zero resist. The average resist over all attacks would be 5.2%. I'm not sure this is out-of-line.


Looking just at Insect Swarm from a recent Archavon raid (152 ticks)

37 ticks (24%) had 10% resist.
25 ticks (16%) had 20% resist.

Average resist was 5.7%. Obviously this is a small sample, but the numbers seem to not be terribly unreasonable.


If this model is accurate, the first point of resistance (or resistance - penetration for PvP) has a much larger than expected impact. 1 point of resistance should convert into 1/401 = 0.25% damage resisted. However the two-roll system (moving -10% resists to 0% resists) would leave you with about 2.69% damage resisted. The "advantage" declines until you reach 10% resistance (at just under 45 resist).

#16 Shamgarr

Shamgarr

    Von Kaiser

  • Members
  • 78 posts

Posted 03 February 2009 - 07:34 PM

It seems to me that instead of using a 2 roll system, we ca achive the same results using a triangular probability distribution:


This does indeed give the exact same results, as the "two-roll" description was basically three triangles, the superposition of which yields the one triangle you describe.

This also means there's an even simpler way to put this. I'm going to keep things in terms of damage "resisted" rather than taken:

L = Level
R = Resistance
AR = Average Resist

AR = R/(5L+R)

x = possible resist. As noted, x must take the values 0.1*n, for integer n. Thus the probability of any particular x is simply

P(x) = 0.5 - 2.5*|x - AR|

or putting it all together,

P(x) = 0.5 - 2.5*|x - R/(5L+R)|

Negative probabilities are simply treated as zero. This is the same as wrapping the whole thing in the "theta" function you describe, but the meaning of that might not be as apparent to people as the fact that negative probabilities are meaningless.

#17 Rasmfrackn

Rasmfrackn

    Glass Joe

  • Members
  • 11 posts

Posted 04 February 2009 - 07:24 PM

Thanks very much for a more thorough test. Environmental damage hadn't occurred to me. :)

I posted something similar at Tankspot a couple weeks ago:
General Resistance mechanics have changed? - TankSpot

But I haven't had a chance to go back and get a better sample size than 200 at each level. The data certainly all seem consistent... and the formula makes a lot of sense, much more than a cubic or something. The armor mitigation formula basically follows the same model of X / (X + Y).

I was also pointed to:
Greedy goblin: Elemental resistance

That has even less data, but he did do some testing with lower level mobs to see how level affected the values, which you can see in the graphs. He also arrived at the same formula as you did.

Anyway, I'm personally convinced of the formula and may not head back to test anything more myself unless you'd like help collecting stats. I can certainly collect FrR stats from raid members on Sapphiron this week, for example.

Rasm

#18 coredumperror

coredumperror

    Piston Honda

  • Members
  • 116 posts

Posted 04 February 2009 - 08:46 PM

It would likely take quite a long time, but a dedicated group of folks could go kill the 3 drakes in 10-man OS and then just let Sarth smack their FR tank down for several hours to collect data. I'm sure that healers could develop a mana regen rotation to prevent going oom over a very long period of time. You could cycle MOTW, FR Aura, and neither to get several different FR values tests without having to leave combat to change gear. Maybe you could get even faster fire damage attacks per minute by having your "tank" stand outside the central platform and get pelted by Pyrobuffet? That might be a binary spell though.

If this idea would work (I've never done this kind of thing before, but I'm very interested in helping to perfect the new resistance formulas) I'll propose this to my guild today, to see if anyone's interested. What's a good way to record all this data accurately?

#19 Allev

Allev

    King Hippo

  • Members
  • 545 posts

Posted 04 February 2009 - 09:07 PM

A group of 10 will probably get more data by running a partial clear of BWL up to the drakes. Then get into combat with the one with FR pulses, and collect data on resists for each character. Ideally, each character has a different amount of FR (that you recorded beforehand) so you can collect as many resist sample points at a time as you have volunteers (up to 40).

Alternately, you could get a group up to tackle Hydross, testing resists on his melee swings.

Or you could try soloing/2-manning Baron Geddon, which is possible from all reports.

I think clearing OS10 and holding it open is clearly a waste of everyone's time.

#20 Mijae

Mijae

    Don Flamenco

  • Members
  • 443 posts

Posted 04 February 2009 - 09:09 PM

It would likely take quite a long time, but a dedicated group of folks could go kill the 3 drakes in 10-man OS and then just let Sarth smack their FR tank down for several hours to collect data. I'm sure that healers could develop a mana regen rotation to prevent going oom over a very long period of time. You could cycle MOTW, FR Aura, and neither to get several different FR values tests without having to leave combat to change gear. Maybe you could get even faster fire damage attacks per minute by having your "tank" stand outside the central platform and get pelted by Pyrobuffet? That might be a binary spell though.

If this idea would work (I've never done this kind of thing before, but I'm very interested in helping to perfect the new resistance formulas) I'll propose this to my guild today, to see if anyone's interested. What's a good way to record all this data accurately?


Sarth has an enrage timer. I think it was at 15 minutes. So you would need to reset him a number of times for that much data.




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users