XXX4Fans
DragnaCarta from patreon
DragnaCarta

patreon


Patreon DevBlog #12: Doing the Monster Math

We’re back on the combat encounter development grind! More stuff about Re-Reloaded coming next week, but for now, let’s take a look at some monster design theory.

Problem: How do I fix my three-phase statblocks?

Last Saturday, I got a chance to give my three-phase statblock design method a whirl with my homebrew campaign playgroup. The goal was to turn the milquetoast CR 2 minotaur skeleton statblock into a fearsome foe that could meaningfully challenge my eight-player (yes, you read that right) party.

I began by using the CR2.0 encounter builder to determine an appropriate target challenge rating for each phase to have. My party is level 2, so I decided to aim for CR 2 for each phase in order to avoid the possibility of a death spiral.

The encounter builder, however, told me that three CR 2 phases would equate to the party spending around 18% of their total maximum hit points on the fight. Did I, therefore, decide to amp it up to CR 3 or 4 instead?

Well, I decided to do some fiddling with a CR calculator first to find out. I saw that, at its current AC of 12, a minotaur skeleton with CR 2 would have…76 hit points, give or take. Multiplied by three phases, that would be 228 hit points for the entire encounter.

This hit me like a bit of a freight train - that’s a lot of hit points! I gamed it out a bit in a spreadsheet and confirmed that, yes, given my eight attending PCs, it’d take around 3-4 rounds for them to hack through all that health. That seemed approximately right, so I left it there. (Given the large size of my party, I didn’t want to wind up with a two-hour-long combat; I prefer to keep things as lean as possible.)

That left me with a dilemma, though: I couldn’t hike the offensive CR much higher to compensate because I was afraid of kicking off a death spiral. I’d like to say that I found some clever way to increase the difficulty…but in reality, I shrugged, forgot about it, and decided “welp, that’s good enough.”

The outcome was about what you would expect for a miniboss built to take out around 18% of the party’s total health—the players took a solid chunk of time to kill it, but it had basically no impact throughout the fight due to its relatively low damage output. It did force the (nerfed) moon druid to use most of a single wildshape’s HP, and take out around 50-60% of the barbarian and monk’s HP, but the other five ranged combatants (who were hiding around corners thirty feet away) were basically untouched.

Could I simply have buffed the boss’s damage output higher to compensate? Well, maybe. If I’d focused fire almost entirely on the moon druid, I could have forced him to go through both of his bonus-action wildshapes; alternatively, I could have plausibly KO’d the barbarian or monk without too much trouble. However, nobody likes being targeted all the time. (My players kept taking pity on the moon druid, who was drawing enough fire as it was.) Plus, being KO’d just doesn’t tend to be much fun—and on top of that, even if I had done enough damage to the frontliners to KO them, most of the ranged attackers probably would’ve still made it out without a scratch.

This goes toward another, broader problem: This just wasn’t a very interesting fight. Oh, the statblock itself was interesting, shifting from an “cruel executioner” phase to a “necrotic experiment” phase to a “bloodthirsty brute” phase, with lots of neat actions and abilities and bonus actions—but the fight itself pretty much boiled down to: “the frontliners stand at the front and spam melee attacks every round while the ranged attackers spam cantrips/magic missile/crossbows from afar.” There was no dynamism or strategy; nobody really moved around. (In fact, the only time the skeleton moved around—in an effort to use its charge ability—it promptly got punished by three opportunity attacks.)

On top of that, even putting everything else aside, this was a surprisingly swingy fight. Ordinarily, in a large-scale fight, you’ve got lots of little monsters making lots of little attacks. Due to the way that probability works, a larger pool of dice rolls tends to smooth out the statistical distribution of outcomes: if twenty goblins each have a 65% chance to hit and they each make twenty attacks, you’re gonna see about 65% of their attacks hit overall. However, with very small sample sizes, outliers start to pose a significant problem—to the point where you start to see clusters of either very low or very high rolls.

And that’s exactly what happened to my poor minotaur skeleton miniboss: With only 4-5 attacks to be made the entire combat, he rolled low for most of them and wound up Just Not Doing Much.

(As a final note—as much as I noted earlier my fear of an overly-long combat, I realize in retrospect that making each phase’s “lifespan” a single round really made the phases feel far less impressive; by reducing their staying power, I made the phases feel more like “special events” than an actual marker of the players’ progress.)

So we’ve got a few different problems here:

  1. The fight was boring and stale, with everyone staying put for most of the battle.
  2. The fight didn’t have particularly high tension because the boss’s damage output was fairly low; however, I couldn’t simply increase the boss’s damage dice for fear of KOing my frontliners.
  3. The boss made very few attacks, leading to a fairly swingy fight.
  4. The boss’s phases died too quickly, reducing their overall impact.

