Warlords of Draenor: Hunter Theorycrafting - Dire Beast and Murder of Crows

I've been spending a lot of time in beta playing around with the training dummies in Shattrath and testing hunter mechanics. Originally I was just going to scratch out some notes, but I decided to go with a blog post because why not! So first I will give a little bit of background info on WoW spell calculations. If you just want to see Dire Beast and Murder of Crows numbers, scroll down. So, in general, a spell in WoW was traditionally calculated by a formula like this:

damage = (AP * APcoefficient + base) * multipliers

It's the same for spell power based abilities. multipliers here represents a whole bunch of things that might need to be applied, such as a talent that increases damage by 20%, armor mitigation, etc. The meat of the spell's attributes are the base number and the AP coefficient though. The coefficient represents a percentage of that power that will be used in the calculation - for instance, a spell that uses 45% of your ranged attack power. Some attacks use a percentage of your weapon damage instead of straight AP (weapon damage is basically a percentage of AP plus the weapons' stats) but it's the same concept. There's also the base damage - if you somehow had literally 0 AP your cast would still do the base damage.

In Warlords of Draenor that base damage is gone. A relative increase in base primary stats (the stats you have while naked) is similar in that it serves the purpose of having a non-zero minimum value that a spell can do. It was a bit of a relic anyway - in early vanilla (at least) some spells didn't scale with your AP or SP at all. They just did a flat amount of damage. My guess is that this was itself a relic of RPGs that were more about leveling than achieving +stats while at level cap. You got a new rank of Serpent Sting at level X so its damage kept increasing, but at level cap you hit a wall - unless you had attack/spell power basically filling the old role of level. Anyway, from a theorycraft standpoint I'm all for removing the base damage component as it's one less number to compute if you are trying to reverse engineer a spell's formula. Now the only hidden number is the AP or weapon coefficient. To be fair, for most spells this isn't hidden at all. Aimed Shot's tooltip straight up tells you it is 255% weapon damage and Explosive Shot says each tick is 80% AP.

Dire Beast and A Murder of Crows definitely do not tell you a number here, so one of the things we need to do is construct some tests to compute those. There are a ton of other questions about these abilities that need to be answered too though. How do they interact with crit/haste/multistrike? Does the Beast Master mastery apply? Does Bestial Wrath effect it?

Dire Beast

Basic Info (TLDR)

  • AP coefficient is about 57.14%
  • Scales with mastery (BM) and Draenor perk (20%), but additively (50% mastery would yield a 1.7 multiplier, not 1.5*1.2)
  • Mastery appears that it might be  rounded down to the closest percent (51.55% will just yield a 1.51+.2=1.71 multiplier, not 1.7155)
  • Scales with haste. Base attack speed of 2, so number of attacks is floor(15/(2/haste))+1
  • Can crit and multistrike
  • Stats update dynamically (in other words, they do not snapshot)
  • Bestial Wrath does not appear to affect it. I tried casting BW and then casting DB, and I tried casting DB and then casting BW. Damage did not change from base in either case.
  • Not sure if it's affected by versatility - testing buff appears to be broken and I don't have easy access to other versatility sources.

Haste Tests

No haste (note: I removed extraneous data from all of these logs, as well as multistrikes)

7/6 17:13:36.200  SWING_DAMAGE,Creature:0:976:530:15:62857:000039BC16,"Beast",0x2111,0x0,Creature:0:976:530:14:83546:0000B6DF86,"Weak Damage Dummy",0x10a28,0x0,0000000000000000,0,0,0,0,0,0.00,0.00,0,1658,-1,1,0,0,0,nil,nil,nil,nil
7/6 17:13:37.765  SWING_DAMAGE,Creature:0:976:530:15:62857:000039BC16,"Beast",0x2111,0x0,Creature:0:976:530:14:83546:0000B6DF86,"Weak Damage Dummy",0x10a28,0x0,0000000000000000,0,0,0,0,0,0.00,0.00,0,1659,-1,1,0,0,0,nil,nil,nil,nil
7/6 17:13:39.876  SWING_DAMAGE,Creature:0:976:530:15:62857:000039BC16,"Beast",0x2111,0x0,Creature:0:976:530:14:83546:0000B6DF86,"Weak Damage Dummy",0x10a28,0x0,0000000000000000,0,0,0,0,0,0.00,0.00,0,3317,-1,1,0,0,0,1,nil,nil,nil
7/6 17:13:41.902  SWING_DAMAGE,Creature:0:976:530:15:62857:000039BC16,"Beast",0x2111,0x0,Creature:0:976:530:14:83546:0000B6DF86,"Weak Damage Dummy",0x10a28,0x0,0000000000000000,0,0,0,0,0,0.00,0.00,0,3317,-1,1,0,0,0,1,nil,nil,nil
7/6 17:13:43.852  SWING_DAMAGE,Creature:0:976:530:15:62857:000039BC16,"Beast",0x2111,0x0,Creature:0:976:530:14:83546:0000B6DF86,"Weak Damage Dummy",0x10a28,0x0,0000000000000000,0,0,0,0,0,0.00,0.00,0,1658,-1,1,0,0,0,nil,nil,nil,nil
7/6 17:13:45.794  SWING_DAMAGE,Creature:0:976:530:15:62857:000039BC16,"Beast",0x2111,0x0,Creature:0:976:530:14:83546:0000B6DF86,"Weak Damage Dummy",0x10a28,0x0,0000000000000000,0,0,0,0,0,0.00,0.00,0,1659,-1,1,0,0,0,nil,nil,nil,nil
7/6 17:13:47.789  SWING_DAMAGE,Creature:0:976:530:15:62857:000039BC16,"Beast",0x2111,0x0,Creature:0:976:530:14:83546:0000B6DF86,"Weak Damage Dummy",0x10a28,0x0,0000000000000000,0,0,0,0,0,0.00,0.00,0,3317,-1,1,0,0,0,1,nil,nil,nil
7/6 17:13:49.876  SWING_DAMAGE,Creature:0:976:530:15:62857:000039BC16,"Beast",0x2111,0x0,Creature:0:976:530:14:83546:0000B6DF86,"Weak Damage Dummy",0x10a28,0x0,0000000000000000,0,0,0,0,0,0.00,0.00,0,1658,-1,1,0,0,0,nil,nil,nil,nil

Intervals are 1.565s, 2.111s, 2.026s, 1.950s, 1.942s, 1.995s, 2.087s for an average of 2.0185 if you ignore that first weird one. Not sure what is going on there, but otherwise it looks like about 2 seconds.

8.24% Haste

7/6 17:25:15.936  SWING_DAMAGE,Creature:0:976:530:15:62857:000039BED2,"Beast",0x2111,0x0,Creature:0:976:530:14:83546:0000B6DF86,"Weak Damage Dummy",0x10a28,0x0,0000000000000000,0,0,0,0,0,0.00,0.00,0,2380,-1,1,0,0,0,nil,nil,nil,nil
7/6 17:25:17.448  SWING_DAMAGE,Creature:0:976:530:15:62857:000039BED2,"Beast",0x2111,0x0,Creature:0:976:530:14:83546:0000B6DF86,"Weak Damage Dummy",0x10a28,0x0,0000000000000000,0,0,0,0,0,0.00,0.00,0,2380,-1,1,0,0,0,nil,nil,nil,nil
7/6 17:25:19.317  SWING_DAMAGE,Creature:0:976:530:15:62857:000039BED2,"Beast",0x2111,0x0,Creature:0:976:530:14:83546:0000B6DF86,"Weak Damage Dummy",0x10a28,0x0,0000000000000000,0,0,0,0,0,0.00,0.00,0,2380,-1,1,0,0,0,nil,nil,nil,nil
7/6 17:25:21.179  SWING_DAMAGE,Creature:0:976:530:15:62857:000039BED2,"Beast",0x2111,0x0,Creature:0:976:530:14:83546:0000B6DF86,"Weak Damage Dummy",0x10a28,0x0,0000000000000000,0,0,0,0,0,0.00,0.00,0,2380,-1,1,0,0,0,nil,nil,nil,nil
7/6 17:25:22.993  SWING_DAMAGE,Creature:0:976:530:15:62857:000039BED2,"Beast",0x2111,0x0,Creature:0:976:530:14:83546:0000B6DF86,"Weak Damage Dummy",0x10a28,0x0,0000000000000000,0,0,0,0,0,0.00,0.00,0,2380,-1,1,0,0,0,nil,nil,nil,nil
7/6 17:25:24.945  SWING_DAMAGE,Creature:0:976:530:15:62857:000039BED2,"Beast",0x2111,0x0,Creature:0:976:530:14:83546:0000B6DF86,"Weak Damage Dummy",0x10a28,0x0,0000000000000000,0,0,0,0,0,0.00,0.00,0,2380,-1,1,0,0,0,nil,nil,nil,nil
7/6 17:25:26.763  SWING_DAMAGE,Creature:0:976:530:15:62857:000039BED2,"Beast",0x2111,0x0,Creature:0:976:530:14:83546:0000B6DF86,"Weak Damage Dummy",0x10a28,0x0,0000000000000000,0,0,0,0,0,0.00,0.00,0,4760,-1,1,0,0,0,1,nil,nil,nil
7/6 17:25:28.643  SWING_DAMAGE,Creature:0:976:530:15:62857:000039BED2,"Beast",0x2111,0x0,Creature:0:976:530:14:83546:0000B6DF86,"Weak Damage Dummy",0x10a28,0x0,0000000000000000,0,0,0,0,0,0.00,0.00,0,2380,-1,1,0,0,0,nil,nil,nil,nil
7/6 17:25:30.453  SWING_DAMAGE,Creature:0:976:530:15:62857:000039BED2,"Beast",0x2111,0x0,Creature:0:976:530:14:83546:0000B6DF86,"Weak Damage Dummy",0x10a28,0x0,0000000000000000,0,0,0,0,0,0.00,0.00,0,2380,-1,1,0,0,0,nil,nil,nil,nil

Intervals are: 1.512s, 1.869s, 1.862s, 1.814s, 1.952s, 1.818s, 1.88s, 1.81s. Average of 1.8579s. Again the weird 1.5s-ish starting interval, but the interval is otherwise very close to 2/haste - I think it's safe to say it is affected by haste.

8.24% haste and Heroism

7/6 17:39:17.139  SWING_DAMAGE,Creature:0:976:530:15:62857:000039C21C,"Beast",0x2111,0x0,Creature:0:976:530:14:83546:0000B6DF86,"Weak Damage Dummy",0x10a28,0x0,0000000000000000,0,0,0,0,0,0.00,0.00,0,2204,-1,1,0,0,0,nil,nil,nil,nil
7/6 17:39:18.522  SWING_DAMAGE,Creature:0:976:530:15:62857:000039C21C,"Beast",0x2111,0x0,Creature:0:976:530:14:83546:0000B6DF86,"Weak Damage Dummy",0x10a28,0x0,0000000000000000,0,0,0,0,0,0.00,0.00,0,2203,-1,1,0,0,0,nil,nil,nil,nil
7/6 17:39:19.908  SWING_DAMAGE,Creature:0:976:530:15:62857:000039C21C,"Beast",0x2111,0x0,Creature:0:976:530:14:83546:0000B6DF86,"Weak Damage Dummy",0x10a28,0x0,0000000000000000,0,0,0,0,0,0.00,0.00,0,2204,-1,1,0,0,0,nil,nil,nil,nil
7/6 17:39:21.309  SWING_DAMAGE,Creature:0:976:530:15:62857:000039C21C,"Beast",0x2111,0x0,Creature:0:976:530:14:83546:0000B6DF86,"Weak Damage Dummy",0x10a28,0x0,0000000000000000,0,0,0,0,0,0.00,0.00,0,2204,-1,1,0,0,0,nil,nil,nil,nil
7/6 17:39:22.741  SWING_DAMAGE,Creature:0:976:530:15:62857:000039C21C,"Beast",0x2111,0x0,Creature:0:976:530:14:83546:0000B6DF86,"Weak Damage Dummy",0x10a28,0x0,0000000000000000,0,0,0,0,0,0.00,0.00,0,4407,-1,1,0,0,0,1,nil,nil,nil
7/6 17:39:24.237  SWING_DAMAGE,Creature:0:976:530:15:62857:000039C21C,"Beast",0x2111,0x0,Creature:0:976:530:14:83546:0000B6DF86,"Weak Damage Dummy",0x10a28,0x0,0000000000000000,0,0,0,0,0,0.00,0.00,0,4408,-1,1,0,0,0,1,nil,nil,nil
7/6 17:39:25.585  SWING_DAMAGE,Creature:0:976:530:15:62857:000039C21C,"Beast",0x2111,0x0,Creature:0:976:530:14:83546:0000B6DF86,"Weak Damage Dummy",0x10a28,0x0,0000000000000000,0,0,0,0,0,0.00,0.00,0,4408,-1,1,0,0,0,1,nil,nil,nil
7/6 17:39:27.088  SWING_DAMAGE,Creature:0:976:530:15:62857:000039C21C,"Beast",0x2111,0x0,Creature:0:976:530:14:83546:0000B6DF86,"Weak Damage Dummy",0x10a28,0x0,0000000000000000,0,0,0,0,0,0.00,0.00,0,2204,-1,1,0,0,0,nil,nil,nil,nil
7/6 17:39:28.467  SWING_DAMAGE,Creature:0:976:530:15:62857:000039C21C,"Beast",0x2111,0x0,Creature:0:976:530:14:83546:0000B6DF86,"Weak Damage Dummy",0x10a28,0x0,0000000000000000,0,0,0,0,0,0.00,0.00,0,2203,-1,1,0,0,0,nil,nil,nil,nil

Intervals are: 1.383s, 1.386s, 1.401s, 1.432s, 1.496s, 1.348s, 1.503s, 1.379s. Average of 1.416s. Note that the duration was only 11.328 seconds though. I think this was just a fluke and I might have missed some lines in the combat log or something - I ran the test again and got 11 attacks with a full duration. It is possible the dummy just killed my pet while I wasn't paying attention (yes, they are attacking back, and yes some of them can easily kill pets).

Test results: Number of attacks is determined by floor(15/(2/haste)) + 1. The +1 is to account for the first attack hitting more or less instantly. I'm guessing if you had negative infinity haste you'd still get that first attack!

AP Coefficient Tests

For these tests I tried varying levels of AP as Survival (I did try the slightly more complicated test as BM later), with no versatility, and I ignored crits and multistrikes. This means the formula, as far as I'm aware, should be AP*coeff*armormit=damage. We are trying to solve for coeff. Armor mitigation is 1-1938/(1938+3610) ~= .6507. Also keep in mind that there is some variation in damage by 1 damage, and displayed numbers are rounded whereas the internal calculations use decimals apparently - I mostly just picked the most common one and declared it close enough. There are bound to be some rounding errors, but +/- 1 damage is sufficiently accurate as far as I'm concerned.

3896 AP
3896*x*.6507=1449
x=.57157

3227 AP
3227*x*.6507=1200
x=.57148

2587 AP
2587*x*.6507=962
x=.57148

4091 AP
4091*x*.6507=1521
x=.57137

So probably about 57.14%

BM AP Tests - to determine if mastery and/or Empowered Pets applies

3896 AP, 30.07% mastery
3896*x*.6507*(1+.3+.2)=2173
x=.57144

3146 AP, 45.62% mastery
3146*x*.6507*(1+.45+.2)=1930
x=.57139 (x=.56925 if mastery is not rounded down)

2587 AP, 21.51% mastery
2587*x*.6507*(1+.21+.2)=1356
x=.57130 (x=.56924 if mastery is not rounded down)

4091 AP, 51.22% mastery
4091*x*.6507*(1+.51+.2)=2601
x=.57139 (x=.57066 if mastery not rounded down)

 So this looks like mastery is being rounded down and the 20% damage from Empowered Pets is added to the mastery bonus, for BM. Also, unless they change that, I can't see BM hunters choosing anything else for that tier unless the tuning is just way off for other specs.

 

Murder of Crows

Basic Info (TLDR)

  • AP coefficient is about 65.00% (per hit).
  • Scales with BM mastery (also didn't seem to have the rounding down bug this time) but not pet perk. The combat log shows this is a spell, and not a spawned creature, but I believe the BM mastery was manually baked into the formula back in MoP.
  • Can crit and multistrike
  • Stats update dynamically (in other words, they do not snapshot)
  • Bestial Wrath does not appear to affect it. I tried casting BW and then casting DB, and I tried casting DB and then casting BW. Damage did not change from base in either case. Note that BW does of course still reduce the rather hefty cost of this spell.
  • Not sure if it's affected by versatility - testing buff appears to be broken

 

Haste and Attack Number Tests

  • 8.24% Haste: 30 hits (plus multistrikes)
  • 8.24% Haste + Heroism: 30 hits (plus multistrikes)

No further tests needed - this does not scale with haste.

AP Coefficient Tests

3896 AP
3896*x*.6507=1648
x=.65007

3286 AP
3286*x*.6507=1390
x=.65008

2587 AP
2587*x*.6507=1095
x=.65048

4091 AP
4091*x*.6507=1730
x=.65988

The value of x goes up slightly as we have bigger AP numbers to work with. I'm going to lean more towards that last one and go with 65.00% until we get better info.

BM tests

3896 AP, 30.07% mastery
3896*x*.6507*1.3007=2143
x=.64990

3286 AP, 25.8% mastery
3286*x*.6507*1.258=1749
x=.65022

2587 AP, 21.51% mastery
2587*x*.6507*1.2151=1330
x=.65022

4091 AP, 51.22%
4091*x*.6507*1.5122=2616
x=.64986

Note that I got better numbers if I didn't round down mastery to 1% this time. So something might be slightly off, but I think I'm pretty close here. Please check my math. And if a blue wants to just give me the AP coefficient of these straight up, I hate you, but I also love you.