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 (To Hit Armor Class 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 THACx” 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.