Save vs. Doom/​Curse/​Harm/​Bane

So I'm still thinking about oldschool D&D saving throw mechanics.

That scene from Disney's 'Sleeping Beauty' where the Maleficent the evil queen, in the form of a black dragon, spews green fire at the prince, who deflects it with his shield.
Sleeping Beauty (Clyde Geronimi, 1959)

I've been skeptical about the whole paradigm. I've read a lot of OSR folks' apologia on the concept, and some of their ideas worked for me, others didn't. But, on the whole, I do think I see some virtues there! Three, in fact.

First: Isolating the saving throw mechanic from external variables keeps the probabilities bounded. That is, since the modifiers that apply to the numbers are limited and difficulty doesn't scale with the source of the threat, you can theoretically prevent situations where a successful save is impossible or inevitable.

Second: In games where saving throws can be extremely high-stakes—PCs will live or die based on a single roll, regardless of their hit points—I think it might make things feel better to have a clear number in front of you that you must meet or beat with an unadjusted die roll in order to succeed. If only the DM knows the target number, then your character's inglorious death by poison might seem like DM fiat! It's not much better if the DM just tells you the target number, either, since it's still as high as the DM wants it to be. And I've got a vague feeling that even adding a modifier to your own roll introduces a degree of separation between die roll and outcome that's less than ideal.

Third: I love the way that relative saving throw difficulty and save category priority work together to make the harshest effects the easiest ones to avoid. That is, death effects typically have the lowest save targets. Things that take your character out of the action (like paralysis and petrification) are medium difficulty. Dragon breath—which just does hit point damage—is harder to avoid. Finally, spells that don't instantly kill or paralyze or transform you—spells that mostly inflict survivable hassles—are generally the most likely to take effect.

The "category priority" part comes in when resolving cases of conceptual overlap: If a threat falls into multiple save categories, it's (generally) classified as the easier-to-avoid one. Death spells are avoided by death saves, not spell saves. Petrifying breath weapons are avoided with petrification saves, not breath saves. I'm not sure how intentional this is, but it's kinda brilliant!

But none of these three benefits, I'll note, are dependent upon saving throw categories that specifically state the source of the threats they address. Instead, what's important to my perspective is that they can be connected to general degrees of threat! So I'm thinking: What if we lean into that, and focus more explicitly and specifically on the "degree of threat" thing?

Check out these save categories.

Doom. Things that would permanently remove a character from the game or from the player's control. The easiest threat to save against. You save vs. Doom to resist a deadly poison, avoid falling into lava, prevent a demon from possessing you, or evade a petrifying gaze. "Permanent" in this context is obviously "potentially permanent": Spells like raise dead, dispel magic, or remove curse might reverse one Doom or another, but for the purposes of the saving throw, dead is dead.

Curse. Things that would impose a permanent affliction or transformation on a character. The second easiest threat to save against. You save vs. Curse to pull your hand out of the trap before it gets scythed off, to avoid having to roll on a mutation table, or to resist an effect that would swap your Strength and Intelligence scores. Permanent polymorph effects might fall under this category, too: If a spell would turn you into a frog who still remembers who it used to be and who its friends are, then it's a Curse. If it turns you into a frog who only wants to find a nice pond and eat flies, it's a Doom.

Harm. Things that inflict hit point damage. The second most difficult threat to save against. You save vs. Harm to take half damage from a dragon's breath, or to completely evade a falling rock trap. There's an argument for making Harm the hardest save, but since you'll often be saving for half damage rather than to completely negate an effect, I figure it can be a little easier.

Bane. Things that cause temporary afflictions, loss of agency, and other ephemeral hassles. The most difficult threat to save against. You save vs. Bane to resist things like bane spells (appropriately enough), snare traps, soporific fumes, getting teleported to a random location, or being temporarily turned into a frog. Note that a lot of Banes (such as a ghoul's paralytic touch) might lead to some very permanent consequences, but once again, the saving throw is only about the immediate effect.

If something fits into multiple categories, then it counts as the easiest applicable one. If you're saving against a pit trap that will injure you (Harm) and move you to a new area (Bane), then you roll vs. Harm.

I think this gets us the benefits of the oldschool saving through paradigm—the bits I like about it, anyway—in a much clearer, more straightforward way.

One side effect of this system: If we're not categorizing saves by threat source, then class-specific save target progressions seem a little unnecessary. You could make Fighters better at saving vs. Harm or Wizards bad at saving vs. Doom or whatever, but I think that wouldn't really say much about those classes or the world.

Instead, maybe you'd give Wizards a bonus to saving throws against magical stuff regardless of actual save category, Rogues a bonus against traps, Fighters a bonus against monsters, etc. That could work. But at the moment I'm a little enamored of the bare die-vs.-number situation, and I'd like to try it without modifiers.

...Not that I'm likely to be trying any of this stuff out soon, admittedly!


Saving throws in oldschool D&D

Since that last post, I've been spending way, way too much time thinking about a B/X hack that I'll probably never actually use for anything. (I say "thinking about". I have literally written like 5,000 words about it.) Along with that, I've been looking at the save progressions in old D&D and wondering what the logic behind them might be. So, today I'm going to finally try to figure that out.

To that end, I'll check out the save mechanics in the same editions I looked at when analyzing attack mechanics: Original D&D, AD&D 1e, B/X, AD&D 2e, and the Rules Cyclopedia.

OD&D

Okay, looks like we're starting this one off with a bit of a wild ride.

A table from the OD&D book Men & Magic called 'Saving Throw Matrix' which lists five columns of target numbers under these headings: 'Death Ray or Poison', 'All Wands - Including Polymorph or Paralization', 'Stone', 'Dragon Breath', and 'Staves & Spells'. The rows are marked by the groups which have would use each set of target numbers, categorized by both class and level. The classes listed are 'Fighting-Men', 'Magic-User', and 'Cleric'. Oddly, 'Fighting-Men' is replaced with 'Fighter' after the first mention of the class. The rows are sorted by character level first, then class.
The "Saving Throw Matrix" table from original Dungeons & Dragons, White Box version. Just like last time, I made a spreadsheet version, because that's how I live my life.

Wow, was page 20 of Men & Magic actually the place where D&D switched from "Fighting-Man" to "Fighter"? Seriously, though: Even compared to some of the gnarlier attack roll tables from oldschool D&D, I think we're seeing some pretty strange information presentation decisions here. The way they've got the classes mixed together makes analysis harder, and I can't imagine it was ideal for use at the table, either. So, before I do anything else, I'm going to sort the whole thing a little better.

A spreadsheet recreation of the 'Saving Throw Matrix' table above. Again, it lists a five columns of target numbers under these headings: 'Death Ray or Poison', 'All Wands - Including Polymorph or Paralization', 'Stone', 'Dragon Breath', and 'Staves & Spells'. The rows are marked by the groups which have would use each set of target numbers, categorized by both class and level. The classes listed are 'Fighter', 'Magic-User', and 'Cleric'. The rows are sorted by class first, then character level.
My re-sorted version of the OD&D saving throw matrix. I hate presenting tables as images and I offer my apologies to anybody using a screen reader, but at least there's always the spreadsheet version in case anybody wants real data.

Just like with the attack roll tables from last time, these are target numbers for a d20 roll, so lower is better. And, also like a lot of oldschool attack progressions, we can see that the different classes advance at different rates: Clerics' saving throws get better every four levels, Fighters improve every three, and Magic-Users every five. And these are even the same rates at which their attack rolls improved, too! It's actually kind of amazing that the concept of PC power tiers only emerged decades later, because we're really seeing some blatant leaps and plateaus here.

But first, let's just compare the classes' starting points.

A much-trimmed version of the previous spreadsheet, showing only the lowest levels' saving throw target numbers for each class.

The Cleric broadly starts with the best saving throws, except for the Fighter's notable resistance to Dragon Breath. The Fighter is pretty middle-of-the-road, except for being the best at Breath and the worst at Spells. The Magic-User, finally, starts with the overall worst saving throws, except for their resistance to Stone. This does back up everything I've heard about how hard it is to keep MUs alive until levels where they start to be really effective.

It's also worth pointing out that we've got a clear hierarchy of difficulty between saving throws: Check out this quick-and-dirty chart where I just subtracted the "Death Ray or Poison" target number of each row from all of the other save targets.

Another spreadsheet version of the White Box Saving Throw Matrix, this time showing the whole 'Death Ray or Poison' column as zeros, while the other columns show the difference between their previous values and the Death Ray column's previous values. The Wands column shows mostly 1s, while the Stone column ranges between 0 and 4, the Dragon Breath column ranges from 1 to 5, and Spells & Staves also goes from 0 to 4.

Death Ray is definitely the easiest one to make (except that Stone, oddly, is just as easy for Magic-Users). Wands is mostly just one point harder than Death Ray. Stone is mostly a little harder than that (except for Magic-Users). Dragon Breath is mostly the hardest saving throw of all, except that Fighters are notably good at it, especially at higher levels. Staves / Spells is a little weird in terms of difficulty, landing somewhere between Stone and Breath for Clerics, solidly topping the list for Fighters, and interestingly going from second toughest for low-level Magic-Users to even easier than Death Ray for high-level Magic-Users!

So what about the classes' actual progressions? I'm afraid those aren't going to make as much sense as the attack progressions did. Let's look at how much each save's target number decreases at each step.

Another spreadsheet version of the White Box Saving Throw Matrix, this time showing the amounts by which each class' target numbers change from one row to the next. Most changes are by -2 or -3 points.

Yeah, there's some weirdness here. The Cleric's saves improve by two or three points each step, but not in any pattern I can recognize The Fighter's numbers are way more rational, improving by two points per step nearly across the board, except for that weird jump at the end of their Stone progression, and the fact that their Breath progression goes in a pretty reasonable 2-3-2-3 pattern. The Magic-User, interestingly, has something like a more rational version of the Cleric's progress: a predictable 2-3-3 pattern . . . except for that wild 3-4-5 acceleration of the Spells save. Man, you do not want to try tossing spells at a badass wizard, clearly. They will just shrug that shit off.

So, what do these progression rates average out to per level? I'll add up the total change, then divide that by the levels it takes to get there.

A revision of the previous speadsheet which showed the row-on-row changes between each class' saving throw target numbers. This version adds an additional row for each class, which divides the total change by the levels needed to reach it, effectivly showing the average change per level.

You know, for all the crazy variety of level plateaus and progress steps, the ultimate rates of improvement are surprisingly similar. Seems like you could just replace all of these with simple 1/2, 2/3, and 3/4 progressions.

Anyway, while oldschool attack progressions were perfectly sensible at the start and got straight-up baroque from there on (until 2e rationalized things), it turns out that saving throws were weird from the very beginning.

AD&D 1e

So three years later, in 1979, we've got the Advanced Dungeons & Dragons 1e Dungeon Masters Guide, and the rows are sorted by class! Much better!

Photo of a page from the AD&D 1e Dungeon Masters Guide, showing a large table titled 'Saving Throw Matrix for Characters and Human Types'. The first column names the classes featured: Clerics, Fighters, Magic-Users, and Thieves. The rows show the saving throws covered: 'Paralyzation, Poison or Death Magic', 'Petrification or Polymorph', 'Rod, Staff or Wand', 'Breath Weapon', and 'Spell'.
The saving throw table for AD&D 1e. Not an ideal photo, but as always, there's a spreadsheet version!

Okay, obvious stuff first.

Again, I'll start by comparing the classes' starting points.

A much-trimmed spreadsheet version of the AD&D 1e Saving Throw Matrix, showing only the lowest levels' saving throw target numbers for each class.

Interestingly, MUs are starting out a lot better off this time! In AD&D, they're good against Spells even at early levels, plus they're great against Wands. This makes me think that, at this point in the game's evolution, "Save vs. Wands" had not yet become a proto-Reflex save: Instead of being about dodging beams from magic items, maybe it's about resisting slightly weaker versions of spells.

Level-0 characters (somewhat oddly classed as Fighters here) are predictably the worst at all saves.

Surprisingly, even Fighters with actual class levels are in kind of a rough place, here: They don't start off better than any other class at any save! In fact, they're actually the worst against Breath! That's a shock.

Now, let's see if the saving throw difficulty hierarchy still stands.

Another spreadsheet version of the AD&D 1e Saving Throw Matrix, this time showing the whole 'Death Ray or Poison' column as zeros, while the other columns show the difference between their previous values and the Death Ray column's previous values. This time, the numbers range a lot more widely.

Looks like it's a little different this time around! Death saves are still broadly the easiest, but Petrification is now slightly easier than Wands—especially with Magic-Users and Thieves being even better against it than Death! Breath is still the toughest save. The Thief class, new on the scene, seems like it's going to kick ass against Wands and Spells in the same way that Fighters are great against Breath and MUs are great against Spells.

It's cool to have those 0-level numbers in here, since they could be looked at as a kind of baseline, and they definitely hold up that Death < Petrification < Wands < Spells < Breath hierarchy.

Anyway, let's check out the progressions (leaving out 0-level characters, because they're not really Fighters).

