Rolemaster — open-ended d100
At the table
Most Rolemaster rolls are 1–100 rolls (also called d100 rolls): roll two d10s, one as tens and one as ones, for a result from 01 to 100 (00 counts as 100).
On top of that flat percentile, the books define three related procedures (RMSS core rules):
Low open-ended roll
Make a 1–100 roll. If the result is 01–05, roll again and subtract that second result from the first. If that second roll is 96–00, roll a third time and subtract it too, and keep going until a reroll is not 96–00. The total of all those rolls (first minus the rerolls) is the low open-ended result.
Example: Initial 04, then 97, then 03 → 04 − 97 − 03 = −96. (The rulebook’s “97” line is a typo for 96–00—97 is in the high-open band, not 01–05.)
High open-ended roll
Make a 1–100 roll. If the result is 96–00, roll again and add the second result. If that roll is again 96–00, roll a third time and add it, and so on until a reroll is not 96–00. The total sum is the high open-ended result.
Example: Initial 99, then 96, then 04 → 99 + 96 + 04 = 199.
Open-ended roll
An open-ended roll is both low open-ended and high open-ended: 01–05 on the first die starts the subtracting chain; 96–00 on the first die starts the adding chain; 06–95 uses the first roll only.
Only 96–00 on a reroll extends the chain—other faces (including 01–05 on a reroll) are applied once and then stop unless the next reroll is again 96–00. That is how a maneuver can crater to −400 or spike past 500 before skill bonuses.
In this recipe, 96–00 means the five outcomes 96, 97, 98, 99, and 100 (100 is the table 00).
| Procedure | First roll triggers | Reroll chain continues on |
|---|---|---|
| Low open-ended | 01–05 | 96–00 only |
| High open-ended | 96–00 | 96–00 only |
| Open-ended (full) | 01–05 or 96–00 | 96–00 only |
Many tables use only high open-ended (attacks) or the full open-ended roll (maneuvers). Static rolls sometimes treat 66 or 100 specially and skip opening—this script models the core rule above only.
Try it
Copy the script into the playground editor and click Run. Output includes the full open-ended distribution (with a chain cap), the chance of a flat 50 with no reroll, and rough tail weights (150+ and 0 or below).
The script
↗oe = open_ended_d100(8)
output("open_ended_d100", oe)
output("p_unmodified_mid", oe.pmf(50))
output("p_at_least_150", oe.p_ge(150))
output("p_zero_or_below", oe.cdf(0))
open_ended_d100 · DieRoll · mean 50.500
| outcome | % | frac | X |
|---|---|---|---|
| <-88 | 0.45 | 4/889 | 0.005 |
| -88..-80 | 0.45 | 4/889 | 0.005 |
| -79..-71 | 0.45 | 4/889 | 0.005 |
| -70..-62 | 0.45 | 4/889 | 0.005 |
| -61..-53 | 0.45 | 4/889 | 0.005 |
| -52..-44 | 0.45 | 4/889 | 0.005 |
| -43..-35 | 0.45 | 4/889 | 0.005 |
| -34..-26 | 0.45 | 4/889 | 0.005 |
| -25..-17 | 0.45 | 4/889 | 0.005 |
| -16..-8 | 0.45 | 4/889 | 0.005 |
| -7..3 | 0.49 | 9/1837 | 0.005 |
| 4 | 0.01 | 1/9901 | 0.000 |
| 6..95 | 90.0 | 9/10 | 0.900 |
| 97..107 | 0.45 | 4/889 | 0.005 |
| 108..116 | 0.45 | 4/889 | 0.005 |
| 117..125 | 0.45 | 4/889 | 0.005 |
| 126..134 | 0.45 | 4/889 | 0.005 |
| 135..143 | 0.45 | 4/889 | 0.005 |
| 144..152 | 0.45 | 4/889 | 0.005 |
| 153..161 | 0.45 | 4/889 | 0.005 |
| 162..170 | 0.45 | 4/889 | 0.005 |
| 171..179 | 0.45 | 4/889 | 0.005 |
| 180..188 | 0.45 | 4/889 | 0.005 |
| 189 | 0.05 | 1/1997 | 0.001 |
| >189 | 0.45 | 4/889 | 0.005 |
p_unmodified_mid · Prob
| outcome | % | frac | X |
|---|---|---|---|
| p_unmodified_mid | 1.00 | 1/100 | 0.010 |
p_at_least_150 · Prob
| outcome | % | frac | X |
|---|---|---|---|
| p_at_least_150 | 2.45 | 27/1102 | 0.024 |
p_zero_or_below · Prob
| outcome | % | frac | X |
|---|---|---|---|
| p_zero_or_below | 4.90 | 49/1000 | 0.049 |