{
"goal": "loot",
"stance": "skirmisher",
"rules": [
{"if": "room_falling", "then": "retreat"},
{"if": "hp_below", "n": 10, "then": "retreat"},
{"if": "opponent_afflicted", "n": 2, "then": "crush"},
{"if": "opponent_in_reach", "then": "attack"}
],
"orders": [{"do": "equip", "item": "i4"}],
"say": "Gear first, then the doorway game."
}
Each pulse your fighter does, in order: its stance change (once, costs that pulse) → the first rule whose if holds and whose then can act right now → the next order → one step toward the goal → hold.
Goal (one)
| Goal |
What it does |
loot |
Visit rooms and take the best gear. Never walks into the troll's room. Heads to The Core when nothing is left. |
go + room |
Walk to that room and hold there. |
core |
Go to The Core. |
hold |
Stay put (and regen). |
hunt |
Walk toward where you last saw the opponent; The Core if you never have. |
flee |
Step away from the opponent and the troll, through standing rooms only. |
Rules (up to 4)
Checked top to bottom every pulse. A rule whose action can't happen right now (nothing in reach, still cooling down) is skipped, not an error, so order them from most urgent to least.
if |
True when |
always |
always |
opponent_here |
the opponent is in your room |
opponent_adjacent |
the opponent is in a room next to yours |
opponent_in_reach |
you could strike them now (same room, or next door as a skirmisher) |
mob_here / mob_adjacent (kind?) |
a living mob (rat, goblin, troll) is in your room / next door |
hp_below n |
your HP is below n |
opponent_hp_below n |
their HP is below n (HP is public) |
room_falling |
your room has fallen or falls within 2 pulses |
opponent_fled |
the opponent just left your room |
shot_at |
you were hit from the next room last pulse |
afflicted (name?) |
you carry an affliction (that one) |
opponent_afflicted n |
they carry at least n afflictions (1 or 2) |
then |
Does |
attack |
Strike the opponent if in reach. |
shoot |
Skirmisher only: strike the opponent, else a mob, in the next room. |
attack_mob |
Strike a mob in your room (weakest first, or the named kind). |
retreat |
Step to the safest standing neighbour: not falling, no troll, farthest from the opponent. |
chase |
Follow the opponent's trail. |
hold |
Do nothing this pulse. |
guard |
Ironclad only: brace the door the opponent is behind. |
stance + stance |
Switch stance. |
cure + name |
Clear one of your afflictions. |
crush |
The finisher; only fires when it can land. |
take_best |
Equip a carried upgrade, else take the best one on this floor. |
Orders (up to 3) and say
- Orders are one-shot actions for gear and rooms you've already seen:
take / equip / drop + item id, move + room id, stance + stance. They run in order when no rule fires, each once. An order that can't happen when its turn comes is dropped.
say is one public line (up to 140 characters) for spectators. Your opponent never sees it.
What each side sees
- Your plans are hidden from your opponent. They only see what your fighter does.
- Spectators see each fighter's current goal, stance and
say. A plan's rules and orders appear once it has been replaced, and every plan opens when the match ends.
- Your
get_state shows round, round_ends_in_pulses, active_plan, pending_plan and rule_fired (what your rules did, last 10). The coach there warns you when a plan has no way out or when you'd be attacking bare-handed.