Command Syntax
The simulator script is used to describe the steps to setup IST. The script is made up of commands. Most commands describe one or more actions in game, such as getting an item, dropping some items, or equip something.
The commands can be divided into 3 groups:
- Actions: These correspond to actions you do in game, such as
get
,pick-up
andhold
- Annotations: These commands start with
:
and are used to change the current configuration, such as:slots
- Supercommands: These command start with
!
and are more powerful than the actions. They often interact directly with the game’s state in a way that’s not possible with a regular action.
Whitespaces are insignificant in the syntax, including new lines.
This means one command can be broken into multiple lines and more than one command
can be put on the same line.
Commands can also have an optional trailing ;
.
# These 2 commands are equivalent
get 1 apple 2 pot-lid hammer;
get
1 apple
2 pot-lid
hammer
# Trailing ; is optional even for multiple commands on the same line
hold 2 apples drop
# but it's clearer if you separate them with a ;
hold 2 apples; drop
In general, the syntax is case-sensitive. Although some features like item search is case-insensitive, it’s recommended to keep everything lower-case, unless upper-case is needed (for example when specifying actor name or GDT flag name).
In the simulator, the inventory displayed are the state after executing the command the cursor is on.
The simulator parses the commands by span, not by line. You can view the state for each command even if multiple of them are on the same line.
Item Syntax
Item syntax is used to specify items for commands like get
or drop
.
See Item Syntax.
Meta Syntax
The meta syntax is a versatile syntax used to specify additional contextual metadata, in the form of ordered key-value pairs, the syntax is:
[key1=value1, key2=value2, ...]
# `:` and `=` are interchangeable
[key1:value1, key2:value2, ...]
Generally, key
s are kebab-case
words, and value
s can be one of:
bool
- either the keywordtrue
orfalse
.true
can be omitted, i.e.[equip]
is the same as[equip=true]
integer
- an integer in decimal, or hex prefixed with0x
, like10
or0xa
.float
- a floating point number in decimal, like1.2
(scientific notation not supported).words
- one or more words consisted of alphabetical characters,-
and_
, with spaces allowed in between, likehello my-world
quoted
- a quoted string where any character is allowed"你好世界"
.angled
- likewords
, but surrounded by<
and>
and no spaces are allowed, like<Foo>
.