Files
happening/docs/SYNTAX.md
T

2.9 KiB

Syntax

Setup

This is done in the about.json file,

{

"title": "My Great Story",

"description": "please read!"

}

Characters

See Character documentation for more info Referencing a character using the @, @NARRATOR is reserved for the Narrator.
Customisation is done with @CHARACTER change <feature> <feature name>
Move a character with @CHARACTER to fr Outputting can be done with @CHARACTER says "string", see more at (outputs)[##outputs]

Note

fr means front-right for instance.

Variables

Currently only strings and integers are supported as variable types (booleans are planned).
The interpreter can assume the data type so this doesn't need to be specified.
To assign new variables (or overwrite existing ones):

$x = 1
$an_integer = 3
$y = "hello"
$a_string = "world"

Note

Variable names can be as long as you want and can contain any characters except whitespaces

To modify existing variables:

$x + 1              // Adds 1 to an integer x
$x - 1              // Subtracts 1 from an integer x
$y + " world"       // Appends " world" to the end of a string y

Other uses:

$x = choice "choice 1" {            // Assigns to x the choice made by the client
...
$x = input                          // Assigns to x the string input made by the client

Outputs

@CHARACTER says "this string
is multi-line
and ends with a"

$x = "hello world"
@CHARACTER says $x

$name = "deadvey"
@CHARACTER says "hello $name"

Note

Strings only support double quotes now ("") and do not support having quotes within quotes.

Variables

Variables are referenced with the $, only integers will be supported.

Selection

Condition based:

if condition {

}

elif condition {                    // Only gets checked if the if and all previous elif statements failed

}

else                                // Always passes if all previous if and elif statements failed

}

Note

See conditions

Choice based:

choice "choice 1" {

}

or "choice 2" {

}

or "choice 3" {

}

You can assign a variable to the result of a choice by doing the following:

$x = choice "choice 1" {
...

Positioning

@CHARACTER to position

PAN position

Conditions

A condition works works like this:

$x == "hello"       // evaluates true only if x is "hello"
$x > 1              // evaulates true if x is an integer and is more than 1
$x < 1              // evaluates true if x is an integer and is less than 1
$x >= 1             // evaluates true if x is an integer and is more than or equal to 1
$x <= 1             // evaluates true if x is an integer and is less than or equal to 1

Note

== can be used for integers or strings whereas the rest can only be used with integers

The order (variable operator value) is currently fixed and so must be layed out like this.

Other

label:

GOTO label

Ending

END to exit out of the story