Archived

This topic is now archived and is closed to further replies.

Shamgarr

Resistance Mechanics in WotLK

85 posts in this topic

For Sartharion, the value of C changes throughout the fight. When the fight begins, if he has BoS and Grace active, it is 0.88*0.97*0.97*2. The 2 is from the double fire damage taken debuff. Gift of Twilight, the 50% damage increase buff, is not part of C, because it affects Sarth's damage dealt, thus both resisted and received amounts equally. C will change when Vesperon's Acolyte spawns, when Shadron dies, when Vesperon's acolyte dies, whenever the druid is affected by barkskin, pain suppression, divine guardian, or hand of sacrifice, and finally whenever the number of Grace stacks changes.

For instance for the case you have listed as 6%, it looks like it's actually a 10% resist before Shadron lands, with BoS and 1 stack of Grace up and no other CDs. The last entry looks like a 30% resist with Vesperon landed and Divine Guardian combined with Hand of Sacrifice.

These issues make any kind of "automatic" calculation from Sarth logs pretty rough, but the logs can still be informative when a particular partial resist is found that rules out certain constants.

You can simplify this very slighty as Grace does not stack with BoS.

It would take a little extra effort, but I would imagine it would be possible to parse Sarth logs with a script that calculates the possible (de)buffs and chooses the best fit. Given all the unsubstantiated rumor I have heard that Sarth's breath somehow has special resist mechanics and its status as the only fight where resistance is a real factor, I think it warrants the additional testing.

Share this post


Link to post
Share on other sites

Interestingly Grace actually does stack with BoS, despite some blue comments to the contrary. BoS and Vigilance don't stack however.

I've yet to see anything inconsistent about Sarth's breaths, I'm not sure what the rumors are other than the fact that most people expect the resisted portion to be some flat percent of the total. Every breath I've seen in a log though has some exact explanation consistent with the possibilities at the given FR.

I've just been working with Excel, I'm not proficient enough in any programming language to make something more automatic for Sarth logs, I typically either use a formula like the one above with 4 "basic" possibilities for the constant, or simply calculate the possible base breath amounts from the resisted amount, considering only the 1-2 that fall within Flame Breath's damage range. If I were to do anything more automated it would probably be in Matlab because that's what I know, but that wouldn't be terribly useful to others.

Share this post


Link to post
Share on other sites

Narrowing down the constant

Did Sapph with 515 FrR, small sample size but got enough to narrow things further:

130 Samples at 515 FrR

Partial Resist: # of samples (percentage)

40%: 30 (23%)

50%: 67 (52%)

60%: 30 (23%)

70%: 2 (1.5%)

Average resist: 0.503

The presence of two 70% resists means the constant is lower than 515.

At present, the possible range for the constant is now 506-514. The only nice "rounded" value left is 510. It certainly doesn't have to be a multiple of 5, but as always simplicity is a decent assumption in the absence of further information.

One simple explanation for 510 would be that up to level 82, the constant continues to work on a 5*level system. Thus it would be 410 vs. an 82 mob. When moving to boss level, a special amount is added. This would be similar to the hit mechanics, where the hit cap goes up 0.5% per level up to level 82, then jumps up 2% when moving to boss level. I'm not really sure how such a system would work out though for an arbitrary level difference (i.e. a level 70 fighting a level 80), as adding 100 per level beyond 2 is pretty steep... It may simply be that there is a harsh nonlinear increase in the constant as a function of level difference, which yields some value in the range of 106-114 for a 3-level difference.

I think of this as a "low-priority" concern, but I'd be interested to see some numbers vs. an 82 heroic boss. Some that come to mind are the Maiden of Grief's void zone, Novos' arcane field before you engage him, Kerisrasza's intense cold. If anyone can think of others let me know, if i can put together a cutoff amount of the appropriate resist, and it's a boss I can clear to with just a healer without spending forever on it, I may do that sometime. It has to be something with a pretty fast damage component.

Also, I wore this set vs. KT. Very few samples, but what's unique about KT is the presence of the binary resists on Frostbolts. I had 11 resists out of 30 casts, or about 37%. This is compared to the roughly 19% at 430 FrR. While resistance is clearly fairly powerful for mitigation vs. spells with a binary component, finding out the exact formula for this is pretty hard right now due to the extremely small sample size, and it's not nearly as useful. If there are fights in Ulduar where wearing resist vs. a binary spell is helpful, it's already intuitive that the more you wear, the more you'll resist, and there are no useful cut-offs to find like there are for partial resists.

Summary

The constant appears to be between 506 and 514. This yields 10% and 20% cutoffs at

