TC101 Homework: Character Sheet Stat Calculations

We all see the finished guides and models from theorycrafters, but despite theorycrafters and guidewriters alike swearing they’re not actually gods who get everything right on the first try, we don’t really see the trial-and-error experiments or calculations behind theorycrafting.

I’ve done plenty of following along with theorycrafting over the years, but I’ve not actually tried to derive the equations myself until now.  Theck’s done some teaching; I figure now it’s time to show off some learning. This post will probably be full of mistakes, but that’s OK, because learning. I hope someone out there enjoys this sample of my theorycrafting “homework.”

  1. I do write out on my notes to myself like “let’s do X” “OK that didn’t work, why” “here’s why” when doing math/science things because I got used to doing that when explaining math to myself in school. Y’know, the whole “let X equal 5, let Y equal 6, *do funky equations*” stuff. So it’s not just my guidewriting slipping in — I really do write to myself like that!
  2. If I slip between singular and plural, that’s my bad — Theck’s using the first person plural because he’s walking us through it, and I was reading along with Theck while doing these calculations, but I typically write in first person singular, so um, yeah, confusion.

Determining Base Intellect

Pulling the base stats for warlocks, we get this:

Strength 551
Agility 985
Intellect 1042
Stamina 890
Spirit 1155

And pulling the racial modifiers for warlock-able races, we get this:

Human Dwarf Gnome Worgen
Strength 0 5 -5 3
Agility 0 -4 2 2
Intellect 0 -1 3 -4
Stamina 0 1 0 0
Spirit 0 -1 0 -1

My blog theme can cut off the table, so I split it into Alliance (above) and Horde (below).

Orc Undead Troll Blood Elf Goblin
Strength 3 -1 1 -3 -3
Agility -3 -2 2 2 2
Intellect -3 -2 -4 3 3
Stamina 1 0 0 0 0
Spirit 2 5 1 -2 -2

While I have created a level 100 premade of every warlock race on the PvP beta server, I decided I’d go with troll. I normally play a human, but troll is the race that SimulationCraft uses (particularly the affliction warlock model).

Variables: (Sorry, I’m not a LaTeX wizard like Theck is)

  • B = class_base + race_base = 1042 + (-4) = 1038
  • G = 2378


  • CS_Base = B = 1038
  • CS_Bonus = G = 2378
  • CS_Total = B + G = 3416

Basic math, woot! We can do this!


…1089 + 2496 = 3585.



I double-checked to make sure I was in no-selected spec. I switched to my human premade, and same thing — the numbers didn’t match.

The First Difference Between Warlocks and Paladins

Paladins can wear any of the 4 armor class items, even though they eventually prefer wearing plate. Warlocks, on the other hand, can only ever wear cloth. Paladins, like other higher armor class wearers, get a passive at level 50 that gives them 5% extra preferred primary stat if they stick to wearing all plate. Warlocks do not need this incentive to pick a particular type of gear, but to balance everything, we get a “congrats, you can only wear one thing!” 5% primary stat bonus at 50.

Another difference I noticed is that the theorycrafters I look to for learning theorycrafting — Theck, Arielle, Hamlet, etc. — are all players of hybrid classes. Theck’s first screenshot in the 101: Character Stats post where he’s determining the base stats clearly has his plate gear on — he just hasn’t chosen a specialization yet. The preferred primary stat for paladins can depend on spec — protection prefers Stamina, retribution prefers Strength, and holy prefers Intellect. So the passive doesn’t activate for paladins until you choose a spec.

Our problem above with the character sheet and Theck’s very first calculations example is that all warlocks like Intellect. That’s just how it is when you’re a pure DPS caster class. And the game knows this — that we only wear cloth and we only like Intellect. So it doesn’t need to take those considerations out when we’re not in a particular spec.

So let’s skip ahead to when Theck calculates that passive for paladins and see if it matches my numbers for warlock.

The Armor Skill Formerly Known as Nethermancy

Theck’s picking retribution; I’m picking affliction.

If I was right — that the base intellect really was supposed to be 1038 + 2378 from gear = 3416 total, what happens if we repeat Theck’s first error and just multiply by 1.05?

  • 3416 x 1.05 = 3586.8

The character sheet had displayed 3585 — which is close, much like Theck’s simple error is. So I’m probably right — the cloth armor bonus is already factored in for warlocks where it’s not for paladins. Let’s continue with the calculation.

  • CS_Base = floor( B x 1.05 ) = floor( 1038 x 1.05 ) = floor(1089.9) = 1089
  • CS_Bonus = floor( G x 1.05) = floor( 2378 x 1.05 ) = floor(2496.9) = 2496
  • CS_Total = CS_Base + CS_Bonus = 1089 + 2496 = 3585

Yay! The numbers match!

