summaryrefslogtreecommitdiff
blob: 500f884bc4c116339891ed7648bdca87e58a0d83 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
---
title: Instructions
weight: 2
---
This page presents all the instructions that can be performed in Wyrd.
Instructions do not return values. With one exception, all instructions increase
the Program Counter by 1.


## ADD CHOICE
{{< fatecode >}}(add_choice [TEXT]){{< /fatecode >}}
Adds a new option for the next `resolve_choices` instruction. The new option
presents the player with `[TEXT]`.

## INTEGER PROMPT
{{< fatecode >}}(prompt_integer [INT REFERENCE] [MIN = INT] [MAX = INT] [TEXT]){{< /fatecode >}}

Prompts the user for an integer between `[MIN]` and `[MAX]` by displaying the
message `[TEXT]`. The result is stored in `[INT REFERENCE]`.

## STRING PROMPT
{{< fatecode >}}(prompt_string [STRING REFERENCE] [MIN = INT] [MAX = INT] [TEXT]){{< /fatecode >}}

Prompts the user for a string of size between `[MIN]` and `[MAX]` by displaying
the message `[TEXT]`. The result is stored in `[STRING REFERENCE]`.


## ASSERT
{{< fatecode >}}(assert [BOOL] [TEXT]){{< /fatecode >}}
If `[BOOL]` isn't _true_, raise a runtime error containing `[TEXT]`.


## DISPLAY
{{< fatecode >}}(display [TEXT]){{< /fatecode >}}
Displays `[TEXT]` to the player.


## END
{{< fatecode >}}(end){{< /fatecode >}}
Marks the end of the narration. Interrupts the execution.


## EVENT CALL
{{< fatecode >}}(event_call {string} [C0 = COMPUTATION] ... [CN = COMPUTATION]){{< /fatecode >}}
Interrupts execution, informs the interpreter that the given event `{String}`
was triggered with the parameters `C0 ... CN`.


## REMOVE
{{< fatecode >}}(remove [ADDRESS]){{< /fatecode >}}
The memory at `[ADDRESS]` is freed.


## RESOLVE CHOICES
{{< fatecode >}}(resolve_choices){{< /fatecode >}}
Present the player with all options that where added using `add_choice` since
the last `resolve_choices`. The execution is paused and should be resumed by
the interpreter setting the Program Counter according to the chosen option.


## SET PC
{{< fatecode >}}(set_pc [INT]){{< /fatecode >}}
Sets the Program Counter to `[INT]`. The program counter is not automatically
increased by 1 in this case.


## SET VALUE
{{< fatecode >}}(set_value [ADDRESS] [COMPUTATION]){{< /fatecode >}}
Sets the memory pointed by `[ADDRESS]` to `[COMPUTATION]`.
`[COMPUTATION]` is passed by value, not reference (i.e. no aliasing can occur
without it being done explicitly through pointers).

## INITIALIZE MEMORY ELEMENT
{{< fatecode >}}(initialize [ADDRESS] [TYPE]){{< /fatecode >}}
Initializes a memory element at `[ADDRESS]` with the default value for the type
`[TYPE]`.