10%: 217 to 221

20%: 338 to 343

If the constant is 510, the cutoffs are

10%: 219

20%: 340

If anyone gets any data on Sapphiron or Sartharion with a resistance in the range of 217-221, 338-343, or 506-514, I would love to get a copy of the log or WWS.

Share this post


Link to post
Share on other sites

Summary

The constant appears to be between 506 and 514. This yields 10% and 20% cutoffs at

10%: 217 to 221

20%: 338 to 343

If the constant is 510, the cutoffs are

10%: 219

20%: 340

If anyone gets any data on Sapphiron or Sartharion with a resistance in the range of 217-221, 338-343, or 506-514, I would love to get a copy of the log or WWS.

I got a wicked cold shortly after collecting the last set of data I promised, but it looks like it probably wouldn't have been relevant anyway. I think I can try to get into the 338-343 range this week, though we've started doing our 100 club achievements so the rest of the raid may not like that.

To be clear... by "cutoff" you mean "resistance value at which that partial resistance amount no longer appears", right? I.e. 221 or 222 resistance guarantees at least a 20% partial resistance value? If that's the amount required to guarantee a 10% partial resist, that seems rather extreme. If it guarantees a 20%, though, is there an even lower resistance value range to test for the guaranteed 10% resists?

Share this post


Link to post
Share on other sites

Correct, 217-221 resistance eliminates 10% resists, yielding a minimum possible resist of 20%.

There is indeed a lower cutoff though it's somewhat less practical as it's less than an aura/totem, and the range is quite tight. 127-129 resistance should eliminate 0% resists.

Hoping to get a 510 or 340 Sapphiron this week, so final numbers may not be too far away.

Share this post


Link to post
Share on other sites

Did Sapph/KT tonight with 340 FrR, 181 samples altogether.

In these I did not see a 20% or a 60% resist; all 30%, 40%, and 50%. If the constant is 510, only these three resists would be possible.

Unfortunately, while promising, this isn't quite "conclusive", as if the constant is slightly more or less than 510, the probability of one of these resists is very small, and quite reasonably would not be seen in just 181 samples.

If the constant were 509 for instance (for whatever reason...) there is an 80% chance of not seeing a 60% resist, despite it being possible.

That said, the more samples that are gathered at this resist, the more confident we can be that 510 is the constant. Alternatively, the first time a 20% or 60% resist appears, it cuts the range of possibilities in half, leaving only 4.

Still, for the time being, I think it's plenty safe to treat 510 as the constant, and for the only fight where this really matters, treat 340 FR as the cutoff for eliminating 20% resists on Sartharion. If this is incorrect, and you still receive and log a 20% resist wearing 340 FR, at least you have the immense consolation of contributing to this pool of knowledge.

Share this post


Link to post
Share on other sites

I'd rather see something besides a constant. Let's look at post #53

Using 510 as the constant. Resist should be 50.2439% Yet we clearly see 2 70% partial resists. There needs to be a cutoff here somewhere that makes us jump to the next 10% interval. So was it because the resist total exceeded 50.1%? I come up with these values for 1 70% resist.

50.10%=1 in 1,000

50.25%=1 in 400

50.50%=1 in 200

50.75%=1 in 133

51.00%=1 in 100

There were 2 partial resists though. The only way i can see the possibility of the 2 70% resists was if the assumed 510 constant is incorrect. If you lower the constant to say 498 it works out a to be 50.84%. Which makes a 70% resist chance become a 1 in 116 chance. Which models a bit closer to the 2 in 133 in the results. Now the reason i use 498 is because i don't like a constant. It would require 83 tables. I'd rather do this instead.

player resistance / ( (caster level + (caster level * 5)) + player resistance )

Share this post


Link to post
Share on other sites
I'd rather see something besides a constant. Let's look at post #53

Using 510 as the constant. Resist should be 50.2439% Yet we clearly see 2 70% partial resists. There needs to be a cutoff here somewhere that makes us jump to the next 10% interval. So was it because the resist total exceeded 50.1%? I come up with these values for 1 70% resist.

50.10%=1 in 1,000

50.25%=1 in 400

50.50%=1 in 200

50.75%=1 in 133

51.00%=1 in 100

There were 2 partial resists though. The only way i can see the possibility of the 2 70% resists was if the assumed 510 constant is incorrect. If you lower the constant to say 498 it works out a to be 50.84%. Which makes a 70% resist chance become a 1 in 116 chance. Which models a bit closer to the 2 in 133 in the results. Now the reason i use 498 is because i don't like a constant. It would require 83 tables. I'd rather do this instead.

