LANGUAGE REFERENCE
This is the quick version. The full reference, with descriptions and examples for everything, lives at andstar.org/docs.
Declarations (top of file)
@title My Game @author Me @points 4 max 6 # players distribute 4 points before play @wardrobe open # let players swap gear anytime (default: locked) @reveal paced # line pacing: click (default, tap per line), paced, off @fail morale <= 0 "message" # fail state — player returns to the last ~ save @bg #101820 # background color (other shades are derived) @accent #e94560 # accent color @font serif # book (default), mono, serif, sans, humanist skill logic "Logic" #6cb9ff = 3 # speaking voice + rollable, starts at 3 char kim "Kim" #f0c987 # a character item flask "Hip Flask" gut+2 logic-1 # equipment with skill modifiers item page "Torn Page" # no modifiers = plain possession (no equip box) currency real "Réal" = 20 # money, shown in the HUD var seen_body = false # hidden variable stat morale = 2 # variable shown in the sidebar HUD
Passages
== start # defines a passage; the first one starts the game Plain text is narration. kim: "Dialogue is speaker-id, colon, text." logic: Skills can speak too — they render in italics, in their color. ? perception 8: A passive check — only shown if Perception total ≥ 8. ~ set morale = morale - 1 # effects: set / give / take / equip / unequip ~ give flask ~ pay 20 # spend currency (~ earn 5 to gain); gate with [real >= 20] ~ wardrobe open # allow equipping here (~ wardrobe close to lock) ~ points 1 # grant skill points; the player allocates immediately ~ skill sangfroid -1 # author-directed skill change, shown to the player ~ save # checkpoint — players resume here after closing the tab -> other_passage # jump straight to another passage
Choices & checks
* Plain choice -> target_passage * [morale >= 2] Conditional choice -> target * [has(flask)] Item-gated choice -> target * [once] Disappears after being picked -> target * [white logic 10] Retryable skill roll -> success_passage | fail_passage * [red authority 12] One-shot skill roll -> success_passage | fail_passage * [pay 20] Costs money, greyed when broke -> target # [earn 5] to gain * [once] [morale >= 2] [pay 5] Brackets combine freely -> target * The end -> END # END finishes the game * Doomed move -> FAIL # FAIL sends the player back to the last ~ save
Line gates — one passage, many states
[once] Narration shown only the first time this passage runs. [seen_body] kim: "You saw it too." # line only when the condition holds [morale < 1] ~ set shaky = true # conditional effect [has(key) and !seen_body] -> vault # conditional jump
Exporting — backups and itch.io
The EXPORT button downloads a zip containing your whole game as a
single self-contained page (index.html) plus your script
(source.txt). The zip is both your backup — IMPORT reads it
back directly — and an upload-ready build you can host anywhere, including for
money. On itch.io:
create a new project, set Kind of project to HTML, upload the zip,
tick "This file will be played in the browser", and set a viewport of about
960×640 (or enable the fullscreen button). To update the game later, export
again and re-upload.
Rolls
Checks roll 2d6 + skill + equipped item modifiers vs the difficulty.
Double sixes always succeed, double ones always fail.
White checks lock on failure until the skill itself is upgraded past where
it failed (via ~ points or ~ skill name +1 — equipment
affects rolls but won't reopen a failed check); red checks are once-ever.
Text supports {expr} interpolation, e.g. {morale}.