Sunday, October 26, 2008

We should stop whipping THAC0.

Oh, poor THAC0. When people talk about older editions of D&D, and how the rules can be confusing, THACo is often dragged from its poor cupboard under the stairs and beaten viciously.

AD&D 2e is usually credited with the advent of THAC0, but shhhhh...lean close to your monitor because I want to whisper a secret...

THAC0 has always been there.

No, really, it's true. However, like other sorts of conditions you can have, people often don't think it exists until you give it a name. You just like to double check that the doors are locked at night 13 times before you go to bed (and get out of bed 5 more times just to make sure), until someone tells you it is an OCD, then suddenly you have OCD. So OD&D, Basic D&D, and AD&D 1e all had the THAC0, they just didn't know it.

I think the confusion around THAC0 is partly there because it begins to meddle with your sense of reality as soon as you read it. I mean just look at it. THAC0. "To Hit Armor Class Zero." Uhh, wait a second. Shouldn't it be THACZ?? Well that doesn't have quiet the ring to it.

One thing you may not have thought of is that there could be a THAC4, or THAC-3, because choosing 0 as the starting point was arbitrary, but intuitive (or maybe it just sounded better). The reason I say that THAC0 has always existed is because although older editions relied on presenting the full attack matrix, all THAC0 does is save space and make you, gentle reader, do the math yourself.

That's where the second problem comes in. But before I continue, I feel like we've gotten to know THAC0 a little better, so we can do away with formal titles. Lets call him Chad instead. Chad is just the personification of a simple algorithm. Where the confusion sets in is that we are dealing with opposites. In order to get rid of that big clunky attack matrix we just say, "Ok, Chad tells us that a 1st level fighter needs to roll 20 to hit an AC of 0." Easy, right? Now what happens if you (as the fighter) are fighting someone with an AC of 4? You subtract 4 from Chad, so you need to roll 16 or better. Why? Because remember that the higher the AC the worse it is and the easier it is for you to hit your opponent. Now, hah hah hah, here we go. What if, brace yourself now, you're a 5th level fighter and Chad tells you that you need 15 or better to hit AC 0, and you are attacking someone with AC-2. You need to roll 17 or higher. That's right! Remember, negative ACs are harder to hit. You add a negative AC to Chad, but you subtract a positive AC from Chad.

You see, the thing is that it is simple arithmetic. It confuses people because you subtract positive numbers but add negative numbers when normally if you add a negative to a positive you subtract. Hmmm, I'm not sure if that helped you or not. But don't blame Chad, because it isn't his fault. He's just a scapegoat because someone wanted to get rid of the attack matrix table.

12 comments:

K.R. Proctor said...

I've always found it easier to think about THAC0 in terms of probability. I think this makes it a little more clear and allows for the use of two ten sided dice when my lucky purple d20 is missing (or likely stolen by my resentful DM):

p(H) = (t-a)/20

Where:

H is the probability of a hit
t is the THAC0 of the attacker
a is the AC of the object of the attack

This has always made it easier for me to see what THAC0 is actually doing in the game.

Dan of Earth said...

You'll never let me forget about the purple D20 thing will you? ;-)

Actually you can't use 2d10 because then you end up with a different probability distribution than with a D20. A D20 is linear, while 2d10 will form a bell curve.

But anyway. I think your equation should actually be...

H = [t-(a)]

Where H is the target number on a D20.

K.R. Proctor said...

Actually, the distribution for the 2 d10's is flat as well. For the d20 the probability of rolling any particular number is .05, whereas the probability of rolling any particular number (percentile) with 2 d10's is .01. This is not a bell shaped curve because a the probability of observing a score is not the probability of the sum of two rolls' being a particular number, but rather it is the conditional probability of rolling a particular combination. The probability of rolling any value for the first dice is .1 Given this probability, the probability of the second role being a particular value is also .1. Since we are interest in what the probability of rolling a particular score ranging from 0 - 100, than we must compute the conditional probability which is .1*.1, which equals .01.