Another spreadsheet version of the AD&D 1e Saving Throw Matrix, this time showing the amounts by which each class' target numbers change from one row to the next. Most changes are by -1 or -2 points. There's also an additional row for each class, which divides the total change by the levels needed to reach it, effectivly showing the average change per level.

Wow, this seems pretty straightforward! All of the Cleric's saves actually have the same progression, even if the pattern's kinda weird. And all of the other classes have mostly consistent progressions, except that Fighters get a slightly better one for Breath, MUs get a worse one for Death (curious!), and Thieves get much better ones for Wands and Spells (which is further evidence for Wand effects just being considered weaker versions of Spell effects in this paradigm).

Notably, there are no crazy accelerations like the White Box MU's headlong charge towards spell immunity.

I don't know why the Fighter's last step doesn't make their Breath Weapon save any better; maybe taking full breath weapon damage only on rolls of 1 was just too good? I guess this explains why the Fighter starts off so bad against Breath, anyway. While the Fighter's saves start out the worst, that every-two-levels improvement rate actually gives them the best saves at high levels.

Looking at the per-level averages, we see the Cleric and MU's progress rates have gotten worse since the White Box days, while the Fighter's have kinda stayed the same. The Thief's rates are notably abysmal, except for Wands and Spells. Again, one could roughly convert these to simple fractional rates, but it'd take some uncomfortable rounding in a few places.

B/X

Okay, time for B/X D&D! I'm really curious about this one, due to that hack I've been contemplating.

A messy collage of six saving throw tables from the B/X D&D Expert Rulebook, diplaying the save target number for six classes. They are labeled 'Clerical', 'Dwarf/Halfling', 'Elf', 'Fighter', 'Magic–User', and 'Thief'. Yes, 'Clerical'.
The saving throw tables from the B/X Expert Rulebook, somewhat roughly hacked and pasted together into a horizontal arrangement. It's a mess, but I've got two spreadsheet versions: one the follows the original organization, and another that combines the tables into one.

Huh. "Clerical". I dunno, that just seems like a weird place to use the adjective form. Sorry, the adjectival form.

Anyway, as expected, the B/X tables seem to ignore AD&D and iterate off White Box D&D directly. So, instead of Paralysis being folded into Death saves, it's added to Stone. Also, Rods and Staves are in there with Spells instead of Wands.

Also worth noting: Wow, the Dwarf and Halfling have great saves! I sorta remember that being their thing, but I'm really seeing it now. The Elf is really great, too, which is a little more surprising: That class already has so much going for it.

I'm still watching for that moment when the Wands save becomes about dodging wand beams rather than shrugging off their effects. I know that's definitely in place when the BECMI Master Rules come out (1985), because that's where we get optional rules to apply Dexterity modifiers to both Wands and Breath saves.

I'll skip the save difficulty check and the starting point comparison. Just as in OD&D, the difficulty hierarchy goes Death < Wands < Stone < Spells < Breath. Another way to put it would be that the hierarchy matches the column order if you're only considering the Fighter. If you factor in all classes, then Breath is tougher than spells.

So, let's get to the progressions!

A spreadsheet version of the B/X saving throw tables which combines all six into one and shows the amounts by which each class' target numbers change from one row to the next. Most changes are by -1 or -2 points. There's also an additional row for each class, which divides the total change by the levels needed to reach it, effectivly showing the average change per level. A whole lot of the change-per-level rates are '-0.6666666667'.

Looks like the Cleric, Fighter, and Magic-User have the same progression rates as in White Box D&D, so it's really just the demihumans and Thief who are new here. Looks like the demihumans, while they do have their own starting points, basically use the Fighter's progression rates. There are a couple differences, though: The Dwarf and Halfling actually get faster improvement in their Breath saves than the Fighter (I suspect some connection to The Hobbit). The Elf gets a little bit of a bonus against spells, and then their progress vs. Stone slows down at their maximum level. That seems especially weird given the Elf's famous resistance to paralysis effects.

The per-level rates are also very OD&D, and again I can imagine rounding each of these off to 1/2, 2/3, and 3/4 progressions.

AD&D 2e

Okay, so when I looked into oldschool attack mechanics, 2e was like a breath of fresh air, making everything a hell of a lot simpler. Let's see if that happens again for saving throws.

A table called 'Character Saving Throws' from the AD&D 2e Players Handbook. The first column names the class groups featured: Priests, Rogues, Warriors, and Wizards. The rows show the saving throws covered: 'Paralyzation, Poison, or Death Magic', 'Rod', 'Staff, or Wand', 'Petrification or Polymorph', 'Breath Weapon', and 'Spell'.
The Character Saving Throws table from the AD&D Second Edition Players Handbook. Here's the spreadsheet version.

Wow. It's . . . the same. With the exception of the Wands and Petrification columns being swapped to match the non-Advanced line, and the class names being swapped for class groups, this is exactly the same as the 1e table!