player resistance / ( (caster level + (caster level * 5)) + player resistance )

Random number generation is random... A 130 sample size is not enough to verify an exact chance and was not the goal of the test. The goal was to find the cutoff where 30% resists do not happen and 70% resists do.

As the post said... 505 has already been eliminated as too low and and this test eliminates 515 as too high. To actually verify the constant would require someone with exactly 510 resist and a very large sample size where neither 30% or 70% resists occur.

Like it or not, your 498 is just as much a constant as 510 is. No one is claiming to know why 510 is correct, but has been narrowed by actual testing. It also roughly follows the behavior of boss miss chance where the jump from 82 to 83 adds a different number (82*5 + 100).

Share this post


Link to post
Share on other sites
There were 2 partial resists though. The only way i can see the possibility of the 2 70% resists was if the assumed 510 constant is incorrect.

I'm confused here - in the case in post 53, if the 510 constant is correct, then wearing 515 resistance, 70% partial resists are possible. The sample size of 133 is fairly small - the fact that 2 occurred instead of 1 or 3 is just a matter of chance. If you're saying there should have been no more than 1 partial resist if the constant is 510, keep in mind the probability of seeing 2 or more over 133 samples is roughly 20%, so nothing terribly uncommon.

Either way it seems you're trying to find a formula that better matches this small set of 133 points. Keep in mind that there's a lot data throughout this thread, and cases with much larger sample sizes. More importantly though is that the appearance of certain partial resists at all wearing certain amounts of resistance has narrowed the constant to 506-514 already.

As Mijae said, whether we call it a "constant" or not, there is some single number that goes in the formula for an 83 boss, and a different number that goes in the formula for an 80 mob. It's 400 for an 80, and between 506-514 for an 83 - I don't know of any simple formula based on caster level that will yield these two numbers, other than to say it is 5*level until 83, when 100 is added. How this affects greater level differences or non-boss mobs, I have no clue, but it has no terribly important applications.

Share this post


Link to post
Share on other sites

I was actually trying to make 2 points.

1) First of all i'm not saying 510 is wrong. The number 510 just hasn't been determined. I think we all agree on this. Below 505 has not actually been ruled out. I did math every single result to verify. Basically let's say we have enough resistance to resist 50%. To determine the actual number we'd need to have a resist at 70%. We'd then need to lower our resist by 1 resist increments until we remove the 70% resist. We'd then need to get a resist at 30%. We'd then need too increase resist by 1 til we remove the 30% resists. This would give us the exact value needed. I know it's a long tedious process.

2) I'd like to be exact on the whole resistance math. Saying a L80 boss's spells are equivalent to 510 just doesn't do it for me. Again i'm not saying 510 is wrong. I'm saying i'd like math to show it as being right. I'd also like the math to work for all levels. Let's say i'm L60 and i decide to do Molten Core. But that i also want to achieve this with an all L60 or under group. What resistance do i now require for surviving a lava pack or Ragnaros for that matter. Has it changed for pre Wotlk stuff? I'd hazard a guess and say that it has.

So we need a formula that works. It probably needs to tell the difference between the casters level and the recipients level. Or it can just be a set value. Although i find it highly unlikely that it is a set value. So for a=example if we do this.

D=Difference between levels

Get "D"

if caster level > player level get "D"

caster level * 5 - player level * 4 = D

415 - 320 = 95

Add D to the previous equation

(caster level * 5) + D) = resistance

We then get 510 for a L83 boss if you are L80

if caster level > player level get "D"

Caster level * 5 - player level * 4 = D

83 * 5 - 80 * 4 = D

415 - 320 = 95

Adding D to your previous math

Average Resist = Resistance/(Constant+ Resistance)

So how to arrive at 510 or so for a L83 boss. Add caster base resist Cr

Caster level * 5 = Cr

So D = what for a given level if we're L80

L83 D=95

L82 D=90

L81 D=85

L80 D=0

add the new formula if it's even close to correct looks like this.

Base player resist = Pr (this is what shows on your paperdoll)

Base caster resist = Cr (Cl *5)

Caster level = Cl

Player level = Pl

Difference = D

If Cl > Pl Get D if Cl < or = Pl then D = 0

Cl * 5 - Pl * 4 = D

Resistance=Pr/(D+Cr+Pr)

Not even sure that i needed "if Cl < or = Pl then D = 0" as i only asked for D when Cl is above Pl.

Anyways this is only a loose theory on how to get the value of the "constant" It may be way off. It would be interesting to test it and confirm it versus some L81 and L82 mobs. I don't personally think it's correct as i expected quite lower numbers for mobs only 1 or 2 levels above you. Also i think Blizzards way to math it would be a bit simpler.

