Rules Fragment - Roll Up to 12d20 for Mass Combat
Rationale: Mass combat as fast as possible, for resolving battles between loads of granular little dudes such as you might accrue at domain level. This was inspired by the mass combat system proposed in Reavers.
Anydice (currently broken?) here
| Type | Abbr | CV | Notes |
|---|---|---|---|
| Light Infantry | LI | 4 | x1.5 fortifications, x1.5 in forests |
| Medium Infantry | MI | 6 | x1.5 fortifications |
| Heavy Infantry | HI | 8 | x1.5 fortifications, x0.75 in swamps |
| Light Cavalry | LC | 8 | x0.75 rough terrain |
| Medium Cavalry | MC | 10 | x0.75 rough terrain, x1.5 on plains |
| Heavy Cavalry | HC | 12 | x0.75 rough terrain, x1.5 on plains |
| Archers | AR | 6 | x0.5 during rain |
| Monsters | - | +5 per HD | Varies |
- Calculate the Combat Value (CV) of each opposing army by multiplying combatants by their CV and situational multiplier.
- Multiply the army CV by 1.0 +/- up to 0.2 for good or bad plans
- Determine ratio of army CVs in sixths. Do not simplify. You will get a ratio from 6:6 to 6:1. (Divide the weaker army's CV by that of the stronger army, then multiply it by 6. Round up on 0.5)
- Each army rolls a number of d20 according to their term in the army CV ratio. Each side keeps the highest result. Highest wins, compare the difference. The stronger force will always be rolling 6d20:
- Difference 0: Tie. The PCs must personally apply themselves in a climactic moment in the battle. If successful, roll with an extra d20 next round. If failing, according to circumstances no effect next round, roll with one less d20 (minimum 6:1), or consider battle lost.
- Difference 1-2: Battle continues.
- Difference 3-5: Losing side checks morale. On success retreating, on failure routing.
- Difference 6+: Losing side slaughtered.
- Determine casualties. Casualties are applied evenly to all units or according to DM discretion. Any army with no avenue of retreat is slaughtered, perhaps in totality. Important characters of a defeated army make a Dodge save to escape, being captured if they fail and dying if they fail by 10 or more.
- Victor takes [rounds of battle]d6% casualties
- Retreating army takes [rounds of battle]d6% + [1, 2 if retreating through chokepoint]d10% casualties
- Routed army takes [rounds of battle]d6% + [2, 4 if routing through chokepoint]d10% casualties
- Slaughtered army: d10% escape
Worked Example Wulfwaru and her fellow PCs command 34 medium infantry and 12 archers. Their army CV is 276. Ulfkell commands 37 medium infantry and 15 heavy infantry. This force holds a fort, and so enjoys a 1.5x modifier. His army CV is 513. 276/513 = 0.538 0.538*6 = 3.22. Round down to 3 The CV ratio is 6:3, Ulfkell to Wulfwaru. For the first round Ulfkell rolls 6d20 and his highest die is 17, Wulfwaru rolls 3 and her highest die is 18. The difference is 1, and battle continues. For the second round, rolling the same dice, they tie at 19: On the individual scale, the PCs attempt to lead an escalade over a vulnerable section of wall. They prevail and their forces flood into the fort. This round is considered as battle continuing. Third round, Ulfkell continues to roll 6d20, rolling 15. Due to their success in the previous scene, Wulfwaru and company gain another d20 and roll 4d20, rolling 10. The difference is 5. Ulfkell retains the fort, has fought three rounds, and so rolls 3d6 for casualties: result 8. He loses 8% of his forces. 37*0.08 = 2.96, round to 3 medium infantry. He loses 1 heavy infanteer. Wulfwaru checks morale and succeeds, retreating in good order. They have fought three rounds, there is a chokepoint for their retreat as they are within the walls. They therefore roll 3d6+2d10 and take 24% casualties, losing 8 medium infantry and 3 archers. Wulfwaru rolls Dodge to escape: She has 7 DODG due to her armour, rolls 12, and is captured. Her fellow PC, with 9 DODG, rolls 19, and is killed.
For fidelity, the 1.5 modifier enjoyed by Ulfkell could perhaps be removed after the walls are breached, but this would be an added complication for the DM.
Alternatives
Calculating casualties is (as Cataphracts rules sickos well know) a fiddly problem. I examined a few alternatives.
- These are a number of d4 equal to the number of d20 your enemy used. (6:6. Each rolls 6d4, 6:1 the stronger rolls 1d4, the weaker 6d4). Take that % of casualties. If routed, multiply by the other side.
- Winner takes
(2 * enemyDice)%casualties. Loser takes(5 * enemyDice)% - Use ratio of difference between max d20s to assign casualties. Perhaps for each,
(difference * enemyDice)%, minimum 1%. - Each detachment rolls a d6.
- Winners: Detachment obliterated 1, reduced in strength 2, fine 3-6
- Losers: Obliterated 1-2, reduced 3-4, fine 5-6
Discussion
There's a perverse novelty to rolling fistfulls of d20. When do you ever get to do that? And are the distributions not novel, not pretty?
I chose a base 6 ratio arbitrarily, it had enough graduation to make differences in CV matter. Rolling more than 6d20 a side would become onerous however.
The unit types are lifted from Chainmail / Reavers. Given I intend to use this for Wolves Upon the Coast I ought to base it on Gearing's Skirmisher/ Footman / Armoured Footman / Horeseman setup, or perhaps more cleverly generate CVs from a matrix of arms / zeal / HD. Say:
| Armour \ Zeal | 1HD |
|---|---|
| Unarmoured | 2 |
| Light | 6 |
| Medium | 8 |
| Heavy | 10 |
| Heavy+Shield | 12 |
+4 if mounted
+4 for each additional HD
In Rollem Rocks, my discord dice bot of choice, I use something like 10#(6d20kh1)-(4d20kh1) (this is for ratio 6:4) to examine the outcomes. Give it a try and get a feel of it.
I posted this to Phlox's discord on 3 May 2026. Putting it on the blog so it's more accessible.