Monday, 8 July 2019

[BLOG] The Sinister Secret of THAC0

It is called ADVANCED Dungeons & Dragons, meme lady!
Of all things AD&D, THAC0 may have the most undeserved bad reputation. You will find people going to war for the honour of the weapon vs. AC table, weapon speed factors (I personally like them), level limits (damn right!) and grappling, but THAC0’s treatment is at best apologetic. Neither the TRV old-schoolers nor the new kids like it much, while both sides find it a convenient target to point and laugh at. Convoluted, counter-intuitive, a chore, “high math” – it has all been said before. 

In fact, THAC0 is significantly easier and more elegant than it looks. This post, then, is written in the interest of public information – clearing the record and venturing a guess why THAC0’s status has suffered undeservedly. (Similar points have been made in the past, but sometimes, repeating something can be useful. Surely, people are still stubbornly wrong about THAC0’s merits!)

The simple elegance of the THAC0 mechanic is easy to grasp. Here is how THAC0-based combat works:
  1. Take your THAC0 value.
  2. Roll 1d20 for your attack and subtract it from your THAC0.
  3. The resulting value is the AC you hit.

That’s it. Now you can do THAC0!

For example, your THAC0 is 20. You roll 10. 20-10=10. You hit AC 10.
Or your THAC0 is 14. You roll 17. 14-17=-3. You hit AC -3.
In the most complicated case you may face, your THAC0 is 14 but the GM grants you a 2 to hit bonus for attacking from higher ground. You roll 12 and apply the modifier, making 14. 14-14=0. You hit AC 0.

THAC0 in the Nobody Cares
About Rath Edition
Hardly rocket science. But if it is so simple, what has made THAC0 the red-headed stepchild of Advanced Dungeons & Dragons® mechanics? The answer is depressingly simple: the THAC0 I described is not the THAC0 AD&D has actually tried to sell us. Here is the rule from the 2e Player’s Handbook (full text in image to the right):
  1. Take your THAC0 value.
  2. Subtract the target’s AC value.
  3. Roll 1d20 and beat the resulting value.

To make THAC0 work with this method, you need to know your opponent’s AC – an information which is kept by the GM, and (often rightfully) hidden from the players until combat develops. In comparison, the first method keeps GM information in the GM’s hands, and preserves some of the “fog of war” of the game (of course, the players will eventually figure out how well their opponents are fighting, which is a fine learning process).

The second approach, while it uses the same number, removes both some of the speed and some of the convenience of the mechanic. It does not grant a clear benefit over combat matrices (we will not go into esoterica like “repeating 20s” this time). However, it is clearly inferior to the first take, which is a smooth subtraction-based mechanic, and it is easy to cite 3rd edition’s Base Attack Bonus + 1d20 vs. AC method as an improvement. What makes the case of THAC0 more curious is how many of the explanations start from the second variety, and how few people seem to even know of the first. It is not entirely obscure – you can find it in these posts Mixed Signals and THAC0 Dragon (but then someone with that handle would probably know his THAC0) – but it is not the common knowledge it should be.

Patient Zero
The ultimate reason may be simple inertia. You can learn about THAC0’s history from this post by Jon Peterson (including valuable comments by Lawrence Schick, who had proposed, but failed to get an ascending AC system implemented), and he posts the rule as it had first appeared in a 1978 copy of Alarums & Excursions. The implementation is clearly the same as the 2e version; however, here the GM is supposed to calculate and keep a record of character THAC0s. This makes much more sense by separating player and GM knowledge, but it does offload extra work on the GM. Interestingly, a 2017 post on Hexcellency outlines a card-based method that seems to reinvent this practice! In any case, you can draw a straight line right from the A&E piece to the 2e rulebooks – THAC0 had remained remarkably stable despite the (theoretical) existence of a more efficient algorithm for its use.

Monster cards

So that is the sad tale of THAC0, which had never lived up to its real potential, and has mostly been replaced either by ascending AC systems or a return to combat tables. It is one method of combat among many – just make sure to stick with the first version if you are actually using it.

Now it makes complete sense


  1. The only real difference between 1st and 2nd ed. (aka Nobobody Cares About Rath Edition) attack matrices is that 1st had repeating 20s (several 20's above each other at the high end so that you had a chance to hit enemies with very low AC). Oh my head is reeling!

    1. Correct! I only mentioned them in an offhanded manner, but repeating 20s are the matrix-based solution to the "20s always hit" rule.

  2. THAC0 has rightfully faded into obscurity with the proponents of descending AC due to the significantly more elegant (and basically equivalent) Target 20 mechanic, witch was expounded by Delta in this post from almost exactly a decade ago:

    1. You are right! The draft even made reference to Target 20 (I am fairly familiar with it in practice since a friend's S&W clone uses it), but I chose to drop it for simplicity's sake.

    2. Bit odd, though, considering Target 20 is objectively superior (as Delta explains) and quite popular. Your conclusion claims THAC0 was replaced by ascending AC (true for some retroclones) and combat tables (which I have never seen anyone use), but doesn't mention T20, which is the real THAC0 killer. Shrug.

    3. This is a post about the undeservedly bad reputation of THAC0, not its modern alternatives. I did not know Target 20 was really that widespread, either - could be.

  3. The idea that AC should be kept secret is just a continuation of the idea that any information has to be forcibly extracted from the DM, rather than given away for free.

    In almost all cases the actual AC value will be obvious because the opponents will actually be wearing the armour to which that armor class refers. And their ability to dodge your attack (or any magical shielding) will be obvious when you make your attack. So at that point (the resolution of the attack roll) you might as well tell them the actual AC number. At which point the character may realise that attacking yon beastie might not work out so well for them, and they have the decision to attempt to withdraw or continue.

    [And yes, for AD&D I prefer the Target 20 approach. Although my own game uses a Pendragon style resolution system since sometimes it is important to know whether the "miss" was a result of the player's inability to find an opening or because the strike was dealt with using the natural defences of the target (AC). And yes, the d20 roll is effectively a skill selector - operating from a statistical rather than probability basis.]

    1. I like the mystery of first meeting a monster and having to gauge its capabilities. It takes four or five exchanged blows to accurately pinpoint its AC (as well as to learn how well it can dish it out), but I appreciate that initial ambiguity.

    2. "In almost all cases the actual AC value will be obvious because the opponents will actually be wearing the armour to which that armor class refers."

      I must take issue with this statement. I've just done a quick survey of monsters in the 1E AD&D Monster Manual. There are 213 entries in there, not counting subcategories for "men", "demons", "dinosaurs", etc.

      Of these 213, I have found 18 which are basically humanoid in shape, strongly implied by the illustration, the text or both to frequently wear armour, and which have an AC that roughly corresponds to more-or-less normal armour on a more-or-less normal humanoid.

      18 out of 213. Sure, some of them, like orcs or humans are going to be encountered much more frequently than obscure monsters, but still... claiming "in almost all cases" based on 18 out of 213 sounds like sensationalistic hyperbole.

      (Of course, specific campaign styles where almost every "monster" is a human or humanoid also exist, but are not the point of contention.)

  4. The real problem most people I know has with THAC0 is that they don't like subtractions. It's ironic considering they have no issue with subtracting damage from HP, and tallying current HP instead of total received damage.

    1. I add damage I receive in a separate column until I exceed my HP total. I don't mind subtracting but adding is quicker in my head and I try to spend as little time looking at the numbers as I can.

  5. Level Limits: not even once.