Talk:Dodge

From Warcraft Wiki
Jump to navigation Jump to search

Editing Discussion

Mercilessly trashed my previous contribution, recognizing its lack of value and the confusion it adds to the gathering of additional observations. Added some clarification to Miguillo's text, as well as headings to make the table of contents more useful.

Hrocdol 21:22, 9 August 2007 (UTC)

Though I agree that the formula for dodge rating contribution should be copied over here from Combat Rating System, it seems odd to me to use a table for it since it's only a single value. How about instead making a small header that goes over how to do "dodge rating/(246/13) = dodge% ? (246/13 = 18 12/13, the exact value for the conversion) --Tejing 21:27, 10 August 2007 (UTC)
I do agree that a table seems awkward, but I wanted it to have a similar formatting separation from the bulk text of the page, so that it would stand out similar to the agi-per-dodge values. Does that make sense? Just trying to make the hard numbers highly visible and accessible.
I think the next thing that would make sense is to get the old level 60 values (that 'patch 1.12' table) off the front page, or at least pushed down to a 'historical information' section.
--Hrocdol 18:03, 13 August 2007 (UTC)
Agreed about the level 60 values. Let's get that away from the top of the page so people glancing over it don't think it's current. Also, at least temporarily, I think we can agree to the idea of putting dodge rating in the same table as the agility values, as another column. It wouldn't cause so much blank space on the page that way. Although the number would be repeated 9 times. Going to go ahead and do these 2 things --Tejing 23:34, 14 August 2007 (UTC)
Beautiful. I think I'll have a couple 70 mage data points tomorrow night. Cheers! -- Hrocdol 05:34, 16 August 2007 (UTC)
Ok, so it wasn't tomorrow night, but I got the mage info added, and stripped off the OOD template. --Hrocdol 23:09, 22 August 2007 (UTC)

Gathering Observations

To gather highly accurate observations (and thereby make more accurate formula) please post your dodge chance with full precision by using this little piece of code /script _,temp1=UnitStat("player",2);_,temp2=UnitClass("player"); DEFAULT_CHAT_FRAME:AddMessage("|"..temp2.."||"..UnitLevel("player").."||"..GetDodgeChance().."||"..temp1.. "||"..GetCombatRating(CR_DEFENSE_SKILL).."||"..GetCombatRating(CR_DODGE));

