Reconciling THAC0, Target 20, and More!

I’m annoyed at people who are uppity about THAC0 and say something like, “It’s just simple subtraction!” However, it’s not for the reason you might think. Like yeah, I don’t use THAC0 because it’s kinda annoying and introduces a wider range of armor class values than I care to use. But the reason it bothers me is because you don’t have to read it as subtraction at all. It’s much easier to read it as an inverted attack roll, where you roll greater than your attack value and use your target’s armor class as a “bonus”.

It’s just algebra. The typical formula below:

  • d20 ≥ THAC0 - AC


  • d20 + AC ≥ THAC0

And that’s all there is to it (or, at least, all there should be to it).

What got me thinking about this was Delta’s Target 20 house rule, where you roll d20 plus your fighter level plus the target’s AC, attempting to roll greater than or equal to 20. This is basically the same thing as THAC0 except with separate attack bonuses, which is to say that both of the typical D&D combat methods— ascending AC and THAC0—can be read as abstractions of Target 20 (so long as you ignore the specificity that Target 20 uses fighter levels).

  • Target 20: d20 + AB + AC ≥ 20
  • Classic: d20  ≥ AS, where AS = 20 - AB - AC
  • THAC0: d20 + AC ≥ TH, where TH = 20 - AB
  • Modern: d20 + AB ≥ AAC, where AAC = 20 - AC

This holds true for both Advanced and Original/Basic D&D, so long as for the latter you interpret characters as having a base attack bonus of +1 rather than +0. Not only is this simpler than the typical common wisdom that you subtract from 19 for O/BD&D, but it aligns better with the expectations of that system—especially if you rely on one’s hit dice as an approximation of their attack bonus (as per Necropraxis). Therefore, rather than reading AD&D as having different armor class values than O/BD&D, you can read it as having a different progression for attack bonuses.

To this end, I made charts of attack bonuses for fighters and monsters based on O/BD&D, AD&D, and Necropraxisrationalized hit dice.

Fighter Attack Bonuses

Fighter Level O/BD&D AD&D Necropraxis
0 +1 (?) +0 +1 (?)1
1 +1 +1 +2
2 +1 +2 +3
3 +1 +3 +4
4 +3 +4 +5
5 +3 +5 +6
6 +3 +6 +7
7 +6 +7 +8
8 +6 +8 +9
9 +6 +9 +10

Monster Attack Bonuses

Monster HD O/BD&D AD&D Necropraxis
1/2 d +1 +0 +0 (?)
1d–1 +0 (?) +1 +0
1d +1 +2 +1
1d+1 +2 +3 +2
2d +2 +5 +2
3d +3 +5 +3
4d +5 +6 +4
5d +6 +6 +5
6d +6 +8 +6
7d +7 +8 +7
8d +7 +9 +8
9d +9 +9 +9
10d +9 +11 +10

The values for O/BD&D are different from what appear in Fantastic Medieval Campaigns as well as in Old School Essentials, because of my reasoning above—still, I won’t change the FMC values because starting from +0 is more convenient when working from the original rules as written. After all, I would refactor a lot of math in FMC if I gave myself the freedom to do so, but it’s not my place—the best I can do is offer breadcrumbs in the optional rules section.

  1. Assuming that a “zeroth level fighter” is, really, a non-fighter and (by extension) regular HD 1d figure. ↩︎


  1. Just for some roll-under fun, d20 + AB + AC ≥ 20 is also equivalent to d20 ≤ AB + AC + 1.

  2. But what about the repeating 20s on the AD&D combat matrices?

    1. they're an abomination before god

    2. I like them. Trent Foster, who wrote Heroic Legendarium, does "target 21" adding +5 on natural 20s. (You could of course do "target 20" or "target thac0" as presented here, with level 1 thieves and magic-users and 1/2 hd monsters getting -1 on their attacks, though that might feel kind of cruel, even if it's mechanically identical.)


Post a Comment

Popular posts from this blog

Plagiarism in Unconquered (2022)

OSR Rules Families

Bite-Sized Dungeons