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
- Language Reference — Complete syntax guide
- Examples — Real-world code samples