How to contribute observations needed to calculate agi per dodge:

  1. exec this piece of code and post resulting line below (Prat give a way to copy paste if you are lazy like I'm)
  2. remove a piece of equipment with agi (and no def or dodge)
  3. exec again this piece of code and post resulting line below

You can repeat this process as wanted (but shouldn't be useful as precision is so high)

--Miguillo 05:33, 27 February 2007 (EST)

Note: This data can't be used to calculate base dodge directly as they're are not always made at max def (i.e. the base def of a level 30 hunter is usually not at 150 since his pet is tanking, if he is a good hunter). The purpose of this data is to determine the agi/dodge. Once this known, base dodge is trivial to find.

Note 2: I cannot add the base def to this script because it reached the max length for a one-liner. The purpose of the def rating in this formula it to be sure that the contributor didn't change any other dodge modifier than the agility.

Note 3: If you don't understand what this script does, you should consider it unsafe. While the author is confident in its harmlessness, this is an open forum, and modifications can be made by anyone.

--Miguillo 12:45, 1 March 2007 (EST)

clarified some phrases and grammar - Hrocdol 21:22, 9 August 2007 (UTC)
added a couple of (I think) syntactically insignificant spaces in the code to let it break across lines gracefully to add readability. - Hrocdol 16:25, 27 August 2007 (UTC)

Observed Values

Dodge regression table
class level %dodge Agility Defense rating Dodge rating Contributor
PALADIN 2 5,2129998207092 23 0 0 --Miguillo 07:49, 27 February 2007 (EST)
DRUID 70 19,08614730835 273 46 12 --Miguillo 07:49, 27 February 2007 (EST)
DRUID 70 17,658145904541 252 46 12 --Miguillo 07:49, 27 February 2007 (EST)
DRUID 70 15,890147209167 226 46 12 --Miguillo 08:04, 27 February 2007 (EST)
DRUID 70 17,318145751953 247 46 12 --Miguillo 08:04, 27 February 2007 (EST)
HUNTER 30 4,3854007720947 99 0 0 --Miguillo 08:28, 27 February 2007 (EST)
HUNTER 30 3,9670004844666 95 0 0 --Miguillo 08:28, 27 February 2007 (EST)
HUNTER 30 3,1302003860474 87 0 0 --Miguillo 08:28, 27 February 2007 (EST)
WARLOCK 30 5,0485997200012 39 0 0 --Miguillo 05:02, 28 February 2007 (EST)
WARLOCK 30 4,8838000297546 37 0 0 --Miguillo 05:02, 28 February 2007 (EST)
WARLOCK 30 4,7189998626709 35 0 0 --Miguillo 05:02, 28 February 2007 (EST)
HUNTER 31 4,3099999427795 100 0 0 --Miguillo 09:45, 28 February 2007 (EST)
HUNTER 31 3,4939997196198 92 0 0 --Miguillo 09:45, 28 February 2007 (EST)
HUNTER 31 2,8819999694824 86 0 0 --Miguillo 09:45, 28 February 2007 (EST)
PALADIN 11 5,2673001289368 27 0 0 --Miguillo 10:06, 7 March 2007 (EST)
PALADIN 11 4,3977999687195 22 0 0 --Miguillo 10:06, 7 March 2007 (EST)
DRUID 70 2,6159999370575 66 0 0 --Taleden 17:25, 22 March 2007 (CDT)
DRUID 70 4,3159999847412 91 0 0 --Taleden 17:25, 22 March 2007 (CDT)
DRUID 70 7,1039996147156 132 0 0 --Taleden 17:25, 22 March 2007 (CDT)
DRUID 70 8.1239995956421 147 0 0 --Taleden 17:25, 22 March 2007 (CDT)
DRUID 70 8,9400005340576 159 0 0 --Taleden 17:25, 22 March 2007 (CDT)
DRUID 70 10,776000022888 186 0 0 --Taleden 17:25, 22 March 2007 (CDT)
DRUID 70 12,407999992371 210 0 0 --Taleden 17:25, 22 March 2007 (CDT)
DRUID 70 13,223999977112 222 0 0 --Taleden 17:25, 22 March 2007 (CDT)
PALADIN 70 3.7320000648499 77 0 0 --Yozozo 22:25, 11 May 2007 (EDT)
PALADIN 70 5.891999912262 131 0 0 --Yozozo 22:25, 11 May 2007 (EDT)
DRUID 70 35.257755279541 515 0 21 (night elf)--Tejing 18:56, 27 July 2007 (UTC)
DRUID 70 30.905755996704 451 0 21 (night elf)--Tejing 18:56, 27 July 2007 (UTC)
DRUID 70 30.225757598877 441 0 21 (night elf)--Tejing 18:56, 27 July 2007 (UTC)
DRUID 70 27.097755432129 395 0 21 (night elf)--Tejing 18:56, 27 July 2007 (UTC)
DRUID 70 24.989755630493 364 0 21 (night elf)--Tejing 18:56, 27 July 2007 (UTC)
DRUID 70 21.997755050659 320 0 21 (night elf)--Tejing 18:56, 27 July 2007 (UTC)
DRUID 70 20.433755874634 297 0 21 (night elf)--Tejing 18:56, 27 July 2007 (UTC)
DRUID 70 18.461755752563 268 0 21 (night elf)--Tejing 18:56, 27 July 2007 (UTC)
DRUID 70 17.4417552948 253 0 21 (night elf)--Tejing 18:56, 27 July 2007 (UTC)
DRUID 70 16.285757064819 236 0 21 (night elf)--Tejing 18:56, 27 July 2007 (UTC)
DRUID 70 13.497756004333 195 0 21 (night elf)--Tejing 18:56, 27 July 2007 (UTC)
DRUID 70 11.253755569458 162 0 21 (night elf)--Tejing 18:56, 27 July 2007 (UTC)
DRUID 70 8.3760004043579 136 0 0 (night elf)--Tejing 18:56, 27 July 2007 (UTC)
DRUID 70 4.3640003204346 77 0 0 (night elf)--Tejing 18:56, 27 July 2007 (UTC)
MAGE 70 5.1375002861023 42 0 0 --Hrocdol 22:58, 22 August 2007 (UTC)
MAGE 70 6.5374999046326 77 0 0 --Hrocdol 22:58, 22 August 2007 (UTC)

Calculated Values

Agility needed for 1% dodge
Level Druid Hunter Mage Paladin Priest Rogue Shaman Warlock Warrior
70 14.7059 ? 25 25 ? 20 ? ? 30
31 ? 9.8039 ? ? ? ? ? ? ?
30 ? 9.5602 ? ? ? ? ? 12.1359 ?
template line ? ? ? ? ? ? ? ? ?

It seams that 4 decimals are sufficient (after it is only floating point precision differences)

another thing that will cause issues for this table is the night elf 1% dodge racial. my contribution is from a night elf druid, so I noted that in the contributor column. --Tejing 18:56, 27 July 2007 (UTC)

Older Discussion

>Class Modifier = 14.5 (Rogue), 26.5 (Hunter), 20 (everyone else) >Dodge% = contibution from items + contribution from talents + ((Defense skill - mob level * 5) * 0.04) + (AGI / Class Modifier)

I don't think this is entirely correct. I'm a shaman and this formula does not add up.

My tooltip hover over Dodge says I have 8.40%, CTProfiles calculates it at 8.37%.

I have +1% dodge from items. Shaman have no +dodge talents. My defence skill is 308. My agility is 106.

1 + 0 + (308-60*5) * 0.04 + 106/20 = 6.62

So almost 2% chance to dodge has gone unaccounted for.

If I swap an item out and check that my dodge does not change. Then replace the item with one that gives an extra +10 agility.

My new dodge is 8.91%. If the agility class modifier for shaman was 20 I would expect the new value to be 8.9. It's obviously not exactly 20, but something close.

If I remove all items that give agility down to my base of 57 my new dodge is 5.92%. Using the formula described it should be 4.17%. The agility class modified is definitely not 20. I don't think it scales linearly.

I found that there's another value that was not included in the formula : base dodge (which strictly depends on the class). I'll post about that shortly.
--Dorenthas 19:43, 13 September 2006 (EDT)
The value I came up with by questioning a Shaman was 1.75%, and it works with you as well: the tooltip says 8.40%, adding up would be 6.62 + 1.75 = 8.37, which is exactly what CTProfiles calculates. The difference between 8.40 and 8.37 might be because WoW rounds some of the values during the calculations, or because the Class Modifier might not be exactly 20. And if you remove all items that give agility, like you said, your new dodge is 5.92%, which is equal to the 4.17% you calculated plus the shaman base dodge of 1.75% that was missing from the formula.
--Dorenthas 09:51, 14 September 2006 (EDT)

crit's being dodged

I have seen crits dodged before. such as a rogue using coldblood which is a 100%crit. My guess is that a crit% will over-ride dodge to a certain unpassable point. Example: If your enemy has a 20% dodge rate and you have a 20% crit rate they're both small enough %'s to where it would be possible for your enemy to keep a 20% dodge. With a 100% crit rate your enemy might end up with the hypothetical bottomed out dodge% of 1% making it appear as if crit's can't be dodged when infact they can.

--- This is simply because for every hit you first consider miss chance, then dodge, then parry, then block, then glancing blow (if a mob +3 levels) and then crit is taken out of any hit chance left. Thus, yes, any crit can be dodged because it has to get past the damage mitigation possibilities first. Cold Blood is 100% crit (IF you hit), not 100% chance to hit.

NB: I know WoW is table based, but the above is still conceptually correct, even if there's not actually an if-then-else system. --Athan 08:51, 19 July 2006 (EDT)


I'm going to go ahead and revert the last change, as User:Crazyguy co is contradicting himself. WoW being table-based exactly explains what's going on with Cold Blood crits being dodged/parried.

  1. Wow works out the %age chance of: Miss, Dodge, Parry, Block, Glancing Blow, Normal Hit, Crit
  2. WoW rolls d100, then looks up in the value against #1 to decide the outcome.
  3. If it's Cold Blood then all the Hit gets converted to extra Crit

Thus indeed a Cold Blood can be dodged/parried/blocked, but that's simply because Hit and Crit chance can never eat up any of the chance for those damage mitigating abilities, they're considered 'first' so always get their share of the d100 roll.

Admittedly this is the same as if you do an if-then-else in the order I gave, but that's the point, it's *the same*. The coder gets the choice of either starting with 100% hit, then taking off the mitigation in order, then finally the crit, checking for going negative at any point, to ensure 100% total, then do a d100 roll, or doing if-then-else as you go along and keeping track then, to again ensure 100% total.

Either way User:Crazyguy co's edit was irrelevant.

--Athan 04:52, 27 July 2006 (EDT)

I agree. I believe that the Cold Blood tooltip is misleading, in that it does NOT guarantee that you hit in the first place. With WoW combat being a table-based system, the only way to ensure that Cold Blood's description of increasing the "critical strike chance (...) by 100%" does not also make it an automatic hit is to use the calculated combat table without changing anything, except that if Cold Blood is activated when calculating the damage of any Backstab, etc., the damage is calculated as a crit instead of a hit. One might wonder, though, if Block is also considered a Crit event instead.
It would have been clearer if, in the first place, the tooltip specified something along the lines that " the next Sinister Strike, Backstab, Ambush or Eviscerate that hits is a critical strike".
--Dorenthas 18:20, 13 September 2006 (EDT)

Notes and corrections

There were some anonymous "Notes" at the bottom of the article that I feel did not really belong there. I've moved them here to keep trace of them, but perhaps they could simply be removed. Just in case, here they are, in italics.

(Note: There was some incorrect information about how Dodge worked here. WoW uses a table based combat system, not a "if-then-elseif" system. I removed it and added the correct information above. Thanks to the Warrior community for much of this information.)
(Note: I'm confirming the Dodge calculation above. I'm sure all of the parts present are correct, just verifying that there are no modifiers or class specific differences).

As for corrections, there's a crucial one I made: the formula was missing a "Base Dodge" value, which depends on the class. I discovered that while playing around with numbers and calculating things for my lvl 60 rogue and lvl 60 paladins. The figures were alright with my rogue (of course, since Base Rogue Dodge is 0%!), but really didn't add up correctly with my paladin. Then I realized that my paladin seemed to have 0.75% Dodge "too much". After consulting various guildmates playing different race/class combinations, I concluded that there was indeed a "Base Dodge" value which didn't depend at all on the race (we already know that night elves have +1% and the rest, +0%).

At the time, I didn't have any hunter guildmate online, and since it is a pre-expansion Alliance guild, I didn't have any Shaman readily available to help me with these calculations either. I'll try to fill in the table ASAP, though.

--Dorenthas 20:57, 13 September 2006 (EDT)

EDIT: I've completed the table, but I'm not completely certain of the values I put as "Base Dodge", especially the Hunter value. I'd like someone to double-check them. Also, the Shaman value I got was actually 1.74, not 1.75. The shaman I questioned had 50 agility, 300 defense and no other dodge bonus, for a total of 4.24% dodge. It's pretty straightforward then with an AGI:Dodge ratio of 20 that the base value SHOULD be 1.74, but my intuition tells me that 1.75 is correct, and that the inexact 1.74 comes in fact from 20 being an approximation, not an exact value.

Feel free to comment/complete/alter whatever I've written so far.

--Dorenthas 22:03, 13 September 2006 (EDT)

Beaze's change (Nov 30)

Beaza changed values I personally verified with awkward values, and directly contradicted various blue statements from forums over the past two years (among others), including things that can be observed like : each point of Defense increases Block, Parry, Dodge, and Miss chance against you by 0.04% (Beaza says 0.01%), or that WoW combat is table-based (Beaza says it's an if-then-else system).

Beaza, who has no contribution before today (no Wowwiki history) has modified today (or is MODIFYING right now) every combat-related article to show his/her view. I consider this vandalism, as he/she does not back ANY CHANGE in the Discussions but merely inputs data which may be, as far as I know, arbitrary and/or incorrect.

At the very least, I expect explanation for these changes. --Dorenthas 14:28, 30 November 2006 (EST)

Well, I checked Beaza's other modifications and they didn't seemed as random as I first thought (except one entry, which states that the Combat system is a series of "if then else", which it probably isn't - but that may have been said just so it's clear which event takes precedence over what). However, the values changed in the formulas of THIS article STILL seem completely random, and the statement about Defense (regarding its effect in increments of 0.01%) is applicable to mobs' Defense skill, not players' Defense skill. This was unclear in the modifications to this article, but it was stated more obviously in another modification from Beaza.
I apologize for the quick accusations of vandalism, Beaza.
--Dorenthas 14:40, 30 November 2006 (EST)
I did not intend to suggest an if-then relationship. It IS a table. I fixed that reference you saw to make it clear it's a table.
--Beaza 14:25, 30 November 2006 (PST)
Thanks for replying! But something's not just right.
Night Elf Rogue, level 60, +5% Dodge through talents, +1% through race, nothing through items, 300/300 Defense.
  1. At 135 Agi (naked, unbuffed), you say I should get -0.59 + (135/14.08) + 6 = 14.998. I say I should get something closer to 0 + (135/14.5) + 6 = 15.31. The tooltip displays 15.32. Deltas are -0.322, -.01.
  2. At 257 Agi (half naked, unbuffed, no +Dodge item), you say I should get -0.59 + (257/14.08) + 6 = 23.663. I say I should get something closer to 0 + (257/14.5) + 6 = 23.724. The tooltip displays 23.73. Deltas are -0.067, -.006.
  3. At 351 Agi (fully dressed, unbuffed, no +Dodge item), you say I should get -0.59 + (351/14.08) + 6 = 30.339. I say I should get something closer to 0 + (351/14.5) + 6 = 30.207. The tooltip displays 30.22. Deltas are 0.119, -.013.
It appears I don't have the exact values... but neither do you, unless I'm missing something. And unlike mine, which are all below the real value around a 0.01 delta, your 14.08 ratio makes the calculated value go from lower than tooltip value to higher than tooltip value as agi increases.
Similar testing with my paladin showed that the exact values are halfway between your values and mine. Again, not good for your case that your values don't work... So, any explanation?
(BTW, whenever I refer to "tooltips", I mean in 1.12. Are you referring to the Beta?)
First, just to make sure we're doing the same math:
chance = base by class (-0.0059 for a rogue) + factor by class and level (0.00071 for a 60 rogue) * AGI
if the target is a mob level 10+ then chance += 0.001 * rating difference (below level 10 mobs dodge less so that combat is not as random)
else target is not a mob so chance += 0.0004 * rating difference
Finally +% dodge mods are applied.
Pre-expansion values appear to be 0 base and 0.000689655172413793 per AGI. Pre-BC is therefore 0 + 135 * 0.00068... = 15.3103448275862% dodge.
After BC the values change and are currently -0.0059 + 135 * 0.00071 = 14.995% dodge.
--Beaza 14:51, 30 November 2006 (PST)
P.S. Here are the 1.12 numbers for base dodge:
Rogue 0.0%
Druid 0.9%
Hunter 0.0%
Mage 3.2%
Paladin 0.7%
Priest 3.0%
Shaman 1.7%
Warlock 2.0%
Warrior 0.0%
Now dodge per AGI:
Rogue 0.000689655 i.e. 14.5 AGI per 1%
Druid 0.0005 i.e. 20 AGI per 1%
Hunter 0.000377358 i.e. 26.5 AGI per 1%
Mage 0.000514286 i.e. 19.44444444 AGI per 1%
Paladin 0.000505882 i.e. 19.76744186 AGI per 1%
Priest 0.0005 i.e. 20 AGI per 1%
Shaman 0.000507692 i.e. 19.6969697 AGI per 1%
Warlock 0.0005 i.e. 20 AGI per 1%
Warrior 0.0005 i.e. 20 AGI per 1%
I thought it was Blizzard policy not to give these numbers out? We've seen limited information posted on the forums by blues, but generally they've been very reluctant to give this kind of detail... --Karrion 19:15, 30 November 2006 (EST)
(Karrion, you have a point. Beaza is not an official voice. Blizzard's policy is to make great games and support the community as much as possible, but this information is unofficial and subject to change at any time. Treat it as such.)
Thanks for clearing up the confusion :) (BTW, little hint: when discussing, avoid erasing what other people say, even when replying to a question ;) It helps to know what was asked when reading the answer! I restored Karrion's comment for you.) I'll take the 1.12 info and update the article with it, and offer the TBC info as "information to be confirmed when TBC is released".
Ugh, and don't forget to sign >.> --Dorenthas 22:26, 30 November 2006 (EST)

So do we even care about dodge for level 60 now? Kohist just made a change that is incorrect. He changed the chart that shows level 60 Paladin dodge from AGI to reflect the level 70 value. The chart was right for level 60, so his change is incorrect, but if we want the chart to be for level 70 now then his change is correct. In fact the chart is simple for level 70. All classes are 25 AGI per 1% dodge except warrior (30) and druid (14.7) and rogue (20) as far as I know. Also note there is a dodge rating of around 18.9 rating per 1% dodge, and all classes have a base dodge value ranging from under -5% to over +3% based on if they are a high AGI class or not.

--Beaza 10:52, 27 February 2007 (PST)

As of now, it looks like dodge on my 32 Night Elf Druid is 6.8 AGI / dodge. This is way off the 11.93 posted on the main page.

Patch level is ... 2.0.9. ( I believe - posting this as of March 6, 2007 which is release date for 2.0.10, and I made these measurements a few nights ago)

Base stats are

|DRUID|32|5.1483998298645|42|0|0

Unbuffed, naked. Added various pieces with +agi and measured. Results below.

So, highest %dodge = 9.973 - lowest dodge 5.1484 = 4.8246

Change in AGI = 75 - 42 = 33

4.8246 / 33 = 0.1462 % dodge / point of AGI

1 / 0.1462 = 6.8 AGI / %dodge

|class|lvl| %dodge |agi|defense | dodge

|DRUID|32|5.1483998298645|42|0|0

|DRUID|32|5.7332000732422|46|0|0

|DRUID|32|6.3179998397827|50|0|0

|DRUID|32|7.3413996696472|57|0|0

|DRUID|32|8.0723991394043|62|0|0

|DRUID|32|8.6571998596191|66|0|0

|DRUID|32|9.6806001663208|73|0|0

|DRUID|32|9.9729995727539|75|0|0

--Mazda Corolla 11:16, 6 March 2007 (MST)

May I save you some time with your 32 druid?

Dodge% = AGI * 0.1462% + 0.04% * (DEF - MLVL * 5) - 1.872%

When you get to level 70 it'll be:

Dodge% = AGI * 0.068% + 0.04% * (DEF - MLVL * 5) - 1.872%

--Beaza 09:16, 8 March 2007 (PST)

Dodge data for 70 druids and warriors

I've been developing an exact combat simulation spreadsheet to help me choose gear for my Druid tank, and this has included a lot of research on dodge%. I'll be submitting my data to the wiki as time permits, but this is my first contribution.

My first suggestion is to always compute ratios as 'dodge/agility' rather than 'agility/dodge'. When I first started collecting data I kept doing the former, but the numbers were never consistent past a few decimal places. When I started computing 'dodge/agility' instead, all of a sudden every data point was identical to 4 decimal places, then followed by at least 3 0's or 9's in a row; to me this screams floating point precision error. I'm guessing this is because, internally, the game actually does have a constant that it multiplies your agility by, rather than dividing.

Anyway, to the best of my research and data, these are the exact numbers for warriors and druids at level 70:

DRUID base dodge -1.872%, dodge per agility 0.0680
WARRIOR base dodge +0.758%, dodge per agility 0.0333

(edit 3/24/07: I goofed my data on warrior dodge and wasn't accounting for 0.8% dodge via 5/5 Anticipation, so my warrior base dodge constant was 0.8% too high; the correct value is 0.758, not 1.558)

--Taleden 16:06, 22 March 2007 (EDT)

Druid Feral Dodge

I did some tests on my druid and I can confirm that in Cat and Bear form, the base chance to dodge is -1.87%, and each point of agility adds 0.0680% chance to dodge. The numbers are different in caster form.

Dodge data for 70 Paladins

Adding my computations to Paladins here. I was talented for +20 defence, so I manually subtracted .8% from dodge to get the following results

|PALADIN||70||3.7320000648499||77||0||0||

Human Pally Agi 77 + 0 Equiped Terokk's Quill for +54 Agi

|PALADIN||70||5.891999912262||131||0||0||

Subtracting the two gives: 2.159999847 Divide by 54 It takes 25.00000177 agi to equal 1% dodge, or 1 agi = 0.0399999972 dodge

Which means a Paladin's base dodge is +0.652%

So, to figure out your total dodge as a paladin it is

=0.652+(Agi/25) +(Dodge Rating/18.923078536987)+(Defense *0.04)


Yozozo 22:25, 11 May 2007 (EDT)

Low level char dodge calculations.

I did some investigations for low level characters and recorded dodge rating for different classes and races. It shows that the dodge calculation for lvl 1-9 differs significantly from higher lvl characters. All dodge values have been read from the tool tip and recalculated to the value it would have had with max defense for the given lvl. All tests are made with WoW version 2.1.x

A human warrior have a consistent dodge rating of 5% through out lvl 1-6. While levelling, the only source of fluctuation was due to varying defense, which has been compensated for.
Human Warrior:
lvl: Dodge : Agi
1 : 5% : 20
2 : 5% : 21
3 : 5% : 21
4 : 5% : 22
5 : 5% : 23
6 : 5% : 24
However, playing another race gives significantly different result. A night elf warrior have the following dodge values:

Nelf Warrior
lvl: Dodge: Agi
1 : 7,06% : 25
2 : 7,01% : 26
3 : 7,01% : 26
4 : 6,96% : 27
5 : 6,92% : 28
6 : 6,89% : 29
7 : 6,89% : 29

And a night elf druid have:
lvl: Dodge : Agi
1 : 7,72% : 25
2 : 7,72% : 25
3 : 7,64% : 26
4 : 7,64% : 26
5 : 7,56% : 27
6 : 7,56% : 27
7 : 7,49% : 28
8 : 7,49% : 28
9 : 7,43% : 29

Also played this char to lvl 11, showing significantly different values for lvl 10 and above
10: 6,79% : 30
11: 6,80% : 31

Same for a tauren druid:
1 : 3,28% : 15
2 : 3,28% : 15
3 : 3,36% : 16
4 : 3,36% : 16
5 : 3,44% : 17
6 : 3,44% : 17

Some comments. Even though AGI increases, the Nelf dodge value decreases which is counterintuitive. Still the Tauren case show the expected increase in dodge vs Agi.

Will present a theory which fit these values but is not supported in any other way. I assume there is a base dodge value of 5% (6% for Nelf racial passive). For the first 10 lvls, The base value is then modified by the following formula:

dodge = base_dodge + (lvl_1_Agi - 20) / (class_Agi_per_dodge * (Agi - 5))

Here we have:
dodge  : Actual dodge value shown in tooltip compensated for defense.
lvl_1_Agi: The agility the character has as lvl 1.
class_agi_per_dodge: A constant for the class.
Agi: Current Agi for the character.

Using Agi_per_dodge value of 14,55 for druids and 23,57 for warriors will explain these dodge values down to 0,01% which is within rounding error. Also note that the Agi_per_dodge values are very much like the values used for lvl 70 to determine how much Agi is needed to increase dodge.

For example, our Nelf dodge value at lvl 4, defense 20 would be calculated as:

6% + (25 - 20) / (14,55 * (26 - 5)) = 6% + 5 / 305,55 = 6% + 1,64% = 7,64%

which is the value observed during gameplay.

Can also observe that the -20 constant is the same as the lvl 1 human Agi. Also that within a class the Stat increases happens at the same lvls. This probably means all characters receive the same amount stat increase within a single class. The data is to small to support that conclusion though.

--Caturix 13:13, 9 June 2007 (UTC)

Level 70 Hunter data

I have the following data, rounded to two decimal places

14.47% Dodge, 423 Agility, 0 Defense, 0 Dodge Rating
13.75% Dodge, 405 Agility, 0 Defense, 0 Dodge Rating
17.71% Dodge, 504 Agility, 0 Defense, 0 Dodge Rating
12.91% Dodge, 384 Agility, 0 Defense, 0 Dodge Rating
17.71% dodge - 12.91% dodge = 4.8% dodge
504 agi - 384 agi = 120 agi
120 agi / 4.8% dodge = 25 agi / 1% dodge
384 agi / (25 agi / 1% dodge) = 15.36% dodge
12.91% dodge - 15.36% dodge = -2.45% dodge

Therefore, a level 70 hunter has a negative 2.45% base dodge, and needs exactly 25 points of agility per 1 percent dodge chance.

This doesn't seem to be completely accurate. Based on data from WoWArmory, it looks more like -5.45%. The above data seems consistent with having 3/3 Catlike Reflexes. Ra1330 23:42, 4 September 2007 (UTC)

Level 70 dodge data for all classes

Constructed and calculated from data gathered on the 2.2 test realm server. Raw data can be viewed at http://spreadsheets.google.com/pub?key=pyBRMg7Prg27lugqWdymNNA

Level 70 dodge data for all classes.
Class Base dodge AGI:Dodge ratio Dodge Rating:Dodge ratio
Druid -1.87% 14.7059 18.9231
Hunter -5.45% 25 18.9231
Mage 3.45% 25 18.9231
Paladin 0.65% 25 18.9231
Priest 3.18% 25 18.9231
Rogue -0.59% 20 18.9231
Shaman 1.67% 25 18.9231
Warlock 2.03% 25 18.9231
Warrior 0.75% 30 18.9231

Avagro 21:55, 14 September 2007 (UTC)

New formulas

This is a direct quote from the RatingBuster addon documentation. This needs to be incorporated into the calculation part of the article:

Avoidance diminishing returns

This includes:

  1. Dodge from Dodge Rating, Defense Rating, Agility.
  2. Parry from Parry Rating, Defense Rating.
  3. Chance to be missed from Defense Rating.



The following is the result of hours of work gathering data from beta servers and then spending even more time running multiple regression analysis on the data.

  1. DR for Dodge, Parry, Missed are calculated separately.
  2. Base avoidances are not affected by DR, (Ex: Dodge from base Agility)
  3. Death Knight's Parry from base Strength is affected by DR, base for parry is 5%.
  4. Direct percentage gains from talents and spells(ex: [Evasion]) are not affected by DR.
  5. c and k values depend on class but does not change with level.



Avoidance DR formula and x,Cp,Cd, constants derived by Whitetooth (hotdogee [at] gmail [dot] com)

  • The DR formula: 1x=1c+kx



  • x= diminished stat before converting to IEEE754.
  • x= stat before diminishing returns.
  • c= cap of the stat, and changes with class.
  • k= value that changes with class.



Class k Cp 1Cp Cd 1Cd Cm
Warrior 0.9560 47.003525 0.021275 88.129021 0.011347 16
Paladin 0.9560 47.003525 0.021275 88.129021 0.011347 16
Hunter 0.9880 145.560408 0.006870 145.560408 0.006870
Rogue 0.9880 145.560408 0.006870 145.560408 0.006870
Priest 0.9530 0 0 150.375940 0.006650
Deathknight 0.9560 47.003525 0.021275 88.129021 0.011347 16
Shaman 0.9880 145.560408 0.006870 145.560408 0.006870
Mage 0.9530 0 0 150.375940 0.006650
Warlock 0.9530 0 0 150.375940 0.006650
Druid 0.9720 0 0 116.890707 0.008555
Class Lv80 Dodge/Agi Lv80 Agi/1%Dodge Base Agi
Warrior 0.013600 73.52941176 3.463600
Paladin 0.019200 52.08333333 3.268500
Hunter 0.013300 75.18796992 -5.450000
Rogue 0.024100 41.49377593 -0.590000
Priest 0.019200 52.08333333 3.183000
Deathknight 0.013600 73.52941176 0.758000
Shaman 0.019200 52.08333333 1.675000
Mage 0.019500 51.28205128 3.457500
Warlock 0.019200 52.08333333 2.035000
Druid 0.024000 41.66666667 4.951000

...

Think very hard

After some creative thinking, this is what I got:

  • Percentage = RatingF*H
  • Lv 8 to 60: 1H=152*Level852
  • Lv 60 to 70: H=382*Level+13141
Ability F =
Weapon Skill 2.5
Expertise 2.5
Defense 1.5
Dodge 12.0
Parry 15.0
Block 5.0
Hit 10.0
Crit 14.0
Haste 10.0
Spell Hit 8.0
Spell Crit 14.0
Spell Haste 10.0
Resilience 25.0
This formula is correct to the 13th decimal place, so I'm 100% sure this is what blizzard uses.

Stat Conversion Data for Reference

Combat rating needed for 1 point of stat
Level Dodge
1 6
2 6
3 6
4 6
5 6
6 6
7 6
8 6
9 6
10 6
11 6
12 6
13 6
14 6
15 6
16 6
17 6
18 6
19 6
20 6
21 6
22 6
23 6
24 6
25 6
26 6
27 6
28 6
29 6
30 6
31 6
32 6
33 6
34 6
35 6.23
36 6.46
37 6.69
38 6.92
39 7.15
40 7.38
41 7.62
42 7.85
43 8.08
44 8.31
45 8.54
46 8.77
47 9
48 9.23
49 9.46
50 9.69
51 9.92
52 10.15
53 10.38
54 10.62
55 10.85
56 11.08
57 11.31
58 11.54
59 11.77
60 12
61 12.46
62 12.95
63 13.48
64 14.06
65 14.69
66 15.38
67 16.13
68 16.97
69 17.89
70 18.92
71 20.36
72 21.91
73 23.57
74 25.36
75 27.29
76 29.36
77 31.59
78 33.99
79 36.57
80 39.35

As a side note, Cd refers to the constant for dodge (d), and similarly for Cp and Cm (p is parry and m is miss chance).

I can also personally vouch for the DR formula for paladins - I've verified it in the game and it is accurate.

Hopefully I'll be updating the main space articles soon. If I'm not fast enough, please feel free to use this information to help me with this process. /chomp‎ Howbizr(t·c) 9:48 AM, 5 Jun 2009 (EDT)

Modified to use TeX markup. /chomp‎ Howbizr(t·c) 1:29 PM, 5 Jun 2009 (EDT)

Stuff from unmerged talk page

Upcoming Changes for 3.0 and/or Wrath

I was just checking on the PTR with my Night Elf druid, and got the following numbers. I have no dodge rating, and no defense rating was involved on the gear I was experimenting with.

I used the macro from Talk:Formulas:Dodge to get more exact dodge chance numbers than the tooltip gives.

42.860145568848 dodge at 741 agi

35.747329711914 dodge at 602 agi

22.829992294312 dodge at 350 agi

From this, I can calculate that I'm getting something like 19.52 dodge per agi (might be some slight rounding error). Nerf bat sucks, huh? -_-

I didn't dig for any changes to the base dodge value.

Hrocdol (talk) 05:06, 17 September 2008 (UTC)

Dodge Rating

Should it be explained more clearly how does Dodge rating affect the % chance to Dodge? I couldn't find the explanation. Tinunduil (talk) 07:56, 26 September 2008 (UTC)

Patience

I've worked out all the math to update the formulas. However it takes me some time to convert this into readible prose & TeX (the math stuff) so have some patience. I outlined the high level formula first - I'll slowly add the details for dodge from agi, diminishing returns, un-maxxed defense skill, characters below level 80, and more examples hopefully this weekend.

I figure since this article hadn't been updated much since classic wow, this was better than what was there before. /chomp‎ Howbizr(t·c) 2:23 PM, 7 Jun 2009 (EDT)

If a math person can help me troubleshoot, I'm a little bit off somewhere. Somehow I lost a negative, and I also am missing enough significant digits (I think it's d that's the problem there). I'm looking to solve Rd to 52.08333 instead of -51.6991. Thanks in advance... /chomp‎ Howbizr(t·c) 5:28 PM, 8 Jun 2009 (EDT)


For characters who are not maximum level, you will need to calculate the rate of dodge per agility.

1Rd=b(b24ac)0.52a


a=AgAb
b=Ag(dDt)Ab(Dr+Cdk)CdAg
c=(dDt)*(Dr+Cdk)CdDr
Ag=Agility from gear
Ab=Base agility: from your level, class, and talents
d=Calculated dodge chance, from character window
Dt=b+t+(Fsl*5)*0.04
Dr=Fu+Du
Cd=Dodge cap, varies by class
k=Constant, varies by class}}

1Rd=10801.5051(10801.5051242024208.1721)0.522024

=10801.5051(1166725121685361.3)0.54048
=10801.5051(114987150)0.54048
=10801.505110723.2064048
=78.29914048
=0.01934

Rd=51.6991


a=2292=2024


b=22(24.368.2685)92(15.93+88.1290210.9560)88.12902122

=2216.091592(15.93+84.2513)1938.8385
=354.01392100.18131938.8385
=354.0139216.67961938.8385
=10801.5051


c=(24.368.2685)*(15.93+88.1290210.9560)88.12902115.93

=16.0915*(15.93+84.2513)1403.8953
=16.0915*100.18131403.8953
=1612.06741403.8953
=208.1721


Ag=22
Ab=92
d=24.36
Dt=3.2685+5+(40080*5)*0.04=8.2685
Dr=5.72+10.21=15.93
Cd=88.129021
k=0.9560
I've also got this too if it helps... It's from the RatingBuster library (don't worry, LGPL v3 license). /chomp‎ Howbizr(t·c) 6:06 PM, 9 Jun 2009 (EDT)
--[[
Name: LibStatLogic-1.1
Description: A Library for stat conversion, calculation and summarization.
Revision: $Revision: 49 $
Author: Whitetooth
Email: hotdogee [at] gmail [dot] com
Last Update: $Date: 2009-04-14 17:41:40 +0000 (Tue, 14 Apr 2009) $
Website:
Documentation:
SVN: $URL $
Dependencies: UTF8
License: LGPL v3
Features:
	StatConversion -
		Ratings -> Effect
		Str -> AP, Block
		Agi -> Crit, Dodge, AP, RAP, Armor
		Sta -> Health, SpellDmg(Talent)
		Int -> Mana, SpellCrit
		Spi -> MP5, HP5
		and more!
	StatMods - Get stat mods from talents and buffs for every class
	BaseStats - for all classes and levels
	ItemStatParser - Fast multi level indexing algorithm instead of calling strfind for every stat
]]

--[[---------------------------------
	:GetDodgePerAgi()
-------------------------------------
Arguments:
	None
Returns:
	; dodge : number - Dodge percentage per agility
	; statid : string - "DODGE"
Notes:
	* Formula by Whitetooth (hotdogee [at] gmail [dot] com)
	* Calculates the dodge percentage per agility for your current class and level.
	* Only works for your currect class and current level, does not support class and level args.
	* Calculations got a bit more complicated with the introduction of the avoidance DR in WotLK, these are the values we know or can be calculated easily:
	** D'=Total Dodge% after DR
	** D_r=Dodge from Defense and Dodge Rating before DR
	** D_b=Dodge unaffected by DR (BaseDodge + Dodge from talent/buffs + Lower then normal defense correction)
	** A=Total Agility
	** A_b=Base Agility (This is what you have with no gear on)
	** A_g=Total Agility - Base Agility
	** Let d be the Dodge/Agi value we are going to calculate.

	#  1     1     k
	# --- = --- + ---
	#  x'    c     x

	# x'=D'-D_b-A_b*d
	# x=A_g*d+D_r

	# 1/(D'-D_b-A_b*d)=1/C_d+k/(A_g*d+D_r)=(A_g*d+D_r+C_d*k)/(C_d*A_g*d+C_d*D_r)

	# C_d*A_g*d+C_d*D_r=[(D'-D_b)-A_b*d]*[Ag*d+(D_r+C_d*k)]

	# After rearranging the terms, we get an equation of type a*d^2+b*d+c where
	# a=-A_g*A_b
	# b=A_g(D'-D_b)-A_b(D_r+C_d*k)-C_dA_g
	# c=(D'-D_b)(D_r+C_d*k)-C_d*D_r
	** Dodge/Agi=(-b-(b^2-4ac)^0.5)/(2a)
Example:
	local dodge, statid = StatLogic:GetDodgePerAgi()
-----------------------------------]]
function StatLogic:GetDodgePerAgi()
	local class = ClassNameToID[playerClass]
	-- Collect data
	local D_dr = GetDodgeChance()
	local dodgeFromDodgeRating = self:GetEffectFromRating(GetCombatRating(CR_DODGE), CR_DODGE, UnitLevel("player"))
	local baseDefense, modDefense = UnitDefense("player")
	local dodgeFromModDefense = modDefense * 0.04
	local D_r = dodgeFromDodgeRating + dodgeFromModDefense
	local D_b = BaseDodge[class] + self:GetStatMod("ADD_DODGE") + (baseDefense - UnitLevel("player") * 5) * 0.04
	local stat, effectiveStat, posBuff, negBuff = UnitStat("player", 2) -- 2 = Agility
	local A = effectiveStat
	local A_b = stat - posBuff - negBuff
	local A_g = A - A_b
	local C = C_d[class]
	local k = K[class]
	-- Solve a*x^2+b*x+c
	local a = -A_g*A_b
	local b = A_g*(D_dr-D_b)-A_b*(D_r+C*k)-C*A_g
	local c = (D_dr-D_b)*(D_r+C*k)-C*D_r
	--RatingBuster:Print(a, b, c, D_b, D_r, A_b, A_g, C, k)
	local dodgePerAgi = (-b-(b^2-4*a*c)^0.5)/(2*a)
	if a == 0 then
		dodgePerAgi = -c / b
	end
	return floor(dodgePerAgi*10000+0.5)/10000, "DODGE"
end
Since I can't fix this problem, I'm removing the {{construction}} tag. If anyone has some tips, ping me on my talk page, or just update the section. For the most part, I don't think people care about how much dodgePerAgi is given before level 80, so it's probably alright. /chomp‎ Howbizr(t·c) 7:59 PM, 19 Jul 2009 (EDT)

Cap

Should it be explained more clearly how does Dodge affect the level and which (base) Cap it gives? I couldn't find any explanation. For small example, which dodge I've (or pet) as lvl 80 against lvl 73 npc, is there a cap? --Olliminatore (talk) 17:55, 8 June 2009 (UTC)

I'm working on upgrading this article. It was severely out of date just a few days ago. Check out melee diminishing returns, melee mitigation, the combat rating system, and RatingBuster in the mean time. It may take me a while to get this article where I want it to be. /chomp‎ Howbizr(t·c) 5:31 PM, 8 Jun 2009 (EDT)
Hey thanks man and many thanks in advance, if you do so. --Olliminatore (talk) 14:33, 9 June 2009 (UTC)