Now that I talked about State Management — specifically, how to think about events — I can talk about morale.
I think that morale systems are clunky, and I always forget to check morale. But in old-school games, combat doesn’t make sense if morale is not used. Like reaction rolls, they help simulate a dynamic world that responds to player decisions. If the players know the rules of morale, they can weigh “scare them off” against other strategies, and attempt to trigger as many checks as possible.
Here are several variations on morale from games modeled on classic Dungeons and Dragons and beyond.
It’s pretty easy to see that Tom Moldvay’s D&D Basic is the platonic ideal for NPC morale. Here is the baseline mechanic that I will be using, spelled out.
Player characters never roll morale, but their NPC companions might.
A target number is defined, usually between 2 and 12, so that morale can be checked by rolling 2d6. If a group rolls greater than its morale, that indicates a morale failure.
Certain events trigger a morale check. When this happens, roll the dice and compare them to the target number. Wolves Upon the Coast has helpfully collected some events common to many games:
If the dice indicate a morale failure, the NPCs attempt to parley or retreat.
If you keep making morale checks, an NPC group will eventually fail one of them and flee. Instead of thinking about morale as a box we repeatedly open to observe whether or not morale has failed, you can invert this and model the likelihood of failure within N checks.
How can we determine the probability of an event happening within N trials? I have encountered a lot of people using the Monte Carlo method to figure out probabilities. But it’s very easy to calculate the probability that an event will occur within N trials. If you have a good understanding of probability, you can probably skip to “Still here?” below.
Here’s a simple example, rolling a 5 or 6 on a d6. I will refer these outcomes as P(5,6).
The probability of P(5,6) is equal to the number of desired outcomes in the set of all outcomes (there are two: 5 and 6) divided by the total number of outcomes (there are 6: 1, 2, 3, 4, 5 and 6).
The probability of P(5,6) happening twice in a row is calculated by multiplying the the probability of a P(5,6) with itself. You can use exponents here, or simple fraction multiplication: numerator times numerator over denominator times denominator.
2 outcomes out of 6 becomes 4 out of 36. You can keep going. The probability of rolling a 5 or 6, three times in a row is 8 out of 216 — 2 x 2 x 2 out of 6 x 6 x 6.
I find it helpful to visualize this in a table. There are 4 outcomes out of 36 where both rolls came up 5 or 6.
1 | 2 | 3 | 4 | 5 | 6 | |
---|---|---|---|---|---|---|
1 | 1,1 | 2,1 | 3,1 | 4,1 | 5,1 | 6,1 |
2 | 1,2 | 2,2 | 3,2 | 4,2 | 5,2 | 6,2 |
3 | 1,3 | 2,3 | 3,3 | 4,3 | 5,3 | 6,3 |
4 | 1,4 | 2,4 | 3,4 | 4,4 | 5,4 | 6,4 |
5 | 1,5 | 2,5 | 3,5 | 4,5 | 5,5 | 6,5 |
6 | 1,6 | 2,6 | 3,6 | 4,6 | 5,6 | 6,6 |
In order to find out whether you will roll a 5 or 6 within N trials, you can use the complement, the probability of a thing not happening.
Here’s how to think about it: what is the probability, call it P(not 5,6), that a 5 or a 6 will not come up if we roll the dice N times in a row? If you know that, then the probability of it occurring at least once in those N trials is
1 – ( P(not 5,6) ^ N ).
P(not 5,6) is 4 out of 6, equal to 1 — P(5,6).
The probability of not rolling a 5 or 6, twice in a row is equal to 16 out of 36 (4 x 4 out of 6 x 6), or P(not 5,6) x P(not 5,6).
Therefore, the probability of rolling a 5 or 6 in either of the two trials is 1 — (16 / 36), or 20 out of 36. You can see that there are indeed 20 entries in the table above which contain a 5 or a 6 for at least one of the rolls.
Instead of checking for a morale failure every time a morale check is triggered, we can instead determine the probability that a failure will occur within N morale checks. Further, morale failures are nested - every morale failure that happens within two trials also occurs within three trials.
This means we don’t have to stop and make a morale check every time a triggering event occurs. We can instead model the number of morale checks a group can withstand before they retreat. This can be determined once at the beginning of combat. Then it’s easy to glance at a list like this and determine how many events apply to the current situation:
This structure has the benefit of enforcing Blorb’s No Paper after Seeing Rock principle:
If you secretly write down your selection in advance, you don’t have to be as precise with the timing. Your selection is committed long before you saw that rock.
It is easiest, for me, to ignore the results of a roll immediately after seeing the result. That is the time when I’m trying to make sense of the world, and it may feel wrong given the immediate concerns. This is not a personal failing - the question of whether or not it’s OK to fudge dice has been a topic of role-playing discourse for longer than I’ve been alive.
If you’ve committed ahead of time to a number of tests a group is willing to endure, there are no dice involved when you are making the call. You need only consider the number of tests versus the morale threshold.
The basic structure of a rule using the above principles looks like this.
At the beginning of combat, roll DICE to determine morale for a group of NPCs.
If the result is X or more, the group fights to the death.
If the result is Y or more, the group flees after two morale tests.
Otherwise, the group flees after the first morale test.If the group is particularly disciplined, add Z to the check.
I want to cast a wide net, so let’s take a look at D&D Basic, which has the following distribution of monster morales:
Morale | Count |
---|---|
5 | 2 |
6 | 4 |
7 | 22 |
8 | 31 |
9 | 17 |
10 | 8 |
11 | 5 |
12 | 13† |
†: 10 monsters with morale 12 are undead and oozes.
70 out of 102 creatures fall between 7 and 9, so I will try to fit the math around 8 morale. If I add a special condition for undead, I can further increase accuracy. There is actually pretty wide range of results between Morale 7 and Morale 9.
2d6 vs. Morale | Flees after 1 check | Flees after 2 checks | Fights to death |
---|---|---|---|
6 | 58.33% | 82.64% | 17.36% |
7 | 41.67% | 65.98% | 34.02% |
8 | 27.78% | 47.84% | 52.16% |
9 | 16.67% | 30.56% | 69.44% |
10 | 8.33% | 15.97% | 84.03% |
Using these results, we can find values for X, Y, and Z that produce similar results. I have chosen solutions which favor monsters running away more frequently than D&D Basic, which is more in line with modern conventions where NPCs are seen less as obstacles between the players and treasure, and more as beings with their own motives.
Rolling a single d20 produces results which shift linearly as Z changes. Here are the results with percentage comparisons to morales 7, 8 and 9. I think this is fine, but it has poor ergonomics. It’s hard to remember 7 and 11 as breakpoints compared to something like 10 and 15.
d20 vs. Y | Flees after 1 check (1d20+Z < Y) |
Flees after 2 checks (1d20+Z < X) |
Fights to death |
---|---|---|---|
Z value | Y = 7 | X = 11 | |
-3 | 45% (+3.33%) |
65% (-0.98%) |
40% |
+0 | 30% (+2.22%) | 50% (+2.15%) |
55% |
+3 | 15% (-1.67%) |
35% (+4.44%) |
70% |
When rolling 2d6, it’s (unsurprisingly) possible to produce an exact match for NPCs fleeing within 1 check. The math veers off for fleeing after 2 checks. It’s closer to D&D Basic if X = 7, but I chose X = 8 in order to lean towards the modern conventions I described above.
2d6 vs. Y | Flees after 1 check (2d6+Z < Y) |
Flees after 2 checks (2d6+Z < X) |
Fights to death |
---|---|---|---|
Z value | Y = 5 | X = 8 | |
-1 | 41.67% (+0%) |
72.22% (+6.24%) |
41.67% |
+0 | 27.78% (+0%) |
58.33% (+10.49%) |
58.33% |
+1 | 16.67% (+0%) |
41.67% (+11.11%) |
72.22% |
We can also vary the results by conditionally increasing or decreasing the number of morale tests a group is willing to endure. Here is the final formulation of this rule.
MORALE
At the beginning of combat, roll 2d6 to determine morale for a group of NPCs.If the result is 8+, the group fights to the death.
If the result is 5-7, the group flees after two morale tests.
Otherwise, the group flees after the first morale test.Common morale tests include:
- The group is ambushed.
- The first death on either side.
- The group is reduced to 50% of its fighting strength.
- The group is reduced to 25% of its fighting strength.
- The leader is killed or retreats.
- Fear effects from magic, or the presence of horrific foes.
- A friendly group flees.
If the group is battle-disciplined, add 1 to the roll.
If the group is cowardly or inexperienced, subtract 1 from the roll.
If the group is in its lair or defending its treasure, it can endure an additional morale test.
Undead and oozes always fight to the death.
A group defending children always fights to the death if it cannot retreat with them.
I think this is good for several reasons. You only have to roll once, and then glance at the morale tests every now and then. The referee has an extra knob to tweak: they can adjust the discipline bonus or the number of tests endured. Ambushing is cemented as a good tactic. Finally, you can use conditions to say something about the world - undead and oozes behave differently, and groups care about their children.
If you don’t care about accuracy (and I don’t), you could even adjust this to the common breakpoints used for Reaction rolls: 5- flees after 1 test, 6-8 flees after 2 tests, and 9+ fights to the death. It means that creatures flee sooner, but that is offset if they’re encountered in their lair. This has great ergonomics, and is probably what I will use in my games going forward.
Thanks to Luke Gearing for granting permission to use the Wolves Upon the Coast rules chassis upon which this is based. I am not associated with him, but I think the game is good, buy it!