Wednesday, March 22, 2023

The Dwarf in the Glass

There was once a dream called the Charcuterie Board.  A GLOG zine, it was a messy heap of delights, like a squirrel nest in a candy store.  

There were plans for a sequel, and so Phlox and I co-wrote a dungeon, intending to make it part of the Char2terie Board.  But alas, it was not to be.

So it is with sadness that we admit that our malformed child will never enjoy the fate for which he was designed, but it is with joy and pride that we present the creature to you today.

from Dwarf Fortress

It's a mirror dungeon, based on one of Dyson Logos' maps.  Phlox and I each wrote one side of the mirror.  (Phlox's post is here.)

It's called The Dwarf in the Glass and you can read it if you click


Note: not a paid Patreon post.

Monsters of the Mythic Underworld, Part 2

 A while ago I wrote some monsters for the Mythic Underworld.  (See also Exultations of the Underworld at the bottom of this post.)

Basically the Underworld is actually Overhell.  Reality is hostile and distorted.  Dreams and dead things are sometimes real here.

Disposition and Reaction Rolls

I've started putting monster disposition in my statblocks (abbreviated as Dis) to give an overview of how monsters will react when encountered.  Roll a reaction roll on a d12, then consult the relevant table below (or just improvise).


  • 1-3 Attack, and will pursue further than normal.
  • 4-9 Attack.
  • 10+ Warning display, giving a chance for retreat.


  • 1-3 Attack.
  • 4-9 Attack if party seems weak or hostile.  Possible chance for retreat.
  • 10+ Not hungry right now–but will be soon.  If approached: may flee or attack.


  • 1-3 Attack if you seem weak, steal if you seem dumb, beg otherwise.
  • 4-9 Steal if you seem dumb, beg otherwise.
  • 10+ Tries to strike up a bargain.


  • 1-3 Will try to cheat you.
  • 4-9 Will only try to cheat you a little.  If odd: have a small quest for you.
  • 10+ Discounts!  Limited time only.  Reason: desperate / they like you / common enemy.


  • 1-3 Attack.  Reason: protecting something / desperation / honor / mistaken identity.
  • 4-9 Hostile parlay.  Will attack unless you: leave immediately / surrender money / surrender.
  • 10+ Parlay.  They want something: information / assistance / supplies.  


  • 1-3 Attack.  Reason: protecting something / desperation / honor / mistaken identity.
  • 4-9 Parlay.  They want: information / assistance / supplies / to sell their services.
  • 10+ Benevolence. 


  • 1-3 Attack.  It wants to hurt you, even if it means hurting itself.
  • 4-9 Attack.  
  • 10+ Try to get you into a vulnerable position, then attack.  Alternatively: flee and set traps.


  • 1-3 Shun.  If you don’t leave, they’ll leave.  Reason: disgust / fear / dislike / you are bad.
  • 4-9 Small assistance.  Limited in duration and degree. Shares information.  Asks questions.
  • 10+ Large assistance.  As above, except will probably want to come with you.

Underworld Monsters

Note: if a stat is not mentioned, assume that it is human-like.  

Zolliphar’s Voice
LvlDef none  Grab
Move slow  Int low  Dis guardian

Looks like a giant slinky, 7 feet tall, made from coins and glass.  If pilled

Zolliphar’s Curse - Immune to slashing and piercing.  Half damage from all other magic types.  All bludgeoning damage reduced by 5.  Shatters immediately if it falls at least 10’, or if it falls down stairs.  It can be shoved with a normal combat maneuver.

Grab - a Zolliphar’s Voice moves like a slinky.  When it grabs you, it traps you inside it’s body.  It then stretches floor-to-ceiling in order to lock itself in place, and begins vibrating and casting light and making a series of strange chiming sounds.

In this position, an ally can “bend the bars” (difficult Str check) to allow a trapped person to escape.  If it has no ceiling to brace against within 15’, it can be pushed over (easy Str check).

If a trapped person is still inside the Zoliphar’s Voice afterwards, they will vanish in a flash of light.  (They have been teleported to a random, non-secret room of the dungeon.)

NOTE: this is a reskinned version of the Zephyrus from the first Underworld Monster post, which itself was a reskinned version of the wallmaster from Zelda.

A Clobstrok from the Book of Mice
I drew this!
LvlDef medium  Claw 1d6
Move slow  Climb spider  Int low  Dis hungry

Looks like the picture above, except it's now more disk-like than the last time.

Heavy Shell - half damage from slashing and piercing.

Flying Crab - If they are at least 10’ above, and 10’ away from their target, they can launch themselves up to 100’ away like bladed frisbees, +4 bonus to hit and dealing 1d8 damage.  If the area is large enough (at least 30’ by 30’) they can remain airborne, and will prefer to circle.  In this circumstance, they will stay in the air, and can only be struck by ranged weapons.  If someone wants to ready an attack against them, they’ll have to wait until the clobstrok attacks, and then both attacks are made simultaneously.

LvlDef low  Claw 1d6+paralysis
Dis hungry

Looks like a ghoul.

Paralysis - Struck target is paralyzed if they fail a Con save.  A paralyzed target takes 1d4 damage on its next turn if it takes any actions (as their muscle fibers tear).  The turn after that, the damage drops to 1d4-1 (min 0).  The turn after that, it drops to 1d4-2 (min 0).  After that, it ends.

Varghoul Surprise -  When a varghoul takes damage, the head flies off and attacks independently, taking half of the remaining HP with it.

Varghoul Head
Lvl Def low  Bite 1d4+attach
Fly bat Dis hungry

Attach - as stirge.

Lvl 4  Def low  Trample 1d8, 50' line
Int low  Dis hungry

Looks like an undead cow.

Varghoul Surprise - When a vargomere takes damage, the head flies off and attacks independently, followed by two more (humanoid) heads from the rib cage.  The Varghoul Head has 3 HP.  The two regular heads each have 1 HP.  The body retains the remaining HP.

by Tony Diterlizzi

Trolls in the Underworld

Trolls are very common in the Underworld.

Green Trolls 

The cruelest of their kin, green trolls are usually in dungeons because it’s a good place to hunt and eat people.  Green trolls are famous for their cruelty and predation.  They’re common lieutenants.

Or more rarely, a troll is dismembered and scattered into a subterranean location with lots of food.  Since each piece of a green troll is a complete green troll, you can come back a few months later and have lots of young trolls (Levels 2-3) to collect.  

Sometimes this happens spontaneously, when an mature green troll is killed and eaten by something larger–lots of shredded troll bits (1 inch tall, the size of a hand, etc) eventually calve off from the mostly-eaten corpse.

Rock Trolls 

If there are no nice rocks to eat, there will be no rock trolls.  If there are nice rocks to eat, you may run into a rock troll.

Rock trolls are like shepherds to their flocks of rocks.  In natural caverns, they'll usually have herds of stones, for both companionship and meat.  It's pretty easy to herd rocks, since they don't move on their own very often, but just the same you'll sometimes see a rock troll urging his herd to a new pasture.  Perhaps this location became too wet, or perhaps it is time to find new members.

Rocks in a herd vary in size from pebbles to boulders.  When animated by an elder rock troll, they amble about as quickly as a pokey pony.  And like pokey ponies, they sometimes get lost.  

On rare occasions, you'll find rock trolls enchanted by someone who has a big shiny gemstone.  All you need to enchant a rock troll is to wave a fist-sized gem in front of their face.  You don't even need to know magic.

Shaggy Trolls (Longtail Trolls)

Shaggy trolls are friends to Zulin, and at least one has a seat at his table.    Because of this favor, Zulin upholds their oaths, and so promises made in front of a shaggy troll are especially binding.  And while they are very clever, shaggy trolls sometimes lose their riddle challenges or drinking contests.  As a result, they sometimes find themselves bound in service for 7 years and 7 days (to give one example).  When this happens, they may end up in the dungeon.

When acting as a guardian, shaggy trolls wield their giant rattle-maces (made from giant walnuts filled with black beans) and ride tops into battle, balancing on a single toe while resting on their heel in sitting tree pose.

These are different from their typical giant rattles, and typically cast mirror image - hole - soften metal

There is a decent chance that these trolls are accompanied by their spouse.  Roll a d6:

1-3    Not married
4        Human.  "I'm not here to fight, I'm just waiting for this stupid oath to be done."
5        Shaggy Troll.  "I'm not here to fight, I'm just waiting for this stupid oath to be done."
6        Shaggy Troll.  "I'm not here to fight."  (Will totally join the fight.)

Multiple Types of Trolls

As a general rule, the three species of trolls don't get along very well together.  If a green troll and a shaggy troll encounter each other, there's a good chance it ends in violence, but a 0% chance that it ends with someone dying.

This is because all trolls share a common ancestry (of sorts), and all trolls honor the Trollfather.  

Even though green trolls hate shaggy trolls, they'll still shelter them if they are seriously wounded.  And if a troll is killed unjustly, expect other trolls to avenge them, even if they are of a different species.

Monday, March 20, 2023

Gigantic Attack -- Resolving Combat in One Roll

 So tonight I'm going to be writing the first draft of a mechanic that is meant to replace an entire combat round with a single roll.

I first had the idea back when I was recording Go Die in a Hole with Nick from Papers and Pencils.  It's a little podcast (4 episodes!) where we run through dungeons as quickly as we can, in order to analyze them.  Because the focus is on analyzing the dungeon, we don't really care about combat, and so we eventually abstracted combat to a single d6 roll.

I mostly just treated the d6 as an oracle--1 is pretty bad, 6 is pretty good.  I just made up numbers and it seemed to work okay.  I've been DMing for a while, so I sorta know how bad a "pretty bad" round is.

It has the following design goals:

  • to discard individual actions--the party fights as a single unit, and makes a single roll together
  • to give similar outcomes compared to most OSR games
    • similar damage per round
    • similar damage spread
    • similar chances of victory against opponents
    • similar number of rounds of combat (but much faster)
  • to be compatible with current OSR standards 
    • e.g. swords deal 1d6, level 1 fighter has +1 or +2 to hit, etc
  • to have sufficient granularity where a +1 to hit makes a (small) difference
    • but not much more granularity than that
I've spent the last couple of hours playing with spreadsheets, and I think I have something workable.  I'm giving up on the "single d6" and changing it to "one d6 roll per side" because it's hard to map all the outcomes to a single d6 in a way that feels intuitive.  I do want this mechanic to feel intuitive when it is used.

Anyway, first let's talk about combat in general.  (If you don't have time for all this shit, just scroll down to GiganticAttack).

