A constant is an identifier with a predefined value. Contrary to a variable the value of the constant can not be changed in run-time. During compilation the constant name is replaced with the value associated with it. The constant values can be numeric (numerals) and string (string literals), and contain an expression.


To define a new constant use the CONST..END construct:

CONST <constant name> = <constant value> END

A constant name is any allowed identifier (a combination of letters, numbers and _). There are names reserved by the compiler that can not be used, such as Continue, Break, And, etc (see compiler.ini). A constant value might be a number (also a model identifier or a label); a string literal; a variable (also a class property); another constant.

MoneyRequired = 30
PlayerMoney = $PLAYER_CHAR.Money
PlayerMoney > MoneyRequired
PlayerMoney += -1

During compilation the constant MoneyRequired gets replaced with the number 30 and PlayerMoney with $PLAYER_CHAR.Money

Edit modes can load constants from an external file by using the <constants> parameter in the modes.xml.

A list of the currently defined constants is displayed after pressing Ctrl+Space.


You can use constants anywhere except the case:

VarName = $Var
IndexName = 25
VarName[IndexName] = 0

To compile such expression, you must write the opcode, for example:

0004: VarName[IndexName] = 0

Also there are some limitations with using an expression as the constant value.