I guess I can skip the analysis for this edition, but I'm left wondering why there weren't any changes here. Why didn't the saving throw tables get the same kind of simplification as the attack roll tables? Maybe they figured saves weren't broken and didn't need fixing, or maybe they just didn't want to get into the math.

Rules Cyclopedia

Okay, here we go. Last time, the Rules Cyclopedia was where things really got crazy, and I think saving throws were pretty goofy from the start. Or will the RC table just be an extended version of the B/X one? Let's see!

...Oh, no! Turns out this is the edition where they finally put the saving throws in the individual class sections instead of combining them in a totally separate part of the book! It's surely better for actual play, but it's definitely more annoying for me.

An absolute hackjob of an image the assembles nine different saving throw tables from the Rules Cyclopedia in one place. Each on is for a different class, those being Cleric, Fighter, Magic–User, Thief, Dwarf, Elf, Halfling, Druid, and Mystic.
Here are all nine of the Rules Cyclopedia's class-specific saving throw tables, sloppily combined into one big image. Once again, I have to apologize for anyone using a screen reader here. I have done my best to adapt this mess into spreadsheets in both original orientation and transposed to be a little more unified.

I've gotta go back to the bullet points for this one.

It's also worth pointing out that this edition has an optional rule for factoring a bunch of different abilities into saving throws.

Strength: Modifies saving throws vs. paralysis and turn to stone.
Intelligence*: Modifies saving throws vs. mind attacks (charm, confusion, control, fear, feeblemind, sleep, etc.).
Wisdom*: Modifies saving throws vs. spells.
Dexterity: Modifies saving throws vs. wands and dragon breath.
Constitution: Modifies saving throws vs. poison (but not vs. death ray).
Charisma: No bonus to saving throws.
* Combined modifier cannot exceed +/-3.

I like this option! I'm actually more excited to see saving throws influenced by ability scores than by class. There are a few odd things here, though. I don't know why Constitution shouldn't protect you from death rays, for one thing. This also makes it clear that, in this edition, the Wands and Breath saving throws are kind of doing the same thing. I guess the idea is that Wands is for beams and Breath is for area effects, which is why Breath is more difficult. Works for me.

Anyway. Let's see what the progressions look like.

A spreadsheet version of the Rules Cyclopedia saving throw tables, this time combined into two tables (because one table would have been too tall). It shows the amounts by which each class' target numbers change from one row to the next. Most changes are by -1 or -2 points. There's also an additional row for each class, which divides the total change by the levels needed to reach it, effectivly showing the average change per level.
My attempt to analyze the level-by-level progress of the saving throws in the Rules Cyclopedia, showing how each save target changes from that of the previous level. For a better look, check out the original spreadsheet!

So that's a lot of data, but the thing that jumps out at me is the way progress slows down towards the highest levels of a lot of these classes. And it's easy to understand why: The target numbers should never drop below 2—since a roll of 1 should always be a failure—and most classes go up to level 36! Anyway, given the changing progress rates, it's no surprise that the per-level rates come out looking a bit haphazard.

The other thing I can't help but notice is that the Elf and Halfling both have crazy stupid good progress rates. I mean wow.

It looks a lot like high-level RC characters are all but untouchable, which I suppose fits into the whole transition-from-adventurer-to-immortal thing.

In conclusion

As I feared, it's hard to find a lot of straightforward logic in the old saving throw tables. Instead, it all feels . . . well, not exactly vibes based, but kinda hand crafted. It's not as elegant as I'd like, you know? Lotta compromises and in-flight course corrections.

Anyway, the B/X tables were my main interest through all of this, and they at least point the direction towards a simple solution: I honestly think I'd just use a 2/3 progression for every class in every save. The distinctions between each—to the extent that I want any—could be baked in from the starting numbers. If everyone improves at the same rate, those different starting points will always matter.

However, I'm still not fully sold on this whole paradigm for saving throws! The messiness of what you roll for a flesh to stone spell or a gorgon's breath is annoying. I've heard it explained that you resolve ambiguities by just going with the leftmost applicable column (which will usually mean the easier save), and that definitely helps practically . . . but not aesthetically. The arguments I've heard for threat-focused saves (Poison, Dragon Breath, Spell) as opposed to defense-focused saves (Fortitude, Reflex, Will) is that the former tells you from the start what kinds of troubles you'll face in the game, and lets you decide narratively how your character avoids them. But I dunno; those ideas just don't do much for me.

However, I have heard some compelling arguments for making the difficulty of saving throws completely based on the character rolling the save, rather than on the potency of the threat: It avoids situations where, due to relative power levels, success is impossible or inevitable. So that's cool, at least. And relevant to that dumb hack idea I can't stop contemplating.


Oldschool D&D attack bonus

A battered old copy of the Players Manual from the 1981 Dungeons & Dragon Basic Set. It is mostly red, and features very well-painted, intensly 1980s fantasy art of a lone warrior rushing into battle against a giant red dragon.
My first RPG book, the 1981 Red Box Players Manual. Illustrated, of course, by the great Larry Elmore.

First, a little context. I've been playing Dungeons & Dragons since the Red Box—being one of that generation who grew up watching Venger chase a bunch of isekaied teenagers across "the realm of Dungeons & Dragons"—but I never really got to play much (or properly!) when I was a kid. I got all the BECMI sets, spent my paper route money on loads of AD&D hardcovers, and enthusiastically made the transition to 2nd Edition and its profusion of cool settings. Still, I did way more reading and pointless character-making than playing. I think I didn't really get D&D's rules back then, and I got way into other RPGs that offered more interesting options and ran on systems that seemed to make more sense.

Then, in the early 21st century—sometime around the release of v.3.5—I got dragged back to D&D for a forum-based game. I don't think I was thrilled to learn that the Magic: The Gathering people had bought TSR, but I had to admit that WotC had created a version of D&D that actually seemed pretty cool—flexible, logical, comprehensible, and fun!

Anyway, I stuck with WotC-era D&D, my enthusiasm occasionally waning, but then being won back when the company would release another new edition or take things in a new direction. I thought 4e was a whole lot of fun, and that the vast majority of complaints against it were born of misunderstandings, bad marketing, and basic resistance to change. And 5e almost managed to deliver on its ludicrous promise of being the D&D for all of the game's disparate communities, while also bringing in loads of new people!

…But at this point I'm kinda burnt out on 5e. A system that seemed really fast and lightweight during the playtests is starting to feel clunky and fiddly. And the 2024 update—clearly v.5.5 in all but name—feels like progress in the wrong direction, embracing a combat-centric gameyness that feels like 4e without the tactical depth.

Meanwhile, I've been enjoying the OSR/post-OSR scene's work for years! They haven't managed to lure me back to TSR-era D&D—I still have trouble seeing the virtues in a lot of those mechanics—but the blogs and new games those folks have produced are frequently loads of fun.

The actual point of this post

So, I recently read through all of Chris P Wolf's very cool "Thursdays in Thracia" posts. Chris' thoughts on B/X D&D lead me to look up Old-School Essentials and contemplate those rules a little. Also, Chris mentioned using ascending armor class and attack bonuses in B/X, which sounded pretty rad. So I decided to go back and look at the attack mechanics of some 20th-century D&D editions and see how easy they'd be to convert into that modern paradigm, and what that would look like. Mostly because I knew that it would involve spreadsheets, and that kind of thing is somehow fun for me.

OD&D

I actually tried looking at Chainmail first, but (perhaps unsurprisingly) D&D's wargame predecessor didn't prove to be a great candidate for this exercise. So I dug up the hit roll chart from the 1976 "White Box" edition of Dungeons & Dragons. It looked something like this.

A text reproduction of a D&D table titled Attack Matrix 1.: Men Attacking. It lists armor classes from 2 to 9, describes the kind of armor that would provide each armor class (for example, a charcter with AC 4 is probably using chain mail and a shield), and shows the minimum roll on a d20 for 'Fighting Men' of different levels to hit a target with that armor class.
The "Men Attacking" table from the ancient "White Box" version of Dungeons & Dragons. Even though this is a totally clear reproduction, you can also see my spreadsheet version in case you want to copy it or something.

There are some immediately interesting things here.

Anyway, this actually looks like it would convert to an attack-bonus-vs.-ascending-AC mechanic really easily. So let's try it.

level Cleric Fighting Man Magic-User
1 +0 +0 +0
2 +0 +0 +0
3 +0 +0 +0
4 +0 +2 +0
5 +2 +2 +0
6 +2 +2 +2
7 +2 +5 +2
8 +2 +5 +2
9 +5 +5 +2
10 +5 +7 +2
11 +5 +7 +5
12 +5 +7 +5
13 +7 +9 +5
14 +7 +9 +5
15 +7 +9 +5
16 +7 +12 +7
17 +9 +12 +7
18 +9 +12 +7
19 +9 +12 +7
20 +9 +12 +7
21 +12 +12 +9
22 +12 +12 +9
23 +12 +12 +9
24 +12 +12 +9
25 +12 +12 +9
26+ +12 +12 +12