Why Have Combat Rolls Anyway?

Combat occupies a weird place in the tabletop game.  More than any other aspect, we like to break down combat into little pieces.  Combats are broken down into rounds, rounds are broken down into turns for every single person and every single monster.

We don't do this for overland travel.  DMs typically make a single roll for the party (navigation, etc) for a single day of travel.  This is weird, because a traveler probably makes more decisions over the course of that day than a fighter does in 6 seconds of combat--but maybe not interesting decisions?

#1 - We like to model combat at a granular, round-by-round level because we see each round of combat as an opportunity to make an interesting decision.

When there aren't any interesting decisions to make on each round of combat, it gets boring very fast.  "I attack.  I attack again.  I attack again.  We win."  (See also: dynamism.)  I'll talk more about this in a second, when we talk about the combat loop.

#2 - The stakes are also higher in combat than they are in overland travel.  When traveling, the worst case scenario is (often) taking longer to reach your destination.  In combat, the worst case scenario is always death.

In a game where the party was lost in the desert, completely out of water, and there was a real risk of death, the DM would probably zoom in for this reason.  There would be discussions about killing hirelings, opportunities to spend resources (potions) for advantages, etc.  

#3 - There's also a good bit of cultural momentum here.  Combat is granular because combat has always been granular.

Could we abstract or remove combat?