BTW that makes your constant look like this.

L83=510

L82=500

L81=490

L80=400

If we did it the way i showed in my last post it looks like this instead.

L83=498

L82=492

L81=486

L80=400

Not much difference really. Still i'd rather see numbers like this instead.

L83=511

L82=474

L81=437

L80=400

The question is how do we arrive at these numbers. That is the question i want an answer to and to which i'm speculating on.

Share this post


Link to post
Share on other sites

So we need a formula that works. It probably needs to tell the difference between the casters level and the recipients level. Or it can just be a set value. Although i find it highly unlikely that it is a set value. So for a=example if we do this.

D=Difference between levels

Get "D"

if caster level > player level get "D"

caster level * 5 - player level * 4 = D

415 - 320 = 95

...

Anyways this is only a loose theory on how to get the value of the "constant" It may be way off. It would be interesting to test it and confirm it versus some L81 and L82 mobs. I don't personally think it's correct as i expected quite lower numbers for mobs only 1 or 2 levels above you. Also i think Blizzards way to math it would be a bit simpler.

BTW that makes your constant look like this.

L83=510

L82=500

L81=490

L80=400

If we did it the way i showed in my last post it looks like this instead.

L83=498

L82=492

L81=486

L80=400

Not much difference really. Still i'd rather see numbers like this instead.

L83=511

L82=474

L81=437

L80=400

The question is how do we arrive at these numbers. That is the question i want an answer to and to which i'm speculating on.

I would find it very surprising if it worked like you speculated at the top. Most of the combat mechanics in the game produce very minor changes until the mob is 3 levels higher... hit chance, glancing blows, until LK crushing blows, etc. It's a check to curtail the killing of things much higher than the character's level while questing and gaining levels. It seems to have just sort of morphed into a boss tuning mechanic as well, by always defining their level as "character+3".

Since most mechanics in the game work in factors of 5 per level, it would be odd to have a factor of 4 for the resist system, especially when it would still just be a nonlinear munge for mob level > character level.

It's not that they can't do whatever they want for a mechanic that has clearly had an overhaul, but if the resist system is to follow the philosophy of the rest of the combat systems and start becoming more punitive at +3 levels, I would expect the usual +5 resist needed per level to persist until +2, and then to add in the +100 at that point for the +3 case. I'd actually be more curious what the +4 case looks like, not the +1 or +2 cases. +4s are notoriously hard to work with, though, since that pretty much requires alts below the level cap.

Share this post


Link to post
Share on other sites

It could just as easily be this where D = the following.

(Cl * 5 - Pl * 5) * 5 (Note * 5 at the end can be * 6 or * 7 or whatever fits the results of testing)

This makes it the following.

L83=75

L82=50

L81=25

L80=0

So the new theory would look like this.

Base player resist = Pr (this is what shows on your paperdoll)

Base caster resist = Cr (Cl *5)

Caster level = Cl

Player level = Pl

Difference = D

If Cl > Pl Get D if Cl < or = Pl then D = 0

[(Cl * 5) - (Pl * 5)] * 5 = D

Resistance=Pr/(D+Cr+Pr)

L83=490

L82=460

L81=430

L80=400

Hmm i must say i'm liking this one.

Change it to * 6 if you like.

L83=505

L82=470

L81=435

L80=400

Or * 7

L83=520

L82=480

L81=440

L80=400

Share this post


Link to post
Share on other sites

As far as gathering data, how useful would it be to potentially use Baron Geddon in MC? Could allow for a larger sample size, as well as building up toward a more relevant resistance to stack to actually be useful in content. (Fire resist vs Frost Resist).

Share this post


Link to post
Share on other sites

It'd probably be fine too, but Sapphiron provides a lot of data and it's something I can do in the course of a normal week without taking extra time out and having to grab a very bored healer. Unfortunately I missed last week's Sapph and someone pulled this week before I had the gear on, so it'll be a bit before I get any more data unless I happen to help out in a non-Undying 10 man.

Share this post


Link to post
Share on other sites

Also be aware that it's really how much damage you take and not how much you resist. For example post 6 clearly shows all observed values were lower than the predicted values. This does in fact make sense. Because it maths it based on damage taken all numbers are rounded up. This it turn will always make the actual amount resisted amount lower then the predicted amount. If it mathed it by figuring how much is resisted vs instead of how much damage you take the opposite would apply and the actual amount resisted would be higher than predicted. This explains especially why the 20% predicted value had an observed value of 19.5%. Make sense? Although tbh i think it should have been 19.75% /shrug

