Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Cheat sheet

Statements

SyntaxMeaning
:= nameStart a node named name
---End the current node
=> nameJump to the node name
<=> nameJump to the node name, and come back after it
=> RETURNCome back to the last <=>, or end the dialogue
=> ENDEnd the dialogue
Speaker: textA line of dialogue
textA line with no speaker
-> textA choice offered to the player
-> text [if cond]A choice only available under a condition
>> command(arg1, arg2)Run a command of the game
>> await command()Run a command and wait for it to be over
[let $var = value]Set a variable
[let $dict.key = value]Set a key of a dict
[if cond], [elif cond], [else]Play a block only under a condition
[while cond]Repeat a block, with [break] and [continue]
// commentA comment, up to the end of the line

Blocks are indented with four spaces.

Inside a line or a choice

SyntaxMeaning
[$var], [$a + 1]Insert the value of an expression
#name, #name:valueA tag, at the start or the end of the text
\#wordA word that starts with a #

Expressions

SyntaxMeaning
12, 0.5, "text", wordInteger, float, string, bare-word string
true, falseBooleans
{name: "Alice", hp: 7}A dict
$var, $dict.keyA variable, a key of a dict
+, -, *, /Arithmetic
==, !=, <, <=, >, >=Comparison
and, or, notLogic, also written &&, ||, !
$dict has keyWhether a dict holds a key
Alice has AngryWhether a subject has a feature, asked of the game
name(arg1, arg2)Call a function

Builtin functions: upper, lower, capitalize, len, has, abs, min, max, round, floor, ceil. See Commands and functions.