Yes, absolutely.  Many people (myself included) have argued that good combat is not as interesting as good dungeoneering.  That's another philosophy that is close to being an OSR standard.

Making attack rolls is usually not as interesting as poisoning the crocodiles (removing the need for attack rolls).  In combat, your options tend to be more limited (attack, cast spells, run away--and you only have 6 seconds to do it) but when dungeoneering (and preparing for a combat) you have far more interesting options.

So there is room to have an abstracted combat system.  Someone will be interested in it, at least in theory.  We just want to make sure that we keep #1 and #2 in the mechanic as well.  We want to give the players opportunities to make interesting decisions (#1) and we want the players to feel like they have ownership of the consequences--no one dies off-screen, so to speak (#2).

The Gameplay Loop

All parts of the game basically boil down to the same gameplay loop.

1. The DM presents information, rolling dice if needed.
2. The players make decisions and roll dice.
3. Repeat.

What separates good gameplay from bad gameplay is how meaningful, interesting, informed, and impactful those decisions are.  And that's it.  If you can do that, then you've written a good game (with shockingly few asterisks).

Good combat has all of those things.  

That's about as far as I can go with generalized theory.  I'm going to start piling on the generalizations and assumptions now--forgive me.

A good combat is about 3 rounds long.  By the end of the third round, one side has surrendered, fled, or died.  It opens with the DM giving everyone information and allowing players to make their decisions.  Each side loses about 1/3 of their health.  If the players are losing, they'll have two rounds to flee or turn it around, typically through either a clever scheme or by depleting a resource (spells, bombs, etc).