The logic here is that all three classes' attack bonuses advance first by 2 points, then by 3, then 2, then 2 again, and then finally by 3. Fighting Men advance through these "attack classes" every 3 levels, Clerics advance every 4 levels, and Magic-Users every 5. And everybody maxes out at +12 (what we might call "attack class 6"), at which they've got a 95% chance to hit a target in chainmail (with no shield) and a 100% chance to hit anybody in worse armor.

It's very easy to describe, but it seems odd that the progression isn't smoother, right? And why the 2-3-2-2-3 sequence?

So naturally I calculate what the overall bonus-progression-per-level looks like for each class, and I get something like this.

If you're familiar with 3e (or the d20 system in general), these numbers might jump out at you: They're reminiscent of the Base Attack Bonus progressions from that era, in which Fighters get +1 per level (or "full BAB"), Clerics essentially get +0.75 per level ("3/4 BAB"), and Wizards essentially get +0.5 per level ("1/5 BAB"). Admittedly, 0.6 isn't all that close to 0.75, but 3e is notorious for making Clerics overpowered as a way to bribe people to play a class perceived as vital but boring.

Anyway, I suspect the WotC team that created 3e did the same math that I just did, and that's pretty interesting to me.

AD&D 1e

The next major step in D&D's evolution is Advanced Dungeons & Dragons, which starts to come out in 1977. Strangely—I mean straight up fuckin wildly—the new edition's attack roll charts don't emerge until 1979, because they're all printed in the Dungeon Masters Guide. Maybe I'm missing something—I fully cop to not having a great handle on these books I've owned since I was a kid—but the PHB doesn't seem to actually talk about attack rolls. The Character Classes chapter does have charts for hit point progression, spell slot progression, title progression, etc.—there's even a huge one for the Assassin's fees!—but no attack progression! I can only conclude that the results of attack rolls were considered the DM's business, since you have to know the target's AC to adjudicate them. Then again, the DMG also contains the saving throw charts, and I don't see an equivalent rationale for that.

A page from my yellowing old copy of the AD&D 1e Dungeon Masters Guide, showing four dense tables full of numbers, described as 'attack matrices' for four different groups of character classes: one for Clerics, Druids, and Monks, one for Magic-Users and Illusionists, one for Fighters, Paladins, Rangers, Bards, and 0-level halflings and humans, and finally one for Thieves and Assassins.
The AD&D 1e attack matrices in my very own ancient DMG Again, I've got a spreadsheet version that should be a little easier to parse.

Anyway, AD&D 1e features four separate "attack matrices", basically covering a full page.

And wow, you can really see how much the game has changed in this edition! We've gone from three classes to eleven, there are four progression schedules instead of three, we've replaced "normal men" with the concept of "0 level" characters, we're starting the AC scale at 10 instead of 9, and we're riding the descending scale all the way down to -10! This page is also a classic example of the 1e DMG's famously bad information presentation and weird editing.

One notable thing here is that the roguish types (Assassins and Thieves) get a slightly worse attack table than the priestly types (Clerics, Druids, and Monks). I'm not sure if the Thief was in that same position when it was introduced in the Greyhawk supplement.

Anyway, I can't proceed without bringing up the implied setting details present in this footnote.

*Half-elves use the attack matrix as elves do, while non-player character half-orcs use the attack matrix for monsters. Dwarves, elves and gnomes are never lower than 1st level (unlike halflings and humans, which may be of 0 level).

So "0 level" is only for humans and halflings, while dwarves, elves, half-elves, and gnomes always have class levels! And even though half-orcs can be PCs in this edition (and I will resist the urge to do a whole sidebar on how they're presented in the 1e PHB, but wow, it ain't cool), non-player half-orcs are technically monsters.

The big news here, though, is that the AD&D attack mechanics cannot be cleanly translated into an attack bonus the way the OD&D ones can! Check out those columns: We've got a very normal scale at the lower ends, with an AC improvement of 1 predictably meaning that the attacker needs to roll 1 higher to hit. But then, up in the negative zone of heavily armored targets, we've got all these 20s! Each column goes through a stack of five 20s before returning to 1-to-1 scaling. It's weird stuff.

B/X

Here's where we come to the system that started this whole distraction of mine, the 1981 Moldvay/Cook continuation of the non-Advanced line. I get the impression that B/X (generally in its Old-School Essentials or Labyrinth Lord incarnations, or of course some kind of homebrew) is much beloved by lots of modern players, including some folks who started playing TTRPGs in this millennium. I'm kind of interested in it.

Anyway, here's what the attack table in the Expert Rulebook looks like.

A text reproduction of the 'Character Attacks' table from the B/X D&D Expert Rulebook. It shows the minimum rolls on a d20 for Fighters, Clerics, and Magic-Users of different levels to hit targets of various armor classes.
The "Character Attacks" table from B/X D&D. Here's a spreadsheet version, if you want it. Yes, I did make this whole thing into a proper HTML table first, before realizing that it didn't fit on my site.

Okay! So it's immediately clear that B/X evolved from OD&D, not AD&D. Even though the axes have been transposed, the AC scale goes into the negatives, and we've now got Thieves and demi-humans included, this looks a lot like the White Box chart. The "normal man" terminology is back, although this time it's clear such regular folks are worse in combat than novice adventurers, just like the 0-level NPCs in AD&D. Thieves have the same attack progression as Clerics, again prefiguring 3e (in which both Clerics and Rogues are 3/4 BAB classes). It's slightly surprising that the Halfling (which is, of course, a class in this edition) is on the Fighter's level instead of the Thief's. Oh, and I'm happy to see we've gone from "Fighting Man" to "Fighter", as in AD&D.

This should be easy to turn into an attack bonus table.

level Cleric, Thief Dwarf, Elf, Fighter, Halfling Magic-User
1 +0 +0 +0
2 +0 +0 +0
3 +0 +0 +0
4 +0 +2 +0
5 +2 +2 +0
6 +2 +2 +2
7 +2 +5 +2
8 +2 +5 +2
9 +5 +5 +2
10 +5 +7 +2
11 +5 +7 +5
12 +5 +7 +5
13 +7 +9 +5
14 +7 +9 +5
15 +7 +9 +5
16 +7 +9 +7
17 +9 +9 +7
18 +9 +9 +7
19 +9 +9 +7
20 +9 +9 +7
21+ +9 +9 +9

So, it's almost exactly like the OD&D table, except that it includes more classes and tops out at +9 instead of +12. But there's some else to keep in mind: The B/X chart doesn't include target numbers higher than 20 or lower than 2, so I guess this might be where "20 always hits, 1 always misses" entered the canon. I will not bother to chase that question down today, though.

AD&D 2e

Several years later, in 1989, we hit one of D&D's big, controversial edition changes: the release of Advanced Dungeons & Dragons 2nd Edition. I remember feeling like this one didn't actually change all that much, but of course this is where we got the real precursor to 3e's Basic Attack Bonus: the "To Hit Armor Class 0" number! This is where we exchange looking up our attack results on a chart for doing some slightly awkward math! I think I considered it an improvement at the time. I think I still do.

Check this out.

Two tables from AD&D 2e: 'Calculated THAC0s' and 'THAC0 Advancement'. The former shows, simply and intelligibly, the minimum roll on a d20 for characters from the four class groups—Priest, Rogue, Warrior, and Wizard—of various levels to hit targets with armor class 0. The second table shows the rate at which each class group's THAC0 improves as they gain levels.
The "Calculated THAC0s" and "THAC0 Advancement" tables from AD&D 2e. And yep, I did a convenient spreadsheet version of these, too.

I'm including two tables here, since they're so simple and concise. I love that 2e explicitly states the progression schedule so that I don't even have to do the math!

Other interesting stuff:

This should be the easiest to convert into an attack bonus progression so far: I'll just subtract every THAC0 value from 20.

level Priest Rogue Warrior Wizard
1 +0 +0 +0 +0
2 +0 +0 +1 +0
3 +0 +1 +2 +0
4 +2 +1 +3 +1
5 +2 +2 +4 +1
6 +2 +2 +5 +1
7 +4 +3 +6 +2
8 +4 +3 +7 +2
9 +4 +4 +8 +2
10 +6 +4 +9 +3
11 +6 +5 +10 +3
12 +6 +5 +11 +3
13 +8 +6 +12 +4
14 +8 +6 +13 +4
15 +8 +7 +14 +4
16 +10 +7 +15 +5
17 +10 +8 +16 +5
18 +10 +8 +17 +5
19 +12 +9 +18 +6
20 +12 +9 +19 +6

And yeah, this almost looks like a bunch of 3e BAB progressions!

Rules Cyclopedia

Okay, one more. Let's just back over to the non-Advanced line to see how things evolved there. So, the B/X sets were followed by Mentzer's series of five big, beautiful, toy-store-friendly boxed sets, and then in 1991 that stuff was all compiled and revised by Allston into the Rules Cyclopedia. This was after my time in the realm of Dungeons & Dragons, so I haven't got any contemporary impressions of it.