I may not have been clear enough in my original statement as I did not mean I would sum the 2 d10's (in which the resulting probability distribution would be platykurtic and have a smaller range 2-20). I intended to role the 2 d10's in order to arrive at a percentile to compare probability of a hit. I still have a lucky purple d10 and my lucky red marble d10 for this (these die are usually reserved for rolling damage for my Minotaur from Krynn who wields two two-handed swords - he has a strength of 20, he's kinda a big deal). Though I would have to change the percentages [1-p(h)]*100 because these die likely to roll high.

But i regretfully must amend your amended equation. My equation was not predicting a hit, but rather the probability of a hit.

In order for your amended equation to hold, you would need to change it

H = R if R > or = t-a

Where R is the dice role outcome
Where H is a dichotomous outcome

The problem with your equation is that it only reflects a hit if the minimum hit number is rolled. Anything higher than that number is not accounted for. A Hit is not hit if only if R = H, but also if R falls between H to 20 (or is equal ti the minimum and maximum values).

As for the rest of your equation, the brackets and parenthesis are redundant. I only included the parenthesis in my equation because you have not upgraded your blog with a proper equation editor and I needed to reflect that the difference between "t" and "a" was being divided by 20 and not that the probability of a hit was the difference between t and the quotient of a/20. One should seek parsimony in his (or her if Lavi is reading) mathematical expressions.

I need to get going...the mathematics of Dungeons and Dragons is now on the Learning Channel.

PS: Have you seen Freaks and Geeks? There is some funny D&D stuff in that show. Also, do they having "Rolling Rock" in India?

Dan of Earth said...

whereas the probability of rolling any particular number (percentile) with 2 d10's is .01. This is not a bell shaped curve because a the probability of observing a score is not the probability of the sum of two rolls' being a particular number, but rather it is the conditional probability of rolling a particular combination.

I thought you meant adding 2d10s to substitute a d20...

Dan of Earth said...

Lavi is reading. And no, no Rolling Rock in India. Just some excellent Kingfisher.

Anonymous said...

Little trivium: In Poland THAC0 was translated to SPOK0 which means "Easy" or "Chill Out". ;)

Good blog!

J.

Sham aka Dave said...

I've never understood the table-centric folks in the old school forums I frequent. I'm all for any formula that retains the values but dispenses with the need for table referencing, including THAC0 and the ATT/DEF system of later editions. Aside from titles and terms, the numbers are the same, and both help to limit the use of cumbersome tables. 1e did have the 20 or natural 20 roll hitting 5 AC places, but I've always used the natural 20 auto hit house rule, so that has never been much of a factor (and I use OD&D now anyway, so its a moot point). And you're right in saying that THAC0 was not 'new' with 2e, we used a few different short-cuts in the 1e days to speed play. I had devised a simple Attack-Defense formula (that indeed confused a few players at first) as far back as the mid 80's, long before 3e.

Simon said...

I always finD "THAC0-AC, roll that to hit" _easier_ than 3e+'s "Roll Attack Bonus + d20, equal or exceed AC to hit". I think the reason is that with the first formula you do the math first, then roll to hit a target number. The new approach makes you roll, THEN calculate whether you've hit the target number, which I find much harder.

Matthew James Stanham said...

One thing to remember about THAC0 is that the degree to which it matters depends on who is the doing the calculations. If, for some reason, the players are calculating their own "to hit rolls" then everybody needs to be on the same page. If only the game master is doing the calculations, only the game master needs to know.

If he doesn't like adding negatives and subtracting positives, then the alternative is to:

1d20 + Armour Class = THAC0

No good if the players are doing the math and don't know the armour class they are hitting, but there you go.

The_Myth said...

"Math is hard!"

--real thinking behind most THAC0 hate.

Anonymous said...

In agreement with 'the myth' there. It's just a bit of simple subtraction dammit.

Then again, I can't wrap my head around the concept of 'Difficulty Checks' in later editions of D&D, so I can't really talk trash about THAC0-haters.

Unknown said...

Anyone know the actual origins of THAC0?

I started playing with Moldvay basic in 81 or so and played B/X and AD&D pretty regularly through about '91. I never bought any 2e rulebooks and got back into playing the past couple of years.

But I actually played using THAC0. My guess is that by 83 or 84, we were already using it. So where did we get it from? Dragon magazine? One of the AD&D rulebooks (Unearthed Arcana or Oriental Adventures or something?) I've always been curious about this since everyone attributes it to 2e.

Anyway, it never caused us problems back in the day. Math is fun!