Remember, the gameplay loop doesn't see numbers.  We just want to make sure that the combat situation changes enough-but-not-too-much each round.

If everyone loses too much health % per round, the players don't have opportunities to react, make plans, and spend resources.

If no one loses enough health % per round, the fight seems like it drags on forever, with people just making endless attack rolls while grinding down the enemy health bars.

Our goal is to hit that sweet spot.

At low levels, PCs (and monsters) tend to be more fragile.  Combat tends to last 2-3 rounds.  At higher levels, it can take longer.

The Simplest Case

Let's consider a quartet of level 4 characters fighting a quartet of level 1 bandits.  Everyone has 4 HP, +1 to hit, leather armor (AC 12), and has weapons that deal 1d6 damage.

Well, everyone has exactly a 50% chance to hit.  With four attackers on each side, that's an average of 7 damage per side per round.

4 attacks * 3.5 average damage * 50% accuracy = 7 damage.

Damage per round will go down as combatants are killed, so the second and third rounds will not deal 7 damage on average.  It'll be lower.  So, speaking very broadly, this is approximates our desired combat.

So how do we turn this into a single dice roll?

Let's talk about relative standard deviation (RSD) first.

Average, Range, and RSD

Whenever you talk about a bell curve, you need to talk about the average and the RSD.  Consider

30d6 compared to 3d6 x 10.

They're both bell curves.  They both have the same average.  They both have the same max and the same min.  But these bell curves are not the same.  They have different standard deviations.

the heights aren't normalized, but you can still see that 30d6 is skinnier.

The 30d6 is a much skinner bell curve than the 3d6x10 curve.  Even though they both have the same average (105), 30d6 has a standard deviation of 9.35, while 3d6x10 has a standard deviation of 29.58.  Since we know that 95% of all results fall within 2 standard deviations, we can say that:

95% of 30d6 results fall within 86 - 124.
95% of 3d6x10 results fall within 46 - 164, a much wider range.

Why do I bring this up?  Because whatever we end up replacing the combat round with needs to have a similar spread of damage, not just the same average.

So what is the average damage of our 4-vs-4 match from above?  (This is four attack rolls, each with a 50% chance to hit for 1d6 damage, with all of the damaged summed into one pile.)  It looks like this:

Not a bell curve.  There's a bunch of zeros (since it's possible for all 4 attacks to miss) and some asymmetry coming from the overlaying the 1d6 result (only one hit) on top of the 2d6, 3d6, and 4d6 result.  (Since this is basically just a 1d6, 2d6, 3d6, and 4d6 curve laid on top of each other).  The RSD is 61% (standard deviation divided by average is 61%--the standard deviation is printed in the top right corner). 

RSD is useful to see how much variance there is, proportionately.  Since not every probability curve has the same average, we divide by the average to make them comparable.  (For example, 3d6 and 3d6x10 both have the same RSD, since all the randomness came from the same place: 3d6.)

If we average this across three rounds of combat, though, it looks much more like a bell curve:

