<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://stationeers-wiki.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Z0</id>
	<title>Stationeers Community Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://stationeers-wiki.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Z0"/>
	<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/Special:Contributions/Z0"/>
	<updated>2026-04-05T00:20:37Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=IC10&amp;diff=19891</id>
		<title>IC10</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=IC10&amp;diff=19891"/>
		<updated>2024-02-01T16:40:14Z</updated>

		<summary type="html">&lt;p&gt;Z0: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:MIPS Programming]]&lt;br /&gt;
=MIPS scripting language for IC10 housings / chips=&lt;br /&gt;
MIPS is [[Stationeers]]&#039; in-game scripting language. It runs on [[Integrated Circuit (IC10)|IC10 chips]] crafted at the [[Electronics Printer]]. &lt;br /&gt;
&lt;br /&gt;
==Registers==&lt;br /&gt;
Internal registers &#039;&#039;&#039;r?&#039;&#039;&#039;: The IC contains 16 CPU registers, numbered &#039;&#039;&#039;r0&#039;&#039;&#039; to &#039;&#039;&#039;r15&#039;&#039;&#039;. From now on referred to as &#039;&#039;&#039;r?&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Device registers &#039;&#039;&#039;d? logicType&#039;&#039;&#039;: Device registers are written to and from the IC. A device register is numbered &#039;&#039;&#039;d0&#039;&#039;&#039; to &#039;&#039;&#039;d5&#039;&#039;&#039; (select via screw), or &#039;&#039;&#039;db&#039;&#039;&#039; (connected device). From now on referred to as &#039;&#039;&#039;d?&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Logic and algorithmic with &#039;&#039;&#039;Internal registers&#039;&#039;&#039; ===&lt;br /&gt;
All calculations are exclusively performed to and from &#039;&#039;&#039;r?&#039;&#039;&#039; registers, or generally more understood as variables in programming. You can use aliases to give convenient names with the &amp;lt;code&amp;gt;alias string r?|d?&amp;lt;/code&amp;gt;command (see below). &lt;br /&gt;
&lt;br /&gt;
Internal registers can be manipulated in various ways. &lt;br /&gt;
* Write constant values &amp;lt;code&amp;gt;move r? (r?|num)&amp;lt;/code&amp;gt;: Example: &amp;lt;code&amp;gt;move r0 2&amp;lt;/code&amp;gt; sets r0 to the number 2.&lt;br /&gt;
* Calculate: Calculations are done to- and from these registers, like &amp;lt;code&amp;gt;add r? a(r?|num) b(r?|num)&amp;lt;/code&amp;gt;. Example: &amp;lt;code&amp;gt;add r1 r0 3&amp;lt;/code&amp;gt; adds 3 to r0, and writes to r1.&lt;br /&gt;
&lt;br /&gt;
Note, for any kind of if statements or loop behaviours, knowing about labels, branching, and jumps is essential knowledge. See below.&lt;br /&gt;
&lt;br /&gt;
=== IO to &#039;&#039;&#039;Device registers&#039;&#039;&#039; ===&lt;br /&gt;
Acronym &#039;&#039;&#039;d?&#039;&#039;&#039; stands for device, where ? is a number corresponding to the screw device selector on the socket.&lt;br /&gt;
You can also read/write to the device where the IC is planted in using device &#039;&#039;&#039;db&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Generally, there are up to 6 devices which can be set using the screwdriver &#039;&#039;&#039;d0&#039;&#039;&#039; to &#039;&#039;&#039;d5&#039;&#039;&#039;. A special device register &#039;&#039;&#039;db&#039;&#039;&#039; is the device wherever the IC is mounted upon. Very convenient for atmospheric devices where no separate IC socket is required.&lt;br /&gt;
&lt;br /&gt;
Note, the IC is completely unaware where d? is actually connected to. So if you get a logicType error, check d? number, or check if the screw has been set opn the socket. An alias is only convenient to convey what is expected to be set on the d? screw, it does not actually set or program the screq.&lt;br /&gt;
&lt;br /&gt;
* Read from device (load) &amp;lt;code&amp;gt;l r? d? logicType&amp;lt;/code&amp;gt;: Reads logicType, like Pressure from a [[Sensors|gas sensor]], from device d? to register r?. Values can be read from connected devices and put into the register using the &#039;&#039;&#039;l&#039;&#039;&#039; (load) command. For example, if you want to load the state of a door. &amp;lt;br&amp;gt; Example: &amp;lt;code&amp;gt;l r0 Door Open&amp;lt;/code&amp;gt; reads the &#039;Open&#039; field of an object named &#039;Door&#039;, that would be connected to the IC housing of the chip.&lt;br /&gt;
* Write to a device (set) &amp;lt;code&amp;gt;s d? logicType r?&amp;lt;/code&amp;gt;: Write a value from a register back to a device using the command &amp;lt;code&amp;gt;s d? logicType r?&amp;lt;/code&amp;gt;. For example, if d0 is set to a door using the screwdriver, &amp;lt;code&amp;gt;s d0 Open 0&amp;lt;/code&amp;gt; sets the &#039;Open&#039; status of the d0 (a door) to 0, effectively closing the door.&lt;br /&gt;
&lt;br /&gt;
=== batch IO to - &#039;&#039;&#039;Device registers&#039;&#039;&#039; ===&lt;br /&gt;
&#039;&#039;&#039;Batch writing&#039;&#039;&#039; needs to be done to a specific &#039;&#039;&#039;deviceHash&#039;&#039;&#039; instead of d?. Is unique per device type, which you can find in the [[Stationpedia]] entries.&lt;br /&gt;
* &amp;lt;code&amp;gt;lb r? deviceHash logicType batchMode&amp;lt;/code&amp;gt; &lt;br /&gt;
* &amp;lt;code&amp;gt;sb deviceHash logicType r?&amp;lt;/code&amp;gt;&lt;br /&gt;
Additionally, using the following batch commands, a &#039;&#039;&#039;nameHash&#039;&#039;&#039; can be provided to only modify devices with a certain name.&lt;br /&gt;
* &amp;lt;code&amp;gt;lbn r? deviceHash nameHash logicType batchMode &amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;sbn deviceHash nameHash logicType r?&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;batchMode&#039;&#039;&#039; is a parameter equal to 0, 1, 2, or 3. These are also defined as the constants &#039;&#039;&#039;Average&#039;&#039;&#039;, &#039;&#039;&#039;Sum&#039;&#039;&#039;, &#039;&#039;&#039;Minimum&#039;&#039;&#039;, and &#039;&#039;&#039;Maximum&#039;&#039;&#039; respectively. The word or number can be used.&lt;br /&gt;
&lt;br /&gt;
Combining one of these functions with the &amp;lt;code&amp;gt;HASH()&amp;lt;/code&amp;gt; function can be advantageous:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;lbn r0 HASH(&amp;quot;StructureGasSensor&amp;quot;) HASH(&amp;quot;Sensor 1&amp;quot;) Temperature Average&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This code will load the average temperature of all gas sensors on the network named &amp;quot;Sensor 1&amp;quot; onto register &#039;&#039;&#039;r0&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are some examples demonstrating all three operations:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;move r0 10&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Sets register &#039;&#039;&#039;r0&#039;&#039;&#039; to the value 10&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;move r0 r1&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Copies the value of register &#039;&#039;&#039;r1&#039;&#039;&#039; to register &#039;&#039;&#039;r0&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;l r0 d0 Temperature&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Reads the Temperature parameter from device &#039;&#039;&#039;d0&#039;&#039;&#039; and places the value in register &#039;&#039;&#039;r0&#039;&#039;&#039;.&lt;br /&gt;
Note: not all devices have a Temperature parameter, check the in-game stationpedia.&lt;br /&gt;
&lt;br /&gt;
To set a device specific value (like &#039;&#039;&#039;On&#039;&#039;&#039;), you can write into this value.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;s d0 On r0&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Writes the value from register &#039;&#039;&#039;r0&#039;&#039;&#039; out to &#039;&#039;&#039;On&#039;&#039;&#039; parameter of device &#039;&#039;&#039;d0&#039;&#039;&#039;. In this example the device will be turned On, if valve of register r0 equals 1, otherwise (register r0 equals 0) it will turned off. See section [[MIPS#Device_Variables|Device Variables]].&lt;br /&gt;
&lt;br /&gt;
It&#039;s recommended to use labels (like: &#039;&#039;someVariable&#039;&#039;) instead of a direct reference to the register. See &#039;&#039;&#039;alias&#039;&#039;&#039; in section [[MIPS#Instructions|Instructions]].&lt;br /&gt;
&lt;br /&gt;
=== Special registers ===&lt;br /&gt;
There are two more registers. One called &#039;&#039;&#039;ra&#039;&#039;&#039; (return address) and one called &#039;&#039;&#039;sp&#039;&#039;&#039; (stack pointer). The &#039;&#039;&#039;ra&#039;&#039;&#039; is used by certain jump and branching instructions (those ending with &#039;&#039;&#039;-al&#039;&#039;&#039;) to remember which line in the script it should return to. The &#039;&#039;&#039;sp&#039;&#039;&#039; tracks the next index within the stack (a memory that can store up to 512 values) to be pushed (written) to or popped (read) from. Neither &#039;&#039;&#039;ra&#039;&#039;&#039; or &#039;&#039;&#039;sp&#039;&#039;&#039; is protected, their values can be changed by instructions like any other register.&lt;br /&gt;
&lt;br /&gt;
==Stack Memory==&lt;br /&gt;
;push r?: adds the value of register &#039;&#039;&#039;r?&#039;&#039;&#039; to the stack memory at index &#039;&#039;&#039;sp&#039;&#039;&#039; and increments the &#039;&#039;&#039;sp&#039;&#039;&#039; by 1.&lt;br /&gt;
;pop r?: loads the value in the stack memory at index &amp;lt;code&amp;gt;sp-1&amp;lt;/code&amp;gt; into register &#039;&#039;&#039;r?&#039;&#039;&#039; and decrements the &#039;&#039;&#039;sp&#039;&#039;&#039; by 1.&lt;br /&gt;
;peek r?: loads the value in the stack memory at index &amp;lt;code&amp;gt;sp-1&amp;lt;/code&amp;gt; into register &#039;&#039;&#039;r?&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
As mentioned previously, &#039;&#039;&#039;sp&#039;&#039;&#039; can be both written to and read from any time. When reading (&#039;&#039;&#039;peek&#039;&#039;&#039; or &#039;&#039;&#039;pop&#039;&#039;&#039;), &#039;&#039;&#039;sp&#039;&#039;&#039; must be between 1 and 512, inclusive. While writing (&#039;&#039;&#039;push&#039;&#039;&#039;), &#039;&#039;&#039;sp&#039;&#039;&#039; must be between 0 and 511, inclusive.&lt;br /&gt;
&lt;br /&gt;
Stack memory is persistent on logic chips. This means that if you have a logic chip and push values to the stack, the code that pushes those values can be removed and the stack will retain those values.&lt;br /&gt;
&lt;br /&gt;
Note that this does not carry over to any other logic chips which receive the program of the original; They will need to have their stack memories programmed individually.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Stack Traversing&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Traversing the stack can be done similarly to how an array would be traversed in some other languages:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;nowiki /&amp;gt;#this will traverse indices {min value} through {max value} - 1&lt;br /&gt;
&lt;br /&gt;
move sp {min value}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
loop:&lt;br /&gt;
&lt;br /&gt;
add sp sp 1&lt;br /&gt;
&lt;br /&gt;
peek r0&lt;br /&gt;
&amp;lt;nowiki /&amp;gt;#do something here with your stack values (loaded into r0)&lt;br /&gt;
&lt;br /&gt;
blt sp {max value} loop&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki /&amp;gt;#continue on&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can use the pop function&#039;s decrementing to make a more efficient loop:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
move sp {max value}&lt;br /&gt;
&lt;br /&gt;
add sp sp 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
loop:&lt;br /&gt;
&lt;br /&gt;
pop r0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki /&amp;gt;#do something here with your stack values (loaded into r0)&lt;br /&gt;
&lt;br /&gt;
bgt sp {min value} loop&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki /&amp;gt;#continue on&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Device Ports==&lt;br /&gt;
ICs can interact with up to 6 other devices via d0 - d5, as well as the device it&#039;s attached to via db. To change or set a device, use a screwdriver and adjust the device in the IC housing. You can read or set any of the device&#039;s properties, so it is possible to do things like read the pressure or oxygen content of a room on the same Device port. &lt;br /&gt;
&lt;br /&gt;
Additionally, is possible to set other IC housings as devices, allowing you to create programs that run across multiple ICs together. For example, an Gas Mixing IC could check the &#039;&#039;&#039; Setting&#039;&#039;&#039;  field of a Atmosphere Sensor IC and act based on the value of the sensor chip.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;l&#039;&#039;&#039; (load) or &#039;&#039;&#039;s&#039;&#039;&#039; (set) instructions you have to read or set these values to your device. Examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;l r0 d0 Temperature&amp;lt;/code&amp;gt; #Reads the &#039;&#039;&#039;Temperature&#039;&#039;&#039; from an atmosphere sensor at device port &#039;&#039;&#039;d0&#039;&#039;&#039; into register &#039;&#039;&#039;r0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;s d1 Setting r0 &amp;lt;/code&amp;gt; # Writes the value of the register &#039;&#039;&#039;r0&#039;&#039;&#039; to the device on port &#039;&#039;&#039;d1&#039;&#039;&#039; into the variable &#039;&#039;&#039;Setting&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Labels==&lt;br /&gt;
Labels are used to make it easier to jump between lines in the script. The label will have a numerical value that is the same as its line number. Even though it&#039;s possible to use a labels value for calculations, doing so is a bad idea since any changes to the code can change the line numbers of the labels.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;main:&amp;lt;/code&amp;gt; # define a jump mark with label &#039;&#039;&#039;main&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;j main&amp;lt;/code&amp;gt; # jumps back to &#039;&#039;&#039;main&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Constants==&lt;br /&gt;
Instead of using a register to store a fixed value, a constant can be made. Using this name will refer to the assigned value. With the help of Constants you can save register places.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;define pi 3.14159&amp;lt;/code&amp;gt; # defines a Constant with name &#039;&#039;&#039;pi&#039;&#039;&#039; and set it&#039;s value to 3.14159&lt;br /&gt;
&lt;br /&gt;
You can use these constants like any other variables (see: alias in section [[MIPS#Instructions|Instructions]]). Example:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;move r0 pi&amp;lt;/code&amp;gt; # set the value of register &#039;&#039;&#039;r0&#039;&#039;&#039; to the value of constant named &#039;&#039;&#039;pi&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Indirect referencing==&lt;br /&gt;
This is a way of accessing a register by using another register as a pointer. Adding an additional r in front of the register turns on this behaviour. The value stored in the register being used as the pointer must be between 0 to 15, this will then point to a register from r0 to r15, higher or lower values will cause an error.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;move r0 5&amp;lt;/code&amp;gt; stores the value 5 in r0&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;move rr0 10&amp;lt;/code&amp;gt; is now the same as &amp;lt;code&amp;gt;move r5 10&amp;lt;/code&amp;gt; since r0 has the value 5, rr0 points at the register r5&lt;br /&gt;
&lt;br /&gt;
Additional r&#039;s can be added to do indirect referencing multiple times in a row.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;move r1 2&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;move r2 3&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;move rrr1 4&amp;lt;/code&amp;gt; is now the same as &amp;lt;code&amp;gt;move r3 4&amp;lt;/code&amp;gt; since r1 points at r2 which points at r3&lt;br /&gt;
&lt;br /&gt;
This also works with devices&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;move r0 2&amp;lt;/code&amp;gt; stores the value 2 in r0&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;s dr0 On 1&amp;lt;/code&amp;gt; is now the same as &amp;lt;code&amp;gt;s d2 On 1&amp;lt;/code&amp;gt;, r0 has the value 2 so dr0 points at d2&lt;br /&gt;
&lt;br /&gt;
==Network Referencing==&lt;br /&gt;
&lt;br /&gt;
You can load and store to a device&#039;s cable network via a provided connection reference. Connections for each supported device are listed in the stationpedia. All &#039;connections&#039; a device can make are a connection (pipe, chute, cable). &lt;br /&gt;
&lt;br /&gt;
There are 8 channels (Channel0 to Channel7) on a cable network. They are however volatile, in that they might be destroyed and/or replaced at any time. All these channels default to NaN. Strictly speaking, they default to what we would call &amp;quot;quiet NaN&amp;quot;, in that its not an error it simply means its not a number yet. Recommend you use these channels for reading and writing between networks, rather than as a data store. This effectively means an IC can read all the networks for all devices to connected to it, so not just their own local network, but any networks any device they can reference is connected to.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;l r0 d0:0 Channel0&amp;lt;/code&amp;gt; d0 is device zero, and the :0 refers to that device&#039;s 0 connection&lt;br /&gt;
&lt;br /&gt;
For example: on an IC Housing, the 0 connection is the data port and 1 is power, so you could write out r0 to Channel0 of the power network of the Housing using &amp;lt;code&amp;gt;s db:1 Channel0 r0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Comments==&lt;br /&gt;
Comments can be placed using a &#039;&#039;&#039;#&#039;&#039;&#039; symbol. All comments are ignored by the game when it reads commands. Below is an example of valid code with two comments.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; alias MyAlias r0 # Text after the hash tag will be ignored to the end of the line. &amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt; # You can also write comments on their own lines, like this. &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Debugging advices==&lt;br /&gt;
The value stored in a register or variable can easily be displayed by writing it to the Setting parameter of the IC housing. This has no side effects. To see the value, just stand close to the IC housing and look directly at the housing.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;s db Setting r0&amp;lt;/code&amp;gt;. # sets/writes the value of register &#039;&#039;&#039;r0&#039;&#039;&#039; into the parameter &#039;&#039;&#039;Setting&#039;&#039;&#039; of the IC Housing(&#039;&#039;&#039;db&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
To check if a certain block of code is executed, use the above trick but with a random number that you choose, like the line number.&amp;lt;br&amp;gt; This example will display the number 137 on the IC housing.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;s db Setting 137&amp;lt;/code&amp;gt;  # sets/writes the number 137 into the parameter &#039;&#039;&#039;Setting&#039;&#039;&#039; of the IC Housing(&#039;&#039;&#039;db&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
Always use unique names for labels. When a label is named after a MIPS keyword like &amp;quot;Temperature:&amp;quot; or &amp;quot;Setting:&amp;quot; the original meaning of the keyword is overwritten, so when an instruction tries to use it an error will occur.&lt;br /&gt;
&lt;br /&gt;
A [[Cartridge#Configuration|configuration cartridge]] installed in a [[Handheld_Tablet|tablet]]  can be used to see all available values and configuration parameter for all devices you focus on.&lt;br /&gt;
&lt;br /&gt;
==Learning MIPS==&lt;br /&gt;
MIPS can be difficult to get started with. So here is a list of instructions that are useful for beginners. These can be used to write many different scripts.&lt;br /&gt;
&lt;br /&gt;
General:&lt;br /&gt;
* &amp;lt;code&amp;gt;alias&amp;lt;/code&amp;gt; make the script easier to read by assigning a name to a register or device, example: &amp;lt;code&amp;gt;alias rTemperature r15&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;label:&amp;lt;/code&amp;gt; where &amp;quot;label&amp;quot; can be replaced with almost any word, jump and branch instructions can use these in place of line numbers, example: &amp;lt;code&amp;gt;start:&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;yield&amp;lt;/code&amp;gt; pause for 1-tick and then resume, if not used the script will automatically pause for 1-tick after 128 lines&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Jumps:&lt;br /&gt;
*&amp;lt;code&amp;gt;j someLabelName&amp;lt;/code&amp;gt; jump to line with &#039;&#039;&#039;someLabelName&#039;&#039;&#039;&lt;br /&gt;
*&amp;lt;code&amp;gt;jal someLabelName&amp;lt;/code&amp;gt; stores the next line number into the register ra (return address) and then jump to &#039;&#039;&#039;someLabelName&#039;&#039;&#039;&lt;br /&gt;
*&amp;lt;code&amp;gt;j ra&amp;lt;/code&amp;gt; jump to register ra (return address)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Branching (jump-if):&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;beq a(r?|num) b(r?|num) c(r?|num)&amp;lt;/code&amp;gt; if &#039;&#039;&#039;a&#039;&#039;&#039; is equal to &#039;&#039;&#039;b&#039;&#039;&#039; goto &#039;&#039;&#039;c&#039;&#039;&#039;  (label or linenumber) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;bne a(r?|num) b(r?|num) c(r?|num)&amp;lt;/code&amp;gt; if  &#039;&#039;&#039;a&#039;&#039;&#039; not-equal &#039;&#039;&#039;b&#039;&#039;&#039; goto  &#039;&#039;&#039;c&#039;&#039;&#039; (label or linenumber) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;bgt a(r?|num) b(r?|num) c(r?|num)&amp;lt;/code&amp;gt; if  &#039;&#039;&#039;a&#039;&#039;&#039; greater than &#039;&#039;&#039;b&#039;&#039;&#039; goto   &#039;&#039;&#039;c&#039;&#039;&#039; (label or linenumber) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;blt a(r?|num) b(r?|num) c(r?|num)&amp;lt;/code&amp;gt; if  &#039;&#039;&#039;a&#039;&#039;&#039; less than &#039;&#039;&#039;b&#039;&#039;&#039; goto &#039;&#039;&#039;c&#039;&#039;&#039; (label or linenumber) &amp;lt;br&amp;gt;&lt;br /&gt;
The suffix -al can be added to each of these (example: beqal) to save the &#039;&#039;&#039;next&#039;&#039;&#039; line number into the &amp;quot;return address&amp;quot; register. this is called using &amp;lt;code&amp;gt;j ra&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Device interactions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
l (load)&lt;br /&gt;
lb (load batch, requires one of the following: 0(Average) / 1(Sum) / 2(Minimum) / 3(Maximum))&lt;br /&gt;
ls (load slot)&lt;br /&gt;
s (store)&lt;br /&gt;
sb (store batch)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Logic and Math:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
seqz (common NOT-gate: turns 0 into 1, and all other values into 0)&lt;br /&gt;
move&lt;br /&gt;
add (addition)&lt;br /&gt;
sub (subtraction)&lt;br /&gt;
mul (multiplication)&lt;br /&gt;
div (division)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Common device variables:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
On (1 is on, 0 is off)&lt;br /&gt;
Open (1 is open, 0 is closed)&lt;br /&gt;
Setting (meaning varies between devices, example: a LED display(console) will show this value)&lt;br /&gt;
Activate (1 usually means running, example: a Daylight sensor is 1 when the sun shines on it)&lt;br /&gt;
Temperature (in Kelvin, Celsius - 273.15)&lt;br /&gt;
Pressure (in kPa)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Notes:&lt;br /&gt;
&amp;lt;br&amp;gt;-All instructions and variables can be seen in-game in the MIPS editor window by clicking the &amp;quot;f&amp;quot;, &amp;quot;x&amp;quot; and &amp;quot;s(x)&amp;quot; buttons on the top right.&lt;br /&gt;
&amp;lt;br&amp;gt;-The stationpedia is the best source to see which variables are available to each device.&lt;br /&gt;
&amp;lt;br&amp;gt;-Most scripts are loops, they end with a jump instruction that leads back up to the start. Otherwise they will just run once and then stop.&lt;br /&gt;
&lt;br /&gt;
Two practice scripts:&lt;br /&gt;
&amp;lt;br&amp;gt;Automatic Night Light: Load &amp;quot;Activate&amp;quot; from a Daylight sensor, flip the value with a NOT-gate, store the value to the &amp;quot;On&amp;quot; variable of one or more lights.&lt;br /&gt;
&amp;lt;br&amp;gt;Automatic Wall Cooler: Read &amp;quot;Temperature&amp;quot; from a Gas Sensor. Branch if the value is greater than X, turn on the cooler. Branch if the value is less than Y, turn off the cooler. (Wall coolers need a minimum of 12.5 kPa pressure in the connected pipe)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=Instructions=&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;alias&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;alias&lt;br /&gt;
:alias str r? d? # labels register or device reference with name.  When alias is applied to a device, it will affect what shows on the screws in the IC base.  (housing)&lt;br /&gt;
&amp;lt;code&amp;gt;alias vTemperature r0&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;alias dAutoHydro1 d0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;move&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;move    &lt;br /&gt;
:d s     # stores the value of s in d&lt;br /&gt;
&amp;lt;code&amp;gt;move r0 42 # Store 42 in register 0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;l&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;load&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;l (load)&lt;br /&gt;
:l r# d# parameter&lt;br /&gt;
Reads from a device (d#) and stores the value in a register (r#)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;l r0 d0 Setting&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Read from the device on d0 into register 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;l r1 d5 Pressure&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Read the pressure from a sensor&lt;br /&gt;
&lt;br /&gt;
This also works with aliases. For example:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
alias Sensor d0 &amp;lt;br/&amp;gt;&lt;br /&gt;
l r0 Sensor Temperature&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;ls&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;load slot&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;ls (load slot)&lt;br /&gt;
:ls r# d# slotNum parameter&lt;br /&gt;
Reads from a slot (slotNum) of a device (d#)  and stores the value in a register (r#)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ls r0 d0 2 Occupied&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Read from the second slot of device on d0, stores 1 in r0 if it&#039;s occupied, 0 otherwise.&lt;br /&gt;
&lt;br /&gt;
And here is the code to read the charge of an AIMeE:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
alias robot d0 &amp;lt;br/&amp;gt;&lt;br /&gt;
alias charge r0 &amp;lt;br/&amp;gt;&lt;br /&gt;
ls charge robot 0 Charge &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;s&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;set&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;s (set)&lt;br /&gt;
:s d# parameter r#&lt;br /&gt;
Writes a setting to a device. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;s d0 Setting r0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;add&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;add     &lt;br /&gt;
:d s t   # calculates s + t and stores the result in d&lt;br /&gt;
&amp;lt;code&amp;gt;add r0 r1 1 # add 1 to r1 and store the result as r0&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;add r0 r0 1 # increment r0 by one&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;sub&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;sub     &lt;br /&gt;
:d s t   # calculates s - t and stores the result in d&lt;br /&gt;
&amp;lt;div id=&amp;quot;mul&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;mul     &lt;br /&gt;
:d s t   # calculates s * t and stores the result in d&lt;br /&gt;
&amp;lt;div id=&amp;quot;div&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;div     &lt;br /&gt;
:d s t   # calculates s / t and stores the result in d&lt;br /&gt;
&amp;lt;div id=&amp;quot;mod&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;mod     &lt;br /&gt;
:d s t   &lt;br /&gt;
::# calculates s mod t and stores the result in d. Note this&lt;br /&gt;
::# doesn&#039;t behave like the % operator - the result will be &lt;br /&gt;
::# positive even if the either of the operands are negative&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;slt&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;slt     &lt;br /&gt;
:d s t   # stores 1 in d if s &amp;lt; t, 0 otherwise&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;sqrt&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;sqrt    &lt;br /&gt;
:d s     # calculates sqrt(s) and stores the result in d&lt;br /&gt;
&amp;lt;div id=&amp;quot;round&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;round   &lt;br /&gt;
:d s     # finds the rounded value of s and stores the result in d&lt;br /&gt;
&amp;lt;div id=&amp;quot;trunc&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;trunc   &lt;br /&gt;
:d s     # finds the truncated value of s and stores the result in d&lt;br /&gt;
&amp;lt;div id=&amp;quot;ceil&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;ceil   &lt;br /&gt;
: d s     # calculates the ceiling of s and stores the result in d&lt;br /&gt;
&amp;lt;div id=&amp;quot;floor&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;floor  &lt;br /&gt;
: d s     # calculates the floor of s and stores the result in d&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;max&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;max    &lt;br /&gt;
: d s t   # calculates the maximum of s and t and stores the result in d&lt;br /&gt;
&amp;lt;div id=&amp;quot;min&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;min    &lt;br /&gt;
: d s t   # calculates the minimum of s and t and stores the result in d&lt;br /&gt;
&amp;lt;div id=&amp;quot;abs&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;abs    &lt;br /&gt;
: d s     # calculates the absolute value of s and stores the result in d&lt;br /&gt;
&amp;lt;div id=&amp;quot;log&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;log    &lt;br /&gt;
: d s     # calculates the natural logarithm of s and stores the result&lt;br /&gt;
::# in d&lt;br /&gt;
&amp;lt;div id=&amp;quot;exp&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;exp    &lt;br /&gt;
: d s     # calculates the exponential of s and stores the result in d&lt;br /&gt;
&amp;lt;div id=&amp;quot;rand&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;rand   &lt;br /&gt;
: d       # selects a random number uniformly at random between 0 and 1&lt;br /&gt;
::# inclusive and stores the result in d&lt;br /&gt;
&lt;br /&gt;
::# boolean arithmetic uses the C convention that 0 is false and any non-zero&lt;br /&gt;
::# value is true.&lt;br /&gt;
&amp;lt;div id=&amp;quot;and&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;and    &lt;br /&gt;
: d s t   # stores 1 in d if both s and t have non-zero values,&lt;br /&gt;
::# 0 otherwise&lt;br /&gt;
&amp;lt;div id=&amp;quot;or&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;or     &lt;br /&gt;
: d s t   # stores 1 in d if either s or t have non-zero values,&lt;br /&gt;
::# 0 otherwise&lt;br /&gt;
&amp;lt;div id=&amp;quot;xor&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;xor    &lt;br /&gt;
: d s t   # stores 1 in d if exactly one of s and t are non-zero,&lt;br /&gt;
::# 0 otherwise&lt;br /&gt;
&amp;lt;div id=&amp;quot;nor&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;nor &lt;br /&gt;
:    d s t   # stores 1 in d if both s and t equal zero, 0 otherwise&lt;br /&gt;
::# Lines are numbered starting at zero&lt;br /&gt;
&amp;lt;div id=&amp;quot;j&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;j&lt;br /&gt;
:             a # jumps to line a.&lt;br /&gt;
&amp;lt;div id=&amp;quot;bltz&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;bltz&lt;br /&gt;
:      s   a # jumps to line a if s &amp;lt;  0&lt;br /&gt;
&amp;lt;div id=&amp;quot;blez&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;blez &lt;br /&gt;
:     s   a # jumps to line a if s &amp;lt;= 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;bgez&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;bgez &lt;br /&gt;
:     s   a # jumps to line a if s &amp;gt;= 0&lt;br /&gt;
&amp;lt;div id=&amp;quot;bgtz&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;bgtz&lt;br /&gt;
:      s   a # jumps to line a if s &amp;gt;  0&lt;br /&gt;
&amp;lt;div id=&amp;quot;beq&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;beq &lt;br /&gt;
:      s t a # jumps to line a if s == t&lt;br /&gt;
&amp;lt;div id=&amp;quot;bne&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;bne &lt;br /&gt;
:      s t a # jumps to line a if s != t&lt;br /&gt;
&amp;lt;div id=&amp;quot;bdseal&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;bdseal&lt;br /&gt;
:    d? a(r?|num) # Jump execution to line a and store current line number if device d? is set.&lt;br /&gt;
&amp;lt;code&amp;gt;bdseal d0 32 #Store line number and jump to line 32 if d0 is assigned.&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;bdseal dThisVictim HarvestCrop #Store line in ra and jump to sub HarvestCrop if device dThisVictim is assigned.&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;yield&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;yield           &lt;br /&gt;
: 	# ceases code execution for this power tick&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;lb&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;lb&lt;br /&gt;
:      r? deviceHash logicType batchMode # Loads LogicType from all output network devices with the provided type hash using the provided batch mode. Average (0), Sum (1), Minimum (2), Maximum (3). Can use either the word, or the number. The result is stored into r?.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;sb&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;sb&lt;br /&gt;
:      deviceHash logicType r? # Stores the register value to LogicType on all output network devices with the provided type hash.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;lbn&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;lbn&lt;br /&gt;
:      r? deviceHash nameHash logicType batchMode # Loads LogicType from all output network devices with the provided type and name hashes using provided batch mode. Average(0), Sum (1), Minimum (2), Maximum (3). Can use either the word, or the number. The result is stored into r?.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;sbn&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;sbn&lt;br /&gt;
:      deviceHash nameHash logicType r? # Stores the register value to LogicType on all output network devices with the provided type and name hashes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;#&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
; #&lt;br /&gt;
:     # The following text will be ignored during compiling; use this to create comments.&lt;br /&gt;
&lt;br /&gt;
[https://www.cs.tufts.edu/comp/140/lectures/Day_3/mips_summary.pdf Other examples]&lt;br /&gt;
&lt;br /&gt;
== Conditional functions cheatsheet ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! suffix !! description !! branch to line !! branch and store return address !! relative jump to line !! set register&lt;br /&gt;
|-&lt;br /&gt;
| prefix: ||  || b- || b-al || br- || s-&lt;br /&gt;
|-&lt;br /&gt;
|  || unconditional || j    || jal    || jr    || &lt;br /&gt;
|-&lt;br /&gt;
| -eq  || if a == b || beq  || beqal  || breq  || seq&lt;br /&gt;
|-&lt;br /&gt;
| -eqz || if a == 0 || beqz || beqzal || breqz || seqz&lt;br /&gt;
|-&lt;br /&gt;
| -ge  || if a &amp;gt;= b || bge  || bgeal  || brge  || sge&lt;br /&gt;
|-&lt;br /&gt;
| -gez || if a &amp;gt;= 0 || bgez || bgezal || brgez || sgez&lt;br /&gt;
|-&lt;br /&gt;
| -gt  || if a &amp;gt; b  || bgt  || bgtal  || brgt  || sgt&lt;br /&gt;
|-&lt;br /&gt;
| -gtz || if a &amp;gt; 0  || bgtz || bgtzal || brgtz || sgtz&lt;br /&gt;
|-&lt;br /&gt;
| -le  || if a &amp;lt;= b || ble  || bleal  || brle  || sle&lt;br /&gt;
|-&lt;br /&gt;
| -lez || if a &amp;lt;= 0 || blez || blezal || brlez || slez&lt;br /&gt;
|-&lt;br /&gt;
| -lt  || if a &amp;lt; b  || blt  || bltal  || brlt  || slt&lt;br /&gt;
|-&lt;br /&gt;
| -ltz || if a &amp;lt; 0  || bltz || bltzal || brltz || sltz&lt;br /&gt;
|-&lt;br /&gt;
| -ne  || if a != b || bne  || bneal  || brne  || sne&lt;br /&gt;
|-&lt;br /&gt;
| -nez || if a != 0 || bnez || bnezal || brnez || snez&lt;br /&gt;
|-&lt;br /&gt;
| -dns || if device d is not set          || bdns || bdnsal || brdns || sdns&lt;br /&gt;
|-&lt;br /&gt;
| -dse || if device d is set              || bdse || bdseal || brdse || sdse&lt;br /&gt;
|-&lt;br /&gt;
| -ap  || if a approximately equals b     || bap  || bapal  || brap  || sap&lt;br /&gt;
|-&lt;br /&gt;
| -apz || if a approximately equals 0     || bapz || bapzal || brapz || sapz&lt;br /&gt;
|-&lt;br /&gt;
| -na  || if a not approximately equals b || bna  || bnaal  || brna  || sna&lt;br /&gt;
|-&lt;br /&gt;
| -naz || if a not approximately equals 0 || bnaz || bnazal || brnaz || snaz&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
All &amp;lt;code&amp;gt;b-&amp;lt;/code&amp;gt; commands require target line as last argument, all &amp;lt;code&amp;gt;s-&amp;lt;/code&amp;gt; commands require register to store result as first argument. All &amp;lt;code&amp;gt;br-&amp;lt;/code&amp;gt; commands require number to jump relatively as last argument. e.g. &amp;lt;code&amp;gt;breq a b 3&amp;lt;/code&amp;gt; means if a=b then jump to 3 lines after.&lt;br /&gt;
&lt;br /&gt;
All approximate functions require additional argument denoting how close two numbers need to be considered equal. E.g.: &amp;lt;code&amp;gt;sap r0 100 101 0.01&amp;lt;/code&amp;gt; will consider 100 and 101 almost equal (not more than 1%=0.01 different) and will set r0 to 1. The exact formula is &amp;lt;code&amp;gt;if abs(a - b) &amp;lt;= max(c * max(abs(a), abs(b)), float.epsilon * 8)&amp;lt;/code&amp;gt; for &amp;lt;code&amp;gt;-ap&amp;lt;/code&amp;gt; and is similar for other approximate functions.&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Machine_epsilon&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039;&lt;br /&gt;
  FLT_EPSILON = 2^(−23) ≈ 1.19e−07;        &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;float (32 bit)&amp;lt;/span&amp;gt;&lt;br /&gt;
  DBL_EPSILON = 2^(−52) ≈ 2.20e−16;        &amp;lt;span style=&amp;quot;color:#4c9700;&amp;quot;&amp;gt;double (64 bit)&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt;if abs(100 - 101) &amp;lt;= max(0.01 * max(abs(100), abs(101)), float.epsilon * 8)&amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt;if abs(-1) &amp;lt;= max(0.01 * 101), float.epsilon * 8)&amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt;if 1 &amp;lt;= max(0.01 * 101, float.epsilon * 8)&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
  if 1 &amp;lt;= max(1.01, FLT_EPSILON * 8)&lt;br /&gt;
  if 1 &amp;lt;= max(1.01, DBL_EPSILON * 8)&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
  &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;if 1 &amp;lt;= max(1.01, 1.19e−07 * 8)&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;span style=&amp;quot;color:#4c9700;&amp;quot;&amp;gt;if 1 &amp;lt;= max(1.01, 2.20e−16 * 8)&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
  &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;if 1 &amp;lt;= max(1.01, 0.000000952)&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;span style=&amp;quot;color:#4c9700;&amp;quot;&amp;gt;if 1 &amp;lt;= max(1.01, 0.00000000000000176)&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
  &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;if 1 &amp;lt;= 1.01   TRUE   1&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;span style=&amp;quot;color:#4c9700;&amp;quot;&amp;gt;if 1 &amp;lt;= 1.01   TRUE   1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Device Variables==&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Activate&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Activate&lt;br /&gt;
:1 if device is activated (usually means running), otherwise 0&lt;br /&gt;
:&amp;lt;code&amp;gt;l r0 d0 Activate # sets r0 to 1 if on or 0 if off&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;AirRelease&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;AirRelease&lt;br /&gt;
&amp;lt;div id=&amp;quot;Charge&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Charge&lt;br /&gt;
:    The current charge the device has.&lt;br /&gt;
&amp;lt;div id=&amp;quot;CLearMemory&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;ClearMemory&lt;br /&gt;
:    When set to 1, clears the counter memory (e.g. ExportCount).  Will set itself back to 0 when triggered.&lt;br /&gt;
&amp;lt;div id=&amp;quot;Color&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Color&lt;br /&gt;
:    &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;▇▇▇&amp;lt;/span&amp;gt;&amp;amp;nbsp; 0 (or lower) = Blue&lt;br /&gt;
:    &amp;lt;span style=&amp;quot;color:grey;&amp;quot;&amp;gt;▇▇▇&amp;lt;/span&amp;gt;&amp;amp;nbsp;1 = Grey &lt;br /&gt;
:    &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;▇▇▇&amp;lt;/span&amp;gt;&amp;amp;nbsp;2 = Green &lt;br /&gt;
:    &amp;lt;span style=&amp;quot;color:orange;&amp;quot;&amp;gt;▇▇▇&amp;lt;/span&amp;gt;&amp;amp;nbsp;3 = Orange &lt;br /&gt;
:    &amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;▇▇▇&amp;lt;/span&amp;gt;&amp;amp;nbsp;4 = Red &lt;br /&gt;
:    &amp;lt;span style=&amp;quot;color:yellow;&amp;quot;&amp;gt;▇▇▇&amp;lt;/span&amp;gt;&amp;amp;nbsp;5 = Yellow &lt;br /&gt;
:    &amp;lt;span style=&amp;quot;color:white;&amp;quot;&amp;gt;▇▇▇&amp;lt;/span&amp;gt;&amp;amp;nbsp;6 = White &lt;br /&gt;
:    &amp;lt;span style=&amp;quot;color:black;&amp;quot;&amp;gt;▇▇▇&amp;lt;/span&amp;gt;&amp;amp;nbsp;7 = Black &lt;br /&gt;
:    &amp;lt;span style=&amp;quot;color:brown;&amp;quot;&amp;gt;▇▇▇&amp;lt;/span&amp;gt;&amp;amp;nbsp;8 = Brown &lt;br /&gt;
:    &amp;lt;span style=&amp;quot;color:khaki;&amp;quot;&amp;gt;▇▇▇&amp;lt;/span&amp;gt;&amp;amp;nbsp;9 = Khaki &lt;br /&gt;
:    &amp;lt;span style=&amp;quot;color:pink;&amp;quot;&amp;gt;▇▇▇&amp;lt;/span&amp;gt;&amp;amp;nbsp;10 = Pink &lt;br /&gt;
:    &amp;lt;span style=&amp;quot;color:purple;&amp;quot;&amp;gt;▇▇▇&amp;lt;/span&amp;gt;&amp;amp;nbsp;11 (or higher) = Purple &lt;br /&gt;
&amp;lt;div id=&amp;quot;CompletionRatio&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;CompletionRatio&lt;br /&gt;
&amp;lt;div id=&amp;quot;ElevatorLevel&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;ElevatorLevel&lt;br /&gt;
&amp;lt;div id=&amp;quot;ElevatorSpeed&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;ElevatorSpeed&lt;br /&gt;
&amp;lt;div id=&amp;quot;Error&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Error&lt;br /&gt;
:	1 if device is in error state, otherwise 0&lt;br /&gt;
&amp;lt;div id=&amp;quot;ExportCount&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;ExportCount&lt;br /&gt;
:    How many items exporfted since last ClearMemory.&lt;br /&gt;
&amp;lt;div id=&amp;quot;Filtration&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Filtration&lt;br /&gt;
:	The current state of the filtration system.  For example filtration = 1 for a Hardsuit when filtration is On.&lt;br /&gt;
&amp;lt;div id=&amp;quot;Harvest&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Harvest&lt;br /&gt;
:	Performs the harvesting action for any plant based machinery.&lt;br /&gt;
:  &amp;lt;code&amp;gt;s d0 Harvest 1 # Performs 1 harvest action on device d0&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;Horizontal&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Horizontal&lt;br /&gt;
&amp;lt;div id=&amp;quot;HorizontalRatio&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;HorizontalRatio&lt;br /&gt;
&amp;lt;div id=&amp;quot;Idle&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Idle&lt;br /&gt;
&amp;lt;div id=&amp;quot;ImportCount&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;ImportCount&lt;br /&gt;
&amp;lt;div id=&amp;quot;Lock&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Lock&lt;br /&gt;
&amp;lt;div id=&amp;quot;Maximum&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Maximum&lt;br /&gt;
&amp;lt;div id=&amp;quot;Mode&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Mode&lt;br /&gt;
&amp;lt;div id=&amp;quot;On&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;On&lt;br /&gt;
&amp;lt;div id=&amp;quot;Open&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Open&lt;br /&gt;
&amp;lt;div id=&amp;quot;Output&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Output&lt;br /&gt;
&amp;lt;div id=&amp;quot;Plant&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Plant&lt;br /&gt;
:    Performs the planting operation for any plant based machinery.&lt;br /&gt;
:  &amp;lt;code&amp;gt;s d0 Plant 1 # Plants one crop in device d0&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;PositionX&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;PositionX&lt;br /&gt;
&amp;lt;div id=&amp;quot;PositionY&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;PositionY&lt;br /&gt;
&amp;lt;div id=&amp;quot;PositionZ&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;PositionZ&lt;br /&gt;
&amp;lt;div id=&amp;quot;Power&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Power&lt;br /&gt;
&amp;lt;div id=&amp;quot;PowerActual&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;PowerActual&lt;br /&gt;
&amp;lt;div id=&amp;quot;PowerPotential&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;PowerPotential&lt;br /&gt;
&amp;lt;div id=&amp;quot;PowerRequired&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;PowerRequired&lt;br /&gt;
&amp;lt;div id=&amp;quot;Pressure&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Pressure&lt;br /&gt;
&amp;lt;div id=&amp;quot;PressureExternal&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;PressureExternal&lt;br /&gt;
&amp;lt;div id=&amp;quot;PressureInteral&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;PressureInteral&lt;br /&gt;
&amp;lt;div id=&amp;quot;PressureSetting&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;PressureSetting&lt;br /&gt;
&amp;lt;div id=&amp;quot;Quantity&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Quantity&lt;br /&gt;
:	Total quantity in the device.&lt;br /&gt;
&amp;lt;div id=&amp;quot;Ratio&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Ratio&lt;br /&gt;
:	Context specific value depending on device, 0 to 1 based ratio.&lt;br /&gt;
&amp;lt;div id=&amp;quot;RatioCarbonDioxide&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;RatioCarbonDioxide&lt;br /&gt;
&amp;lt;div id=&amp;quot;RatioNitrogen&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;RatioNitrogen&lt;br /&gt;
:	The ratio of nitrogen in device atmosphere.&lt;br /&gt;
&amp;lt;div id=&amp;quot;RatioOxygen&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;RatioOxygen&lt;br /&gt;
:	The ratio of oxygen in device atmosphere.&lt;br /&gt;
&amp;lt;div id=&amp;quot;RatioPollutant&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;RatioPollutant&lt;br /&gt;
:	The ratio of pollutant in device atmosphere.&lt;br /&gt;
&amp;lt;div id=&amp;quot;RatioVolatiles&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;RatioVolatiles&lt;br /&gt;
:	The ratio of volatiles in device atmosphere.&lt;br /&gt;
&amp;lt;div id=&amp;quot;RatioWater&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;RatioWater&lt;br /&gt;
:	The ratio of water in device atmosphere.&lt;br /&gt;
&amp;lt;div id=&amp;quot;Reagents&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Reagents&lt;br /&gt;
&amp;lt;div id=&amp;quot;RecipeHash&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;RecipeHash&lt;br /&gt;
&amp;lt;div id=&amp;quot;RequestHash&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;ReferenceId&lt;br /&gt;
:    Unique Identifier of a Device, this value is different for every device in a save.&lt;br /&gt;
&amp;lt;div id=&amp;quot;ReferenceId&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;RequestHash&lt;br /&gt;
&amp;lt;div id=&amp;quot;RequiredPower&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;RequiredPower&lt;br /&gt;
&amp;lt;div id=&amp;quot;Setting&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Setting&lt;br /&gt;
&amp;lt;div id=&amp;quot;SolarAngle&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;SolarAngle&lt;br /&gt;
:    Solar angle of the device.&lt;br /&gt;
:  &amp;lt;code&amp;gt;l r0 d0 SolarAngle # Sets r0 to the solar angle of d0.&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;Temperature&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Temperature&lt;br /&gt;
&amp;lt;div id=&amp;quot;TemperatureSettings&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;TemperatureSettings&lt;br /&gt;
&amp;lt;div id=&amp;quot;TotalMoles&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;TotalMoles&lt;br /&gt;
&amp;lt;div id=&amp;quot;VelocityMagnitude&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;VelocityMagnitude&lt;br /&gt;
&amp;lt;div id=&amp;quot;VelocityRelativeX&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;VelocityRelativeX&lt;br /&gt;
&amp;lt;div id=&amp;quot;VelocityRelativeY&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;VelocityRelativeY&lt;br /&gt;
&amp;lt;div id=&amp;quot;VelocityRelativeZ&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;VelocityRelativeZ&lt;br /&gt;
&amp;lt;div id=&amp;quot;Vertical&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Vertical&lt;br /&gt;
:	Vertical setting of the device.&lt;br /&gt;
&amp;lt;div id=&amp;quot;VerticalRatio&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;VerticalRatio&lt;br /&gt;
:	Ratio of vertical setting for device.&lt;br /&gt;
&amp;lt;div id=&amp;quot;Volume&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Volume&lt;br /&gt;
:	Returns the device atmosphere volume&lt;br /&gt;
&lt;br /&gt;
==Slot Variables==&lt;br /&gt;
In general (always?) slots are assigned as follows.&lt;br /&gt;
:Slot 0: Import&lt;br /&gt;
:Slot 1: Export&lt;br /&gt;
:Slot 2: Inside Machine&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Occupied&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Occupied&lt;br /&gt;
:&amp;lt;code&amp;gt;ls r0 d0 2 Occupied #Stores 1 in r0 if d0 has more seeds&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;ls vOccupied dThisVictim 2 Occupied #stores 1 in vOccupied if dThisVictim has more seeds&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;OccupantHash&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;OccupantHash&lt;br /&gt;
&amp;lt;div id=&amp;quot;Quantity&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Quantity&lt;br /&gt;
&amp;lt;div id=&amp;quot;Damage&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Damage&lt;br /&gt;
&amp;lt;div id=&amp;quot;Efficiency&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Efficiency&lt;br /&gt;
&amp;lt;div id=&amp;quot;Health&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Health&lt;br /&gt;
&amp;lt;div id=&amp;quot;Growth&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Growth&lt;br /&gt;
:&amp;lt;code&amp;gt;ls r0 d0 0 Growth # Store the numerical growth stage of d0 in r0&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;div id=&amp;quot;Pressure&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Pressure&lt;br /&gt;
&amp;lt;div id=&amp;quot;Temperature&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Temperature&lt;br /&gt;
&amp;lt;div id=&amp;quot;Charge&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Charge&lt;br /&gt;
&amp;lt;div id=&amp;quot;ChargeRatio&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;ChargeRatio&lt;br /&gt;
&amp;lt;div id=&amp;quot;Class&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Class&lt;br /&gt;
&amp;lt;div id=&amp;quot;PressureWaste&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;PressureWaste&lt;br /&gt;
&amp;lt;div id=&amp;quot;PressureAir&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;PressureAir&lt;br /&gt;
&amp;lt;div id=&amp;quot;MaxQuantity&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;MaxQuantity&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Mature&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Mature&lt;br /&gt;
:&amp;lt;code&amp;gt;ls r0 d0 0 Mature # Store 1 in r0 if d0 has a mature crop&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;ls vMature dThisVictim 0 Mature # Store 1 in vMature if dThisVictim has a mature crop&amp;lt;/code&amp;gt;&lt;br /&gt;
;ReferenceId&lt;br /&gt;
:    Unique Identifier of a Device, this value is different for every device in a save.&lt;br /&gt;
&amp;lt;div id=&amp;quot;ReferenceId&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=Examples=&lt;br /&gt;
Previous examples were obsolete due to game changes, or confusing, they have been moved into the Discussions section&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Harvie automation===&lt;br /&gt;
This script uses the batch instruction &amp;lt;code&amp;gt;sb ...&amp;lt;/code&amp;gt; to control all Harvie devices on the network. But only one Harvie and one Tray will be the &#039;&#039;master&#039;&#039; and have their values read, the rest of the Harvies will repeat exactly what this unit does. Some problems with this design is that different types of crops mature at different speeds, and if seeds were manually planted and the master unit recieved the first seed, the harvesting action will be performed too early on all the other plants since they are growing a few seconds slower.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; data-expandtext=&amp;quot;{{int:Expand, Automated Harvie Script}}&amp;quot; data-collapsetext=&amp;quot;{{int:Collapse, Automated Harvie Script}}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
alias dHarvie d0&lt;br /&gt;
alias dTray d1&lt;br /&gt;
&lt;br /&gt;
alias rHarvieHash r8&lt;br /&gt;
alias rTrayHash r9&lt;br /&gt;
l rHarvieHash dHarvie PrefabHash&lt;br /&gt;
l rTrayHash dTray PrefabHash&lt;br /&gt;
&lt;br /&gt;
main:&lt;br /&gt;
yield&lt;br /&gt;
 #read plant data from the Tray&lt;br /&gt;
ls r0 dTray 0 Mature&lt;br /&gt;
 #harvestable plants return 1, young plants return 0&lt;br /&gt;
 #nothing planted returns -1&lt;br /&gt;
beq r0 -1 plantCrop&lt;br /&gt;
beq r0 1 harvestCrop&lt;br /&gt;
ls r0 dTray 0 Seeding&lt;br /&gt;
 #seeds available returns 1, all seeds picked returns 0&lt;br /&gt;
 #plants too young or old for seeds returns -1&lt;br /&gt;
beq r0 1 harvestCrop&lt;br /&gt;
j main&lt;br /&gt;
&lt;br /&gt;
plantCrop:&lt;br /&gt;
 #stop the planting if no seeds available&lt;br /&gt;
 #otherwise it will plant nothing repeatedly&lt;br /&gt;
ls r0 dHarvie 0 Occupied&lt;br /&gt;
beq r0 0 main&lt;br /&gt;
sb rHarvieHash Plant 1&lt;br /&gt;
j main&lt;br /&gt;
&lt;br /&gt;
harvestCrop:&lt;br /&gt;
sb rHarvieHash Harvest 1&lt;br /&gt;
j main&lt;br /&gt;
&lt;br /&gt;
### End Script ###&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
===Solar Panel 2-axis tracking===&lt;br /&gt;
This script was copied from the [[Solar_Logic_Circuits_Guide]] (code provided by bti, comments and readability changes by Fudd79)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; data-expandtext=&amp;quot;{{int:Expand, Solar Panel 2-axis tracking}}&amp;quot; data-collapsetext=&amp;quot;{{int:Collapse, Solar Panel 2-axis tracking}}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# This code assumes the following:&lt;br /&gt;
# Daylight Sensor data-port points north&lt;br /&gt;
# Solar Panel data-port points east&lt;br /&gt;
&lt;br /&gt;
alias sensor d0&lt;br /&gt;
alias v_angle r0&lt;br /&gt;
alias h_angle r1&lt;br /&gt;
alias sun_up r2&lt;br /&gt;
&lt;br /&gt;
define solar_panel_hash -539224550&lt;br /&gt;
define heavy_solar_panel_hash -1545574413&lt;br /&gt;
&lt;br /&gt;
start:&lt;br /&gt;
# Check to see if sun is up&lt;br /&gt;
l sun_up sensor Activate&lt;br /&gt;
# Go to reset if it&#039;s not&lt;br /&gt;
beqz sun_up reset&lt;br /&gt;
&lt;br /&gt;
# Calculate vertical angle&lt;br /&gt;
l v_angle sensor Vertical&lt;br /&gt;
div v_angle v_angle 1.5&lt;br /&gt;
sub v_angle 50 v_angle&lt;br /&gt;
&lt;br /&gt;
# Write vertical angle to all solar panels&lt;br /&gt;
sb solar_panel_hash Vertical v_angle&lt;br /&gt;
sb heavy_solar_panel_hash Vertical v_angle&lt;br /&gt;
&lt;br /&gt;
# Obtain horizontal angle&lt;br /&gt;
l h_angle sensor Horizontal&lt;br /&gt;
&lt;br /&gt;
# Write horizontal angle to all solar panels&lt;br /&gt;
sb solar_panel_hash Horizontal h_angle&lt;br /&gt;
sb heavy_solar_panel_hash Horizontal h_angle&lt;br /&gt;
&lt;br /&gt;
# Go to start again&lt;br /&gt;
yield&lt;br /&gt;
j start&lt;br /&gt;
&lt;br /&gt;
reset:&lt;br /&gt;
# Park solar panels vertically facing sunrise&lt;br /&gt;
sb solar_panel_hash Vertical 0&lt;br /&gt;
sb heavy_solar_panel_hash Vertical 0&lt;br /&gt;
# Park solar panels horizontally facing sunrise&lt;br /&gt;
sb solar_panel_hash Horizontal -90&lt;br /&gt;
sb heavy_solar_panel_hash Horizontal -90&lt;br /&gt;
# Wait 10 seconds&lt;br /&gt;
sleep 10&lt;br /&gt;
# Go to start again&lt;br /&gt;
j start&lt;br /&gt;
&lt;br /&gt;
### End Script ###&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
===Example experiment: how many lines of code are executed each tick?===&lt;br /&gt;
To determine this, a script without &amp;lt;code&amp;gt;yield&amp;lt;/code&amp;gt; will be used. It should have as few lines as possible (so no labels are used, but a reset value at the top will be needed) and count the number of lines, the IC Housing will be used to display the result.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
move r0 1   #the first line has number 0&lt;br /&gt;
add r0 r0 3&lt;br /&gt;
s db Setting r0&lt;br /&gt;
j 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Result (the numbers appears every 0.5 seconds):&lt;br /&gt;
&amp;lt;br&amp;gt;127&lt;br /&gt;
&amp;lt;br&amp;gt;256 (+129)&lt;br /&gt;
&amp;lt;br&amp;gt;385 (+129)&lt;br /&gt;
&amp;lt;br&amp;gt;511 (+126)&lt;br /&gt;
&amp;lt;br&amp;gt;640 (+129)&lt;br /&gt;
&amp;lt;br&amp;gt;769 (+129)&lt;br /&gt;
&amp;lt;br&amp;gt;895 (+126)&lt;br /&gt;
&amp;lt;br&amp;gt;1024 (+129)&lt;br /&gt;
&amp;lt;br&amp;gt;1153 (+129)&lt;br /&gt;
&lt;br /&gt;
There is a repeating +129, +129, +126 sequence, a hint that the real value is 128. Which also happens to be the number of lines in a script, which makes sense. A variation of this experiment will show that empty rows are also counted towards this number.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=Links=&lt;br /&gt;
----&lt;br /&gt;
* [https://stationeering.com/tools/ic] Stationeering.com offers a programmable circuits simulator so you can develop your code without repeatedly dying in game!&lt;br /&gt;
* [http://www.easy68k.com/] EASy68K is a 68000 Structured Assembly Language IDE.&lt;br /&gt;
* [https://marketplace.visualstudio.com/items?itemName=Traineratwot.stationeers-ic10] syntax highlighting for IC10 MIPS for Visual Studio Code (updated Feb 10th 2022)&lt;br /&gt;
* [https://pastebin.com/6Uw1KSRN] syntax highlighting for IC10 MIPS for KDE kwrite/kate text editor&lt;br /&gt;
* [https://drive.google.com/file/d/1yEsJ-u94OkuMQ8K6fY7Ja1HNpLcAdjo_/view] syntax highlighting for IC10 MIPS for Notepad++&lt;br /&gt;
* [https://pastebin.com/3kmGy0NN] syntax highlighting for IC10 MIPS for Notepad++ (updated: 05/05/2021)&lt;br /&gt;
* [https://drive.google.com/file/d/1Xrv5U0ZI5jDcPv7yX7EAAxaGk5hKP0xO/view?usp=sharing] syntax highlighting for IC10 MIPS for Notepad++ (updated: 11/08/2022)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=Index=&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|+Functions &lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
*[[#abs|abs]]&lt;br /&gt;
*[[#add|add]]&lt;br /&gt;
*[[#alias|alias]]&lt;br /&gt;
*[[#and|and]]&lt;br /&gt;
*[[#beq|beq]]&lt;br /&gt;
*[[#bgez|bgez]]&lt;br /&gt;
*[[#bgtz|bgtz]]&lt;br /&gt;
*[[#blez|blez]]&lt;br /&gt;
*[[#bltz|bltz]]&lt;br /&gt;
*[[#bne|bne]]&lt;br /&gt;
*[[#breq|breq]]&lt;br /&gt;
*[[#brgez|brgez]]&lt;br /&gt;
*[[#brgtz|brgtz]]&lt;br /&gt;
*[[#brlez|brlez]]&lt;br /&gt;
*[[#brltz|brltz]]&lt;br /&gt;
*[[#brne|brne]]&lt;br /&gt;
*[[#ceil|cell]]&lt;br /&gt;
*[[#div|div]]&lt;br /&gt;
*[[#exp|exp]]&lt;br /&gt;
*[[#floor|floor]]&lt;br /&gt;
*[[#j|j]]&lt;br /&gt;
*[[#jr|jr]]&lt;br /&gt;
*[[#l|l]]&lt;br /&gt;
*[[#log|log]]&lt;br /&gt;
*[[#ls|ls]]&lt;br /&gt;
*[[#max|max]]&lt;br /&gt;
*[[#min|min]]&lt;br /&gt;
*[[#mod|mod]]&lt;br /&gt;
*[[#move|move]]&lt;br /&gt;
*[[#mul|mul]]&lt;br /&gt;
*[[#nor|nor]]&lt;br /&gt;
*[[#or|or]]&lt;br /&gt;
*[[#rand|rand]]&lt;br /&gt;
*[[#round|round]]&lt;br /&gt;
*[[#s|s]]&lt;br /&gt;
*[[#slt|slt]]&lt;br /&gt;
*[[#sqrt|sqrt]]&lt;br /&gt;
*[[#sub|sub]]&lt;br /&gt;
*[[#trunc|trunc]]&lt;br /&gt;
*[[#xor|xor]]xor&lt;br /&gt;
*[[#yield|yield]]&lt;br /&gt;
*[[##|#]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|+Device Variables &lt;br /&gt;
&amp;lt;div  class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
*[[#Activate|Activate]]&lt;br /&gt;
*[[#AirRelease|AirRelease]]&lt;br /&gt;
*[[#Charge|Charge]]&lt;br /&gt;
*[[#CLearMemory|CLearMemory]]&lt;br /&gt;
*[[#Color|Color]]&lt;br /&gt;
*[[#CompletionRatio|CompletionRatio]]&lt;br /&gt;
*[[#ElevatorLevel|ElevatorLevel]]&lt;br /&gt;
*[[#ElevatorSpeed|ElevatorSpeed]]&lt;br /&gt;
*[[#Error|Error]]&lt;br /&gt;
*[[#ExportCount|ExportCount]]&lt;br /&gt;
*[[#Filtration|Filtration]]&lt;br /&gt;
*[[#Harvest|Harvest]]&lt;br /&gt;
*[[#Horizontal|Horizontal]]&lt;br /&gt;
*[[#HorizontalRatio|HorizontalRatio]]&lt;br /&gt;
*[[#Idle|Idle]]&lt;br /&gt;
*[[#ImportCount|ImportCount]]&lt;br /&gt;
*[[#Lock|Lock]]&lt;br /&gt;
*[[#Maximum|Maximum]]&lt;br /&gt;
*[[#Mode|Mode]]&lt;br /&gt;
*[[#On|On]]&lt;br /&gt;
*[[#Open|Open]]&lt;br /&gt;
*[[#Output|Output]]&lt;br /&gt;
*[[#Plant|Plant]]&lt;br /&gt;
*[[#PositionX|PositionX]]&lt;br /&gt;
*[[#PositionY|PositionY]]&lt;br /&gt;
*[[#PositionZ|PositionZ]]&lt;br /&gt;
*[[#Power|Power]]&lt;br /&gt;
*[[#PowerActual|PowerActual]]&lt;br /&gt;
*[[#PowerPotential|PowerPotential]]&lt;br /&gt;
*[[#PowerRequired|PowerRequired]]&lt;br /&gt;
*[[#Pressure|Pressure]]&lt;br /&gt;
*[[#PressureExternal|PressureExternal]]&lt;br /&gt;
*[[#PressureInteral|PressureInteral]]&lt;br /&gt;
*[[#PressureSetting|PressureSetting]]&lt;br /&gt;
*[[#Quantity|Quantity]]&lt;br /&gt;
*[[#Ratio|Ratio]]&lt;br /&gt;
*[[#RatioCarbonDioxide|RatioCarbonDioxide]]&lt;br /&gt;
*[[#RatioNitrogen|RatioNitrogen]]&lt;br /&gt;
*[[#RatioOxygen|RatioOxygen]]&lt;br /&gt;
*[[#RatioPollutant|RatioPollutant]]&lt;br /&gt;
*[[#RatioVolatiles|RatioVolatiles]]&lt;br /&gt;
*[[#RatioWater|RatioWater]]&lt;br /&gt;
*[[#Reagents|Reagents]]&lt;br /&gt;
*[[#RecipeHash|RecipeHash]]&lt;br /&gt;
*[[#RequestHash|RequestHash]]&lt;br /&gt;
*[[#RequiredPower|RequiredPower]]&lt;br /&gt;
*[[#Setting|Setting]]&lt;br /&gt;
*[[#SolarAngle|SolarAngle]]&lt;br /&gt;
*[[#Temperature|Temperature]]&lt;br /&gt;
*[[#TemperatureSettings|TemperatureSettings]]&lt;br /&gt;
*[[#TotalMoles|TotalMoles]]&lt;br /&gt;
*[[#VelocityMagnitude|VelocityMagnitude]]&lt;br /&gt;
*[[#VelocityRelativeX|VelocityRelativeX]]&lt;br /&gt;
*[[#VelocityRelativeY|VelocityRelativeY]]&lt;br /&gt;
*[[#VelocityRelativeZ|VelocityRelativeZ]]&lt;br /&gt;
*[[#Vertical|Vertical]]&lt;br /&gt;
*[[#VerticalRatio|VerticalRatio]]&lt;br /&gt;
*[[#Volume|Volume]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|+Slot Variables &lt;br /&gt;
&amp;lt;div  class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
*[[#Occupied|Occupied]]&lt;br /&gt;
*[[#OccupantHash|OccupantHash]]&lt;br /&gt;
*[[#Quantity|Quantity]]&lt;br /&gt;
*[[#Damage|Damage]]&lt;br /&gt;
*[[#Efficiency|Efficiency]]&lt;br /&gt;
*[[#Health|Health]]&lt;br /&gt;
*[[#Growth|Growth]]&lt;br /&gt;
*[[#Pressure|Pressure]]&lt;br /&gt;
*[[#Temperature|Temperature]]&lt;br /&gt;
*[[#Charge|Charge]]&lt;br /&gt;
*[[#ChargeRatio|ChargeRatio]]&lt;br /&gt;
*[[#Class|Class]]&lt;br /&gt;
*[[#PressureWaste|PressureWaste]]&lt;br /&gt;
*[[#PressureAir|PressureAir]]&lt;br /&gt;
*[[#MaxQuantity|MaxQuantity]]&lt;br /&gt;
*[[#Mature|Mature]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Z0</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Transformer&amp;diff=19836</id>
		<title>Transformer</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Transformer&amp;diff=19836"/>
		<updated>2024-01-24T21:31:18Z</updated>

		<summary type="html">&lt;p&gt;Z0: /* Notes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Itembox&lt;br /&gt;
 | name        = Kit (Transformer)&lt;br /&gt;
 | image       =  [[File:{{#setmainimage:ItemKitTransformerSmall.png}}]]&lt;br /&gt;
 | stacks      = No&lt;br /&gt;
 | createdwith = [[Electronics Printer]], [[Fabricator]]&lt;br /&gt;
 | cost        = 10x [[Iron]], 1x [[Gold]] , 3x [[Copper]]&lt;br /&gt;
}}&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit Transformer (Large)&lt;br /&gt;
 | image       =  [[File:{{#setmainimage:ItemKitTransformer.png}}]]&lt;br /&gt;
 | stacks      = No&lt;br /&gt;
 | createdwith = [[Electronics Printer]], [[Fabricator]]&lt;br /&gt;
 | cost        = 10x [[Steel]], 5x [[Electrum]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
The transformer is used to control the maximum amount of power that will flow on a cable, preventing the cables from overloading on high power draw. &lt;br /&gt;
There are three variants of the transformer:&lt;br /&gt;
&lt;br /&gt;
The Transformer (Small) requires 1x Kit (Transformer) to place and is limited to 5,000 W of output. It can be placed in any orientation on a supporting surface (floor, wall, or ceiling) and is available as Transformer Reversed (Small).&lt;br /&gt;
&lt;br /&gt;
The Transformer (Medium) requires 3x Kit (Transformer) to place and is limited to 25,000 W of output. Similarly, it can be placed on any floor, wall, or ceiling and is available as a Transformer Reversed (Medium).&lt;br /&gt;
&lt;br /&gt;
The Transformer (Large) requires 1x Kit Transformer (Large) to place and is limited to 50,000 W of output. It can only be placed in one orientation, ideally the floor, but it can be stacked above floor level by placing it partway into a frame.&lt;br /&gt;
&lt;br /&gt;
==Usage== &lt;br /&gt;
Given that the transformer can limit power very specifically (with large 100 W increments or small 10 W increments), you can control or stop the output line from drawing more than the transformer gives out. This can be used to control many items that don&#039;t have a changing power usage, such as lights, volume pumps, pipe regulators, active vents, and more. This is similar to the [[Area Power Controller]] but does not have a battery buffer.&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
Data will not flow through a transformer, isolating the circuit behind their input. &amp;lt;br&amp;gt;&lt;br /&gt;
The transformers seem to generate a large amount of heat. &amp;lt;!-- someone needs to test the details, i noticed a 71 C temperature in a space where i put a large transformer (17-20 C in the rest of the base) -N --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Transformer will use 10W itself(all sizes), so setting a small transformer to 5000 and feeding with a regular cable will cause the supply cable to blow as it can draw 5010W at max load&lt;br /&gt;
&lt;br /&gt;
===Data Network Properties===&lt;br /&gt;
These are all Data Network properties of this device. This list is not tested at all for the Transformer Small and not complete for Transformer (kit/large variant).&lt;br /&gt;
&lt;br /&gt;
==Data Parameters==&lt;br /&gt;
These are all parameters, that can be written to with a Logic Writer, Batch Writer, or Integrated Circuit (IC10). The outputs are listed in the order a Logic Writer&#039;s &amp;quot;VAR&amp;quot; setting cycles through them.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Header text !! Header text !! Header text&lt;br /&gt;
|-&lt;br /&gt;
| On || Boolean || Turns the Transformer on when set to 1. Turns it off when set to 0. &lt;br /&gt;
|-&lt;br /&gt;
| Lock || Boolean || Locks the Transformer when set to 1. Unlocks it when set to 0&lt;br /&gt;
|-&lt;br /&gt;
| Setting || Integer || Sets the Transformer&#039;s power (in Watts) limit.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Data Outputs==&lt;br /&gt;
These are all parameters, that can be read with a Logic Reader or a Slot Reader. The outputs are listed in the order a Logic Reader&#039;s &amp;quot;VAR&amp;quot; setting cycles through them. You cannot read ratios in IC2 chip (so far) &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter Name !! Data Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| On|| Boolean|| Returns whether the Transformer is turned on. (0 for no, 1 for yes)  &lt;br /&gt;
|-&lt;br /&gt;
| Maximum || Integer|| Maximum setting of this device. (How high the device can be set, see description for specific numbers.)&lt;br /&gt;
|-&lt;br /&gt;
| Lock || Boolean|| Returns whether the Transformer is locked. (0 for no, 1 for yes) &lt;br /&gt;
|-&lt;br /&gt;
| Error || Boolean|| 1 if device is in error state, otherwise 0.&lt;br /&gt;
|-&lt;br /&gt;
| Setting || Integer || Returns the current power limit (in Watts) of the Transformer.&lt;br /&gt;
|-&lt;br /&gt;
| RequiredPower || Integer || Idle operating power quantity. (how much power, in watts, the device itself is using, rather than how much power it is passing through.)&lt;br /&gt;
|-&lt;br /&gt;
| Ratio || Float || Ratio of the current power limit to the maximum power limit of the device&lt;br /&gt;
|-&lt;br /&gt;
| PrefabHash|| Integer || The hash of the device. (Can be found in the Stationpedia.)&lt;br /&gt;
|-&lt;br /&gt;
| Power|| Boolean || Returns 1 if the device is powered and on, otherwise 0.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Z0</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Transformer&amp;diff=19835</id>
		<title>Transformer</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Transformer&amp;diff=19835"/>
		<updated>2024-01-24T21:30:40Z</updated>

		<summary type="html">&lt;p&gt;Z0: /* Notes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Itembox&lt;br /&gt;
 | name        = Kit (Transformer)&lt;br /&gt;
 | image       =  [[File:{{#setmainimage:ItemKitTransformerSmall.png}}]]&lt;br /&gt;
 | stacks      = No&lt;br /&gt;
 | createdwith = [[Electronics Printer]], [[Fabricator]]&lt;br /&gt;
 | cost        = 10x [[Iron]], 1x [[Gold]] , 3x [[Copper]]&lt;br /&gt;
}}&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit Transformer (Large)&lt;br /&gt;
 | image       =  [[File:{{#setmainimage:ItemKitTransformer.png}}]]&lt;br /&gt;
 | stacks      = No&lt;br /&gt;
 | createdwith = [[Electronics Printer]], [[Fabricator]]&lt;br /&gt;
 | cost        = 10x [[Steel]], 5x [[Electrum]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
The transformer is used to control the maximum amount of power that will flow on a cable, preventing the cables from overloading on high power draw. &lt;br /&gt;
There are three variants of the transformer:&lt;br /&gt;
&lt;br /&gt;
The Transformer (Small) requires 1x Kit (Transformer) to place and is limited to 5,000 W of output. It can be placed in any orientation on a supporting surface (floor, wall, or ceiling) and is available as Transformer Reversed (Small).&lt;br /&gt;
&lt;br /&gt;
The Transformer (Medium) requires 3x Kit (Transformer) to place and is limited to 25,000 W of output. Similarly, it can be placed on any floor, wall, or ceiling and is available as a Transformer Reversed (Medium).&lt;br /&gt;
&lt;br /&gt;
The Transformer (Large) requires 1x Kit Transformer (Large) to place and is limited to 50,000 W of output. It can only be placed in one orientation, ideally the floor, but it can be stacked above floor level by placing it partway into a frame.&lt;br /&gt;
&lt;br /&gt;
==Usage== &lt;br /&gt;
Given that the transformer can limit power very specifically (with large 100 W increments or small 10 W increments), you can control or stop the output line from drawing more than the transformer gives out. This can be used to control many items that don&#039;t have a changing power usage, such as lights, volume pumps, pipe regulators, active vents, and more. This is similar to the [[Area Power Controller]] but does not have a battery buffer.&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
Data will not flow through a transformer, isolating the circuit behind their input. &amp;lt;br&amp;gt;&lt;br /&gt;
The transformers seem to generate a large amount of heat. &amp;lt;!-- someone needs to test the details, i noticed a 71 C temperature in a space where i put a large transformer (17-20 C in the rest of the base) -N --&amp;gt;&lt;br /&gt;
The Transformer will use 10W itself(all sizes), so setting a small transformer to 5000 and feeding with a regular cable will cause the supply cable to blow as it can draw 5010W at max load&lt;br /&gt;
&lt;br /&gt;
===Data Network Properties===&lt;br /&gt;
These are all Data Network properties of this device. This list is not tested at all for the Transformer Small and not complete for Transformer (kit/large variant).&lt;br /&gt;
&lt;br /&gt;
==Data Parameters==&lt;br /&gt;
These are all parameters, that can be written to with a Logic Writer, Batch Writer, or Integrated Circuit (IC10). The outputs are listed in the order a Logic Writer&#039;s &amp;quot;VAR&amp;quot; setting cycles through them.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Header text !! Header text !! Header text&lt;br /&gt;
|-&lt;br /&gt;
| On || Boolean || Turns the Transformer on when set to 1. Turns it off when set to 0. &lt;br /&gt;
|-&lt;br /&gt;
| Lock || Boolean || Locks the Transformer when set to 1. Unlocks it when set to 0&lt;br /&gt;
|-&lt;br /&gt;
| Setting || Integer || Sets the Transformer&#039;s power (in Watts) limit.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Data Outputs==&lt;br /&gt;
These are all parameters, that can be read with a Logic Reader or a Slot Reader. The outputs are listed in the order a Logic Reader&#039;s &amp;quot;VAR&amp;quot; setting cycles through them. You cannot read ratios in IC2 chip (so far) &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter Name !! Data Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| On|| Boolean|| Returns whether the Transformer is turned on. (0 for no, 1 for yes)  &lt;br /&gt;
|-&lt;br /&gt;
| Maximum || Integer|| Maximum setting of this device. (How high the device can be set, see description for specific numbers.)&lt;br /&gt;
|-&lt;br /&gt;
| Lock || Boolean|| Returns whether the Transformer is locked. (0 for no, 1 for yes) &lt;br /&gt;
|-&lt;br /&gt;
| Error || Boolean|| 1 if device is in error state, otherwise 0.&lt;br /&gt;
|-&lt;br /&gt;
| Setting || Integer || Returns the current power limit (in Watts) of the Transformer.&lt;br /&gt;
|-&lt;br /&gt;
| RequiredPower || Integer || Idle operating power quantity. (how much power, in watts, the device itself is using, rather than how much power it is passing through.)&lt;br /&gt;
|-&lt;br /&gt;
| Ratio || Float || Ratio of the current power limit to the maximum power limit of the device&lt;br /&gt;
|-&lt;br /&gt;
| PrefabHash|| Integer || The hash of the device. (Can be found in the Stationpedia.)&lt;br /&gt;
|-&lt;br /&gt;
| Power|| Boolean || Returns 1 if the device is powered and on, otherwise 0.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Z0</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Furnace&amp;diff=19713</id>
		<title>Furnace</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Furnace&amp;diff=19713"/>
		<updated>2024-01-10T03:27:15Z</updated>

		<summary type="html">&lt;p&gt;Z0: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
[[Category:Machines]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Furnace)&lt;br /&gt;
 | image       = [[File:ItemKitFurnace.png]]&lt;br /&gt;
 | createdwith = [[Special:MyLanguage/Autolathe|Autolathe]], [[Special:MyLanguage/Fabricator|Fabricator]]&lt;br /&gt;
 | cost        = 30g [[Special:MyLanguage/Iron|Iron]], 10g [[Special:MyLanguage/Copper|Copper]]&lt;br /&gt;
 | volume      = 1000 L&lt;br /&gt;
 | logic       =&lt;br /&gt;
* Open&lt;br /&gt;
* Pressure&lt;br /&gt;
* Temperature&lt;br /&gt;
* Lock&lt;br /&gt;
* Setting&lt;br /&gt;
* Reagents&lt;br /&gt;
* RatioOxygen&lt;br /&gt;
* RatioCarbonDioxide&lt;br /&gt;
* RatioNitrogen&lt;br /&gt;
* RatioPollutant&lt;br /&gt;
* RatioVolatile&lt;br /&gt;
* RatioWater&lt;br /&gt;
* Maximum&lt;br /&gt;
* Ratio&lt;br /&gt;
* ImportQuantity&lt;br /&gt;
* ImportSlotOccupant&lt;br /&gt;
* ExportQuantity&lt;br /&gt;
* ExportSlotOccupant&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Furnace&lt;br /&gt;
 | image            = [[File:Furnace.jpg]]&lt;br /&gt;
 | placed_with_item = [[Kit (Furnace)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | const_with_tool1 = [[Wrench]]&lt;br /&gt;
 | const_with_item1 = 2x [[Iron Sheets]]&lt;br /&gt;
 | decon_with_tool1 = [[Crowbar]]&lt;br /&gt;
 | item_rec1        = [[Kit (Furnace)]]&lt;br /&gt;
 | const_with_tool2 = [[Welding Torch]]&lt;br /&gt;
 | const_with_item2 = 2x [[Iron Sheets]]&lt;br /&gt;
 | decon_with_tool2 = [[Special:MyLanguage/Crowbar|Crowbar]]&lt;br /&gt;
 | item_rec2        = 2x [[Iron Sheets]]&lt;br /&gt;
 | decon_with_tool3 = [[Angle Grinder]]&lt;br /&gt;
 | item_rec3        = 2x [[Iron Sheets|Iron Sheets]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Description == &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
Used to smelt [[Ore|ore]] into ingots and alloys using an oxygen/volatile gas mix. [[Special:MyLanguage/Ice (Oxite)|Ice (Oxite)]] and [[Special:MyLanguage/Ice (Volatiles)|Ice (Volatiles)]] can be manually input directly in the furnace in order to create crude gas mixtures, or to be directly extracted as an easy trick for melting the ice.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
If the contents of the furnace are ejected without reaching the required temperature and pressure for smelting, they&#039;ll come out as [[Special:MyLanguage/Reagent Mix|Reagent Mix]] which can be processed in a [[Special:MyLanguage/Centrifuge|Centrifuge]] to recover the raw ores. [[Special:MyLanguage/Reagent Mix|Reagent Mix]] can also be re-smelted if the ingredients and ratios are a valid alloy recipe. This allows an intermission when the resources for reaching the required temperature / pressure are not on hand / need to be gathered first. Effectively, this means that the used metals can be &#039;reserved&#039; for the intended alloy.&lt;br /&gt;
&lt;br /&gt;
== Recipes == &amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
While smelting steel is easily achieved with ice, other recipes usually require a working piping setup (a valve and passive vent at bare minimum to vent the internal gasses). This can be done by separating gases into tanks using atmospheric units and piping individual gases through a mixer and a [[Special:MyLanguage/Pressure Regulator|Pressure Regulator]] or a [[Special:MyLanguage/Pipe Volume Pump|Pipe Volume Pump]] connected to the furnace input. Output should also be extracted and vented/recycled through a backpressure regulator to keep furnace pressure in check. The optimal gas mix that burns completely is 1 part (33.3%) oxygen to 2 parts (66.6%) volatiles, other mixes would also work but leave you with leftover oxygen or volatiles depending on the percentages used. It could also result in lower temperature if that is desired, but you could also use a volume pump with a lower fuel input setting.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Make sure to put the fuel in first, then press the activate button. Afterwards put in the ingredients and press the handle after you see the &amp;quot;will produce&amp;quot; while hovering over the furnace.&#039;&#039;&#039;  Also, You MUST put in exact amounts matching the recipe amounts. For instance, you must put in 12 iron and 4 coal to make 16 steel. You cannot put in 12 iron and 7 coal. The furnace will not manufacture anything if the ingredient ratios are not correct and you will have to eject it all or add resources to balance the recipe.&lt;br /&gt;
{{:Furnace/Recipes}} &lt;br /&gt;
&lt;br /&gt;
=== Tips === &amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
*Placing 15 ice(volatiles) and 15 ice(oxite) will bring pressure to around 22000kpa and temp 2000k. For Invar, you will have to wait for the temperature to drop before you can process. You can use this time while the pressure is still over 20000kpa to make constantan. &amp;lt;br /&amp;gt;&lt;br /&gt;
*All other alloys can be achieved with a ratio of 2 volatiles to 1 oxite&lt;br /&gt;
*If atmosphere inside and/or around furnace is too cold to melt ice one can press &#039;activate&#039; button to manually melt one ice per ignition attempt. You will need to press the ignition button for each piece of ice from the first stack that you put in. Until all solid matter was melted the import slot will remain blocked.&lt;br /&gt;
*[[Special:MyLanguage/Reagent Mix|Reagent Mix]] can be re-melted to continue balancing the recipe should you need to gather more resources or find yourself unable to balance the temperature/pressure manually.&lt;br /&gt;
&lt;br /&gt;
===Some example fuel mixes=== &amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;overflow-x: auto;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; |Prime&lt;br /&gt;
! colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; |FAR&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;1&amp;quot; |In: Mols&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; rowspan=&amp;quot;1&amp;quot; |Result&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; rowspan=&amp;quot;1&amp;quot; |Out: Mols&lt;br /&gt;
|-&lt;br /&gt;
!H2&lt;br /&gt;
!O2&lt;br /&gt;
!Press.&lt;br /&gt;
!Celcius&lt;br /&gt;
!Kelvin&lt;br /&gt;
!O2&lt;br /&gt;
!H2&lt;br /&gt;
!Co2&lt;br /&gt;
!X&lt;br /&gt;
|-&lt;br /&gt;
|100 kPa&lt;br /&gt;
|2:1&lt;br /&gt;
|29&lt;br /&gt;
|14&lt;br /&gt;
|2 135&lt;br /&gt;
|1 953&lt;br /&gt;
|2 216&lt;br /&gt;
|1&lt;br /&gt;
|3&lt;br /&gt;
|82&lt;br /&gt;
|33&lt;br /&gt;
|-&lt;br /&gt;
|200 kPa&lt;br /&gt;
|2:1&lt;br /&gt;
|59&lt;br /&gt;
|29&lt;br /&gt;
|4 500&lt;br /&gt;
|2 000&lt;br /&gt;
|2 273&lt;br /&gt;
|1&lt;br /&gt;
|5&lt;br /&gt;
|169&lt;br /&gt;
|80&lt;br /&gt;
|-&lt;br /&gt;
|200 kPa&lt;br /&gt;
|3:1&lt;br /&gt;
|65&lt;br /&gt;
|21&lt;br /&gt;
|3 400&lt;br /&gt;
|1 900&lt;br /&gt;
|2 173&lt;br /&gt;
|2&lt;br /&gt;
|26&lt;br /&gt;
|118&lt;br /&gt;
|52&lt;br /&gt;
|-&lt;br /&gt;
|200 kPa&lt;br /&gt;
|4:1&lt;br /&gt;
|72&lt;br /&gt;
|18&lt;br /&gt;
|3 000&lt;br /&gt;
|1 800&lt;br /&gt;
|2 273&lt;br /&gt;
|1&lt;br /&gt;
|40&lt;br /&gt;
|99&lt;br /&gt;
|42&lt;br /&gt;
|-&lt;br /&gt;
|200 kPa&lt;br /&gt;
|1:1&lt;br /&gt;
|43&lt;br /&gt;
|43&lt;br /&gt;
|3 493&lt;br /&gt;
|1 917&lt;br /&gt;
|2 190&lt;br /&gt;
|22&lt;br /&gt;
|2&lt;br /&gt;
|127&lt;br /&gt;
|59&lt;br /&gt;
|-&lt;br /&gt;
|200 kPa&lt;br /&gt;
|1:4&lt;br /&gt;
|17&lt;br /&gt;
|68&lt;br /&gt;
|1 646&lt;br /&gt;
|1 319&lt;br /&gt;
|1 592&lt;br /&gt;
|63&lt;br /&gt;
|2&lt;br /&gt;
|50&lt;br /&gt;
|18&lt;br /&gt;
|-&lt;br /&gt;
|300 kPa&lt;br /&gt;
|2:1&lt;br /&gt;
|86&lt;br /&gt;
|42&lt;br /&gt;
|6 850&lt;br /&gt;
|2 109&lt;br /&gt;
|2 382&lt;br /&gt;
|2&lt;br /&gt;
|7&lt;br /&gt;
|242&lt;br /&gt;
|115&lt;br /&gt;
|-&lt;br /&gt;
|902.7 kPa&lt;br /&gt;
|2:1&lt;br /&gt;
|263&lt;br /&gt;
|108&lt;br /&gt;
|19.25 MPa&lt;br /&gt;
|2 054&lt;br /&gt;
|2 357&lt;br /&gt;
|70&lt;br /&gt;
|7&lt;br /&gt;
|767&lt;br /&gt;
|151&lt;br /&gt;
|-&lt;br /&gt;
|1 MPa&lt;br /&gt;
|2:1&lt;br /&gt;
|291&lt;br /&gt;
|120&lt;br /&gt;
|21.62 MPa&lt;br /&gt;
|2 061&lt;br /&gt;
|2 334&lt;br /&gt;
|74&lt;br /&gt;
|7&lt;br /&gt;
|862&lt;br /&gt;
|170&lt;br /&gt;
|-&lt;br /&gt;
|1.497 MPa&lt;br /&gt;
|2:1&lt;br /&gt;
|408&lt;br /&gt;
|204&lt;br /&gt;
|35.34 MPa&lt;br /&gt;
|2 121&lt;br /&gt;
|2 394&lt;br /&gt;
|10&lt;br /&gt;
|20&lt;br /&gt;
|1163&lt;br /&gt;
|581&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
{{Data Network Header}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
{{Data Parameters}}&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter Name !! Data Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Activate || Boolean || Activates the Furnace, when set to 1.&lt;br /&gt;
|-&lt;br /&gt;
| ClearMemory || Boolean || When set to 1,clears the counter memory(e.g.ExportCount). Will set itself back to 0 when actioned.&lt;br /&gt;
|-&lt;br /&gt;
| Lock || Boolean || Locks the Furnace, when set to 1. Unlocks it when set to 0.&lt;br /&gt;
|-&lt;br /&gt;
| Mode|| Integer || (Unknown).&lt;br /&gt;
|-&lt;br /&gt;
| Open || Boolean || Opens the Furnace, when set to 1. Closes it, when set to 0.&lt;br /&gt;
|-&lt;br /&gt;
| Setting || Float || (Unknown) Affects the Setting output.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
{{Data Outputs}}&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Output Name !! Data Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Activate || Boolean || Returns if the furnace is active.&lt;br /&gt;
|-&lt;br /&gt;
| Combustion|| Boolean || Returns 1 if the furnace atmosphere is on fire.&lt;br /&gt;
|-&lt;br /&gt;
| ExportCount || Integer || How many items exported since last ClearMemory.&lt;br /&gt;
|-&lt;br /&gt;
| ImportCount || Integer || How many items imported since last ClearMemory.&lt;br /&gt;
|-&lt;br /&gt;
| Lock || Boolean || Returns whether the Furnace is locked.&lt;br /&gt;
|-&lt;br /&gt;
| Maximum || Integer || (Unknown) Returns 100.&lt;br /&gt;
|-&lt;br /&gt;
| Mode || Integer || (Unknown).&lt;br /&gt;
|-&lt;br /&gt;
| Open || Boolean || Returns whether the Furnace is open. (0 for no, 1 for yes).&lt;br /&gt;
|-&lt;br /&gt;
| PrefabHash || Integer || The hash of the structure.&lt;br /&gt;
|-&lt;br /&gt;
| Pressure || Float || Returns the pressure in the Furnace in kilo pascal.&lt;br /&gt;
|-&lt;br /&gt;
| Ratio || Float || (Unknown) Returns 0.5.&lt;br /&gt;
|-&lt;br /&gt;
| RatioCarbonDioxide || Float || Returns a range from 0.0 to 1.0. Returns the percentage ratio of the amount of carbon dioxide in the Furnace.&lt;br /&gt;
|-&lt;br /&gt;
| RatioNitrogen || Float || Returns a range from 0.0 to 1.0. Returns the percentage ratio of the amount of nitrogen in the Furnace.&lt;br /&gt;
|-&lt;br /&gt;
| RatioNitrousOxide || Float || Returns a range from 0.0 to 1.0. Returns the percentage ratio of the amount of nitrous oxide in the Furnace.&lt;br /&gt;
|-&lt;br /&gt;
| RatioOxygen || Float || Returns a range from 0.0 to 1.0. Returns the percentage ratio of the amount of oxygen in the Furnace.&lt;br /&gt;
|-&lt;br /&gt;
| RatioPollutant || Float || Returns a range from 0.0 to 1.0. Returns the percentage ratio of the amount of pollutant in the Furnace.&lt;br /&gt;
|-&lt;br /&gt;
| RatioVolatiles || Float || Returns a range from 0.0 to 1.0. Returns the percentage ratio of the amount of volatiles in the Furnace.&lt;br /&gt;
|-&lt;br /&gt;
| RatioWater || Float || Returns a range from 0.0 to 1.0. Returns the percentage ratio of the amount of water in the Furnace.&lt;br /&gt;
|-&lt;br /&gt;
| Reagents || Float || Returns the amount of reagents (smeltable ores, not counting ice) in the Furnace, in grams.&lt;br /&gt;
|-&lt;br /&gt;
| RecipeHash || int || Current hash of the recipe the device is set to produce.&lt;br /&gt;
|-&lt;br /&gt;
| Setting || Float || (Unknown) Affected by the Setting parameter.&lt;br /&gt;
|-&lt;br /&gt;
| Temperature || Float || Returns the temperature in the Furnace in kelvin.&lt;br /&gt;
|-&lt;br /&gt;
| TotalMoles || Float || Returns the total moles of the furnace.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Z0</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Game_Settings&amp;diff=19538</id>
		<title>Game Settings</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Game_Settings&amp;diff=19538"/>
		<updated>2023-12-29T15:46:52Z</updated>

		<summary type="html">&lt;p&gt;Z0: /* Changing difficulty mid-game */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Gameplay Difficulty =&lt;br /&gt;
&lt;br /&gt;
This setting mostly determines what you will re-spawn with when you die:&lt;br /&gt;
&lt;br /&gt;
* On Easy difficulty, you will start with a full suit again, just like at the beginning of a new world.&lt;br /&gt;
* On Normal difficulty you will be given an emergency suit and a full set of emergency tools and are expected to retrieve or create a proper suit again. In this mode you need to open your helmet in order to eat or drink.&lt;br /&gt;
* On Stationeer difficulty, you will spawn with no suit at all, which is very dangerous if you have not set your spawn point yet. In this mode you need to open your helmet in order to eat or drink.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At the time of writing (version 0.2.4258.19848), you can only find this setting on the [[New World]] menu and there is no interface to change this setting mid-game&lt;br /&gt;
&lt;br /&gt;
== Changing difficulty mid-game ==&lt;br /&gt;
&lt;br /&gt;
If you want to change the difficulty of an existing world you should:&lt;br /&gt;
&lt;br /&gt;
# Load the existing world&lt;br /&gt;
# Open the in-game developer console (F3)&lt;br /&gt;
# Write &#039;difficulty Easy&#039; and press enter&lt;br /&gt;
## Replace &amp;quot;Easy&amp;quot; with your desired difficulty name&lt;br /&gt;
Note: the difficulty name needs to start with capital letter or it will not be recognized&lt;br /&gt;
# Close the in-game developer console (F3 again)&lt;br /&gt;
# Save the world&lt;br /&gt;
&lt;br /&gt;
= Sun Orbit Period (Day cycle time) =&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
This setting determines how long the day cycle time is, as a percentage of a base value, represented as a decimal number.&lt;br /&gt;
&lt;br /&gt;
The allowed value range goes from 0.1 to 2.0 and the base value is 20 minutes.&lt;br /&gt;
The base value is measured in IRL minutes.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
* If set to 1.0, the day cycle time is 20 minutes.&lt;br /&gt;
* If set to 0.1, the day cycle time is 2 minutes.&lt;br /&gt;
* If set to 2.0, the day cycle time is 40 minutes.&lt;br /&gt;
&lt;br /&gt;
== Day time and Night time ==&lt;br /&gt;
The amount of day time and night time depends on the day cycle time and the [[Solar Angle]] on the planet you&#039;re at.&lt;br /&gt;
&lt;br /&gt;
For the [[Moon]] and [[Venus]], because their solar angle is 0°, the day time is exactly half the day cycle time.&amp;lt;br&amp;gt;&lt;br /&gt;
This means, for a day cycle time of 20 minutes, you&#039;ll get 10 minutes of daytime and 10 minutes of night time every game day.&lt;br /&gt;
&lt;br /&gt;
= Hunger / Hydration Rate =&lt;br /&gt;
&lt;br /&gt;
{{Warning|These settings are currently part of each difficulty configuration and cannot be changed in-game by the user}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
This setting controls how rapidly your hunger and hydration levels will deplete. Increasing the value will make them go down more quickly. A higher value on this bar will reduce the time you have early on to set up food and water supply. On Stationeers and Normal difficulties, a high value on this setting will mean you need to quickly build a breathable atmosphere as these difficulties require you to open your helmet to eat and drink.&lt;/div&gt;</summary>
		<author><name>Z0</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Kit_(Lights)&amp;diff=19118</id>
		<title>Kit (Lights)</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Kit_(Lights)&amp;diff=19118"/>
		<updated>2023-12-08T21:32:10Z</updated>

		<summary type="html">&lt;p&gt;Z0: /* LED */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Lights)&lt;br /&gt;
 | image       = [[File:{{#setmainimage:ItemWallLight.png}}]]&lt;br /&gt;
 | stacks = Yes&lt;br /&gt;
 | constructs  = Wall Light, LED&lt;br /&gt;
 | createdwith = [[Autolathe]], [[Electronics Printer]], [[Fabricator]]&lt;br /&gt;
 | cost        = 1g [[Iron]], 2g [[Copper]],  1g [[silicon_Ingot|Silicon]]* &amp;lt;small&amp;gt;*autolathe only&amp;lt;/small&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Wall Lights&lt;br /&gt;
 | prefab_hash      = See table in description&lt;br /&gt;
 | power_usage      = 50W&lt;br /&gt;
 | placed_with_item = [[Kit (Lights)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid, On Frames&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Kit (Lights)]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = LED&lt;br /&gt;
 | image            = [[File:LED.png]]&lt;br /&gt;
 | prefab_hash      = 1944485013&lt;br /&gt;
 | power_usage      = 25W&lt;br /&gt;
 | placed_with_item = [[Kit (Lights)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid, On Frames&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Kit (Lights)]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Diode Slide&lt;br /&gt;
 | prefab_hash      = 576516101&lt;br /&gt;
 | power_usage      = 25W&lt;br /&gt;
 | placed_with_item = [[Kit (Lights)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid, On Frames&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Kit (Lights)]]&lt;br /&gt;
}}&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;big&amp;gt;Description&amp;lt;/big&amp;gt; = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
Light kits are used for illuminating your base. The LED variant consumes half the power of the default larger wall light though is not as bright. It&#039;s color can also be changed with logic, making for a great status indicator within logic circuits.&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;big&amp;gt;Wall Light&amp;lt;/big&amp;gt; (Regular, Long, Long Wide, Long Angled, Battery, Round, Round Angled, Small Round) = &lt;br /&gt;
= PrefabHash Values =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Light Type !! PrefabHash&lt;br /&gt;
|-&lt;br /&gt;
| Regular || -1860064656&lt;br /&gt;
|-&lt;br /&gt;
| Long || 797794350&lt;br /&gt;
|-&lt;br /&gt;
| Long Wide || 555215790&lt;br /&gt;
|-&lt;br /&gt;
| Long Angled || 1847265835&lt;br /&gt;
|-&lt;br /&gt;
| Battery Powered || -1306415132&lt;br /&gt;
|-&lt;br /&gt;
| Round || 1514476632&lt;br /&gt;
|-&lt;br /&gt;
| Round Angled || 1592905386&lt;br /&gt;
|-&lt;br /&gt;
| Small Round || 1436121888&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Data Network Header}}&lt;br /&gt;
{{Data Parameters}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter Name !! Data Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| On || Boolean || Turns the Light on, when set to 1. Turns it off, when set to 0.&lt;br /&gt;
|-&lt;br /&gt;
| Lock || Boolean || Locks the Light when set to 1. Unlocks it, when set to 0. When locked, Light cannot be turned on\off by player.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Data Outputs}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Output Name !! Data Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| On || Boolean || Returns whether the Light is turned on. (0 for no, 1 for yes)&lt;br /&gt;
|-&lt;br /&gt;
| Lock || Boolean || Returns whether the Light is locked. (0 for no, 1 for yes)&lt;br /&gt;
|-&lt;br /&gt;
| RequiredPower || Integer || Returns the current amount of power required by the Light, in watts.&lt;br /&gt;
|-&lt;br /&gt;
| PrefabHash || Integer || Returns the Hash value for the selected light type. (See info panels on the right)&lt;br /&gt;
|-&lt;br /&gt;
| Power || Boolean || Returns whether the Light is turned on and receives power. (0 for no, 1 for yes)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;big&amp;gt;LED&amp;lt;/big&amp;gt; =&lt;br /&gt;
{{Data Network Header}}&lt;br /&gt;
{{Data Parameters}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter Name !! Data Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| On || Boolean || Turns the Light on, when set to 1. Turns it off, when set to 0.&lt;br /&gt;
|-&lt;br /&gt;
| Lock || Boolean || Locks the Light when set to 1. Unlocks it, when set to 0. When locked, Light cannot be turned on\off by player.&lt;br /&gt;
|-&lt;br /&gt;
| Color || Integer || Sets the color of the LED Light. (See [[Data Network Colors]])&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Data Outputs}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Output Name !! Data Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| On || Boolean || Returns whether the Light is turned on. (0 for no, 1 for yes)&lt;br /&gt;
|-&lt;br /&gt;
| Lock || Boolean || Returns whether the Light is locked. (0 for no, 1 for yes)&lt;br /&gt;
|-&lt;br /&gt;
| Color || Integer || Returns the color setting of the LED Light. (See [[Data Network Colors]])&lt;br /&gt;
|-&lt;br /&gt;
| RequiredPower || Integer || Returns the current amount of power required by the Light, in watts.&lt;br /&gt;
|-&lt;br /&gt;
| PrefabHash || Boolean || &lt;br /&gt;
|-&lt;br /&gt;
| Power || Boolean || Returns whether the Light is turned on and receives power. (0 for no, 1 for yes)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;big&amp;gt;Diode Slide&amp;lt;/big&amp;gt; =&lt;br /&gt;
{{Data Network Header}}&lt;br /&gt;
{{Data Parameters}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter Name !! Data Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| On || Boolean || Turns the Diode Slide on, when set to 1. Turns it off, when set to 0.&lt;br /&gt;
|-&lt;br /&gt;
| Lock || Boolean || Locks the Diode Slide when set to 1. Unlocks it, when set to 0. When locked, Light cannot be turned on\off by player.&lt;br /&gt;
|-&lt;br /&gt;
| Setting || Boolean || Sets the color of the Diode Slide. (0 - red, 1 - green)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Data Outputs}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Output Name !! Data Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| On || Boolean || Returns whether the Diode Slide is turned on. (0 for no, 1 for yes)&lt;br /&gt;
|-&lt;br /&gt;
| Lock || Boolean || Returns whether the Diode Slide is locked. (0 for no, 1 for yes)&lt;br /&gt;
|-&lt;br /&gt;
| Setting || Boolean || Returns the &amp;quot;Setting&amp;quot; value of the Diode Slide.&lt;br /&gt;
|-&lt;br /&gt;
| RequiredPower || Integer || Returns the current amount of power required by the Diode Slide , in watts.&lt;br /&gt;
|-&lt;br /&gt;
| PrefabHash || Boolean || &lt;br /&gt;
|-&lt;br /&gt;
| Power || Boolean || Returns whether the Diode Slide is turned on and receives power. (0 for no, 1 for yes)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Builds =&lt;br /&gt;
&lt;br /&gt;
* [[Auto Night Lights]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Z0</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Logic_Transmitter&amp;diff=19112</id>
		<title>Logic Transmitter</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Logic_Transmitter&amp;diff=19112"/>
		<updated>2023-12-07T15:40:31Z</updated>

		<summary type="html">&lt;p&gt;Z0: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
[[Category:Circuits]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name             = Kit (Logic Transmitter)&lt;br /&gt;
 | image            = [[File:ItemKitLogicTransmitter.png|Kit (Logic Transmitter)]]&lt;br /&gt;
 | prefab_hash      = 1005397063&lt;br /&gt;
 | placed_on_grid   = Small Grid, On Frames&lt;br /&gt;
 | stacks           = 5&lt;br /&gt;
 | cost             = 2g [[Special:MyLanguage/Gold|Gold]], 1g [[Special:MyLanguage/Copper|Copper]], 3g [[Special:MyLanguage/Electrum|Electrum]], 5g [[Special:MyLanguage/Silicon|Silicon]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Logic Transmitter&lt;br /&gt;
 | image            = [[File:LogicTransmitter.png|thumb|Mounted Logic Transmitter]]&lt;br /&gt;
 | prefab_hash      = -693235651&lt;br /&gt;
 | power_usage      = 50W&lt;br /&gt;
 | placed_with_item = [[Kit (Logic Transmitter)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid, On Frames&lt;br /&gt;
 | decon_with_tool1 = [[Special:MyLanguage/Hand Drill|Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Special:MyLanguage/Kit (Logic Transmitter)|Kit (Logic Transmitter)]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Description == &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
The Logic Transmitter are used to transmit values in a logic network wirelessly.&lt;br /&gt;
&lt;br /&gt;
The Logic Transmitter starts in &#039;&#039;&#039;Passive&#039;&#039;&#039; mode and can be tied to &#039;&#039;&#039;Active&#039;&#039;&#039; transmitters, [[AIMEe]], [[Hardsuit]] and &amp;lt;s&amp;gt;[[Rover]]&amp;lt;/s&amp;gt;.&lt;br /&gt;
While tied to anything but another Logic Transmitter is basically acts like a [[Kit_(Logic_I/O)#Logic_Mirror|Logic Mirror]],&lt;br /&gt;
except from far distance.&lt;br /&gt;
&lt;br /&gt;
If you set a Logic Transmitter to active, you can write to the Setting variable on it to transmit that value to one or multiple Logic Transmitter that are tied to it in passive mode.&lt;br /&gt;
You tie a passive Logic Transmitter to an active Logic Transmitter by adjusting the screw on the passive Logic Transmitter until it matches the name of the active Logic Transmitter. NOTE: The active Logic transmitter must be on and active to show up as an option in the screw of the passive Logic Transmitter. You can then read the Setting variable from the passive Logic Transmitter.&lt;br /&gt;
&lt;br /&gt;
This is the toggle button that can be manually used to change the Logic Transmitter &#039;&#039;&#039;Mode&#039;&#039;&#039;:&lt;br /&gt;
[[File:LogicTransmitterActiveButton.png|400x300px|Example of where find the toggle button for the mode of the Logic Transmitter]]&lt;br /&gt;
&lt;br /&gt;
The Logic Transmitter can also be tied to an [[Advanced Tablet]] which it then locally represents (mirrors) in the network. This allows playing of sounds on the tablet or to read out the tablet&#039;s values: The off/on state can be read as well as the current mode (representing which [[Cartridge]] is selected). Therefore, the tablet can now be used as a remote control.&lt;br /&gt;
&lt;br /&gt;
== Note == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* There seems to be no limit to the distance at which two devices can connect.&lt;br /&gt;
* The Logic Transmitter have three data input ports and one for power. Due the fact that when the Logic Transmitter is in &#039;&#039;&#039;Active&#039;&#039;&#039; is used to mirror a signal from another Logic Transmitter, seems that all of the three input ports are not necessary on the same network (because they are all or output or input), but can be used for sharing the same value in different networks without mixing logic networks and/or having to build many Logic Transmitter for recieving the same value.&lt;br /&gt;
* The placed object prefabhash is -693235651.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
{{Data Network Header}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
{{Data Parameters}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter Name !! Data Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| On || Boolean || &lt;br /&gt;
|-&lt;br /&gt;
| Mode || Boolean || 0 for &#039;&#039;&#039;Passive&#039;&#039;&#039;, 1 for &#039;&#039;&#039;Active&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Setting || Any || Any setted o mirrored value from another device&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
{{Data Outputs}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Output Name !! Data Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| On || Boolean || If is enabled&lt;br /&gt;
|-&lt;br /&gt;
| Mode || Boolean || 0 for *Passive*, 1 for *Active*&lt;br /&gt;
|-&lt;br /&gt;
| Power || Boolean || If is taking power&lt;br /&gt;
|-&lt;br /&gt;
| PrefabHash || Integer || -693235651&lt;br /&gt;
|-&lt;br /&gt;
| RequiredPower || Integer || Power required to work (50W)&lt;br /&gt;
|-&lt;br /&gt;
| Setting || Any || Any setted o mirrored value from another device&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Z0</name></author>
	</entry>
</feed>