Patreon DevBlog #12: Doing the Monster Math
Added 2023-04-22 02:22:46 +0000 UTCWe’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:
- The fight was boring and stale, with everyone staying put for most of the battle.
- 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.
- The boss made very few attacks, leading to a fairly swingy fight.
- 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:
- I want a dynamic and active fight, with everyone constantly moving around and the environment regularly shifting.
- 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.
- I want to spread the damage out across the entire party; while tanks should remain tanks, ranged attackers should not end the fight unscathed.
- I want a fight with a large “sample size” of dice rolls, in order to ensure a steady statistical distribution and avoid swinginess.
- 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:
- We want our boss to take approximately five offensive actions per round—enough to “smooth out” the statistical probability curve.
- Three of those offensive actions should be reactions. (To keep those reactions fresh, but predictable, each phase should have two distinct reactions that it can use.)
- Each phase should last three rounds each in order to promote player strategy. (For the sake of progression, I think I’m going to make minibosses like this two-phase as a rule, and make full-on bosses three-phase.)
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:
- force them to move (e.g., with a shove action)
- reward them for moving (e.g., by putting a magic potion on the floor)
- punish them for not moving (e.g., by putting a dangerous melee enemy next to them)
“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:
- The boss should take approximately five offensive actions per round, three of which should be reactions.
- The boss should have two reactions that it can use per phase.
- The boss’s phases should each last three rounds.
- The boss should be able to force other creatures to move (potentially dealing damage or knocking them prone), and should be able to avoid opportunity attacks under certain circumstances.
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:
- Weapon attacks can only hit a single creature at a time. These attacks tend to be highly tactical and predictable, allowing players to make use of, e.g., proximity and cover to avoid them. Melee weapon attacks are best used punitively (i.e., dealing high amounts of damage to creatures that stand too close), while ranged weapon attacks are best used tactically (i.e., impeding or handicapping whichever enemy is currently the greatest threat).
- Area-of-effect attacks can hit two to four creatures at a time. These attacks tend to be somewhat less tactical and predictable; because at least some players will take the damage regardless of their decision, parties wind up having to make a tradeoff (which group would you prefer the monster attack?). Short-range area-of-effect attacks are best used tactically (i.e., softening up enemies or providing the monster with more options for future actions), while long-range area-of-effect attacks are best used punitively (i.e., discouraging enemies from gathering in certain formations or standing in certain areas).
(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:
- Use one or more melee attacks to punish creatures that are standing too close to it,
- Use one or more ranged attacks to impede creatures that are presenting major threats,
- Use up to one short-range area-of-effect attack to enhance its next moves, and
- 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:
- FEATURES
- (one to three assorted features that mesh with the boss’s aesthetics and strategy)
- ACTIONS
- Multiattack combining a melee weapon attack (with forced movement) and a ranged weapon attack (with status condition)
- BONUS ACTIONS
- Short-ranged area of effect that enhances the monster’s other attacks
- Long-ranged area of effect that punishes enemies for grouping up
- REACTIONS (3/round)
- Movement that avoids opportunity attacks and makes a weak melee attack
- Strong melee attack that punishes a close-range attacker
(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
- If you’re looking to “reload” a campaign module with a comprehensive revision, start by deciding why you’re doing so: What's wrong with this module, at a very very high, conceptual/theoretical level? What needs to be fixed? What kind of experience are you trying to create? How does the module fail to currently accomplish this? Second, define your target audience. Do more research and figure out the different kinds of playgroups, players, and DMs. Figure out why they want to play this module and what they're looking for at their own tables. Find out why they consider it deficient, and where the common complaints lie. (Remember that you can’t please everyone—pick your audience, understand their needs, and stick by them as much as you can. Never compromise clarity of purpose for broadness of appeal.) Third, ask why this module? Why do people play it? Why do people run it? Why this module and not one of the thirty thousand other ones? What makes it special? What makes it meaningful and unique? Fourth, identify the core narrative, conceptual, and game design elements of the RAW module. Assume you had to cut everything that wasn't 100% essential to the core of the campaign experience. What can you cut? What needs to stay? Once you’ve answered all of these questions, you’ll have a much clearer idea of which direction to take it.
- When facing a player problem, identify the root cause of the issue and determine whether it is an in-game or out-of-game (OOC) problem. Openly discuss the problem with the players involved, empathizing with their frustrations, and sharing your own feelings. Maintain the integrity of the narrative by preserving player choice and consequences, but also prioritize the enjoyment of the players and the DM, ensuring that everyone at the table is having a good time. Consider retconning if necessary, and be proactive with potential issues by pausing the game and addressing them immediately.
- It’s okay to let players feel (and be) powerful if they’ve found a creative short-term solution that easily defeats a major challenge. You should only worry about nerfing powerful spells or resources if they have meaningful long-term utility.
- When you’re trying to decide what a faction of NPCs might do in a certain situation, zero in on the leader(s) of that faction and figure out who they are, what their goals are, and how they might act in the current situation given their goals, personality traits, and known information.
- To create longer, more intricate plotlines, create adventures with preliminary dramatic questions that either complicate or ease the players’ efforts to answer the adventures’ ultimate dramatic questions.
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
2023-06-16 19:09:07 +0000 UTCI 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
2023-06-16 14:34:44 +0000 UTC