I'm noting this as it's important and needs to be included when trying to figure out this Constant we're talking about. The rounding up of numbers are a factor. This may only effect the results if you're at exactly 20%, 30%, 40% etc. etc. I'm not sure though.

Share this post


Link to post
Share on other sites

Anyone worked out the partial resist chance table of a boss against player spells?

Edit: Trying to work this out on my own doesn't give me values that make any sense.

Assuming a level 83's constant is 510, and they have 15 inherent resistance for being +3 levels from us. That puts them at 15/415 average resistance, or ~3.6%. That seems to more or less line up with WWS parses, but even full Naxx runs aren't enough casts to result in a stable number. And I've heard 6% thrown around as well, which seems to be what Rawr uses, but I have no idea where that comes from.

Plugging an AR value of 3.6% into the earlier formula, I get:

Chance of 10% resist = 0.5 - 2.5 * |0.1 - 0.036| = 34%

Chance of 20% resist = 0.5 - 2.5 * |0.2 - 0.036| = 9%

All other chances are negative, and thus 0.

But I don't see how those chances result in an overall resist value of 3.6%. If I'm losing 10% off my cast 34% of the time, that's a 3.4% damage reduction. Add a 20% damage reduction 9% of the time and the reduction considerably more than 3.6% total.

So...what am I missing? Pretty much everything in this thread is focused on partial resists of boss damage on players, not the other way around, so maybe I'm misunderstanding how the player-vs-boss stuff works.

Share this post


Link to post
Share on other sites

Hm wonder how this looks to get the constant.

Cl=Caster level

Pl=Player level

(Cl*5)*(1+(.075*(Cl-Pl)))

L83=508.375

L82=471.5

L81=435.375

L80=400

At least this matches the numbers i said i'd like to see in post #61. Although i had no math for it at the time. It was a decent guess as to what i think it should be. To recap what i thought the results should most closely resemble as below.

L83=511

L82=474

L81=437

L80=400

Some day we'll determine which way is the correct way to math the real results. At least i've lent a few ideas into how to get the results. Just wish i knew which one was right.

Share this post


Link to post
Share on other sites

Bumping and summarizing for those interested in Hodir in particular, or the various spell damage flying around in Ulduar.

For the Hodir tank (or offtank if you switch on Frozen Blows), 340 FrR will guarantee 30%, 40%, or 50% partial resists. 510 FrR will guarantee 40%, 50%, or 60% partial resists. To eliminate 40% resists, you'd need 765 FrR (which probably isn't practical unless you're swapping tanks).

Also to emphasize the importance of resistance auras/totems for raid/tank damage, an aura alone will guarantee 10%, 20%, or 30% partial resists, whereas just GOTW still leaves 0% resists possible.

Share this post


Link to post
Share on other sites

The original post had a chart that showed more precise numbers for certain levels of frost resist. Did that chart come down by mistake?

Also, I have a question about the following calculation concerning the probability of partial resists.

P(x) = 0.5 - 2.5 * (x - R/CR)

R = Resistance

C = Constant

x = 0.10*n where n is an integer

What/which integer is the OP referring to?

Share this post


Link to post
Share on other sites

The OP is refering to a probability distribution. To use P(x) = .5 - 2.5 * (x - R/(C+R)) you would pick a value of x that you want to find the probability for and plug that into the equation. For example, to find the probability of getting a 30% resist with 219 resistance against a boss (assuming the 510 constant is correct), we'd plug in .3 for x 510 for C and 219 for R, giving us .501.

You can choose to use any integer for n that you want to find the probability of. Not all values will give useful results however. If you put in 11 (ie. the probability of getting a 110% resist), you get a -150% probability. Negative probability is non-sensical, so we can treat this as 0. Some realistic values for n will still give you impossible probabilities. With 400 resistance the chance of getting a 10% resist is calculated as 135%, which translates to a 100% chance of getting at least 10% resist.

Additionally, by forcing n to be an integer, they are preventing calculations of the probability of 25% resists, since they can't happen anymore.

Share this post


Link to post
Share on other sites
Some realistic values for n will still give you impossible probabilities. With 400 resistance the chance of getting a 10% resist is calculated as 135%, which translates to a 100% chance of getting at least 10% resist.

You got the formula wrong.

P(x) = 0.5 - 2.5 * |x - R/(c + R)| , where | ... |denotes absolute value.

For R = 400 and x= 0.1 as in your example the formula calculates P(0.1)=0.5-2.5*(400/(400+510)-0.1)=-0.35 and is discarded.

Share this post


Link to post
Share on other sites

  • Recently Browsing   0 members

    No registered users viewing this page.