The nice thing about laying out your problems neatly like this is that it allows you to reverse-engineer your goals—which are, funnily enough, pretty tough to derive from first principles. Let’s see what my design goals look like here:

  1. I want a dynamic and active fight, with everyone constantly moving around and the environment regularly shifting.
  2. I want a high-tension fight where the players genuinely feel that the boss can kill them without intelligent play, and that attrition over time will cause a TPK if the players don’t work fast.
  3. I want to spread the damage out across the entire party; while tanks should remain tanks, ranged attackers should not end the fight unscathed.
  4. I want a fight with a large “sample size” of dice rolls, in order to ensure a steady statistical distribution and avoid swinginess.
  5. I want each phase to last long enough to leave an impact and to give the players a genuine sense of progress.

Let’s start with #4. RAW, D&D 5e accomplishes this through the use of Legendary Actions, giving monsters the opportunity to make a large number of extra attacks every round. The problem with Legendary Actions, however, is twofold: first, those Legendary Actions tend to further concentrate damage on the enemies that the monster is already attacking (raising the risk of a KO and death spiral); and second, the need to track Legendary Actions increase the amount of bookkeeping and forecasting that a Dungeon Master has to do. (It’s easy to work reactively when you’re making an opportunity attack with your reaction; it’s harder to work affirmatively when you need to pre-predict a particular time to make an attack with your legendary action.)

However, the core concept of “Legendary Actions”—miniature additional “turns” that the boss gets to take throughout the course of the combat—is fundamentally sound; in retrospect, I feel that I made a poor choice in removing it. So let’s use reactions as the new “legendary actions,” taking inspiration from the recent Vecna statblock that allowed Vecna to use multiple reactions per round.

This, in turn, actually plays into #2—reactions, by their nature, encourage more tactical and interesting play. (This is because players can learn what to expect when they take certain actions—e.g., leaving an enemy’s area of attack—and then adapt their play accordingly.)

So here’s what we’ve got so far:

Next, let’s take a look at #1. I want a dynamic and active fight, which means that I don’t want my players sitting around in the same spot all combat and attacking with their swords/crossbows/cantrips every round. Now, I could do this with some environmental changes (the floor suddenly turns into lava!), but I’m fundamentally a very lazy person—that seems like More Work for me to do. So let’s try and figure out a way to build it right into the statblock instead.

There are three different ways to get your players to move around in a fight:

“Forced movement” and “punishing people who don’t move” seem like our best bets here. (Rewards for moving seem to rely heavily on environmental stuff, and, again, I’m a very lazy person.) So let’s make our miniboss (1) force other people to move, and (2) easily get to places where the players would rather not have them. (In the latter case, this means giving the boss some way to avoid opportunity attacks on a limited basis.)

Great! One problem—”forced movement” is not, in and of itself, meaningful dynamic play unless there are actual implications for that forced movement. So let’s add in some potential implications: if the PC hits a wall while being shoved, they take some damage; otherwise, the PC lands prone. (This makes it more difficult for them to make opportunity attacks, or to catch up to the boss if it leaves their range.)

Here’s our new “boss spec,” with additions bolded:

Our final problems are #2 and #3: We need to amp up the threat level, but spread the damage out across the entire party. Let’s think through this.

In an ordinary fight, there will be two types of combatants: frontliners and ranged attackers. Monsters can have a mix of attack types that can hit them:

(Note; I use “attack” here to mean “any offensive action,” including both actions that use attack rolls and actions that use saving throws.)

Things are beginning to take shape. Every round, we want our boss to be able to:

  1. Use one or more melee attacks to punish creatures that are standing too close to it,
  2. Use one or more ranged attacks to impede creatures that are presenting major threats,
  3. Use up to one short-range area-of-effect attack to enhance its next moves, and
  4. Use up to one long-range area-of-effect attack to punish enemies that are standing too close to each other.

When combined with the boss’s ability to (occasionally) move around without triggering opportunity attacks, the boss can now also move adjacent to its biggest threats when needed (e.g., when ranged attackers are hiding behind cover), allowing it to threaten the use of its melee attacks in order to force them to relocate (and force them to potentially waste an action by disengaging first).

Putting it all together, our new “boss phase” template looks something like this:

(Funnily enough, it was only after I made this template that I realized that some parts of it bear a surprising resemblance to the Mordenkainen’s Monsters of the Multiverse approach to statblocks. Guess I can’t be original all the time, eh?)

I then spent a while putting these pieces together. I wound up using two phases: the Executioner (phase one) and the Experiment/Brute (phase two). I filled out the template, added in all of the details, and then shoved it into a CR calculator and checked what came out.

