Files
stationeers_lang/docs/builtins.md

7.5 KiB

Built-in Functions

Slang provides built-in functions for device I/O and mathematical operations. These map directly to IC10 instructions.

System Functions

yield()

Pauses execution for exactly one game tick.

yield();

IC10: yield


sleep(ticks)

Pauses execution for the specified number of ticks.

sleep(10);  // Sleep for 10 ticks

IC10: sleep ticks


hash(prefabName)

Computes the in-game hash for a prefab name. The hash is computed at compile time and no runtime code is generated.

const AC_HASH = hash("StructureAirConditioner");

Note: This is different from IC10's hash instruction, which computes the hash at runtime.

setBatched(AC_HASH, "On", 0);

IC10: sb -2087593337 On 0 (no hash computation at runtime)


Device I/O Functions

Reading from Devices

Load from device

load(device, property) / l(device, property)

Loads a property value from a device:

let temp = load(sensor, "Temperature");
let temp = l(sensor, "Temperature");

// Preferred: use dot notation
let temp = sensor.Temperature;

IC10: l r? d? var


Load From Device Batched

loadBatched(deviceHash, property, batchMode) / lb(...)

Loads a property from all devices matching a hash, aggregated by batch mode:

const SENSOR = hash("StructureGasSensor");
let avgTemp = loadBatched(SENSOR, "Temperature", "Average");
let maxTemp = lb(SENSOR, "Temperature", "Maximum");

Batch Modes: "Average", "Sum", "Minimum", "Maximum"

IC10: lb r? deviceHash logicType batchMode


Load From Device Batched Named

loadBatchedNamed(deviceHash, nameHash, property, batchMode) / lbn(...)

Loads a property from devices matching both device hash and name hash:

const SENSOR_HASH = hash("StructureGasSensor");
const SENSOR_NAME_HASH = hash("Outdoor Gas Sensor");
let avgTemp = loadBatchedNamed(SENSOR_HASH, SENSOR_NAME_HASH, "Temperature", "Average");
let maxTemp = lbn(SENSOR_HASH, SENSOR_NAME_HASH, "Temperature", "Maximum");

IC10: lbn r? deviceHash nameHash logicType batchMode

Note: This function is useful when a script interfaces with a lot of devices, as it allows for arbitrary device access without limited to the 6 dx pins.


Load Slot

loadSlot(device, slotIndex, property) / ls(...)

Loads a slot property from a device:

let occupied = loadSlot(sorter, 0, "Occupied");
let occupied = ls(sorter, 0, "Occupied");

IC10: ls r? d? slotIndex logicSlotType


Load Reagent

loadReagent(device, reagentMode, reagentHash) / lr(...)

Loads reagent information from a device:

let amount = loadReagent(furnace, "Contents", reagentHash);
let amount = lr(furnace, "Contents", reagentHash);

IC10: lr r? d? reagentMode reagentHash


Writing to Devices

Set On Device

set(device, property, value) / s(...)

Sets a property on a device:

set(valve, "On", true);
s(valve, "On", true);

// Preferred: use dot notation
valve.On = true;

IC10: s d? logicType r?


Set On Device Batched

setBatched(deviceHash, property, value) / sb(...)

Sets a property on all devices matching a hash:

const LIGHT_HASH = hash("StructureWallLight");
setBatched(LIGHT_HASH, "On", true);
sb(LIGHT_HASH, "On", true);

IC10: sb deviceHash logicType r?

Note: This function is useful when a script interfaces with a lot of devices, as it allows for arbitrary device access without limited to the 6 dx pins.


Set On Device Batched Named

setBatchedNamed(deviceHash, nameHash, property, value) / sbn(...)

Sets a property on devices matching both device hash and name hash:

const SENSOR_HASH = hash("StructureGasSensor");
const SENSOR_NAME_HASH = hash("Outdoor Gas Sensor");
setBatchedNamed(SENSOR_HASH, SENSOR_NAME_HASH, "On", true);
sbn(SENSOR_HASH, SENSOR_NAME_HASH, "On", true);

IC10: sbn deviceHash nameHash logicType r?


Set Slot

setSlot(device, slotIndex, property, value) / ss(...)

Sets a slot property on a device:

setSlot(sorter, 0, "Open", true);
ss(sorter, 0, "Open", true);

IC10: ss d? slotIndex logicSlotType r?


Math Functions

All math functions accept numbers, variables, or expressions as arguments.

Trigonometric Functions

Function Description IC10
sin(x) Sine of angle in radians sin
cos(x) Cosine of angle in radians cos
tan(x) Tangent of angle in radians tan
asin(x) Arc sine, returns radians asin
acos(x) Arc cosine, returns radians acos
atan(x) Arc tangent, returns radians atan
atan2(y, x) Two-argument arc tangent atan2

Trig Example

let angle = atan2(y, x);
let sineValue = sin(angle);

Rounding Functions

Function Description IC10
ceil(x) Round up to nearest integer ceil
floor(x) Round down to nearest integer floor
trunc(x) Remove decimal portion trunc
abs(x) Absolute value abs

Rounding Example

let rounded = floor(3.7);  // 3
let positive = abs(-5);    // 5

Other Math Functions

Function Description IC10
sqrt(x) Square root sqrt
log(x) Natural logarithm log
max(a, b) Maximum of two values max
min(a, b) Minimum of two values min
rand() Random number between 0 and 1 rand

Math Example

let root = sqrt(16);        // 4
let bigger = max(a, b);
let randomVal = rand();

See Also