Over the years since Wizards of the Coast replaced AD&D 2nd Edition with D&D 3rd Edition, I’ve seen a lot of invectives hurled at THAC0 (**T**o **H**it **A**rmor **C**lass **0**). It is considered frightening; when people mention an old computer game that uses it, such as Baldur’s Gate, almost invariably someone will say something to the effect of “Oh god, THAC0!” But THAC0 shouldn’t be frightening, and it isn’t even a difficult system. At its heart, it is a simple form of algebra, and quite beautiful.

Take for example a situation where a 3rd level fighter comes across an orc wearing scale armor. To figure out whether the fighter hits the orc, there are three components: the fighter’s THAC0 of 18, the orc’s Armor Class of 6, and the Attack Roll; they function much like the sides of an algebraic equation:

**AC | THAC0 | Attack Roll**

The relationship between these sides is as follows: AC and THAC0 are both descending from a positive number to a negative number, while the attack roll is ascending. The correlation between these numbers makes the system easy to use and flexible.

With these numbers, there are actually two ways of figuring out what numbers need to be rolled to determine whether the orc is hit. The most common way is to modify the THAC0 score with the Armor Class. Since you are essentially moving from one side of an equation to the other, you subtract the Armor Class from THAC0, resulting in a modified number of 12 (i.e. it becomes THAC6, or To Hit Armor Class 6; in this way you could say you are “solving for THAC*x*” as in an algebra equation). Another way to do it is to treat Armor Class as a bonus to the Attack Roll; i.e. add the AC of 6 to the number rolled; if it is larger than the THAC0, it is a hit. In either case, you can see that a roll of 12 or higher hits.

In more advanced scenarios, there are modifiers to the rolls. Such modifiers will always be bonuses or penalties; as described above, such modifiers can be applied to any one of the three “sides” (so long as they are only applied once). A bonus to a creature’s Armor Class can be seen as a penalty to the THAC0 or the Attack Roll, while a bonus to an Attack Roll can be seen as a bonus to THAC0 or a penalty to Armor Class. Take for example the following scenario:

The fighter is under the effects of a *bless* spell while using a *sword +1*, gaining a total +2 bonus to hit, but the orc has donned a *ring of invisibility*, which penalizes attacks against it by -4. These numbers can be applied to any individual aspect of the system (so long as it is only applied once). For example, one can apply these numbers to the orc’s armor class, resulting in an AC of 4 (6, +2 for the *bless* and sword to 8, then -4 for the *invisibility* to 4). Alternately, one can apply these numbers to the THAC0, resulting in 20 (18, -2 for the *bless* and sword to 16, then +4 for the *invisibility* to 21); this number would then be used instead of the original 18 to determine the fighter’s ability to hit an AC of 6. Finally, these numbers can be applied as modifiers to the attack roll; using the original THAC0 of 18 and AC of 6, the number rolled on the die would be penalized by -2 (+2 for the *bless* and sword, -4 for the *invisibility*). In most circumstances, individual modifiers would be added to different sides, however; one-time or short-term bonuses or penalties (such as the *bless* spell and the *invisibility*, cover, terrain, etc.) are best applied to the attack roll, while long term or semi-permanent modifiers are best applied to the Armor Class or THAC0 (Dexterity or Strength modifiers, magical weapons and armor, spells that will stay in effect for a whole battle, etc.). This results in a flexible and easy to use system, that also teaches or reinforces basic algebraic concepts.

One final note about the beauty of THAC0: With one exception, each group advances on a mathematic progression. Warriors advance one point every level, priests advance two points every three levels, rogues advance one point every two levels, and wizards advance one point every three levels; all starting at 20. The exception is the monster progression, which gains two points every two hit dice, starting at 19, with creatures less than 1 HD having a THAC0 of 20. Setting aside the slight variation of the monster progression, this regularity adds to the elegance.

On the gaming aspects of this system, the progression of both Armor Class and THAC0 from a positive number to a negative number means they are logically constrained, being limited to the opposite negative number of the starting positive number. This aspect keeps the numbers grounded and tied to specific aspects of the physical game world (while still being abstract), whereas an unlimited system completely severs the system from the physical world of the game.

Very elegant article, congratulations!

I can’t understand how people can look at 3rd Ed. (and later) way of handling attack rolls and THAC0 and prefer the former. THAC0 has always been easier for me, the latter system seems to have a lot more situational bonuses and penalties that have to be tracked compared to earlier editions. Perhaps it’s just the way my players played, but they usually only had 3-4 weapons they used constantly (only changing them out for better stuff if they found it), so it was easy to keep THAC0 listed for each specific weapon (already adjusted for modifers that rarely change from combat to combat like magical bonuses and strength) and modify the number for the target’s AC and situational factors like spells and magical effects.

There’s a third way to determine hit/miss too, and is useful for the players to calculate in the situation where the DM wishes to keep the AC an unknown: Player rolls, adds the bonuses/penalties they bring to the swing, subtract that from their THAC0, and the resulting number is the AC they would hit.

The fighter rolls a 13, +1 for Bless, +1 for sword magic, makes 15. Subtract from THAC0 18 means it’s good enough to hit AC 3. The player does not know the Orc’s AC. The DM knows the orc has AC 6, -4 due to invisibility, making effective AC of 2. The fighter swings … and misses.

Around the table we go, the player rolls, adjusts, and declares what AC they would hit. The DM says whether that actually did hit or not. Sometimes the DM might say “ooh, close, but no” which is a good clue.

Yep, good point!