Arx scripting language

From Arx Libertatis Wiki
Revision as of 00:50, 16 April 2020 by Ds (talk | contribs) (→‎Labels)
Jump to navigation Jump to search

This article describes the scripting language used in Arx Fatalis and Arx Libertatis.

Entities

Main article: Entity.

Classes

Events

Main article: Script:Events.

Variables

Main article: Script:Variables.

Arx scripts know three basic data types: int, Template:Real and Template:Text. Variables can be either global (shared between all entities) or entity-specific. There are also special system variables than can only be read. The variable type is defined by the first character of the variable name.

Char Byte Scope Type
# 0x23 global int
& 0x26 global Template:Real
$ 0x24 global Template:Text
§ 0xA7 entity int
@ 0x40 entity Template:Real
£ 0xA3 entity Template:Text
^ 0x5E system (mixed)

While variables in Arx scripts are typed, there are no type restrictions for where variables are used: the types are converted automatically.

Commands

Main article: Script:Commands.

Control flow

Main article: Category:Script control flow.

Execution of the current event is terminated with the accept or refuse commands. For entity instance scripts, refuse ends event execution completely while accept allows execution to continue in the entity class script.

Labels

The two characters >> followed directly by a name define a label. These are skipped when encountered during normal execution but can serve as the target to jump to for a goto or gosub command. Execution of the next command after gosub can be resumed using the return command

Search script files

mkdir assets
cd assets
arxunpak ~/.local/share/arx/{data,loc,data2,sfx,speech}.pak
grep -rP -ia 's_*p_*e_*c_*i_*a_*l_*f_*x' graph/obj3d/interactive/