1. Establish range bands
Combat uses abstract range bands because I do not want to count squares or measure distances for a game that is built around one hero making quick decisions.
- Close: immediate reach
- Near: one Move away
- Far: two Moves away
- Distant: outside the immediate encounter
One Move action changes position by one range band.
2. Check surprise
The hero acts first unless surprised.
Most of the time I assume the hero acts first, because solo combat already has enough pressure without giving the opposition the first move by default.
When surprise is uncertain, make a Dexterity test.
- Success: the hero acts first
- Failure: enemies act first in the opening round
After the opening round, alternate:
- Hero turn
- Enemy turn
3. Hero turn: take two actions
The hero takes two actions each turn.
That is the core rhythm of combat. Two actions gives the hero enough room to move, attack, cast, or recover without dragging the turn out into a mini puzzle every round.
Common actions:
- Move
- Attack
- Cast
- Interact
- Recover
- Use an action-based Trait
- Attempt another meaningful action
The same action may be taken twice unless a rule says otherwise.
4. Resolve attacks
Choose the relevant Attribute based on how the attack is happening:
- Strength for forceful melee attacks
- Dexterity for precise melee or ranged attacks
- Casting Attribute for magical attacks
Apply the target’s Guard adjustment:
| Enemy Rank | Guard Adjustment |
|---|---|
| Minion | +2 |
| Standard | 0 |
| Elite | -2 |
| Boss | -4 |
Then make a roll-under attack test.
Any successful damaging hit defeats one Minion.
This is intentionally direct. I want the hero to look at the situation, pick the right Attribute, apply the target’s rank, and roll.
5. Roll damage
Damage uses direct dice rather than a second conversion table:
| Damage Step | Damage |
|---|---|
| Step 1 | 1d4 |
| Step 2 | 1d6 |
| Step 3 | 1d8 |
| Step 4 | 1d10 |
| Step 5 | 1d12 |
| Step 6 | 1d12 + 2 |
| Step 7 | 1d12 + 4 |
For steps above 7, keep adding +2 per step.
6. Apply Soak
Damage taken is:
damage roll minus Soak
Minimum damage after Soak is 0.
Soak exists to make armour matter without adding another full defence layer on top of the roll-under test.
7. Resolve Fray once
Once during each hero turn, after the hero performs an offensive action, roll the Fray Die.
Fray is there to help the solo hero deal with weaker enemies without turning every small fight into cleanup work. It should feel like pressure radiating outward from an already dangerous protagonist, not like a separate attack routine.
- On 4 or higher, defeat one eligible Minion.
- On 3 or lower, no Minion is defeated.
Fray never defeats more than one Minion per turn.
Fray Die:
| Hero Level | Fray Die |
|---|---|
| 1-5 | 1d6 |
| 6-10 | 1d8 |
An eligible Minion must:
- be within the hero’s current weapon, spell, or power range
- be fictionally exposed to the offensive action
- not be protected by a barrier or special effect
- not already be the same target directly defeated by that action
Fray requires no extra action.
8. Resolve the enemy turn
Enemies do not normally roll d20s.
When the enemies push back, the player stays active. That keeps the whole fight player-facing and avoids the stop-start feeling that happens when solo combat keeps asking me to switch mental roles.
When an enemy attacks, the hero makes a Defence test using the most appropriate Attribute.
Apply the enemy’s Threat adjustment:
| Enemy Rank | Threat Adjustment |
|---|---|
| Minion | +2 |
| Standard | 0 |
| Elite | -2 |
| Boss | -4 |
On success, the hero avoids or endures the attack.
On failure, the hero takes the enemy’s damage minus Soak.
9. Test Morale when appropriate
Not every enemy should fight to the last hit point. Test Morale when:
- half the enemy group is defeated
- the enemy leader falls
- the enemy objective becomes impossible
- the hero spends an action to break enemy resolve
Choose Strength, Wisdom, or Charisma, depending on how the hero is forcing the break.
Enemy Resolve:
| Resolve | Target |
|---|---|
| Unsteady | 6 |
| Trained | 11 |
| Fanatical | 16 |
Apply:
- Advantage if half the enemy group is defeated
- Advantage if the enemy leader falls
- Advantage if the enemy objective becomes impossible
- Disadvantage if the enemy is Fanatical
On success, enemies flee, surrender, withdraw, hesitate, or bargain.
On failure, enemies hold.
10. End combat
Combat ends when:
- all enemies are gone
- the hero is Defeated
- one side escapes
- one side surrenders
- the objective is achieved
- the objective becomes impossible and the scene changes
Combat example
Mira Ashen, a Fighter with Strength 14, Dexterity 13, Soak 3, and a standard weapon (Step 2), faces one Bandit Raider (Standard) and two Goblin Sneaks (Minions).
I wanted a full example here because combat rules always look cleaner in outline form than they do in actual use. Seeing one round play through makes the intended pace much clearer.
Setup
- Mira begins at Near
- the bandit and goblins are together
- surprise is uncertain
Surprise
Mira rolls a Dexterity test.
- Dexterity 13
- roll:
9 - result: success
Mira acts first.
Hero action 1: Move
Mira moves from Near to Close.
Hero action 2: Attack
She attacks one goblin with Strength.
- Strength 14
- Minion Guard adjustment
+2 - effective attack Attribute: 16
- roll:
11 - result: success
The attack deals damage, so the goblin is defeated.
Fray
Mira made an offensive action, so she rolls Fray.
- Fray Die:
1d6 - roll:
5 - result: one eligible Minion is defeated
The second goblin is removed.
Fray has now defeated its one allowed Minion for this turn.
Enemy turn
The remaining bandit attacks Mira.
Mira chooses Dexterity for Defence.
- Dexterity 13
- Standard Threat adjustment
0 - effective Defence Attribute: 13
- roll:
15 - result: failure
The bandit deals 1d4 damage.
- damage roll:
3 - Mira’s Soak:
3 - final damage:
0
The bandit lands a blow, but Mira’s armour and shield absorb it.
Morale
Half or more of the enemy group has been defeated, so Mira tests Morale against the bandit.
She uses Charisma.
- Charisma 11
- Resolve target: Trained
11 - Advantage because half the group is defeated
- rolls:
14and6 - keep the lower result:
6 - result: success
The bandit withdraws instead of fighting on.
Rank examples
Minion example
Goblin Sneak
- Rank: Minion
- Guard: +2
- Threat: +2
- Damage: 1
- Soak: 0
- Resolve: Unsteady (6)
- Trait: Pack Rush - if another goblin is at Close, the hero’s first Defence test against this group each round is Difficult
Standard example
Bandit Raider
- Rank: Standard
- Guard: 0
- Threat: 0
- HP: 6
- Damage: 1d4
- Soak: 0
- Resolve: Trained (11)
- Trait: Press the Gap - if the hero failed a Defence test this round, the bandit’s next attack this scene is Favourable
Elite example
Ogre Enforcer
- Rank: Elite
- Guard: -2
- Threat: -2
- HP: 12
- Damage: 1d6
- Soak: 1
- Resolve: Unsteady (6)
- Trait: Crushing Swing - on a successful hit, the hero is pushed one range band unless they choose to remain in place and take 2 extra damage
Boss example
Shadow Warden
- Rank: Boss
- Guard: -4
- Threat: -4
- HP: 20
- Damage: 1d8
- Soak: 2
- Resolve: Fanatical (16)
- Trait: Dread Halo - the hero’s first Wisdom Defence test against the Warden each scene is Severe