Relative Aggro of Warrior Skills
Threat Values and Formula original work by Kenco (Kenco@Perenolde), updated by Satrina - Last updated 24 January 2006 http://evilempireguild.org/guides/
Sat - Kenco did all the initial research and wrote this up. I've since done my own testing to satisfy myself that it's right.
It's often said that we will never be able to work out the way threat and hate lists and mobs' AI works, because it's too complicated and unknowable, that we'll only ever have crude approximations and guesses. I've conducted some decent, rigorous tests, and I have what I believe is a good list of hate values and explanations of gaining and losing aggro and the behaviour of taunt. I am also able to debunk a few myths about how threat works.
1) Definitions We define "aggro" to be who the mob is attacking. We define "threat" to be a numeric value that each mob has towards each player on its hate list. Note, as we shall soon see, even for a normal mob, the target who has aggro is not necessarily the player on its threat list with the most threat.
We define arbitrarily that 1 point of unmodified damage gives 1 point of threat.
2) Gaining aggro on a mob Suppose a mob is attacking player 1. In order for the mob to switch to player 2, he must do more than just exceed the threat of player 1. If he is in melee range of the mob, he will draw aggro when he exceeds 110% of player 1's threat. If he is outside melee range of the mob, he will draw aggro when he exceeds 130% of player 1's threat.
For example, a mob is attacking player X. X does 100 damage to mob, then stops. Player Y starts hitting the mob. The mob will start attacking Y when Y does over 110 damage.
Proof: this is easy to demonstrate. Get two players both doing autoattack on a mob (not warriors of rogues; we'll see later they complicate things). Have player 1 do a certain amount of damage, then stop. Have player 2 keep attacking till he gets aggro. You have an upper and lower bound on the threat required to get aggro - 1 attack before he got aggro was not enough, but the attack that he got aggro was at least enough. With low damage attacks (e.g.. fists only), you will get a very good value of 10%. Testing for the non-melee range value is the same. Just replace it with a low damage ability such as a low level wand.
If player 2 has exceeded 110% threat but not 130% threat, they will draw aggro immediately if they do a threat-generating ability within melee range of the mob, but proximity alone will not cause the mob to shift to them.
This is only a description of the normal mob targetting. Obviously there are mobs who will attack secondary targets with special abilities, ignoring their current threat/aggro.
3) Threat modifiers from Warrior Stances In Battle Stance and Berserker Stance, all threat from a Warrior is multiplied by 80%. In defensive stance, the multiplier is 130%. With Defiance, it is 145%.
Proof: a simple modification of the above proof. Get a warrior to do, say, 1000 damage in defensive stance, without defiance. Get a non-warrior to take aggro with white damage. You will find it does not happen before 1430 damage. The warrior's 1000 damage caused 1300 threat in defensive stance, and the 10% barrier means you need more than 1430 to gain aggro.
4) Threat does not decay Threat never, ever decays. Here is test data. Warrior does 83 damage on mob in battle stance, gains aggro. From above, we know it will take more than 83 * 0.8 * 1.1 = 73.04 threat to gain aggro. Warrior waits for 5 minutes getting beat on. Then mage starts attacking slowly. Mage does 73 damage, but does not gain aggro! Mage does another 2 damage, and does gain aggro. From the warrior's initial hit to losing aggro, the time taken was 496 seconds.
As an upper bound, assume maximal threat decay. i.e. the mage only needed 73.000000001 threat to gain aggro. Then the warrior's threat had decayed to 66.36363636, from 66.4. This means he went down to 99.945% threat in 496 seconds.
At this maximal rate of hate decay, the time taken for the warrior's threat to decay to 90% of the original value would be 26.5 hours. In fact, if a warrior logged in as soon as the server came online after the weekly reset and hit a mob, his threat would not decay to 50% before the server reset next week. I think this is enough to rule out threat decay.
5) Threat values for some warrior abilities The following list is not exhaustive, but includes all the major tanking abilities.
Sunder: 261 (260.95 - 261.15) Heroic Strike*: 145 (143.9 - 148.8) Revenge*: 315 (313.9 - 318.3) Revenge Stun: 25 (23.4 - 29.1) Shield Bash*: 180 (175.4 - 180.3) Shield Slam*: ?? 250 (estimated from Cop's data. More on that later) Shield Block: 0 (0 - 0. Can be higher - more on this later) Thunder Clap*: 130 (126.9 - 134.8) Demo Shout: 43 (42.8 - 43.8) Notes:
The above values are given in raw terms. In reality the warrior must have either a 1.3 or 0.8 or 1.45 modifier on these, depending on his stance and talents. Abilities with * do not include threat generated by their damage. This will be discussed more later. Note that debuffs associated with abilities are not connected to the threat they generate. Demoralizing shout generates the same amount of threat whether the debuff is on or not. Sunder armor generates the same threat after 5 debuffs are on as when there are 0. 6) Healing, "you gain x ___", etc Each point of healing, when completely unmodified by talents, gives 0.5 threat. Replace the proof for (2) by the second person only healing. Note that overhealing doesn't count, only the actual amount healed. This is easy to demonstrate. Abilities that put "you gain x mana" in the combat log give 0.5 threat per point gained; life is the same. Examples would be drinking potions, but not natural regen, or the Shaman's mana spring totem.
Abilities that put "you gain x rage" in the combat log give 5 threat per point gained. However, this is not modified by warrior stance. Such abilities include bloodrage, improved blocking talent, unbridled wrath, and 5/8 Might. Like healing, these only give threat if you are below the maximum.
7) Explaining Cop's 4.0 damage to heal ratio Cop stated that in his tests, each point of damage by the warrior took approximately 4 points of healing by the priest, for the priest to get aggro. Here's how:
Warrior in defensive stance, with defiance: 1.45 multiplier Gaining aggro from Warrior: 1.1 multiplier Priest with discipline: 80% threat Healing: each point gives 0.5 threat
Together, 1.45 * 1.1 / 0.8 / 0.5 = 3.9875. Pretty darn close to 4.
8) Threat from pulling? There is no threat associated with pulling. The smallest amouts of threat we could generate drew aggro from a body pull, no matter how long we waited after the pull. However, there are advantages to having the tank pull, as explained in the next section.
9) Taunt Casting taunt causes three effects:
A) The warrior is given as much threat as the person who currently has the mob's aggro. Obviously if the warrior has aggro, this will do nothing. Also, this effect will not lower the warriors threat. For example, if player 1 has 100 threat and aggro, a warrior could have 105 but not aggro; after taunt he would still be on 105 threat. B) The mob recalculates its actual aggro target. If the warrior was on the mob's hatelist before the original aggro target, the mob's actual aggro target will switch to the warrior. Otherwise, the mob will remember it's original target. C) The normal taunt debuff. The mob is forced to attack the warrior, even if the warrior is not its actual aggro target. The threat that the warrior gains from (A) is permanent, regardless of the outcome of (B). Note that it will not necessarily give the warrior the equal highest threat on the mob. If player 1 has 100 threat and aggro, Player 2 has 109 threat but not aggro, and the warrior has 0 threat, then the warrior is given 100 threat, not 109, so he could easily lose aggro to Player 2 after taunting.
Sat - Clarifying the first person on the hatelist bit (B in the list above). There is always an "aggro affinity" for the very first person who got on a mob's hate list. That person doesn't have to make 110% threat to regain aggro. You can see it in action with these tests:
First Test: Have warrior 1 body pull a mob, then spend some time building threat, then stop attacking completely. Mob will still be attacking warrior 1. Warrior 2 then taunts the mob, builds sufficient threat to keep aggro after the taunt effect wears off (i.e. exceeds 110%) , then stops attacking completely. Mob remains on warrior 2 Warrior 1 simply taunts while not attacking. The mob will continue to attack warrior 1 even after the taunt effect wears off. Warrior 2 simply taunts while not attacking. The mob will turn back to attack warrior 1 after the taunt effect wears off.
Second Test: Have someone else body pull a mob Warrior 1 taunts the mob, then spends some time building threat, then stops attacking completely. Mob will still be attacking warrior 1. W arrior 2 then taunts the mob, builds sufficient threat to keep aggro after the taunt effect wears off (i.e. exceeds 110%) , then stops attacking completely. Mob remains on warrior 2 Warrior 1 simply taunts while not attacking. The mob will return to warrior 2 after the taunt effect wears off (because 1 did not generate any threat to keep aggro) The initial puller can get aggro at 100% threat, instead of 110% or 130%
10) Implications Note this section is just my opinion.
A) Let the tank pull! Then he will be first on all the mobs' hatelists, and his taunts will always return aggro to him.
B) Given that targets at range will only draw aggro when they have more than 130% of the mob's target's current threat, it's important for a tank to keep the mobs well away from the casters. If a healer does draw aggro and you taunt it off him, make sure you also move it away.
C) Heroic Strike should not be used as a primary threat ability. Suppose you are tanking a level 62 mob. Let's give him 8,000 ac raw, and even assume he has 5 sunders stacked, for 5750 final ac, so he will take 48.89% of damage. A 15% crit rate is balanced by the 10% penalty to damage in defensive stance, and a 10% chance of a glancing blow chance for 50% damage. Then you can expect the 138 damage from Heroic Strike to contribute 67.5 damage on average, for a total of 212 unmodified threat. This is still only 82% of the threat a sunder would give. Even with a 1.3 speed weapon, you will still do 94% the threat of sunder per time interval. Best practice is to spam sunder, and use HS in between to soak up excess rage.
D) Revenge ftw. You can expect to do about 345 unmodified threat with Revenge, including damage, against the mob in the example above, which is exceptional for the low rage cost, even throwing in 10 for a shield block. However, there is a rage cost of shield block, in that you will block more attacks, so take less damage, so gain less rage from damage. Two blocks for 180 damage and you can say goodbye to another 4 rage.
D) Demo Shout ftl. Demoralising shout does one sixth the threat of a sunder. Even spammed in defensive stance with defiance, you're doing no more threat than 42dps on each mob. Besides picking up whelps in Onyxia and tanking panthers in the Panther boss encounter in ZG, I can't see a compelling reason to use this.
F) Shield Slam ftl. Given the 6 second cooldown, there is no improvement in threat per second by using shield slam. With shield slam: 3 sunders and 1 shield slam every 6 seconds. About 212 threat per second, unmodified. With the 30 rage from the shield slam you can cast 1 sunder and about 1.2 heroic strikes, assuming you have the talents (which you would with any shield slam build), and are losing 3 rage per Heroic Strike from lost white damage rage (i.e. assuming 90 modified damage per hit). The 4 sunders and 1.2 heroic strikes every 6 seconds gives about 215 threat per second.
The only improvement is if you are spamming both sunder and HS, and want even more threat. Suppose we have a 2.0 speed weapon, HS spam and sunder spam. That's about 280 unmodified tps. Changing one sunder for a shield slam gives us 318 unmodified. However, the same effect would be achieved by changing to a 1.4 speed weapon and casting HS more often. And these values aren't taking into account autoattack damage, which makes the margins comparatively smaller.
G) There's no amazing super secret randomised Blizzard aggro algorithm. The concepts are simple and the values can be fitted with nice numbers. Even formulas for threat-reducing knockbacks can conceivably be worked out, if threat values are carefully monitored.
Well, I hope some of you are still awake, and are feeling somewhat enlightened. And if you skipped to the bottom, I can't exactly blame you after my essay above.
Change Log 25 January 2006 - Creation
Below is the first big test done on aggro generation, which paved the way for Satrina's guide above. Retained for posterity's sake.
Original poster "Cop" of the Deathwing server. original thread
Relative hate values (updated for 1.7 patch)
The tests were performed by proximity aggro'ing a level 56 melee mob with the warrior. I first found a ratio of damagehate:healinghate, a number that came out to 4.0 in defensive stance with my warrior/priest combo. For the trials, I would perform each skill anywhere form 1 to 6 or more times, then begin healing. At the point the priest got aggro, I summed the healing, subtracted (damage dealt * 4.0), and divided by the number of times the skill was done. Each trial has been repeated at least 10 times, and my results were extremely consistent. This is primarily useful as a guide to relative hate values.
This is the post's third iteration. Data has been retested thoroughly and updated as of the 1.7 patch on the test server.
If you see an errors please point them out.
Assumptions
* All healing spells create the same hate per point healing. Crudely confirmed before tests.
* Hate does not decay over time. Observation suggests this holds true.
* Initial hate is negligible (a 50 point heal pulls aggro)
Findings
* They fixed shield slam! Before 1.7 the innate hate value worked out to around 200, it is now closer to 1000. See its entry for the test results as of the 1.7 test patch.
* The damage done by skills (such as the 450-550 of shield slam) incurs hate equal to normal melee damage. Each skill has a set amount of hate attached (I call it "innate" hate) when the skill lands on a mob. The existance of this "innate" hate is determined mainly through crits. A heroic strike crit, for example, will do (innate hate+damage) worth of hate, not (2*total hate).
* Cleave has extra hate attached to it much like heroic strike.
* Whirlwind, Mortal Strike, and Bloodthirst have no innate hate.
* Piercing howl is absolutely zero (or an immesurably low amount of) hate.
* Sunder armor is the same amount of hate per application, regardless of how many sunders are already on. The same is true for demoralizing shout and thunderclap.
* The sunder armor debuff seems completely independent of the hate it generates. Hate does not decrease when the debuff wears off and, as mentioned above, multiple applications, even beyond the stackable limit, will give just as much hate as the first.
* Shield bash damage is independent of the innate hate it produces, as with other skills. Thus, shield bash crits only produce hate equal to the extra 44 or 45 damage.
* Heroic strike is a surprisingly high amount of hate, and has very acceptable efficiency with talents, against low armor, and with a fast weapon.
* The shield block/revenge combo is only marginally better for hate generation than sunder armor (with talents). The exception is that shield block (with talents) often forces two consecutive revenge openings, and the mitigated damage is an obvious bonus.
* Shield slam was about 200 innate hate in 1.6. It is close to 1000 now.
* Skills and attacks create roughly 1.65 times more hate in defensive stance than in battle stance.
Notes
* No number is exact. This is more of a loose guide.
* I was very careful and methodical in my tests. Overhealing and other interfering factors were kept to a minimum (hopefully zero!).
* All attacks were done by a warrior with defiance and in defensive stance unless otherwise noted.
* The warrior has improved shield bash and does not have any level of improved revenge.
* All healing was done by a holy/disc priest with the 20% threat reducing talent and inspiration (which I have determined to be aggro-free).
* With this setup, tests were performed beforehand to determine the healing/damage hate ratio. 1 point of damage = 4.0 points of healing = 4.0 hate
* Hate per point of rage does include damage.
* There is a margin of error, but I tried to minimize it as much as possible. The primary source of error is the fact that the minimum healing increment is 52.
Skill Name
-Rage cost.
-Listed damage before armor is applied, taken directly from the tooltip.
-Attached or "innate" hate. This is completely independent of the damage the skill produces. It is purely a hidden "bonus blast" of hate when the skill lands successfully.
-Total hate including damage under varying armor levels.
-Hate per point of rage. This number indicates efficiency if you're wondering how best to dump your rage. Once again, it does include damage.
Formula used in #5: [ ((HateMin + HateMax)/2) + (((DamageMin + DamageMax)/2) * (1-DamageReduction) * 4.0 ] / RageCost
-perks: qualitative reasons to use a certain skill
-negs: negative stuff about the skill
Revenge
5 rage
64-78 damage
1200-1250 "innate" hate
* 0% Damage Reduction
* 1510 total hate
* 302 hate per point rage
* 25% Damage Reduction
* 1440 total hate
* 288 hate per point rage
* 50% Damage Reduction
* 1370 total hate
* 273 hate per point rage
perks: very high efficiency, chance to stun with talents, fair damage for rage cost
negs: unreliable, and often requires use of a 10 rage skill to allow its use
Shield Slam
30 rage
450-550 damage
925-975 "innate" hate
* 0% Damage Reduction
* 2950 total hate
* 98 hate per point rage
* 25% Damage Reduction
* 2450 total hate
* 82 hate per point rage
* 50% Damage Reduction
* 1950 total hate
* 65 hate per point rage
perks: 50% chance to dispell 1 magic effect, good damage, much improved efficiency as of test patch 1.7
negs: efficiency is very dependent on armor
Thunderclap
20 rage
103 damage (in battle stance, hate modifier of 2.25)
200-250 "innate" hate
* 0% Damage Reduction
* 460 total hate
* 23 hate per point rage
* 25% Damage Reduction
* 400 total hate
* 20 hate per point rage
* 50% Damage Reduction
* 340 total hate
* 17 hate per point rage
perks: 10% attack rate debuff, affects up to 4 targets
negs: must be used in battle stance, breaks CC
Sunder Armor
12 rage (15 without talents)
no damage
1025-1075 "innate" hate
1050 total hate
88 hate per point rage (70 without talents)
perks: lowers target armor, no cooldown
negs: Some claim aggro is spotty with sunder armor when the debuff gets pushed off, when the debuff expires, or when it's stacked more than 5 times. My findings suggest none of this is true.
Shield Bash
10 rage
45 damage (ignores armor)
725-775 "innate" hate
930 total hate
93 hate per point rage
perks: spell interruption, silences for 3 seconds with talents
negs: long cooldown, spamming of the skill means it won't be available when needed
Demorializing Shout
10 rage
no damage
165-185 "innate" hate
175 total hate
18 hate per point rage
perks: attack power debuff, unlimited targets
negs: very low rage efficiency
Heroic Strike at 3 rage per swing
15 rage (18 without talents)
138 damage
590-630 "innate" hate
* 0% Damage Reduction
* 1160 total hate
* 77 hate per point rage (65 without talents)
* 25% Damage Reduction
* 1020 total hate
* 68 hate per point rage (57 without talents)
* 50% Damage Reduction
* 890 total hate
* 59 hate per point rage (49 without talents)
perks: good damage, cooldown is weapon speed, doesn't interfere with global cooldown
negs: hinders rage production from attacks, is on-next-attack so it prevents the use of other skills if you wait for it to fire
Heroic Strike at 7 rage per swing
19 rage (22 without talents)
138 damage
590-630 "innate" hate
* 0% Damage Reduction
* 1160 total hate
* 61 hate per point rage (53 without talents)
* 25% Damage Reduction
* 1020 total hate
* 54 hate per point rage (47 without talents)
* 50% Damage Reduction
* 890 total hate
* 47 hate per point rage (40 without talents)
perks: good damage, cooldown is weapon speed, doesn't interfere with global cooldown
negs: hinders rage production from attacks, is on-next-attack so it prevents the use of other skills if you wait for it to fire
Cleave at 3 rage per swing
23 rage
50 damage (110 with talents)
370-420 "innate" hate
* 0% Damage Reduction
* 590 total hate (830 with talents)
* 26 hate per point rage (36 with talents)
* 25% Damage Reduction
* 540 total hate (720 with talents)
* 23 hate per point rage (31 with talents)
* 50% Damage Reduction
* 490 total hate (610 with talents)
* 21 hate per point rage (27 with talents)
perks: hits two targets, cooldown is weapon speed, more than doubled efficiency if a second enemy is in frontal arc, fair damage, doesn't interfere with global cooldown
negs: hinders rage production from attacks, is on-next-attack so it prevents the use of other skills if you wait for it to fire
Cleave at 7 rage per swing
27 rage
50 damage (110 with talents)
370-420 "innate" hate
* 0% Damage Reduction
* 590 total hate (830 with talents)
* 22 hate per point rage (31 with talents)
* 25% Damage Reduction
* 540 total hate (720 with talents)
* 20 hate per point rage (27 with talents)
* 50% Damage Reduction
* 490 total hate (610 with talents)
* 18 hate per point rage (23 with talents)
perks: hits two targets, cooldown is weapon speed, more than doubled efficiency if a second enemy is in frontal arc, fair damage, doesn't interfere with global cooldown
negs: hinders rage production from attacks, is on-next-attack so it prevents the use of other skills if you wait for it to fire
Bloodrage
20 rage generated
337 damage to a level 60 player (168 with talents)
325-345 "innate" hate
perks: generates a good amount of rage
negs: the mob must be focused on you for it to create aggro, takes hp, less with talents
Final words
Shield slam is very effective in its improved form, especially in raid situations where rage is hard to spend. Revenge is best used whenever possible, as any warrior could have told you before.
Although it may be unrelated to this thread, protection warriors need a tanking edge of more than 10% armor. Managing hate is the only thing protection warriors have a clear advantage in, but honestly, in the raiding game any warrior can hold aggro just fine. I came up with the idea of removing anticipation and replacing it with a high-tier protection talent that adds 33% to defense from items, but...well, that probably won't happen.
Certain skills like shield slam heavily favor low armor targets. The skill is immensely more useful on a fully sunderered or naturally low armor monster.
And finally, note that the 4.0 healing to damage ratio is only useful for a protection warrior in defensive stance with a priest that has the -20% threat talent. That number is more of a reference point for measuring everything else.
Thank you to everyone who helped me make corrections and adjustments along the way, especially Greysen and Olona.