Phase One was CR 6 (OCR 8 / DCR 4). Phase Two was CR 7 (OCR 9 / DCR 4). Given how much the damage would be spread out, I wasn’t too concerned about the possibility of death spirals…until I plugged it into the CR2.0 Encounter Builder again.

A CR 6 solo boss monster was expected to drain 52% of my eight-PC party's total maximum HP. A CR 7 solo boss monster would drain 60%. Put together, that was more HP than my (newbie) players actually had!

I did some fiddling until I found something a bit more reasonable: a single CR 5 solo boss monster would drain 45% of my part’s HP. Assuming each phase was adjusted to meet CR 5, the party would spend around 90% of their maximum hit points—a much more reasonable number. (And, in all honesty, it’d probably be even less—the CR2.0 Encounter Builder applies an upward power adjustment to creatures of CR 5 or up, assuming that they’ll KO some PCs and start a death spiral. If you spread out the damage and remove that assumption, each phase would drain around 29% of my party’s HP instead—or 58% HP in total—which is quite nice for a lone miniboss.)

Checking the math, though, was the easy part. The hard part was actually figuring out how to cut it down.

Here’s the issue: Like we discussed above, we want this miniboss to make five attacks per round (in order to minimize the impact of outliers on the total damage dealt). However, a CR 5 monster with +6 to hit should deal around 35 average damage per round; a CR 4 monster with the same attack bonus should deal around 25 average damage per round. If we divide that out, Phase Two should deal around 7 damage per attack, and Phase One should deal around 5 damage per attack.

That’s weaksauce! It might be mathematically robust, but it offends my aesthetic sensibilities. A ten-foot-tall, evil-powered minotaur skeleton with a greataxe should not be dealing 5 damage per attack. Even 10 damage per attack—the original value—seemed like a compromise at the time! (The RAW minotaur skeleton deals 17 damage per Greataxe attack, for comparison—and it’s only CR 2!)

I did some browsing around of comparable low-CR statblocks, and realized a few things. First, given that this boss is wielding its axe one-handed, I can probably get away with calling it a “battleaxe,” rather than a “greataxe,” bringing its damage die down from 1d12 to 1d8. Second, it’s not uncommon for attacks to use 1d6 or (less frequently) 1d4—it might hurt me to do so, but it’s not wholly out of the ordinary for this tier of play. With enough fiddling, I was able to get both phases down to CR 5 (though I will confess—it hurt me to do so).

(As a brief aside—it is crazy how many low-CR monsters are glass cannons: high offensive power, and relatively low defensive power. The RAW CR 2 minotaur skeleton has OCR 3 and DCR one-half! Bugbears are OCR 1 and DCR one-quarter! There’s probably another rabbit hole to be gone down here, but I’ll leave that for another day.)

Anyways! This brings us to the end of our journey for now. You can see the completed two-phase miniboss statblock here; I’d love to hear your thoughts on it!

I am, of course, incredibly sad that I won’t get a chance to use it in my campaign now (since the monster is already dead)—but hey! Now I know what to do next time.

Campaign Advice Roundup | April 21, 2023

Comments

Thank you! I had a lot of fun doing the analysis for this and coming up with a solution. Sounds like you've already had a good amount of success with multi-phase encounters yourself! I definitely agree that long fights can drag on. For me, that comes down to using multi-phase bosses and evolving the dramatic questions (e.g., with mid-combat twists). Feel free to hit me up to chat further about it in the Discord if you'd like!

DragnaCarta

I like your system and REALLY love your BOSS TEMPLATE. The "this isn't even my final form" bit works well in a lot of instances. I teased it a couple times with some low-life NPCs whose "final form" was, in essence, a low-HP/easy encounter. FIrst level PCs w/ "extras", the gang leader thug with 56 HP. The crew got through him in, like, barely 3 rounds (two crits w/ exploding dice). Then he pulled the "final form" banter. One hit = he dead. By the time the main big baddie pulled the same stunt, they were used to it, they were shocked that 1 hit DID NOT put him down, and it amped things up a bit because they were overconfident. I mean, they still won. But they worked for it. I wonder if a better way to calculate HP for enemies would be to take a generous DPR of the entire party, multiply that by 3 (regular) or 4 (harder), and let that be the monster's HP? I've started to do this because my players and I meet really late every other Monday night (we're all restaurant workers), and they seem to always want one combat (at least) each session (understandable). But I've always felt that any fight beyond 4 rounds starts to require too much "extra" to keep interesting. There's only so much "environmental hazards" one can put in an encounter. ;)

Brandon Mußiq


Related Creators