Discover more from Skeleton Code Machine
Therg fights a skeleton
Simulating simple MÖRK BORG combat
Compatible with MÖRK BORG
Last week we looked at progressive risk mechanisms. This week we are taking a brief look at MÖRK BORG style combat by using some Python code.
MÖRK BORG is a dark fantasy tabletop role-playing game:
A doom metal album of a game. A spiked flail to the face. Light on rules, heavy on everything else.
It’s a great system, which is perhaps why it’s won eight Ennies. It also has a generous third-party license that allows for others to make content for MÖRK BORG and hack the system in new and interesting ways.
Because the rules are simple, it makes it possible to do some limited simulation of things like combat.
So let’s create a character and a foe, and see what happens!
Fire up the SCVMBIRTHER and get a random MÖRK BORG character:
Therg, Esoteric Hermit and Bard of the Undying, was raised on a lonely island in Lake Onda. The chaos of a fallen world disturbs his rituals, causing no end to irritation. Nihilistic and lazy, with broken and crushed ears, Therg loves fire… a pyromaniac.
Therg is a rugged one, with 5 HP due to the high toughness, but not strong: Strength -2, Agility ±0, Presence +3, Toughness +1, Omens 1.
Not bad starting equipment:
Waterskin and 2 day’s worth of food
Femur d4 damage
Leather armor -d2 damage, tier 1
Unmet Fate (sacred scroll): One creature, dead for no more than a week, is awakened with terrible memories
To keep this simple, we’ll use one of the Slumbering Skeletons found in the Library/Bedroom from Rotblack Sludge, included in the core rulebook. Side note: Rotblack Sludge is a great way to get started with MÖRK BORG, if you want to try it out.
Slumbering Skeleton: HP 5, Morale 7, No armor, Bony fists D4 or Jagged scimitar D4.
Morale matters a lot. In MÖRK BORG, most foes will not just fight to the death. If the leader of a group is killed, or half the group is killed, or if a single foe is down to 1/3 of its HP, a morale check is required. Roll 2d6 and if the result is greater than the foe’s morale, they either surrender or flee.
The skeleton has 5 HP, so at 2 HP (5/3 = ~2), we need to make a Morale check.
Writing some Python to simulate this isn’t particularly tricky, but it is certainly more complex than last week’s Muffins and the risk of being eaten. This one uses hit points (HP), weapons, armor, morale values, critical hits, fumbles, and broken weapons.
To keep this simple, there are some assumptions:
The combat is one-on-one. This rarely happens in an actual party-based RPG, but might happen in a solo game.
Omens are ignored. In MÖRK BORG, omens can be used to modify rolls and attacks. For example you can cash them in to deal max damage with a single attack or to neutralize a crit/fumble.
No special items or attacks are used. RPG combat could be boring without a variety of attacks and defenses, particularly ones that go beyond simple +1 modifiers. The complexity of modeling that, however, is more than I want.
Therg will fight to the death. In a real game, the player would know when to run from danger to rest up and try again later. For simplicity, Therg never gives up.
Here’s what a single iteration looks like:
init roll 1 ROUND 1: ATTACK: Miss ROUND 2: Skel 5HP (-d0) vs. Therg 5HP (-d2) DEFEND: Fumble, armor damaged! Skel hits for 2 -> Therg 3HP ROUND 3: Skel 5HP (-d0) vs. Therg 3HP (-d0) ATTACK: Miss ROUND 4: Skel 5HP (-d0) vs. Therg 3HP (-d0) DEFEND: Skel hits for 3 -> Therg 0HP Therg: 0 0.0% Skeleton 1 100.0% Morale wins: 0 0.0% Rounds: Min: 4, Max: 4, Avg: 4.
Combat in MÖRK BORG is deadly. This one lasted just four rounds before Therg met his untimely demise. After winning initiative but missing the first strike, he fumbled his defensive roll and his armor broke. Another miss, and the skeleton was able to finish him off. Alas, poor Therg, we hardly knew him.
We can put this in a loop and run it multiple times. Here is the same simulation run ten times, but only showing the final results.
0: Init=PC > Therg Wins 0 vs. Skel Wins 1 1: Init=PC > Therg Wins 1 vs. Skel Wins 1 2: Init=Enemy > Therg Wins 2 vs. Skel Wins 1 3: Init=Enemy > Therg Wins 3 vs. Skel Wins 1 4: Init=Enemy > Therg Wins 4 vs. Skel Wins 1 5: Init=Enemy > Therg Wins 5 vs. Skel Wins 1 6: Init=Enemy > Therg Wins 6 vs. Skel Wins 1 7: Init=PC > Therg Wins 7 vs. Skel Wins 1 8: Init=Enemy > Therg Wins 8 vs. Skel Wins 1 9: Init=PC > Therg Wins 9 vs. Skel Wins 1 Therg: 9 90.0% Skeleton 1 10.0% Morale wins: 8 80.0% Rounds: Min: 2, Max: 8, Avg: 4.2.
Therg may have lost his first attempt, but running this a few times makes it seem like he might actually have a good chance at winning this. Ten is a pretty small sample, so let’s run it 100,000 times instead.
Therg: 77389 77.389% Skeleton 22611 22.611% Morale wins: 59179 59.179% Rounds: Min: 1, Max: 47, Avg: 7.24702.
This is surprising! Even armed with a femur (d4), Therg appears to have a 77% chance of beating this skeleton in one on one combat.
Most of this is due to the relatively low morale of the skeleton, as 59,179 of the 77,389 wins (76%) were due to the skeleton failing a morale check and surrendering and/or running away. For example, raising the skeleton’s Morale to 10 drops Therg’s win rate to 69%.
How long does combat last?
Combat lasts between 1 and 43 rounds, with an average of 7 rounds. In general, combat is short. Over 30% of the time the fight is less than 5 rounds, and over 25% of the time it’s over in just one round. That first blow can be deadly.
The strange thing here is that, although it’s extremely rare (~1.6%), combat can drag out past 20 rounds. In actual RPG practice, you’d never let this happen and would adjust the story to keep it interesting. When designing a solo experience, however, it’s probably worth at least considering these edge cases.
Do starting hit points matter?
You’d think how many hit points Therg starts with would matter, and you’d be right. Starting with either 1 HP or up to 9 HP changes the win percentage from 31% up to 90%. That isn’t too surprising.
Here are the results from running the combat 10,000 times at each starting HP:
What shocked me is that there’s still a 31% win chance with just a single HP! I would have guessed it would be almost impossible to win going into a fight that low.
This might be related to just how random combat can be in MÖRK BORG, or perhaps something else? It’s definitely not a linear relationship.
Does initiative matter?
Remembering, that this is an odd case where there is just one player and one foe, it looks like initiative may matter less than you’d expect.
If we make the player always win initiative (d6 < 4), Therg wins 77.5% of the time. If we make the foe always win initiative (d6 > 3), Therg wins 70.9% of the time, or about 6% lower.
This would matter far more if there were a party of players vs. just one, as they would all get a chance to get hits in before the skeleton would have a turn.
This is worth thinking about from a solo game design perspective. If initiative doesn’t change the overall results that much, could that roll be dropped to streamline the game? We might be able to handle that 6% swing one way or the other using an existing dice roll.
While we had to really simplify and make assumptions to be able to simulate this, I think it’s still worth thinking about. Three things that immediately come to mind:
Adjusting solo RPG game flow: Particularly in solo RPGs, it’s important to keep the action moving and not have your combat turn into a forty round slugfest. There might be applications for simulating some basic fights to make sure that doesn’t happen.
Foe difficulty balancing: This model wouldn’t work, but with some enhancements, I think you could build a system that could handle full-party combat and special attacks. With the additional complexity, there might be a use for being able to rapidly balance boss monsters so they are the right difficulty.
Consider reducing rolls: When designing a solo experience, can you drop dice rolls “to hit” or to determine damage? Is it possible to skip initiative? Consider each roll and how it adds to (or takes away from!) the player experience.
These aren’t about MÖRK BORG, but rather a few things that this exercise made me thing about game design in general.
In a way, this might take away some of the “magic” of RPG design, so I’m not sure I’m personally a fan of this method. It is hard to beat just “making up cool stuff”, and balancing/adjusting live as you play. Regardless, it’s fun to take a look at the numbers too.
I’ve double checked the sim to make sure it makes sense, but every issue of Skeleton Code Machine is potentially an example of Cunningham’s Law. If I missed something or there’s a better way to interpret this, please post a comment! I’d love to hear your opinions.
See you next week!
— E.P. 💀