Which does look like a bell curve.  (You don't need a bell curve to be incorporated into a single roll.  Enough flat rolls will always produce a bell curve.)

What about if our 4 characters were fighting armored enemies (AC 17) instead of leather-clad bandits?  They'd only hit on a 16-20, or a 25% of hitting.  Since this is half of their previous hit rate, we'd expect them to deal half as much damage on average.

Even further from a bell curve.  The 0 (chance of everyone missing) is much larger now.  In fact, 37.5% of the time, no one will land a hit.  The 3d6 and 4d6 curve (where 3 or 4 people hit) are now so unlikely that the 1d6 and 2d6 curves dominate the probability shape.  The RSD is a whopping 99%.

Just to be a completionist, let's look at what it would look like if the players had a 75% chance to hit:

Ah, you can barely tell this isn't a perfect bell curve.  RSD = 40%.  Much less variability compared to the other two, since there is a much smaller chance of everyone missing their attacks.  (All those zeroes really impact the standard deviation.)

SIM 75%10.54.2440%
SIM 50%74.2661%
SIM 25%3.53.4899%

So, what do we do with this?

Well, we want to make a mechanic (really a function) that accepts as inputs:
  • everyone's average weapon damage
  • everyone's attack bonus
  • all enemies' ACs
and outputs 
  • a probability distribution like the ones above, with both a similar average and a similar RSD.
The first idea I had was just to take the averages and make a table mapping the outcomes the appropriate percentile.  I think this is valid approach, but it makes it much harder to explain.

Instead I came up with this.  Basically, you calculate the average damage and roll a d6.

1-2:     deal 50% average damage.
3-4:     deal 100% average damage.
5-6:    deal 150% average damage.

as a starting point.

by Rin84

I call it


First, you need to calculate the individual attack power (AP) of the characters.  
  • Everyone contributes 1 AP per point of attack bonus.
  • Everyone contributes AP equal to the maximum damage of your weapon.
So a fighter with +1 to hit and a 1d6 sword contributes 7 AP.

A fighter with +5 to hit and a 1d8 greatsword contributes 13 AP.

The everyone's AP is summed together into the party's AP.  From now, AP will only be used to referred to the party's AP.  We don't care about individual AP anymore.

When the party makes an attack, everyone states who they are attacking.  Then they roll a single d6 for the entire party.  They deal damage according to the table below.

112.5% APdown
212.5% APup
325% APdown
425% APup
537.5% APdown
637.5% APup

Damage is applied first to the player's target.  Excess damage rolls over onto the next targets with a 2 point tax every time damage rolls over.  For example:
The party does 9 damage to a pair of bandits (4 HP each).  9 damage hits the first bandit, killing him.  The remaining 5 damage is taxed for 2 points, leaving 3.  The 3 damage rolls over onto the second bandit, leaving him with 1 HP remaining.
Things that would normally give advantage to attack rolls give +4 AP.   Disadvantage is -4 AP.

This assumes that enemies are wearing leather.  
  • Unarmored enemies: +6 AP (each attacker gains +1.5 AP)
  • Versus Chain: -6 AP (each attacker loses 1.5 AP)
  • Versus Plate: -12 AP (each attacker loses 3 AP).
Wizards can still cast spells normally (outside of the Gigantic Attack system) but if you wish to fold them into the Gigantic Attack system:
  • The wizard does not provide their regular AP that round.
  • The wizard ignores all enemy armor.
  • The spell provides 20 AP per MD.  
This is because 4 AP = 1 expected damage.  A 1 MD magic missile deals 1d6+1 (average 4.5) damage.  4.5 * 4 gives you 18, which is rounded up to 20 (since spells are usually cast at very opportune times, and tend to be more useful than their straight damage would imply). 

If all enemies are flying, PCs without ranged weapons cannot contribute AP.  If there are a mix of flying and non-flying enemies, all PCs can contribute AP, but the PCs cannot place all damage on flying enemies--it must be split proportionately between flying and ground enemies, since not all players can attack  the flying enemies.

A PC can perform a non-combat action during their turn (e.g. lighting a torch).  They don't contribute their AP during this turn, though.

When enemies attack the players, they calculate their APs and attacks identically.

If a PC is at full health, they cannot be killed in a single round unless the monsters deal more than 2x as much damage as necessary to kill them.  (So if a full health fighter starts at 5 HP, and the monsters deal 9 damage this turn, the fighter will take 4 damage, and then the remaining 5 damage will roll over without any tax.)

Bandit (5 AP)
+1 to hit, 1d6 damage
6 damage + 1 attack - 2 attack penalty* = 5 AP

Goblin (4 AP)
+0 to hit, 1d6 damage
6 damage + 0 attack - 2 attack penalty* = 4 AP

Owlbear (19 AP)
+5 to hit, 1d6/1d6/1d8 damage
6 + 6 + 8 damage + 5 attack - 6 attack penalty*  = 19 AP

Cultist (5 AP)
+1 to hit, 1d6 damage, can cast 2 MD magic missile (40 AP)
6 + 6 + 8 damage + 5 attack - 6 attack penalty*  = 19 AP

*When enemies attack the players, their AP is reduced by the player's armor.  For the average party, this penalty is about -2 AP per attack.  This attack penalty (due to PC armor) has already been baked into the monster stat-blocks above.

Heavy Armor Rule: heavily armored players cannot be one-shotted (from full health) unless the incoming damage is more than 2x enough to kill them.

And lastly, here's a table for you

APRoll 1d6AvgSDRSD


Realizing that even a single magic missile (1d6+1 damage) deals more damage than two regular attackers is fairly eye-opening.

Anyway, this system is never going to scale perfectly. It's impossible to reduce ~8 dice rolls into 1 die roll without losing some of the details.  

Having said that, let's see if the distortion is acceptable.

Four Fighters (+1 to hit, 1d6 damage) vs leather (AC 12)
Gigantic Attack741%
Four Fighters (+1 to hit, 1d6 damage) vs chain (AC 14)
Gigantic Attack5.542%
Four Fighters (+1 to hit, 1d6 damage) vs plate (AC 16)
Gigantic Attack441%
Four Fighters (+5 to hit, 1d6 damage) vs leather
Gigantic Attack1241%
Four Fighters (+5 to hit, 1d8 damage) vs leather
Gigantic Attack1341%

So, after comparing the two methods, here are the takeaways.
  • Getting another +1 to hit is better in Gigantic Attack.
In general, those +1s and -1s to hit matter more in Gigantic Attack.  It would honestly be better to say that each +1 to hit only contributes 2/3 of an AP.  I don't want to fiddle with it anymore, though.  

Is this an acceptable outcome?  Yes.

The only people who get a big attack bonus are higher-level fighters, and I'm okay with them being more effective in combat. 
  • Wielding a 2-hander (1d8 damage) is still useful, but not as much as it used to be.
I'm fine with this.
  • Players are more effective since they can drop all their damage on a single opponent.  Since excess damage rolls over, damage is never wasted.
This is a pretty big one when you're fighting a bunch of small dudes.  The 2 point tax is meant to represent the average amount of damage that is wasted (via overkill) whenever  you kill an enemy.  This will prevent the players from killing 6 goblins everytime they deal 6 damage.
  • The RSD is lower in Gigantic Attack.
Yes.  This means that the players' attacks will be more reliable.  Fewer high-damage rounds, fewer low-damage rounds.  In most games, it is the players who benefit from more reliable mechanics (not the monsters) since the players are usually the stronger side in a fight.

Think of it this way: if two teams are competing, the stronger team always wins,  unless something unexpected happens.

Higher RSD = unexpected things happen more often.

I have mixed feelings about this change, since I enjoy the chaos that comes out of combat.  It is nice when you have 4 HP left and the dragon misses you, thank god.  That sort of thing will happen less with Gigantic Attack.  (In fact, it's impossible to have a combat round elapse without damage dropping.)

Lots of people have argued for more reliable combat, though, since a combat round where everyone misses is very unsatisfying.  Chris "Into-the-Odd" McDowall has also argued for the same.

And more reliable damage during combat rounds will  hopefully keep the gameplay loop tight and effective (hopefully).

Anyway, if you end up trying this system, let me know how it goes.

And because I can't resist tampering, here's another grid.  This one corresponding to six evenly distributed percentiles (8.3%, 25%, 41.7%, 58.3%, 75%, and 91.7%).  It has the same averages as the table above, but this one has more chaos baked into it (the RSDs are higher).  This one is harder to calculate by hand (you pretty much need to print out this table) but it should match the chaos of regular OSR D&D a little bit closer.

APRoll 1d6AvgSDRSD