So, let's see what the compiled rules of the whole BECMI edition have for an attack roll table.

Low-quality scan from the D&D Rules Cyclopedia, showing the massive 'Attack Rolls Table: All Characters'. It fills a whole page, is broken into two parts, and repeats a significant amount of information in adjacent areas.
The Rules Cyclopedia Attack Rolls Table. This image is pretty rough, so the spreadsheet may actually be necessary this time.

I . . . feel like Allston maybe could have done more revision. This one's kind of a wild ride, even when compared to AD&D 1e.

I see that the Thieves of the non-Advanced line continue to share the Cleric/Druid attack progression, unlike those in AD&D. But we've got a really weird thing going on with the demi-human classes, where they progress as Fighters at first, and then switch to a letter-designated "demihuman attack rank". Unfortunately, we've also got those strings of 20s in the negative zone, followed by sequential progression (just like AD&D 1e), which means that this can't really be converted into an attack bonus table.

Of course, the craziest thing here is that this is a descending armor class scale that starts at 9, but the ACs go up to 19. That seems less likely to be the result of catastrophically bad Dexterity than high-level magical fuckery. And, mirroring the aforementioned mass of 20s, we've also got a corresponding band of 2s on the lightly armored end of the chart, beyond which things get really funky: Really high-level characters do bonus damage to targets with really poor ACs! That's pretty interesting.

I kind of want to do some reading on these odd mechanics, but I've definitely gone overboard for this post.

In conclusion

I can see that ascending AC and attack bonuses fit just fine in B/X, if not in every oldschool edition. I think Chris' group's decision to switch to them was probably a real quality-of-life improvement that didn't impact game balance at all (to the extent that "balance" is even a thing in B/X). I'd probably do the same thing if I ran some kind of old-timey D&D. I ain't planning to do that any time soon, though.

Anyway, it was cool to see the logic and patterns underlying these old tables. I might take a similar look at saving throws, some time. Those always struck me as weird and arbitrary, but maybe there are some hidden formulae there, too.


Witch horns

