Save vs. Doom/​Curse/​Harm/​Bane
So I'm still thinking about oldschool D&D saving throw mechanics.

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.

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.

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.

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.

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.

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.

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!

Okay, obvious stuff first.
- Paralyzation has been combined with Poison and Death Magic—which is interesting, because later that gets moved over to Petrification. I've never understood why it's "Paralyzation" and not "Paralysis".
- Polymorph is added in alongside Petrification, which I think makes sense: It's all about bodily transformation.
- The Wand save has been expanded to include Rod and Staff, taking Staves away from the Spells save.
- "Dragon Breath" is now "Breath Weapon", since I guess there are other things with breath weapons now. Gorgons come to mind. However...
- The asterisks on some of those categories are there to specify how category overlaps are handled: Saving against a wand of polymorph uses the Rod/Staff/Wand number, but saving against a spell or breath weapon that would transform you uses the Petrification/Polymorph number. This is messy and I am not comfortable with it.
- The Cleric and Fighter progressions have shorter plateaus, presumably to make room for the Thief: The Cleric's saving throws improve every three levels instead of four, and the Fighter's improve every two instead of three! The Magic-User's saves are still advancing on fives, while the Thief takes the Cleric's four-levels-per-step slot.
Again, I'll start by comparing the classes' starting points.

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.

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).

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.

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!

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.

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.

I've gotta go back to the bullet points for this one.
- Whoops! Three of these tables say "Dragon Breath" and six say "Breath Attack".
- Amazing that the non-Advanced line has resisted using the word "petrification" all the way to 1991.
- While AD&D 2e didn't really change the 1e saving throw tables, RC's saving throws are significantly different from B/X's, even if you only look at the low levels.
- Man, nothing highlights those demihuman level limits like seeing them alongside those giant, 36-level BECMI/RC progressions.
- That said, those asterisk notes are about some crazy post-level-limit stuff that demihuman PCs can get, similar to those letter-graded "attack ranks" from last post.
- I was surprised to see Druids and Mystics! In this edition, the Druid is basically a Cleric prestige class—which is why it starts at level 9—while the Mystic is a martial artist like the WotC-era Monk, not a psionicist like the 5e Mystic. I don't know why the Mystic tops out at level 16.
- Unsurprisingly, the usual saving throw difficulty hierarchy remains.
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.

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

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.

There are some immediately interesting things here.
- It seems kind of crazy that the table only really shows the numbers for Fighting Men, and just offers a footnote on how the reader can figure out Magic-Users and Clerics for themself! (This is, of course, the pre-Thief era.)
- "Normal men" is such a weird term for "people without class levels". I'd kinda forgotten how that was used.
- The armor-to-armor-class connection here is really straightforward. Each tier of armor is worth another 2 points of AC, with shields being worth 1 point and thus filling out the rest of the AC scale. Satisfying!
- I can't see why AC is descending, or why it should start at 9, given that it's effectively disconnected from the actual rolls required to hit. I feel like I heard that it goes back to some other company's naval combat game, but I ain't going down that rabbithole today.
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.
- Fighting Man: +0.8
- Cleric: +0.6
- Magic-User: +0.48
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.

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.

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.

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:
- Class groups! "Priest" includes Clerics and Druids, "Rogue" includes Bards and Thieves, etc.
- No mention of "normal men" or 0-level characters! There are probably 2e rules for 0-level characters somewhere, but not on this table. It's in the PHB, and 0-level characters are usually gonna be NPCs.
- Except for the Priest group (which literally gets a 2-point jump every three levels), we've finally got smooth attack progressions!
- 2e continues 1e's attack roll hierarchy, with Warriors being the best, then Priests, then Rogues, then Wizards. 3e would later return to B/X's three-schedule paradigm, placing Clerics and Rogues on the same BAB progression.
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.

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 are treated as always having a spellcasting focus in hand.
- When you cast a spell, the expended spell slot is treated as if it was one level higher for purposes of determining the spell's effects, resistance to dispel magic, etc.
- You have advantage on Constitution saving throws to maintain concentration.
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.
- Garamondia: Chem Pit Burial
- The Nothic's Eye: Sea Star Temple
- Whose Measure God Could Not Take: His Ghastly Song, No Chant of Victory
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

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

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

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

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.