So, before we go to the next step, let’s reiterate all our variables:

  • AC_multiplier = 1.05
  • B = class_base + race_base = 1042 + (-4) = 1038
  • G = gear_stat = 2378

And all our formulas:

  • CS_Base = floor( B x match )
  • CS_Bonus = floor( G x match )
  • CS_Total = CS_Base + CS_Bonus

Buffed: 5% Intellect

I’m not a paladin, so I can’t buff myself with Kings, but I can stand in Shattrath with the beta cauldrons. I clicked a beta cauldron to get the raid buffs and clicked off everything except the 5% Strength, Agility, Intellect stats buff.


Like Theck’s ret paladin, the base for my affliction warlock hasn’t changed: it’s 1089.

If I apply the Kings buff like Theck has, where I multiply my total unbuffed Intellect by 1.05, I actually get a different comparative number than Theck does.

  • Theck multiplied his unbuffed 4023 Strength by 1.05 and got 4224.2, which would be correct according to his character sheet if he floored that.
  • I multiply 3585 Intellect by 1.05 to get 3764.25 — which still wouldn’t be the 3765 Intellect on my character sheet if I floored it!

OK. Well. Skipping ahead worked last time.

Theck’s all like “so the formula for the bonus is”:

  • CS_Bonus = G x match x multiplier + B x match x (multiplier – 1)

And I’m like, whoa whoa whoa, hold up, where’d you get that, Theck. So let’s try it out.

We got closest to the answer when multiplying the total unbuffed stat by 1.05. (We’re going to write this a little backwards so we can match Theck’s formula visually.)

  • CS_Total = multiplier x ([ G x match ] + [ B x match ])

Expand it out:

  • CS_Total = multiplier x G x match + multiplier x B x match

The problem is that it’s attributing all of that to the stat bonus, CS_Bonus. CS_Bonus = CS_Total – CS_Base. So subtract a CS_Base equivalent from each side.

  • CS_Total – CS_Base = multiplier x G x match + multiplier x B x match – B x match

We can clean this up a bit.

  • CS_Bonus = multiplier x G x match + (multiplier – 1) x B x match

Which looks like Theck’s. Cool beans. Math!

  • CS_Bonus = multiplier x G x match + (multiplier – 1) x B x match
  • CS_Bonus = 1.05 x 2378 x 1.05 + (1.05 – 1) x 1038  x 1.05
  • CS_Bonus = 2676.24
  • Character Sheet bonus = 2676

Theck got a one-off; we got what we’d get if we floored it.

We’ll still do it Theck’s way for the sake of learning.

  • G = 2378
  • B = 1038
  • match = 1.05
  • multiplier = 1.05

And, with the help of some spreadsheets to make the calculations easier, we get for the first batch of flooring:

  • F1 = 2675.295
  • F2 = 2675.495
  • F3 = 2676.195
  • F4 = 2675.745

We actually get F3 for our answer — which doesn’t match Theck’s ret spec strength problem, but it matches his prot spec stamina problem. We find out that none of these formulas work. So it’s not our math that’s the problem. Reading on, Theck has walked us through an entirely incorrect hypothesis for the purpose of learning. Yay learning!

Hypothesis, Take Two

So, we’re at “A Change of Approach” in Theck’s post, and I don’t feel like retyping out that set of six formulas in nonLaTeX text. So go look.

Let’s bring up the picture of our total intellect with a stats buff on to refresh the numbers.


Our variables: B = 1038, G = 2378, match = 1.05, multiplier = 1.05.

  • T1 = 3765.195
  • T2 = 3765.395
  • T3 = 3765.195
  • T4 = 3765.745
  • T5 = 3764.25
  • T6 = 3765.00

In contrast to Theck, the warlock numbers can only rule out 1 formula — T5, which hilariously enough is the SimC formula for MoP, according to Theck. Theck’s retribution paladin strength problem rules out T2, T3, T4, and T6, so he decides to test T1 & T5.

To entertain Theck’s thought process, I looked at how he demonstrates that T5 can be off by 1 in Warlords stats. Our B times the match — 1038 x 1.05 — gives us 1089.9, which is similar to Theck’s made-up example of 919 x 1.05 = 964.95. Both numbers are super close to the next integer, which gives the one-off difference between flooring and not flooring.

Our T1 = 3765.195 and our T5 is one-off at 3764.25, so we already know that the more correct formula is T1:

  • CS_Total = multiplier * ( floor( G *match) + B*match )

Theck cleans up the formulas:

  • C = floor(G*match) + B*match
  • CS_Base = floor(B*match)
  • CS_Total = floor(C*multiplier)
  • CS_Bonus = CS_Total – CS_Base

A Case of Stamina

Just out of curiosity, though, how would a warlock test the T formulas if she didn’t have Theck’s post? Remember, we only ruled out 1 of the 6 formulas with the warlock numbers. You can’t just sit there and guess with that.

