User Tools

Site Tools


set

This is an old revision of the document!


<<set>>

Motivating example

Variables are a good way to keep track of what a reader has chosen in a story, or to manage some other part of the story state. For example, many gamebooks start off with something like this:

All you possess is an Axe (note under Weapons on your Action Chart) and a Backpack containing 1 Meal (note under Meals on your Action Chart).

(Joe Dever, Flight from the Dark)

You can keep track of the number of meals that the protagonist carries with the «set» macro, like so:

All you possess is an Axe and a Backpack containing 1 Meal.
<<set $meals to 1>>

Later on in the story, you can change the value of a variable with another «set» statement.

You are feeling tired and hungry and you must stop to eat. <<set $meals -= 1>>

If you make a mistake with «set», a pink highlighted message will appear where you invoked it. Here's a sample error message, in this case forgetting the sigil before the variable $meals:

bad expression: meals is not defined

Setter operators

The to and -= are special operators called setter operators - while expressions may contain comparison operators like + or not, setter operators are commands to modify the values of variables. The -= operator lowers the variable on the left by the value on the right. There is also a += operator that does the opposite.

The most useful setter operators are as follows:

Operator(s) Function Example
to, = Sets the variable on the left to the value on the right $bullets to 5
+= Increases the variable on the left by the number on the right, OR adds the string on the right to the end of the variable. $var += 1 is shorthand for $var to $var + 1 $dogs += 2
-= Decreases the variable on the left by the number on the right. $var -= 1 is shorthand for $var to $var - 1 $health -= 2
*= Multiplies the variable on the left by the number on the right. $var *= 2 is shorthand for $var to $var * 2 $shields *= 2
/= Divides the variable on the left by the number on the right. $var /= 2 is shorthand for $var to $var / 2 $coins /= 2
set.1387328645.txt.gz · Last modified: 2017/10/09 20:37 (external edit)