THAC0 stands for “To Hit Armor Class 0,” and it’s one of the two ways we used back in the day to figure out if an attack succeeded or not. (The other way was looking it up in a table.) The AD&D 2nd Edition Player’s Handbook says that “Using THAC0 speeds the play of combat greatly,” just before giving this description of how it works:
The first step in making an attack roll is to find the number needed to hit the target. Subtract the Armor Class of the target from the attacker’s THAC0. (Remember that if the Armor Class is a negative number, you add it to the attacker’s THACO.) The character has to roll the resulting number, or higher, on 1d20 to hit the target. […] THAC0 is modified by weapon bonuses, Strength bonuses, and the like […] Figure Strength and weapon modifiers, subtract the total from the base THAC0, and record this modified THACO with each weapon on the character sheet. Subtract the target’s Armor Class from this modified THAC0 when determining the hit roll.
I omitted some worked examples from that quote, but that is the official description of how attack rolls worked in 2nd edition. If you find it confusing, you aren’t alone. Starting with the 3rd edition in 2000 (that’s right: D&D 3e is old enough to vote!), when they essentially made attack rolls the core mechanic, Wizards of the Coast also switched things around so that instead of using the defender’s armor class to calculate the target number, the armor class is the target number. Roll a d20, apply any bonuses and penalties, and if you get a number greater than the target’s armor class, it’s a hit. A higher AC means you’re harder to hit. It ends up working out the same as the old system, but it’s simpler in theory, if not in practice.
Here’s the thing: I actually like descending armor class, and think THAC0 is a great idea. It’s just really poorly explained. Instead of adding and subtracting things from THAC0 to get a target number, as in the official description, I just add everything to the attack roll instead, including the defender’s armor class. In some ways this is like the third edition method, which also has modifiers on the attack roll, but instead of the target number changing depending on what you’re swinging at, the target number is always your THAC0. The defender’s armor class becomes just another modifier on the attack roll.
If you think about it that way, then descending armor class makes a lot more sense. Instead of using a human in normal clothing’s 9 AC as the baseline, use an armor class of 0 as the baseline. Anything with less armor than that is easier to hit, granting a bonus on the attack roll. Attacking an unarmored target is very easy – you get a whopping +9 on your roll! Going in the other direction, a negative armor class mean you’re very difficult to hit – anyone taking a swing at you will get a penalty on their attack roll.
The way this ends up working for the GM at the table is pretty simple. Make a note of all the PC’s armor classes and THACOs, just as you would for all your monsters’ stat blocks. Whenever a PC attacks a monster, they’ll roll a d20 and add all the modifiers they know about from strength, enchanted weapons, etc. Then you add the monster’s armor class to that roll and compare it to the attacker’s THAC0 to decide if it’s a hit. When a monster attacks a PC, do the same thing: add the PC’s armor class to the roll, along with any other modifiers, and compare it to the monster’s THAC0. Done.
Example time. Let’s say you have a level 1 fighter (THAC0 19, AC 5) attacking an orc (THAC0 18, AC 6). The player rolls a 12, and adds their +1 strength bonus for a total of 13. You add the orc’s 6 AC to that and get 19. That’s the figher’s THACO, so it’s a hit, but just barely! The orc takes a swing at the fighter, and rolls a 9. You add the fighter’s 5 AC to get a 14, which is less than the orc’s THAC0. It’s a miss! As long as you have the THAC0 and AC for everyone involved, running combat with descending armor class is easy.
This is the way I’ve been using descending armor class and THAC0 for years, and it works well for me. Delta, from Delta’s D&D Hotspot takes the “armor class is a modifier on the attack roll” idea a bit further. Instead of having a THAC0 that changes as characters level up, he came up with the Target 20 system, where the target number is always 20, and the attacker’s level joins the defender’s armor class as just another attack roll modifier.