I figured I’d go back to stamina, like Theck did.

Let’s start at the beginning. Remember that we’re trolls.

  • B = 890 + o = 890
  • G = 3250


Theck still uses match = 1.05, because Stamina is what protection paladins get for their armor class match (retribution gets Strength). So he can use the same number for Stamina because it’s the same passive, just different spec & stats.

Warlocks can only get Intellect and thus can’t get a Stamina bonus through armor class, so our match can’t be 1.05. But we clearly have a modifier of some kind going on in our base stamina, because 979 definitely isn’t 890.

I hypothesize that it’s our Blood Pact passive. Let’s look at the tooltip (here’s the Wowhead double-check):


The 10% that goes with nearby party and raid members is the raid buff equivalent that warlocks bring. In Mists of Pandaria, our Dark Intent buff provides this along with the 10% spellpower buff, but in Warlords, Dark Intent is providing 10% spellpower with 5% Multistrike. Our old DI’s stamina portion is being rolled into our Blood Pact passive, which acts like an aura (like when a shaman provides mastery just by being a shaman). The other portion is our old Fel Armor passive.

This could go one of two ways. The base stamina could be counting both the Fel Armor portion and the raid buff portion together, since we will always have both parts simply for being warlocks. Or, the base stamina could just be counting the Fel Armor portion, and the raid buff is treated like a total stat modifier, much like the Kings/Mark of the Wild stats buff was treated.

Since I’ve already spent time on beta looking at warlock buffs, I have a strong feeling that it’s the latter case. If you click a beta cauldron in Shattrath, your scrolling combat text says “<Blood Pact> fades, <Stamina Buff>.” Similarly, if you click off the Stamina buff you get from the cauldron, you get text that says ” <Stamina Buff> fades, <Blood Pact>.” My stamina also does not change in either total, base, or bonus when I do these clicking on/off shenanigans. The buffs clearly share with & overwrite each other instead of stacking.

So let’s try this.

  • B = 890
  • G = 3250
  • Fel_Armor = 1.10
  • multiplier = 1.10

CS_Base = floor(B * Fel_Armor) = floor(890 * 1.10) = floor(979.00).  And what was our base tooltip again?



OK, time to test the multiplier effect. I don’t know if we have a high enough multiplier to prove the T functions like Theck did with the protection paladin, but we can try.

  • T1 = 5009.4
  • T2 = 5008.9
  • T3 = 5009.4
  • T4 = 5008.5
  • T5 = 5009.4
  • T6 = 5008

Ooof, not quite. For Stamina, T1, T3, and T5 could work. (They’re also all the same answer!) We already know that T5 doesn’t, since our Intellect didn’t work well with T5. So we’re down to T1 and T3.

The difference is whether you floor the G*match or whether you floor the B*match.

  • G*match = 3250*1.10 = 3575
  • B*match = 890*1.10 = 979

I think it has to do with how it’s a bit harder for me to get a non-integer number with the 1.10 multipliers. Both my B & G numbers are divisible by 10, so when you multiply them by 1.10, you’re going to get an integer again. So there’s no difference between flooring it or not flooring it.

We can’t change the B number, since it’s based on race and class, but we can change the G number, which is based on gear. I unequipped my helm (+331 stamina), which leaves me with 2919 stamina from gear.

  • B*match = 890*1.10 = 979
  • G*match = 2919*1.10 = 3210.9

This should be a good number to test, because it’s so close to the next integer that flooring G*match should make a difference versus not flooring.

  • T1 = 4607.9
  • T3 = 4608.69

Aaaand it does make a difference of, ding ding ding, one. Let’s check with the in-game tooltip when I have my helm removed:


Woot! T1 is confirmed to be the correct formula for warlocks, backing up Theck’s theory.

Until Next Time

While Theck goes on to deal with racial bonuses, food, and flasks, I think I’ll stop this “homework” post for now.

Besides, all of the racial cases he’s testing — tauren’s Endurance, draenei’s Heroic Presence, and pandaren’s Epicurean — are not applicable to warlocks because warlocks can’t be any of those races. I feel good enough reading through Theck’s post to broaden my knowledge of it, but I don’t think many (if any) of the warlock races have flat permanent bonuses like that until we get into secondary stats.

I suppose that’s my next “homework” — finding all the base values for all the warlock races as well as the warlock specs and branching out into theorycrafting the secondary stats. Then I can get into flasks and food, since most of the flasks and food in Warlords involve the secondaries, not Intellect.

I enjoyed my “homework,” so I hope you did, too, and maybe I’ll see you next time with more shemathigans.

TC101 Homework: Character Sheet Stat Calculations

One thought on “TC101 Homework: Character Sheet Stat Calculations

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s