Blades in the Dark — action roll
At the table
Blades in the Dark resolves risky actions with d6 pools. Roll all your dice at once and use only the highest face—everything else is ignored unless you need a critical (see below).
| Highest die | What happens |
|---|---|
| 1–3 | Bad outcome. Things go wrong: you likely miss your goal and the GM brings extra trouble. |
| 4–5 | Partial success. You get what you were after, but with a cost—harm, heat, reduced effect, a hard choice, or similar. |
| 6 | Full success. It works; things go as you hoped. |
| Two or more 6s | Critical success. As a full success, plus an extra edge (position, effect, or another boon depending on the move). |
Building the pool: Take a number of dice equal to a rating—usually a player’s action (Prowl, Skirmish, Attune, and the rest) or sometimes crew Tier, a situation bonus, or a push. Ratings are often one to four dice in play. Even one die is respectable: you have a 50% chance of partial success or better (4+ on that single die).
Zero or negative dice: If you would roll no dice (or fewer than zero after modifiers), roll 2d6 and use the lower die only—the desperate position. You still use the same outcome bands, but you cannot roll a critical from a desperate roll (at most one 6 counts).
Most specialized rolls in the book (resistance, group actions, fortune rolls, etc.) are variations on this core chart. When you are learning, you can always fall back to “roll the pool, read the highest die” and look up the exact twist later.
Why partial success dominates: On typical pools, 4/5 is the most common band—characters often succeed, but rarely cleanly. That matches the game’s pitch: scrappy criminals in too deep. Complications are where play gets interesting; the dice keep nudging you there on purpose.
Try it
In the playground, open this recipe in the playground and click Run. Output entries 0d through 7d give exact odds for each outcome band. Pool sizes 1d–4d are what you see most often at the table; 0d is the desperate case. 5d–7d are included so you can see how crit-heavy larger pools behave.
The script
↗Scale = scale().step("BAD").step("MESSY").step("CLEAN").step("CRITICAL")
def blades_pool(faces):
high = max(faces)
if high == 6:
if len([f for f in faces if f == 6]) >= 2:
return 3
return 2
if high >= 4:
return 1
return 0
def code_label(c):
return ["BAD", "MESSY", "CLEAN", "CRITICAL"][c]
def desperate_label(n):
if n == 6:
return "CLEAN"
if n >= 4:
return "MESSY"
return "BAD"
output("0d", classify(keep_lowest(2, 6, 1), Scale, desperate_label))
for dice in range(1, 8):
codes = pool_map(dice_pool(dice, 6), blades_pool)
output("{}d".format(dice), classify(codes, Scale, code_label))
0d · Outcomes
| outcome | % | frac | X/36 |
|---|---|---|---|
| BAD | 75.0 | 3/4 | 27 |
| MESSY | 22.2 | 2/9 | 8 |
| CLEAN | 2.78 | 1/36 | 1 |
| CRITICAL | 0.00 | 0 | 0 |
1d · Outcomes
| outcome | % | frac | X/36 |
|---|---|---|---|
| BAD | 50.0 | 1/2 | 18 |
| MESSY | 33.3 | 1/3 | 12 |
| CLEAN | 16.7 | 1/6 | 6 |
| CRITICAL | 0.00 | 0 | 0 |
2d · Outcomes
| outcome | % | frac | X/36 |
|---|---|---|---|
| BAD | 25.0 | 1/4 | 9 |
| MESSY | 44.4 | 4/9 | 16 |
| CLEAN | 27.8 | 5/18 | 10 |
| CRITICAL | 2.78 | 1/36 | 1 |
3d · Outcomes
| outcome | % | frac | X/36 |
|---|---|---|---|
| BAD | 12.5 | 1/8 | 4 |
| MESSY | 45.4 | 49/108 | 16 |
| CLEAN | 34.7 | 25/72 | 12 |
| CRITICAL | 7.41 | 2/27 | 3 |
4d · Outcomes
| outcome | % | frac | X/36 |
|---|---|---|---|
| BAD | 6.25 | 1/16 | 2 |
| MESSY | 42.0 | 34/81 | 15 |
| CLEAN | 38.6 | 125/324 | 14 |
| CRITICAL | 13.2 | 19/144 | 5 |
5d · Outcomes
| outcome | % | frac | X/36 |
|---|---|---|---|
| BAD | 3.12 | 1/32 | 1 |
| MESSY | 37.1 | 964/2601 | 13 |
| CLEAN | 40.2 | 428/1065 | 14 |
| CRITICAL | 19.6 | 115/586 | 7 |
6d · Outcomes
| outcome | % | frac | X/36 |
|---|---|---|---|
| BAD | 1.56 | 1/64 | 1 |
| MESSY | 31.9 | 386/1209 | 11 |
| CLEAN | 40.2 | 428/1065 | 14 |
| CRITICAL | 26.3 | 209/794 | 9 |
7d · Outcomes
| outcome | % | frac | X/36 |
|---|---|---|---|
| BAD | 0.78 | 1/128 | 0 |
| MESSY | 27.1 | 220/811 | 10 |
| CLEAN | 39.1 | 345/883 | 14 |
| CRITICAL | 33.0 | 211/639 | 12 |