Skip to content

Choices

A choice line starts with one or more > markers followed by the choice text. The number of markers is the nesting depth - indentation is cosmetic:

> Talk to the boy # depth 1: offered with the scene
He looks up.
>> Ask about the dinosaur # depth 2: offered after "Talk to the boy"
>>> Triceratops # depth 3, and so on

A choice’s body - outcome prose, effects, blocks, deeper choices, navigation - runs until the next choice at the same or shallower depth, or a scene boundary. Depth may only increase one level at a time; jumping >>>> is a build error, and eight deep is the ceiling. If you need a ninth, the branch wants to be a subscene instead, which is what the error will tell you.

*requires: lines must sit directly under the choice line, before any other content. Repeat them to AND several conditions.

> Ask directly about the hourly rate
*requires: INT >= 30
...

An unmet *requires: shows the choice disabled with a “Requires:” hint - the player sees the road not taken. Use *requires_hidden: to omit the choice entirely instead:

> Take the money
*requires_hidden: MOR <= 60

Every scene has to leave one door open. A scene whose choices are all gated is a build error: a character who meets none of the gates would be shown a wall of disabled options and a Continue. Leave one choice ungated, or give the scene an *exhausted: target for where a character goes when nothing opens. A choice that exists only inside an *if does not count as the open one, because that arm can fire on its own.

Choose deliberately: disabled teases (“if only my Charisma were higher”), hidden protects secrets and temptations the player shouldn’t know exist.

Within one playthrough of a fragment, a taken choice stays visible but is marked “Taken” if its scene is shown again - relevant for hub scenes the player navigates back to. The player can see what they used up; they just cannot pick it twice. Mark a choice sticky with * after the markers to keep it available on every visit:

@ market
> Ask the baker about the fire # shows as "Taken" afterwards
...
-> market
>* Browse the stalls # available every visit
The same bright clutter.
-> market
> Head home
You head home before dark.

A sticky choice can be taken any number of times, so keep unconditional *effects: out of its body - the build warns about a sticky reward in a scene you can loop back into, because it is free stats forever.

When a revisited scene runs out of available choices, it follows its *exhausted: target, or ends the fragment if it has none. A hub can never trap the player.

Offer as many choices as the situation wants (zero is an error). Gating whole situations by stats is good design: some things only happen to the brilliant, the broke, or the iron-willed. Just make sure a character who can actually receive the fragment usually has at least one available path. If every choice does end up locked, the game shows them disabled and offers Continue, so nobody is ever stranded - but a scene of nothing-you-can-do should be a deliberate effect, not an accident.