(Here's a thing I wrote up a while back which doesn't have any connection to any larger project, except as a tangent from some lore-theorizing about the power sources of D&D classes. I just went with the term "witch" instead of "warlock" because it's obviously cooler.)

Witches have horns, as a general rule. Part of the initial transformation to witch status is the growth of a single horn on some part of the subject's body (usually the head, but not always). They vary quite a bit in size and shape, but color, texture, and a few other qualities will typically be uniform among witches of the same patron (or even type of patron). They grow more horns as they gain power, with new horns typically appearing on the head if the first horn was on the head, or growing absolutely anywhere if the first horn was not on the head. Previous horns might migrate and reshape a bit to accommodate new ones. Asymmetry is the norm, though.

It's commonly believed that horns are the source of a witch's power. This is totally untrue. They aren't inert, though: Witch horns are markers and beacons, broadcasting the witch's location (and possibly other particulars) to their patron at all times, and announcing their patron's identity to other supernatural beings. Removing a witch's horns doesn't particularly harm the witch, but their patron won't be happy with the witch or the one doing the removing.

Witch horns continue to broadcast their signal for some time after removal. The patron may or may not realize that an amputation has occurred, making it theoretically possible to fool them as to their witch's location, or even allow someone else to masquerade as the witch. Witch horns are also pretty much guaranteed to get the attention of nearby supernatural beings, for good or ill.

Lost horns grow back once the witch gains enough power to grow a new horn (meaning that multiple horns will grow at once), and may return in a new location.

Rogue witches typically remove all their horns immediately. Gaining power is dangerous for them, since in that time between the regrowth and re-removal of horns, their patrons know where they are.

A witch's power resides all throughout their body, but mostly in their heart and blood. It is possible to absorb some power by drinking a witch's blood, but it's not very healthy for someone who's not also a witch. However, the beneficial effect is much more dramatic (if less controlled) for non-witches. The same is true of consuming a witch's heart, but to an even greater degree.


Scrambled spell names

Way back in 2017, when text-generating algorithms were still goofy fun, Janelle Shane fed a neural net a whole pile of D&D spell names, and got it to generate stuff like "Hold Mouse" and "Mind Blark". I wanted to get in on that action, so I pasted together my own spell list and threw it into some online text scrambler. The results weren't as funny as Janelle's spells, but instead seemed like completely legit, usable stuff!

Anyway, I'm going to try writing some of them up with actual mechanics. I'll do it 5e-style, since that's what I've been playing most recently, but I'm not going to bother detailing any material components or assigning the spells to classes. I honestly find writing in the 5e house style kind of excruciating, so let's see how long this takes me!

Banishing Weapon

Level 3 Conjuration

Casting Time: Bonus action
Range: Touch
Components: V, S
Duration: Concentration, up to 1 minute

You imbue a weapon with power over summoned and extraplanar creatures. Until the spell ends, creatures that are not native to the local plane of existence are vulnerable to damage done by this weapon. If it isn't already a magic weapon, it becomes one for the duration.

If a summoned or extraplanar creature is reduced to 0 hit points by a weapon under the effects of this spell, or is touched with such a weapon while the creature is at 0 hit points, the creature is banished to its home plane, and cannot revisit the plane from which it was banished for a year and a day.

Destructive Exhaustion

Level 2 Necromancy

Casting Time: Action
Range:
60 feet
Components: V, S
Duration: Concentration, up to 1 minute

You curse a creature with failing stamina. Until the spell ends, every time the target takes an action, it must make a Constitution saving throw. On a failed save, the creature suffers one level of exhaustion.

Horrid Person

Level 3 Illusion

Casting Time: Action
Range: 90 feet
Components: V, S, M
Duration: Instantaneous

You manifest an illusory horror in an unoccupied space that you can see within range, and designate any number of creatures you can see as protected from its influence. It appears as a shrouded, humanoid being of surpassing repugnance—possibly undead or diseased—and it uses the Illusory Horror stat block.

Illusory Horror

Medium Construct


Armor Class: 12
Hit Points: caster's HP at casting
Speed: 40 ft., climb 40 ft.


STR DEX CON INT WIS CHA
8 (-1) 14 (+2) 10 (+0) 1 (-5) 10 (+0) 10 (+0)

Condition Immunities: charmed, exhaustion, frightened, paralyzed, petrified, poisoned
Senses: passive Perception 10
Languages:
Challenge: none (0 XP)


Traits

Ephemeral. If the horror is reduced to 0 hit points, it completely ceases to exist, and frightened conditions caused by it end immediately.

Illusory Movement. The horror ignores difficult terrain and doesn't trigger traps.

Revulsion Aura. Any creature that starts its turn within 60 feet of the horror must make a Wisdom saving throw vs. the caster's spell save DC. On a failed save, the creature is frightened until the start of its next turn. On a successful save, the target becomes immune to the horror's Revulsion Aura.

Actions

Repellant Touch. The horror touches a creature within 5 feet. The target must make a Dexterity saving throw vs. the caster's spell save DC. On a failed save, the target suffers disadvantage on Wisdom saving throws against effects that would cause the frightened condition for 1 minute, and loses any immunity to the horror's Revulsion Aura gained by saving against it.

Reactions

Hideous Agony. When the horror takes damage, creatures within 60 feet of it with the frightened condition become paralyzed for 1 minute, or until their frightened condition ends.

You automatically succeed on all saving throws against the horror's abilities. Creatures you designated as protected when you cast the spell save against its abilities with advantage.

The horror shares your initiative count, but it takes its turn immediately after yours. Its movements are determined randomly each round by the following table.

d20 Movement
1–10 Move towards the nearest creature it can see other than you or a protected creature.
11 Move 2d4 × 5 ft. north.
12 Move 2d4 × 5 ft. northeast.
13 Move 2d4 × 5 ft. east.
14 Move 2d4 × 5 ft. southeast.
15 Move 2d4 × 5 ft. south.
16 Move 2d4 × 5 ft. southwest.
17 Move 2d4 × 5 ft. west.
18 Move 2d4 × 5 ft. northwest.
19–20 Caper, shudder, writhe, or convulse grotesquely in place.

If the horror ends its turn within 5 feet of a creature other than you or any creature you designated as protected, it will use its Repellant Touch on it.

If it's not destroyed, it will eventually wander off and cause havoc somewhere else.

Phase Hand

Level 2 Transmutation

Casting Time: Bonus action
Range: Self
Components: V, S
Duration: Concentration, up to 1 minute

One of your hands shifts partially into the Ethereal Plane, and can interact with creatures and objects on that plane, while passing effortlessly through objects on your current plane of existence. Additionally, it can temporarily convey this state to small objects, allowing you to—for example—unlatch a door from outside, steal coins from a pouch without opening it, or ignore a target's armor when making unarmed attacks against it.

Rainbow Smite

Level 1 Evocation

Casting Time: Bonus action
Range: Self
Components: V
Duration: Concentration, up to 1 minute

A melee weapon you wield is enveloped in coruscating rainbow light. The first time you hit with that weapon during this spell's duration, the attack deals an extra 2d8 damage to the target. Choose one of the d8s. The number rolled on that die determines the type of the extra damage and the additional effect of the attack, as shown below.

d8 Damage Type and Additional Effect
1 Acid. Target must succeed on a Constitution saving throw or be blinded until the end of your next turn.
2 Cold. Target's speed is reduced by 10 feet until the start of your next turn.
3 Fire. Target is set on fire, and will suffer 1d8 fire damage at the start of your next turn unless the target or a creature within 5 feet of it uses an action to put out the flames, or if some other effect douses the flames (such as the target being submerged in water).
4 Force. Target must succeed on a Strength saving throw or be pushed 30 feet in a random direction.
5 Lightning. Target can't take reactions until the end of your next turn.
6 Poison. Target must succeed on a Constitution saving throw or be poisoned until the end of your next turn.
7 Psychic. Target must succeed on a Wisdom saving throw or be charmed by you until the end of your next turn.
8 Thunder. Target must succeed on a Constitution saving throw or be deafened and knocked prone.

At Higher Levels. When you cast this spell using a spell slot of 2nd level or higher, each target takes 1d6 extra damage of the type rolled for each slot level above 1st.

Repel Guardians

Level 4 Enchantment

Casting Time: Action
Range: 120 feet
Components: V, S, M
Duration: Concentration, up to 10 minutes

Each creature in a 30-foot-radius sphere centered on a point of your choosing must succeed on a Wisdom saving throw or become disgusted and horrified by any creature, object, or place they have been commanded, hired, programmed, or enchanted to guard, protect, or imprison. This spell has no effect on creatures who serve as guardians only out of personal choice.

An affected creature must take the Dash action and move away from the object of its guardianship by the safest available route on each of its turns. If the creature is unable to move further from its charge and still has line of sight to it, the creature can use its action to make a Wisdom saving throw. On a successful save, the spell ends for that creature.

Spell Sanctum

Level 5 Transmutation

Casting Time: 24 hours
Range: Touch
Components: V, S, M (worth at least 1,000 gp, which the spell consumes)
Duration: Until dispelled

You magically prepare your location, dedicating it as an amplifier for your spells. The chosen area must fit into a 100-foot cube of space, and can't overlap with anyone else's spell sanctum.

While within your spell sanctum, you gain the following benefits.

You can only have one spell sanctum at a time, and creating a new one dispels your previous spell sanctum.

Spike Kill

Level 3 Conjuration

Casting Time: Action
Range: Self
Components: V, S, M
Duration: Instantaneous

A series of vaguely organic spines erupts from the ground in front of you, preceding in a direction you choose and covering a 100-foot-long 5-foot-wide line. Each creature in the line must make a Dexterity saving throw. A creature takes 8d6 piercing damage on a failed save, or half as much damage on a successful one. The affected area becomes difficult terrain, and can provide half cover to Small or smaller creatures.

At Higher Levels. When you cast this spell using a spell slot of 4th level or higher, the damage increases by 1d6 for each slot level above 3rd.

Summon Vestment

Level 4 Conjuration

Casting Time: Bonus action
Range: Self
Components: V
Duration: Instantaneous

You summon onto your person an outfit that you have worn for at least an hour in the past day from a location within 1 mile. Your current outfit is simultaneously teleported to the summoned outfit's previous location. "Outfit" in this case comprises clothing, armor, jewelry, masks, wigs, and worn containers no larger than belt pouches, as well as the contents of pockets and such. It doesn't include makeup, backpacks, weapons, hairstyles, or any item that is carried rather than worn, or which extends more than five feet from the body.

Results

Well, that did take longer than I'd have liked. That 5e style is demanding, even when you crib from other works. And I'm not sure about my balance—it's hard to rationalize Drawmij's instant summons as it exists on the books, so balancing summon vestment against it is a bit complicated. My horrid person and rainbow smite are definitely long and complicated by 5e standards.

Still, it was a fun experiment! I've still got a whole pile of spells I want to try writing up-maybe about 20 or so-so this is probably the first in a series.


Dig Site Incident (One Monster, Five Rooms)

The folks over at the Garamondia and Nothic's Eye RPG blogs came up with a cool monster concept generator (Monster-Making d666), and then used it for this simple challenge: "write up a quick dungeon with d2 monsters in it, and d4+1 rooms". At least one other blogger took up the challenge, so here are the 1d2 Monsters and 1d4+1 Rooms dungeons of which I am currently aware.

Anyway, this looks like loads of fun, so I'll give it a try.

Background

Four months ago, a team of scholars, wizards, laborers, and bodyguards from the Lyceum showed up in the remote village of Graywallow and paid the Inskle family a sack of coin for the use of their neglected back forty for the year. They then proceed to tear the rented land—and some of the neighboring fields—setting up temporary accommodations and staging for an ambitious, magically assisted excavation.

The project—lead by one Professor Olstokken—sought to unearth the sunken ruins of an ancient civilization known as the "Tshale Valley culture". Historical research led them to this site, and preliminary divinations confirmed the presence of artificial structures deep below the ground. Olstokken's people bored a shaft into the Inskle farm, and eventually hit a buried rooftop. Opening the structure, they found a vast hall of crumbling greenish stone. They widened and reinforced the pit, set up a pair of winch-driven elevators, and began to explore half-buried Tshale city.

They found some remains from the debatably human inhabitants, countless artifacts of daily life, and even a trove of mysterious magical—if largely nonfunctional—objects. When they uncovered a whole magical room, Olstokken could read enough of the remaining magic to be certain it was a large-scale teleportation device. Gripped by the hope that it might lead her to another Tshale site, she bought the Inskles' oldest sheep and had her assistants empty its veins into the chamber's sacrifice bowl, feeding power into the sleeping system.

The professor took all the precautions she could manage under the circumstances, intending only to revitalize the device enough to make its enchantments clearer, more decipherable. There was no way she could have known the stone-insulated depths below the disc still held enough power to open a gate, or that it wasn't enough to make a connection to any other Tshale planar well. Instead, the ragged end of the failed conduit scraped into some between place, and sucked a hapless alien being into that ruined city.

In its panic, the White Mandala killed Olstokken and her assistants and bodyguards first. Then it blundered through the rest of the site, smashing things and people as it went, sometimes by accident and sometimes on purpose. It tried to fly up the shaft, but got tangled in the chains and fell back into the ruins. It's been down there for two days, and both the Lyceum and the people of Graywallow are wondering what happened.

The dig site

1A: Shaft

The shaft leading to the dig site is about 100' deep and 20' in diameter. The first 10' are sheathed in rusty steel, and the remaining 90' bore through bare, maroon-colored rock. Two powerful, mine-style elevators were built (hastily) into the shaft: One 5' × 10' platform for people, and one 10' × 15' platform for freight.

The smaller elevator is at the surface, but its gear assembly is damaged, as if a huge force yanked the chains which move it. Its counterweight is still attached, and rests on the stone floor far below. The mechanism is repairable by a competent engineer, if they're willing to suspend themselves over an uncanny pit of doom for an hour or so.

The larger elevator is in working order, but the platform is 30' down the shaft, and its locking mechanism is engaged. It can't be raised or lowered from the surface unless someone goes down to the platform and flips a switch. Its massive counterweight hangs, threateningly, 30' over the bottom of the pit.

Either elevator—if it's in working order—can be raised or lowered from the surface with 30 minutes of exhausting effort by two people or a beast of burden, or a full hour by one person. A significant magical motive force could do it in five minutes. Neither elevator can be moved from the bottom, because those mechanisms were smashed by the White Mandala. They would take days of labor and replacement parts to fix.

1B: Great hall

This is a huge, partially collapsed underground construction. It runs hundreds of feet to the east and west, and is about 60 feet wide, but much of that distance is obstructed by stone pillars, wooden supports added by the research team, collapsed areas, and the wreckage of assorted temporary structures. The vaulted ceiling is about 50' high in the middle and 40' at the edges. The ruin is mostly of greenish stone, ornate and baroque to the point of convolution, and crumbling into a layer of gravel.

There are seven corpses of Lyceum scholars and laborers, each horribly broken by tremendous blunt force. One of these hangs 30 feet in the air, transfixed improbably by an abstract decorative protrusion on an ancient pillar.

Around mid-day, the middle of the great hall is lit by sunlight via the shaft. Otherwise, this area is pitch black.

2: Collapsed wing

The northern side of the great hall opened up into a multitude of side passages which, as they were excavated, were repurposed as subsurface barracks and latrines for team members while they worked below ground. This is also where most of the Lyceum's people took shelter when the White Mandala arrived. Unfortunately, the creature's frantic lashing and flailing collapsed the supports and entryways here, trapping four laborers, three scholars, and one guard inside. Ten others were crushed or suffocated.

The survivors are starving, severely dehydrated, and half mad with terror. They're likely to hear any adventurers moving around nearby, and will scream desperately for help. They won't be eager to talk about what happened or even who they are until they're safe on the surface, or at least freed from the collapse.

It would take 1d6 × 10 minutes of labor with tools (or 1d12 × 10) for someone in the great hall to save each person. Up to three people can work to extract one survivor, reducing the time needed accordingly. Rescued survivors can be convinced to help free their colleagues, but won't be eager. The work makes loads of noise, and while the White Mandala is entirely deaf, nobody here knows that.

3: Fungus cavern

The southern wall of the great hall was once lined with a series of tall, fused quartz windows which looked out on some primordial scene of wild beauty. Most of those windows have shattered inward millennia ago, each one admitting a small avalanche of maroon scree. To the southeast, however, there's a 30-foot stretch of windows that instead reveal a natural cavern.

One of the windows in this section was broken outwards by the Lyceum team, and gives access to a space even larger than the great hall. The roar of a waterfall can be heard somewhere within.

Beyond, much of the floor is corrugated with pale blue mycelium, which gives rise to a forest of bulbous fungal bodies around three or four feet high. These are harmless, but inedible.

A river runs through this cavern, spilling down from the ceiling at one end and carving a tunnel to greater depths at the other. The water is cool and clean, if treacherously fast in some places.

Past the fungus and the river, the far end of the cavern is pocked by gravel-choked tunnel openings around three to five feet in diameter. The desiccated carcass of a tremendous cavern worm extends from one of these. The Lyceum's security team killed this thing while exploring the cavern. A few broken arrows remain embedded in it, and there are many more wounds where intact arrows were retrieved.

4: Storage room

At the eastern end of the great hall, a 20-foot doorway opens up into a roughly dome-shaped space which might have once been a temple or arena. If the White Mandala's location hasn't already been established, there's a 50% chance it's in here. Otherwise, it's at the planar well (5).

The section of the dome nearest the hall has been furnished with tarps and wooden crates from the surface, and was used as a triage, cleaning, and storage area for artifacts retrieved from the ruins.

Immediately by the entrance, there are two dust-strewn tables where objects were cleaned and examined. One table is askew, and the other has been smashed. The area is strewn with tumbled chairs, lanterns, cleaning tools, and writing utensils. There are also three notebooks cataloging the items retrieved, various digging implements (enough to outfit nine people), a few mechanical tools, and replacement parts for the elevators.

To the left of the entrance, the incomplete skeletal remains of 38 humanoids have been arranged on a series of tarps and a few tables. A small card with a hand-written number accompanies each one. The skeletons appear human, but possibly pathological: distortions and asymmetries mark nearly all of them.

To the right, more tarps and several crates host a multitude of mundane—if frequently ambiguous—ancient objects. Nothing here would be valuable to anyone who's not a scholar of Tshale studies; all the stuff somebody might steal was already hauled back to the Lyceum.

Directly across from the entrance—almost in the center of the dome—are dozens of smaller wooden crates that have been methodically arranged in a 30-foot circle and torn open. Within each one, a Tshale artifact sits among burlap cushioning and splintered wood. Many of these bleed a lurid violet haze into the air: They're all magical, and their enchantments have all been rotting away into mildly dangerous arcane pollution for millennia. They're basically useless, but they could be fully dissolved to harvest their remaining magical power.

That's why the White Mandala comes here: It's used to a much more high-energy environment, and the stinking miasma of these relics is more comfortable than the cold sterility of the rest of this place.

The further reaches of the dome are partially collapsed.

5: Planar well

At the western end of the great hall, a 10-foot doorway opens up into a 40-foot circular chamber. A pair of thick, wooden doors lie splintered on the floor of the great hall, obviously torn free when something huge pushed out from the smaller room. If the White Mandala's location hasn't already been established, there's a 50% chance it's in here. Otherwise, it's in the storage area (4).

The planar well chamber is dominated by a 20-foot disc of black, glassy material set into the green stone floor. There's a bowl-shaped depression to the left of the doorway, and the whole room is slightly concave. Channels cut into the floor lead from the bowl and across the floor, ultimately encircling the disc in a pattern of grooves. A dead sheep lies in the bowl, and its days-old blood crusts the channels on the floor.

There are five corpses here: Professor Olstokken, two assistants, and two guards. They're mangled much worse than the folks in the great hall. Their clothing and gear are pretty much destroyed, but Olstokken still has some salvageable jewelry and her excavation wand. This device can soften stone into something like clay, and suck up loose earth or sand and store it in an extraplanar space. It's only got a little charge left, but a qualified professional could fully recharge it. (And a desperate fool could attempt to charge it with the artifacts in the storage room (4).)

This room is the device that summoned the White Mandala. It's a powerful point-to-point teleportation device, and while its enchantment is wildly uncalibrated, it's not rotting like those of the devices in the storage area. An expert could reinitialize it, and possibly gain access to other Tshale sites. Even in its current state, it could be used to send the White Mandala back to its own world, if the creature can be in position when the well is activated through a fresh blood sacrifice.

The creature hangs out in here a lot, just waiting for the way back home to open up. Unfortunately, it fears and hates every living thing it's met in this world, so it's unlikely to be cooperative unless communication can somehow be established.

The White Mandala

The creature ensnared by the Professor's experiment is a radiate mass of wings that branches fractally out from a complex central joint, each one streaming with rubbery "feathers" that are extensions of—rather than extrusions from—the thing's smooth, matte-white integument. Fist-sized iridescent black spheres—electromagnetic sensory/communication organs—are placed around the body haphazardly. Three pale pink gripping legs, spined and joined like insect limbs, unfold from the thicket of wings. The whole thing is about 30' in diameter, but it can collapse itself tightly enough to fit through a regular doorway.

It's sapient, but pretty dumb, and used to being part of a collective—something between an army and an extended family. It's freaking out badly over being dumped in a strange world, but even worse over being alone. It's trapped behind enemy lines, and all local life is the enemy. It just wants to go home. It doesn't speak or even hear, but it could be reasoned with if contacted via telepathy or something.

Under most circumstances, it will attack anyone in the same room with it. It's not very interested in chasing people, and would prefer to stay in the storage area (4) or the planar well (5) unless somebody really bothers it. If it's completely infuriated, it might even try to fly up the shaft (1A) to kill someone, but it's not eager to get near the elevator chains. If it's hurt, it will flee to the magic artifacts in the storage area (4), which gradually heal it.

It can fly reasonably fast, even in the confined spaces of the dig site (although it does a lot of just pushing itself along the walls, here). It's stupidly strong for something that weighs about as much as a tall human adult, and flails away viciously at multiple targets within reach. A solid hit from it can send a target dumpling several feet away. It can see in the dark and in all directions, and detect magical auras and lots of other stuff. It has no sense of hearing or smell. Raw magic attacks (like magic missile, not fireball) heal it rather than harming it.

I'd maybe use the stats for an owlbear, but give it flight, more attacks, and some kind of knockback effect.


RSS feed

RSS icon

So I'm attempting to get an RSS feed working for this website. Since I'm not using a real blog platform or anything similar, that means I'm stuck hand-coding my RSS. Or, technically, that I'm stuck making my own generator for it.

Surprising nobody, I've gone and made a Google spreadsheet thing in an attempt to solve this problem. The idea is that I can just enter some information about my latest post and have it output something that only needs a little hand-editing to make a working rss.xml file. It seems like it works so far, but I guess we'll see!

I know that I ought to do an Atom feed too, but right now that looks like a lot of additional hassle for no identifiable additional benefit. So I'm putting it off for now.

I will take this opportunity to remind folks that free, cross-platform feed readers are still a thing after the lamented death of Google Reader. I'm currently using Feedly, and it gets the job done ("the job" mostly being the aggregation of lots of RPG blogs and a few webcomics into one place). It keeps track of my feeds and activity between desktop and mobile use. I should admit, though, that Feedly exhibits that all-too-familiar pathology of the modern app and web platform: the useless and undesired "AI" features. Seems like it only actually functions on the paid version of the service, and it's as easily ignorable in the free version as "premium" features normally are. Anyway, the thing works fine.

I have considered trying out Thunderbird or FeedReader as an alternative, though.

Oh, I should also mention that I never would have considered hand-coding an RSS file if my good friend Amanda—who builds some really nice websites for her comics projects—hadn't assured me it was possible. Thanks, Amanda!


Nexi Random Word Generator

Fragment of a sceenshot of the Nexi.com Random World Generator. Primarily features a 4-column block of nonsense words like 'topedic' and 'othemoboa' in all caps, under a header reading 'Your Freshly Minted Words'.

I really do intend to post more frequently than this, but I got really wrapped up in unnecessary and self-indulgent aesthetic changes. Honestly, that's a big part of why I started a site in the first place.

Anyway. Are you familiar with the Random Word Generator at Nexi.com? Created way back in 2004 by Sean Puckett, this little tool takes a submitted mass of text, looks at the letter selections and sequences, and outputs a set of 100 new words based on the patterns it recognizes. I think anybody who's into TTRPGs will recognize that this is massively useful for creating names for fantasy settings and such.

A really easy way to get good results from the generator is to feed it piles of culture-specific names from Kate Monk's Onomastikon—another excellent old roleplay resource, this one going back to 1997! Mixing names from two or three different cultures also works great. And of course you can do the same with names from fictional sources, or text blocks of regular words.

The generator's output is all-caps, and arranged in a set of space-separated columns, and I don't really find that ideal, so naturally I've created a spreadsheet tool to reprocess it.

Nexi output processor

Here's how it works: First, make your own copy of the spreadsheet so that you can edit it. Then, you just paste your Nexi-generated text into the blue cells. The output in the green cells will be arranged in a single column, changed to standard capitalization, sorted alphabetically, and deduped.


Random generator spreadsheets

Fragment of a Google Sheets spreadsheet. One column lists catagories of descriptive elements: head, horns, body, color, detail, detail. The next column, marked roll, lists a number for each element. The last column, marked result, lists descriptions for each element: goat, tiny spikes all over head, bulging with throbbing organs, dingy white, human hands for feet, 6 legs.

So, my other favorite TTRPG tool is Google Sheets. Spreadsheets in general, really, but the convenience of Google Sheets (and Google Drive, etc.) has me pretty solidly hooked into that ecosystem. Anyway, I'm a huge fan of generating RPG stuff by rolling on loads of tables—I really oughta do a whole post about Jennell Jaquays' Central Casting books, someday—and you can make that process a hell of a lot faster and more flexible by building your tables in a spreadsheet and using random number formulas to roll the results for you.

So, here's an example.

Osluth demon description generator

The irrelevant backstory here is that I was running a dungeon that had Orcus cultists accompanied by these demon goats, and in addition to recasting Orcus as a death god named Osluth, I decided the demon goats needed more varied and fucked up appearances.

Anway, I'd like to explain how this whole thing works, and it will hopefully be useful to the narrow sliver of humanity who wants to make random generators, and has some knowledge of how spreadsheets work, but doesn't already know how to do all of this stuff. And who actually encounters this post somehow.

The box on the left contains the actual generated description of the beast, while the rest of the spreadsheet comprises tables of possible results. The blue values are generated by formulas, while the black text is all static values. If you reload the spreadsheet, all of the random number formulas will reload, produce different numbers, and effectively roll up a new description. Reloading is kind of slow, though. It's better to just copy the sheet for yourself (File > Make a Copy) and click that green checkbox in the corner. The checkbox doesn't really do anything-it's just a TRUE/FALSE field that's not connected to anything else on the sheet-but all of the randomizers trigger every time something changes, so it functions as a handy reroll button.

Here's how it works. Each of the subtables in the sheet has three columns of numbers: chance, min roll, and max roll. "Min roll" and "max roll" are just the range of numbers that produce a given result, just like on a regular dice table. "Chance" is what determines how big that range is. The first min roll value in a table is always 1, so there's no formula generating that. Each max roll value is (min roll + chance) - 1, making the total range for a given result is equal to the chance value. Min roll values after the first are always just the previous line's max roll + 1.

So that first subtable—the one that generates the demon's head—is just a 1d17 dice table. It's four times as likely to produce a goat head as an ox head, because the "goat" result comes up on a roll of 1–4, while "ox" only comes up on a roll of 7.

Here's how we get the spreadsheet to roll a d17. The "roll" column of the description generator is produced by formulas like this: RANDBETWEEN(1, SUM(F:F)). That SUM(F:F) part just adds up the contents of column F. That's the "chance" column of the head subtable, and it sums up to 17, which is of course the same value as the maximum roll on that subtable. RANDBETWEEN(1, SUM(F:F)) generates a random number between 1 and the sum of column F, so it's effectively rolling 1d17. Each cell in the roll column looks at the chance column of a different subtable, and generates a number between 1 and that subtable's maximum roll.

The "result" column interprets the rolls using formulas like this: VLOOKUP(C2, G:I, 3, TRUE). What this means is that it takes the value in cell C2 (the "head" roll), and looks it up on the table in columns G though I (meaning "min roll", "max roll", and "head" in the head table), and returns the matching result in the 3rd column of that range (the "head" column). The TRUE at the end there tells the formula to do an "approximate match", meaning that it will treat the column G values as minimum thresholds to match: A roll of 10 will match the value 8, and produce a result of "boar". If that TRUE argument was instead set to FALSE, the formula would be in "exact match" mode, and a result of 10 wouldn't match anything. (Note that the VLOOKUP formula doesn't actually look at the max roll column at all; it's just the min roll one that matters. I only create those max roll columns because I like to see the actual range.)

You might notice one slightly odd entry at the right side of the sheet: The 8 result on the "detail" subtable has its own little random generator inside it, using this formula: MIN(RANDBETWEEN(5, 9), RANDBETWEEN(5, 9))&" legs". So we've got two RANDBETWEEN functions, each one generating a result between 5 and 9. The MIN function looks at the two results and picks the smaller one. The &" legs" at the end there just appends " legs" to the resulting number. So the goat demon that gets this result has between five and nine legs, with smaller numbers being more common than large ones.

I could get into more advanced stuff here, but that would call for a whole new custom example spreadsheet, and this post is already too long. Anyway, I hope it's actually useful for somebody!


The luck roll

1 No, and... - 2 No. - 3 No, but... - 4 Yes, but... - 5 Yes. - 6 Yes, and...

I'm going to start this site off by talking about my favorite TTRPG tool, the luck roll. Loads of groups do something along these lines, but here's mine.

This is a procedure for resolving those questions that can't be answered by the established fiction, the GM's notes, or the player characters' actions—things like "Is there a fire extinguisher handy?" or "How many patrons are in this bar?" or "Did anyone notice all the commotion we just made?" First, you rephrase the question in yes-or-no format, so something more like "Is the bar crowded?" I kinda prefer to ask in a way that makes "yes" the better result for the player characters, but that's not really important.

Then, you just roll a d6 and interpret the result as follows.

1 No, and...
2 No.
3 No, but...
4 Yes, but...
5 Yes.
6 Yes, and...

The "and" results intensify the answer. The "but" results mitigate it. For example:

"Is there a fire extinguisher handy?" "No, and there isn't one in the whole building."
"Is the bar crowded?" "Yes, but you don't know anyone here."

It's extremely simple, but easily applied to an infinite range of situations. As a GM, I find it really fun to fill in those and/but details. I also love to roll a die and find our whole game taken in a new direction by the result.

I also use the luck roll during session prep to come up with background details, and occasionally base other random-roll tables on the same basic format. For example, I had my players roll on this "Do I escape the trap?" table when they wandered into a dungeon room with a falling cage trap.

d6 Do I escape the trap?
1 No, and you're hit by the cage for 2d10 bludgeoning damage, and stuck inside it.
2 No. You're stuck inside the cage.
3 No, but you're near the cage wall as it falls, and notice in time to try to escape. You can make a Dexterity save to jump away, but at a risk: Save result 10-, you're pinned underneath the cage for 4d10 bludgeoning damage, restrained, and prone. Result 10–14, you're hit for 2d10 bludgeoning damage, but escape. 15+, you escape completely.
4 Yes, but you're clipped by the cage's edge or falling debris, and take 1d10 bludgeoning damage.
5 Yes. You're outside the cage when it falls.
6 Yes, and the trap isn't even triggered if everyone in the room rolls result.

I should point out that this idea was very much influenced by FU: the Freeform Universal RPG. That game arranges its results slightly differently on the die, but it's pretty much the source of that Yes/No/And/But language for me, far as I remember. I've never actually used FU itself, though! Which is a shame, because it looks brilliantly simple.

So, that's the luck roll. It's handy.


So I wanted to have a website again...

Hey, all. I've been getting tired of platform-delivered, algorithm-managed media for a while now, and kind of yearning for the era of personal sites, webrings, hand-coded HTML, and the freedom to build whatever I wanted. So I've been saying—in all my social-media places, like Bluesky and Twitch and whatever—that it's time to return to the Old Ways. Then I watched that recent Homestar Runner "Back 2 a Website" cartoon and I realized it was finally time to actually do it.

So, here it is: The latest version of the Groove Pit—which is what I've called the various incarnations of my personal website since literally some time in the 1990s.

I'll probably mostly put TTRPG stuff here, and arrange it in a blog-like format. I don't think I'll add an actual blog, because content management systems are always vulnerable to hacks, or to comment spam, or to just rotting away over time. But if I build my site out of regular-ass HTML, and NeoCities gets rolled up in some corporate Katamari, I can just take the same files and put them up somewhere else.

That said, I will probably make an RSS feed! RSS is cool; it's absolutely one of those technologies that folks should rediscover.

Anyway, this whole thing is very much a work in progress. I'll spare you the "under construction" animated GIF, though.