Difference between revisions of "AI Craftapalooza"

From The Perfect Tower II
Jump to navigation Jump to search
Line 95: Line 95:
 
| -
 
| -
 
| -
 
| -
 +
|}
 +
 +
===Status and error reporting===
 +
The <code>craft_status</code> global variable is used to describe the current state of any crafting requests, and follows HTTP status codes.
 +
 +
{| class="wikitable"
 +
!<code>craft_status</code>
 +
!Meaning
 +
|-
 +
|102
 +
|Craft in progress
 +
|-
 +
|200
 +
|No craft in progress, previous craft (if any) was completed successfully.
 +
|-
 +
|412
 +
|Not enough raw materials (dust or ingots) found to produce the requested craft.  Look at the <code>craft_require_tier</code> and <code> craft_require_count</code> to see which tier of ingot is missing and how much is required for the desired craft.
 
|}
 
|}
  

Revision as of 01:21, 22 January 2021

IN PROGRESS. USE AT YOUR OWN RISK


Overview

Craftapalooza is a set of scripts to manage the factory directly, rather than having to manually craft anything.

It is separated into sections: The general scripts, which are always required and from the UX of the crafting system (see Usage below), and collections of crafting scripts further broken up into parts, machines and producers. Note that the parts scripts are required as they are used by the machine and producer scripts, but the latter are for the most part optional.

If you leave the CRAFT_INVENTORY variable to its default value of 1.0, then the scripts will try to reuse items that are already in your inventory to minimise the required work. This also enables the scripts to be interrupted and resumed later - for the most part, the scripts will determine what has already been made and simply pick up where they left off. There is a notable exception that the AI cannot see the contents of machines, so for the best reliability, ensure that none of the machines are busy processing anything before starting any craft.

Conversely you can toggle CRAFT_INVENTORY to 0.0 and then any crafts will create all required items to create your desired output. Note that this can cause an increase in the number of cables, rods, screws etc in your inventory if the requested craft doesn't consume all of the created parts.

Usage

  1. Choose the crafting MODE with '2' and OUTPUT with '3'. Refer to the following table to see what will be produced.
  2. Choose the TIER you want to produce with '1' (loops from 1 to 10). Note that some items can only be crafted for tiers 1 to 5.
  3. Choose the COUNT of items you want to produce with '8' to decrease and '9' to increase the target count. The count increments in units from 1-10, then by tens through 20, 30... 90, 100, then 200, 300 etc
  4. Optionally toggle CRAFT_INVENTORY as described above with '5'.
  5. Hit '0' while in the factory to start production.
MODE 1 (producers) 2 (machines) 3 (parts)
OUTPUT
1 White (town) Oven Chips (T1-5)
2 Yellow (powerplant) Assembler Plates
3 Orange (mine) Refiner Dense plates
4 Red (factory) Crusher Blocks
5 Purple (headquarters) Cutter Cables
6 Pink (arcade) Presser Insulated cables
7 Green (laboratory) Mixer Rods
8 Cyan (shipyard) Belt Motors
9 Light blue (trading post) Shaper Pumps
10 Dark blue (workshop) Boiler Dust (tier up)
11 Grey (museum) - -
12 Brown (construction firm) - -
13 Black (statue of Cubos) - -

Status and error reporting

The craft_status global variable is used to describe the current state of any crafting requests, and follows HTTP status codes.

craft_status Meaning
102 Craft in progress
200 No craft in progress, previous craft (if any) was completed successfully.
412 Not enough raw materials (dust or ingots) found to produce the requested craft. Look at the craft_require_tier and craft_require_count to see which tier of ingot is missing and how much is required for the desired craft.

Importing the scripts

The import codes for each script can be found in the tables below. The easiest way to import them is to install GreaseMonkey or TamperMonkey and install the following tamperscript which will add a </> button to the top of each code block. If you click on this button, the contents of the block will be copied into your clipboard for ease of pasting into the game's import window.

Click to copy (tamperscript)
// ==UserScript==
// @name         Click to copy on <pre> tags
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Add click to copy buttons to <pre> tags
// @author       Troy.Laurin@gmail.com
// @match        https://www.perfecttower2.com/wiki/*
// @grant        GM_addStyle
// @require      https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js
// @require      http://code.jquery.com/jquery-3.5.1.slim.min.js
// ==/UserScript==

(function() {
    'use strict';

    // ------------------------------------------
    // CSS part injected in the page
    GM_addStyle(" \
.precontainer { \
position: relative; \
} \
.copy-btn { \
background: #DDD; \
font-family: monospace; \
font-weight: bolder; \
margin: 0; \
opacity: 0; \
padding: 4px; \
position: absolute; \
right: 1px; \
top: 1px; \
cursor: pointer; \
-webkit-transition: opacity 0.3s ease-in-out; \
-o-transition: opacity 0.3s ease-in-out; \
transition: opacity 0.3s ease-in-out; \
} \
.precontainer:hover >.copy-btn { \
opacity: 1; \
} \
table { width: 100% } \
");

    $('pre').wrap('<div class="precontainer"></div>');
    $('pre').before($('<span class="copy-btn">&lt;/&gt;</span>'));

    new ClipboardJS('.copy-btn', {
        text: function(trigger) {
            return $(trigger.nextElementSibling).text();
        }
    })
        .on('success',function (e) {
        $(e.trigger).html("&lt;copied/&gt;")
        setTimeout(function() {
            $(e.trigger).html("&lt;/&gt;");
        }, 3000);
    })
        .on('error',function (e) {
        $(e.trigger).html("Error!")
        setTimeout(function() {
            $(e.trigger).html("&lt;/&gt;");
        }, 3000);
    });
})();

The scripts

Command scripts

Script Lines Notes Source
craft init 9 Impulse on wake
CmNyYWZ0IGluaXQBAAAABndha2V1cAAAAAAJAAAADmdsb2JhbC5pbnQuc2V0CGNvbnN0YW50BApjcmFm
dF9idXN5CGNvbnN0YW50AgAAAAAOZ2xvYmFsLmludC5zZXQIY29uc3RhbnQEDGNyYWZ0X3N0YXR1cwhj
b25zdGFudALIAAAADmdsb2JhbC5pbnQuc2V0CGNvbnN0YW50BBJjcmFmdF9yZXF1aXJlX3RpZXIIY29u
c3RhbnQCAAAAABFnbG9iYWwuZG91YmxlLnNldAhjb25zdGFudAQTY3JhZnRfcmVxdWlyZV9jb3VudAhj
b25zdGFudAMAAAAAAAAAAA5nbG9iYWwuaW50LnNldAhjb25zdGFudAQKY3JhZnRfdGllcghjb25zdGFu
dAIBAAAADmdsb2JhbC5pbnQuc2V0CGNvbnN0YW50BApjcmFmdF9tb2RlCGNvbnN0YW50AgEAAAAOZ2xv
YmFsLmludC5zZXQIY29uc3RhbnQEDGNyYWZ0X291dHB1dAhjb25zdGFudAIBAAAAEWdsb2JhbC5kb3Vi
bGUuc2V0CGNvbnN0YW50BAtjcmFmdF9jb3VudAhjb25zdGFudAMAAAAAAADwPxFnbG9iYWwuZG91Ymxl
LnNldAhjb25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0YW50AwAAAAAAAPA/
wakeup()

global.int.set("craft_busy", 0)
global.int.set("craft_status", 200)
global.int.set("craft_require_tier", 0)
global.double.set("craft_require_count", 0.0)
global.int.set("craft_tier", 1)
global.int.set("craft_mode", 1)
global.int.set("craft_output", 1)
global.double.set("craft_count", 1.0)
global.double.set("craft_inventory", 1.0)


craft GO 13 Impulse on 0
  • while in the factory
CGNyYWZ0IEdPAQAAAAVrZXkuMAEAAAAPY29tcGFyaXNvbi5ib29sDmNvbXBhcmlzb24uaW50Dmdsb2Jh
bC5pbnQuZ2V0CGNvbnN0YW50BApjcmFmdF9idXN5CGNvbnN0YW50BAI9PQhjb25zdGFudAIAAAAACGNv
bnN0YW50BAEmEnRvd24ud2luZG93Lmlzb3Blbghjb25zdGFudAQHZmFjdG9yeQ0AAAAOZ2xvYmFsLmlu
dC5zZXQIY29uc3RhbnQECmNyYWZ0X2J1c3kIY29uc3RhbnQCAQAAAA5nbG9iYWwuaW50LnNldAhjb25z
dGFudAQSY3JhZnRfcmVxdWlyZV90aWVyCGNvbnN0YW50AgAAAAARZ2xvYmFsLmRvdWJsZS5zZXQIY29u
c3RhbnQEE2NyYWZ0X3JlcXVpcmVfY291bnQIY29uc3RhbnQDAAAAAAAAAAAOZ2xvYmFsLmludC5zZXQG
Y29uY2F0BmNvbmNhdAZjb25jYXQIY29uc3RhbnQEC2NyYWZ0X3RpZXI6A2kycw5nbG9iYWwuaW50Lmdl
dAhjb25zdGFudAQKY3JhZnRfbW9kZQhjb25zdGFudAQBLgNpMnMOZ2xvYmFsLmludC5nZXQIY29uc3Rh
bnQEDGNyYWZ0X291dHB1dA5nbG9iYWwuaW50LmdldAhjb25zdGFudAQKY3JhZnRfdGllchFnbG9iYWwu
ZG91YmxlLnNldAZjb25jYXQGY29uY2F0BmNvbmNhdAhjb25zdGFudAQMY3JhZnRfY291bnQ6A2kycw5n
bG9iYWwuaW50LmdldAhjb25zdGFudAQKY3JhZnRfbW9kZQhjb25zdGFudAQBLgNpMnMOZ2xvYmFsLmlu
dC5nZXQIY29uc3RhbnQEDGNyYWZ0X291dHB1dBFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQLY3Jh
ZnRfY291bnQPZ2VuZXJpYy5leGVjdXRlCGNvbnN0YW50BBJjcmFmdCBzY3JpcHQgY2hlY2sOZ2xvYmFs
LmludC5zZXQIY29uc3RhbnQEDGNyYWZ0X3N0YXR1cwhjb25zdGFudAJmAAAADGdlbmVyaWMuc3RvcAhj
b25zdGFudAQSY3JhZnQgc2NyaXB0IGNoZWNrDGdlbmVyaWMuc3RvcAZjb25jYXQGY29uY2F0BmNvbmNh
dAhjb25zdGFudAQGY3JhZnQgA2kycw5nbG9iYWwuaW50LmdldAhjb25zdGFudAQKY3JhZnRfbW9kZQhj
b25zdGFudAQBOgNpMnMOZ2xvYmFsLmludC5nZXQIY29uc3RhbnQEDGNyYWZ0X291dHB1dBNnZW5lcmlj
LmV4ZWN1dGVzeW5jBmNvbmNhdAZjb25jYXQGY29uY2F0CGNvbnN0YW50BAZjcmFmdCADaTJzDmdsb2Jh
bC5pbnQuZ2V0CGNvbnN0YW50BApjcmFmdF9tb2RlCGNvbnN0YW50BAE6A2kycw5nbG9iYWwuaW50Lmdl
dAhjb25zdGFudAQMY3JhZnRfb3V0cHV0DmdlbmVyaWMuZ290b2lmCGNvbnN0YW50Ag0AAAAOY29tcGFy
aXNvbi5pbnQOZ2xvYmFsLmludC5nZXQIY29uc3RhbnQEDGNyYWZ0X3N0YXR1cwhjb25zdGFudAQBPghj
b25zdGFudALHAAAADmdsb2JhbC5pbnQuc2V0CGNvbnN0YW50BAxjcmFmdF9zdGF0dXMIY29uc3RhbnQC
yAAAAA5nbG9iYWwuaW50LnNldAhjb25zdGFudAQKY3JhZnRfYnVzeQhjb25zdGFudAIAAAAA
:global int craft_mode
:global int craft_output
:local int max

key.0()

(global.int.get("craft_busy") == 0 & isopen("factory"))

  global.int.set("craft_busy", 1)
  global.int.set("craft_require_tier", 0)
  global.double.set("craft_require_count", 0.0)
  global.int.set("craft_tier:" . craft_mode . "." . craft_output, global.int.get("craft_tier"))
  global.double.set("craft_count:" . craft_mode . "." . craft_output, global.double.get("craft_count"))
  
  execute("craft script check")
  global.int.set("craft_status", 102) ; Processing
  stop("craft script check")

  stop("craft " . craft_mode . ":" . craft_output)
  executesync("craft " . craft_mode . ":" . craft_output)

; Preserve status if its already in a terminal state
end: gotoif(end2, global.int.get("craft_status") > 199)
  global.int.set("craft_status", 200) ; OK
end2: global.int.set("craft_busy", 0)


craft tier up 1 Impulse on 1
DWNyYWZ0IHRpZXIgdXABAAAABWtleS4xAQAAAA5jb21wYXJpc29uLmludA5nbG9iYWwuaW50LmdldAhj
b25zdGFudAQKY3JhZnRfYnVzeQhjb25zdGFudAQCPT0IY29uc3RhbnQCAAAAAAEAAAAOZ2xvYmFsLmlu
dC5zZXQIY29uc3RhbnQECmNyYWZ0X3RpZXIOYXJpdGhtZXRpYy5pbnQOYXJpdGhtZXRpYy5pbnQOZ2xv
YmFsLmludC5nZXQIY29uc3RhbnQECmNyYWZ0X3RpZXIIY29uc3RhbnQEA21vZAhjb25zdGFudAIKAAAA
CGNvbnN0YW50BAErCGNvbnN0YW50AgEAAAA=
:global int craft_tier

key.1()
(global.int.get("craft_busy") == 0)

craft_tier = (craft_tier % 10) + 1


craft mode up 2 Impulse on 2
DWNyYWZ0IG1vZGUgdXABAAAABWtleS4yAQAAAA5jb21wYXJpc29uLmludA5nbG9iYWwuaW50LmdldAhj
b25zdGFudAQKY3JhZnRfYnVzeQhjb25zdGFudAQCPT0IY29uc3RhbnQCAAAAAAIAAAAOZ2xvYmFsLmlu
dC5zZXQIY29uc3RhbnQECmNyYWZ0X21vZGUOYXJpdGhtZXRpYy5pbnQOYXJpdGhtZXRpYy5pbnQOZ2xv
YmFsLmludC5nZXQIY29uc3RhbnQECmNyYWZ0X21vZGUIY29uc3RhbnQEA21vZAhjb25zdGFudAIDAAAA
CGNvbnN0YW50BAErCGNvbnN0YW50AgEAAAAOZ2xvYmFsLmludC5zZXQIY29uc3RhbnQEDGNyYWZ0X291
dHB1dAhjb25zdGFudAIBAAAA
:global int craft_mode
:global int craft_output

key.2()
(global.int.get("craft_busy") == 0)

craft_mode = (craft_mode % 3) + 1
craft_output = 1


craft output up 2 Impulse on 3
D2NyYWZ0IG91dHB1dCB1cAEAAAAFa2V5LjMBAAAADmNvbXBhcmlzb24uaW50Dmdsb2JhbC5pbnQuZ2V0
CGNvbnN0YW50BApjcmFmdF9idXN5CGNvbnN0YW50BAI9PQhjb25zdGFudAIAAAAAAgAAAA1sb2NhbC5p
bnQuc2V0CGNvbnN0YW50BANtYXgOYXJpdGhtZXRpYy5pbnQOYXJpdGhtZXRpYy5pbnQIY29uc3RhbnQC
9OjHAAhjb25zdGFudAQBLw5hcml0aG1ldGljLmludAhjb25zdGFudAJkAAAACGNvbnN0YW50BANwb3cO
Z2xvYmFsLmludC5nZXQIY29uc3RhbnQECmNyYWZ0X21vZGUIY29uc3RhbnQEA21vZAhjb25zdGFudAJk
AAAADmdsb2JhbC5pbnQuc2V0CGNvbnN0YW50BAxjcmFmdF9vdXRwdXQOYXJpdGhtZXRpYy5pbnQOYXJp
dGhtZXRpYy5pbnQOZ2xvYmFsLmludC5nZXQIY29uc3RhbnQEDGNyYWZ0X291dHB1dAhjb25zdGFudAQD
bW9kDWxvY2FsLmludC5nZXQIY29uc3RhbnQEA21heAhjb25zdGFudAQBKwhjb25zdGFudAIBAAAA
:global int craft_mode
:global int craft_output
:local int max

key.3()
(global.int.get("craft_busy") == 0)

max = (13101300 / (100 ^ craft_mode)) % 100
craft_output = (craft_output % max) + 1


craft count up 5 Impulse on 9
DmNyYWZ0IGNvdW50IHVwAQAAAAVrZXkuOQEAAAAOY29tcGFyaXNvbi5pbnQOZ2xvYmFsLmludC5nZXQI
Y29uc3RhbnQECmNyYWZ0X2J1c3kIY29uc3RhbnQEAj09CGNvbnN0YW50AgAAAAAFAAAADmdlbmVyaWMu
Z290b2lmCGNvbnN0YW50AmMAAAARY29tcGFyaXNvbi5kb3VibGURZ2xvYmFsLmRvdWJsZS5nZXQIY29u
c3RhbnQEC2NyYWZ0X2NvdW50CGNvbnN0YW50BAE+CGNvbnN0YW50AwAAAABAdytBDmdlbmVyaWMuZ290
b2lmCGNvbnN0YW50AgQAAAARY29tcGFyaXNvbi5kb3VibGURZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3Rh
bnQEC2NyYWZ0X2NvdW50CGNvbnN0YW50BAE8CGNvbnN0YW50AwAAAAAAAPA/EGxvY2FsLmRvdWJsZS5z
ZXQIY29uc3RhbnQEA3Bvdwxkb3VibGUuZmxvb3IRYXJpdGhtZXRpYy5kb3VibGUIY29uc3RhbnQDexSu
R+F6hD8IY29uc3RhbnQEASsRYXJpdGhtZXRpYy5kb3VibGURZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3Rh
bnQEC2NyYWZ0X2NvdW50CGNvbnN0YW50BANsb2cIY29uc3RhbnQDAAAAAAAAJEAQbG9jYWwuZG91Ymxl
LnNldAhjb25zdGFudAQDaW5jEWFyaXRobWV0aWMuZG91YmxlCGNvbnN0YW50AwAAAAAAACRACGNvbnN0
YW50BANwb3cQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQDcG93EWdsb2JhbC5kb3VibGUuc2V0CGNv
bnN0YW50BAtjcmFmdF9jb3VudBFhcml0aG1ldGljLmRvdWJsZRFnbG9iYWwuZG91YmxlLmdldAhjb25z
dGFudAQLY3JhZnRfY291bnQIY29uc3RhbnQEASsQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQDaW5j
:global double craft_count
:local double pow
:local double inc

key.9()
(global.int.get("craft_busy") == 0)

   gotoif(99, craft_count > 900000.0)
   gotoif(a, craft_count < 1.0)
   pow = double.floor(0.01 + (craft_count // 10.0))
a: inc = 10.0 ^ pow
   craft_count = craft_count + inc


craft count down 5 Impulse on 8
EGNyYWZ0IGNvdW50IGRvd24BAAAABWtleS44AQAAAA5jb21wYXJpc29uLmludA5nbG9iYWwuaW50Lmdl
dAhjb25zdGFudAQKY3JhZnRfYnVzeQhjb25zdGFudAQCPT0IY29uc3RhbnQCAAAAAAUAAAAOZ2VuZXJp
Yy5nb3RvaWYIY29uc3RhbnQCAwAAABFjb21wYXJpc29uLmRvdWJsZRFnbG9iYWwuZG91YmxlLmdldAhj
b25zdGFudAQLY3JhZnRfY291bnQIY29uc3RhbnQEATwIY29uc3RhbnQDAAAAAAAA8D8QbG9jYWwuZG91
YmxlLnNldAhjb25zdGFudAQDcG93DGRvdWJsZS5mbG9vchFhcml0aG1ldGljLmRvdWJsZQhjb25zdGFu
dAN7FK5H4XqEvwhjb25zdGFudAQBKxFhcml0aG1ldGljLmRvdWJsZRFnbG9iYWwuZG91YmxlLmdldAhj
b25zdGFudAQLY3JhZnRfY291bnQIY29uc3RhbnQEA2xvZwhjb25zdGFudAMAAAAAAAAkQBBsb2NhbC5k
b3VibGUuc2V0CGNvbnN0YW50BANpbmMRYXJpdGhtZXRpYy5kb3VibGUIY29uc3RhbnQDAAAAAAAAJEAI
Y29uc3RhbnQEA3BvdxBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BANwb3cOZ2VuZXJpYy5nb3RvaWYI
Y29uc3RhbnQCYwAAABFjb21wYXJpc29uLmRvdWJsZRFhcml0aG1ldGljLmRvdWJsZRFnbG9iYWwuZG91
YmxlLmdldAhjb25zdGFudAQLY3JhZnRfY291bnQIY29uc3RhbnQEAS0QbG9jYWwuZG91YmxlLmdldAhj
b25zdGFudAQDaW5jCGNvbnN0YW50BAE8CGNvbnN0YW50AwAAAAAAAPA/EWdsb2JhbC5kb3VibGUuc2V0
CGNvbnN0YW50BAtjcmFmdF9jb3VudBFhcml0aG1ldGljLmRvdWJsZRFnbG9iYWwuZG91YmxlLmdldAhj
b25zdGFudAQLY3JhZnRfY291bnQIY29uc3RhbnQEAS0QbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQD
aW5j
:global double craft_count
:local double pow
:local double inc

key.8()
(global.int.get("craft_busy") == 0)

   gotoif(a, craft_count < 1.0)
   pow = double.floor(-0.01 + (craft_count // 10.0))
a: inc = 10.0 ^ pow
   gotoif(99, craft_count - inc < 1.0)
   craft_count = craft_count - inc


craft inventory use 1 Impulse on 5
E2NyYWZ0IGludmVudG9yeSB1c2UBAAAABWtleS41AQAAAA5jb21wYXJpc29uLmludA5nbG9iYWwuaW50
LmdldAhjb25zdGFudAQKY3JhZnRfYnVzeQhjb25zdGFudAQCPT0IY29uc3RhbnQCAAAAAAEAAAARZ2xv
YmFsLmRvdWJsZS5zZXQIY29uc3RhbnQED2NyYWZ0X2ludmVudG9yeRFhcml0aG1ldGljLmRvdWJsZQhj
b25zdGFudAMAAAAAAADwPwhjb25zdGFudAQBLRFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3Jh
ZnRfaW52ZW50b3J5
:global double craft_inventory

key.5()
(global.int.get("craft_busy") == 0)

craft_inventory = 1.0 - craft_inventory


craft script check 3 Uses a timing hack to determine if the target script exists, and sets status to 404 if it doesn't.
EmNyYWZ0IHNjcmlwdCBjaGVjawAAAAAAAAAAAwAAABNnZW5lcmljLmV4ZWN1dGVzeW5jBmNvbmNhdAZj
b25jYXQGY29uY2F0CGNvbnN0YW50BAZjcmFmdCADaTJzDmdsb2JhbC5pbnQuZ2V0CGNvbnN0YW50BApj
cmFmdF9tb2RlCGNvbnN0YW50BAE6A2kycw5nbG9iYWwuaW50LmdldAhjb25zdGFudAQMY3JhZnRfb3V0
cHV0Dmdsb2JhbC5pbnQuc2V0CGNvbnN0YW50BAxjcmFmdF9zdGF0dXMIY29uc3RhbnQClAEAAAxnZW5l
cmljLmdvdG8IY29uc3RhbnQCAwAAAA==
:global int craft_mode
:global int craft_output

executesync("craft " . craft_mode . ":" . craft_output)
global.int.set("craft_status", 404) ; Script not found
loop: goto(loop)


craft output producer ? Impulse on 4
  • while in town
  • while in producer mode (1)
TODO
craft output machine 4 Impulse on 4
  • while in the factory
  • while in machine mode (2)
FGNyYWZ0IG91dHB1dCBtYWNoaW5lAQAAAAVrZXkuNAEAAAAPY29tcGFyaXNvbi5ib29sD2NvbXBhcmlz
b24uYm9vbA5jb21wYXJpc29uLmludA5nbG9iYWwuaW50LmdldAhjb25zdGFudAQKY3JhZnRfYnVzeQhj
b25zdGFudAQCPT0IY29uc3RhbnQCAAAAAAhjb25zdGFudAQBJg5jb21wYXJpc29uLmludA5nbG9iYWwu
aW50LmdldAhjb25zdGFudAQKY3JhZnRfbW9kZQhjb25zdGFudAQCPT0IY29uc3RhbnQCAgAAAAhjb25z
dGFudAQBJhJ0b3duLndpbmRvdy5pc29wZW4IY29uc3RhbnQEB2ZhY3RvcnkEAAAADmdsb2JhbC5pbnQu
c2V0CGNvbnN0YW50BAF4A2QyaQxkb3VibGUuZmxvb3IRYXJpdGhtZXRpYy5kb3VibGURYXJpdGhtZXRp
Yy5kb3VibGURYXJpdGhtZXRpYy5kb3VibGURYXJpdGhtZXRpYy5kb3VibGUGdmVjMi54Dm1vdXNlLnBv
c2l0aW9uCGNvbnN0YW50BAEvA2kyZAxzY3JlZW4ud2lkdGgIY29uc3RhbnQEAS0IY29uc3RhbnQDPQrX
o3A92j8IY29uc3RhbnQEAS8IY29uc3RhbnQDmpmZmZmZuT8IY29uc3RhbnQEASsIY29uc3RhbnQDAAAA
AAAA8D8OZ2xvYmFsLmludC5zZXQIY29uc3RhbnQEAXkDZDJpDGRvdWJsZS5mbG9vchFhcml0aG1ldGlj
LmRvdWJsZRFhcml0aG1ldGljLmRvdWJsZQhjb25zdGFudAOamZmZmZnpPwhjb25zdGFudAQBLRFhcml0
aG1ldGljLmRvdWJsZQZ2ZWMyLnkObW91c2UucG9zaXRpb24IY29uc3RhbnQEAS8DaTJkDXNjcmVlbi5o
ZWlnaHQIY29uc3RhbnQEAS8IY29uc3RhbnQDMQisHFpkyz8OZ2VuZXJpYy5nb3RvaWYIY29uc3RhbnQC
YwAAAA9jb21wYXJpc29uLmJvb2wPY29tcGFyaXNvbi5ib29sD2NvbXBhcmlzb24uYm9vbA5jb21wYXJp
c29uLmludA5nbG9iYWwuaW50LmdldAhjb25zdGFudAQBeAhjb25zdGFudAQBPAhjb25zdGFudAIBAAAA
CGNvbnN0YW50BAF8DmNvbXBhcmlzb24uaW50Dmdsb2JhbC5pbnQuZ2V0CGNvbnN0YW50BAF4CGNvbnN0
YW50BAE+CGNvbnN0YW50AgUAAAAIY29uc3RhbnQEAXwOY29tcGFyaXNvbi5pbnQOZ2xvYmFsLmludC5n
ZXQIY29uc3RhbnQEAXkIY29uc3RhbnQEATwIY29uc3RhbnQCAAAAAAhjb25zdGFudAQBfA5jb21wYXJp
c29uLmludA5nbG9iYWwuaW50LmdldAhjb25zdGFudAQBeQhjb25zdGFudAQBPghjb25zdGFudAIBAAAA
Dmdsb2JhbC5pbnQuc2V0CGNvbnN0YW50BAxjcmFmdF9vdXRwdXQOYXJpdGhtZXRpYy5pbnQOZ2xvYmFs
LmludC5nZXQIY29uc3RhbnQEAXgIY29uc3RhbnQEASsOYXJpdGhtZXRpYy5pbnQOZ2xvYmFsLmludC5n
ZXQIY29uc3RhbnQEAXkIY29uc3RhbnQEASoIY29uc3RhbnQCBQAAAA==
:global int craft_output
:global int y
:global int x

key.4()
(global.int.get("craft_busy") == 0 & global.int.get("craft_mode") == 2 & isopen("factory"))

x = d2i(floor(((x(position()) / i2d(width()) - 0.41) / 0.10) + 1.0))
y = d2i(floor(((0.80 - y(position()) / i2d(height())) / 0.214)))

gotoif(99, x<1


craft ingot 13 Inputs:
  • craft_tier:ingot (int)
  • craft_count:ingot (double)
  • craft_verify:ingot (int)
    • If 1, will only count and not create ingots

Note: will always use ingots in inventory, regardless of craft_inventory setting. Note: will exit immediately if craft_status contains a terminal value.

C2NyYWZ0IGluZ290AAAAAAAAAAANAAAADWxvY2FsLmludC5zZXQIY29uc3RhbnQEC3ZlcmlmeV9tb2Rl
Dmdsb2JhbC5pbnQuZ2V0CGNvbnN0YW50BBJjcmFmdF92ZXJpZnk6aW5nb3QOZ2xvYmFsLmludC5zZXQI
Y29uc3RhbnQEEmNyYWZ0X3ZlcmlmeTppbmdvdAhjb25zdGFudAIAAAAADmdlbmVyaWMuZ290b2lmCGNv
bnN0YW50AmMAAAAPY29tcGFyaXNvbi5ib29sD2NvbXBhcmlzb24uYm9vbA9jb21wYXJpc29uLmJvb2wO
Y29tcGFyaXNvbi5pbnQOZ2xvYmFsLmludC5nZXQIY29uc3RhbnQEEGNyYWZ0X3RpZXI6aW5nb3QIY29u
c3RhbnQEATwIY29uc3RhbnQCAQAAAAhjb25zdGFudAQBfA5jb21wYXJpc29uLmludA5nbG9iYWwuaW50
LmdldAhjb25zdGFudAQQY3JhZnRfdGllcjppbmdvdAhjb25zdGFudAQBPghjb25zdGFudAIKAAAACGNv
bnN0YW50BAF8EWNvbXBhcmlzb24uZG91YmxlEWdsb2JhbC5kb3VibGUuZ2V0CGNvbnN0YW50BBFjcmFm
dF9jb3VudDppbmdvdAhjb25zdGFudAQCPD0IY29uc3RhbnQDAAAAAAAAAAAIY29uc3RhbnQEAXwOY29t
cGFyaXNvbi5pbnQOZ2xvYmFsLmludC5nZXQIY29uc3RhbnQEDGNyYWZ0X3N0YXR1cwhjb25zdGFudAQB
Pghjb25zdGFudALHAAAADmdlbmVyaWMuZ290b2lmCGNvbnN0YW50AmMAAAARY29tcGFyaXNvbi5kb3Vi
bGURZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3RhbnQEEWNyYWZ0X2NvdW50OmluZ290CGNvbnN0YW50BAI8
PRNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BAVpbmdvdA5nbG9iYWwuaW50LmdldAhjb25zdGFu
dAQQY3JhZnRfdGllcjppbmdvdA5nZW5lcmljLmdvdG9pZghjb25zdGFudAILAAAAEWNvbXBhcmlzb24u
ZG91YmxlEWdsb2JhbC5kb3VibGUuZ2V0CGNvbnN0YW50BBFjcmFmdF9jb3VudDppbmdvdAhjb25zdGFu
dAQBPhFhcml0aG1ldGljLmRvdWJsZRFhcml0aG1ldGljLmRvdWJsZRNmYWN0b3J5Lml0ZW1zLmNvdW50
CGNvbnN0YW50BAVpbmdvdA5nbG9iYWwuaW50LmdldAhjb25zdGFudAQQY3JhZnRfdGllcjppbmdvdAhj
b25zdGFudAQBKxNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BARkdXN0Dmdsb2JhbC5pbnQuZ2V0
CGNvbnN0YW50BBBjcmFmdF90aWVyOmluZ290CGNvbnN0YW50BAEtCGNvbnN0YW50AwAAAAAAAPA/Dmdl
bmVyaWMuZ290b2lmCGNvbnN0YW50AmMAAAAOY29tcGFyaXNvbi5pbnQNbG9jYWwuaW50LmdldAhjb25z
dGFudAQLdmVyaWZ5X21vZGUIY29uc3RhbnQEAT4IY29uc3RhbnQCAAAAABFnZW5lcmljLndhaXR3aGls
ZRZmYWN0b3J5Lm1hY2hpbmUuYWN0aXZlCGNvbnN0YW50BARvdmVuD2ZhY3RvcnkucHJvZHVjZQhjb25z
dGFudAQEZHVzdA5nbG9iYWwuaW50LmdldAhjb25zdGFudAQQY3JhZnRfdGllcjppbmdvdAtkb3VibGUu
Y2VpbBFhcml0aG1ldGljLmRvdWJsZRFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQRY3JhZnRfY291
bnQ6aW5nb3QIY29uc3RhbnQEAS0TZmFjdG9yeS5pdGVtcy5jb3VudAhjb25zdGFudAQFaW5nb3QOZ2xv
YmFsLmludC5nZXQIY29uc3RhbnQEEGNyYWZ0X3RpZXI6aW5nb3QIY29uc3RhbnQEBG92ZW4RZ2VuZXJp
Yy53YWl0dW50aWwRY29tcGFyaXNvbi5kb3VibGUTZmFjdG9yeS5pdGVtcy5jb3VudAhjb25zdGFudAQF
aW5nb3QOZ2xvYmFsLmludC5nZXQIY29uc3RhbnQEEGNyYWZ0X3RpZXI6aW5nb3QIY29uc3RhbnQEAj49
EWdsb2JhbC5kb3VibGUuZ2V0CGNvbnN0YW50BBFjcmFmdF9jb3VudDppbmdvdAxnZW5lcmljLmdvdG8I
Y29uc3RhbnQCYwAAAA5nbG9iYWwuaW50LnNldAhjb25zdGFudAQSY3JhZnRfcmVxdWlyZV90aWVyDmds
b2JhbC5pbnQuZ2V0CGNvbnN0YW50BBBjcmFmdF90aWVyOmluZ290EWdsb2JhbC5kb3VibGUuc2V0CGNv
bnN0YW50BBNjcmFmdF9yZXF1aXJlX2NvdW50EWdsb2JhbC5kb3VibGUuZ2V0CGNvbnN0YW50BBFjcmFm
dF9jb3VudDppbmdvdA5nbG9iYWwuaW50LnNldAhjb25zdGFudAQMY3JhZnRfc3RhdHVzCGNvbnN0YW50
ApwBAAA=
:local int verify_mode

; tier = global.int.get("craft_tier:ingot")
; count = global.double.get("craft_count:ingot")
verify_mode = global.int.get("craft_verify:ingot")
global.int.set("craft_verify:ingot", 0)
gotoif(99, global.int.get("craft_tier:ingot") < 1 | global.int.get("craft_tier:ingot") > 10 | global.double.get("craft_count:ingot") <= 0.0 | global.int.get("craft_status") > 199)

gotoif(99, global.double.get("craft_count:ingot") <= count("ingot", global.int.get("craft_tier:ingot")))
gotoif(bad, global.double.get("craft_count:ingot") > count("ingot", global.int.get("craft_tier:ingot")) + count("dust", global.int.get("craft_tier:ingot")) - 1.0)
gotoif(99, verify_mode > 0)
  waitwhile(active("oven"))
  produce("dust", global.int.get("craft_tier:ingot"), ceil(global.double.get("craft_count:ingot") - count("ingot", global.int.get("craft_tier:ingot"))), "oven")
  waituntil(count("ingot", global.int.get("craft_tier:ingot")) >= global.double.get("craft_count:ingot"))
  goto(99) ; ok

bad: global.int.set("craft_require_tier", global.int.get("craft_tier:ingot"))
  global.double.set("craft_require_count", global.double.get("craft_count:ingot"))
  global.int.set("craft_status", 412)


Parts scripts

Chips (1)

Chip recipe.png

Name Lines Code
craft 3:1 20
CWNyYWZ0IDM6MQAAAAAAAAAAFAAAAA1sb2NhbC5pbnQuc2V0CGNvbnN0YW50BAR0aWVyDmdsb2JhbC5p
bnQuZ2V0CGNvbnN0YW50BA5jcmFmdF90aWVyOjMuMRBsb2NhbC5kb3VibGUuc2V0CGNvbnN0YW50BAVj
b3VudBFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfY291bnQ6My4xDmdlbmVyaWMuZ290
b2lmCGNvbnN0YW50AmMAAAAPY29tcGFyaXNvbi5ib29sD2NvbXBhcmlzb24uYm9vbA5jb21wYXJpc29u
LmludA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BAE8CGNvbnN0YW50AgEAAAAI
Y29uc3RhbnQEAXwOY29tcGFyaXNvbi5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25z
dGFudAQBPghjb25zdGFudAIFAAAACGNvbnN0YW50BAF8EWNvbXBhcmlzb24uZG91YmxlEGxvY2FsLmRv
dWJsZS5nZXQIY29uc3RhbnQEBWNvdW50CGNvbnN0YW50BAE8CGNvbnN0YW50AwAAAAAAAPA/E2dlbmVy
aWMuZXhlY3V0ZXN5bmMIY29uc3RhbnQEDGNyYWZ0IDM6MTppbhBsb2NhbC5kb3VibGUuc2V0CGNvbnN0
YW50BAhib2FyZF9oaRFhcml0aG1ldGljLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVj
b3VudAhjb25zdGFudAQBKgNpMmQOYXJpdGhtZXRpYy5pbnQOYXJpdGhtZXRpYy5pbnQIY29uc3RhbnQC
AigNAAhjb25zdGFudAQBLw5hcml0aG1ldGljLmludAhjb25zdGFudAIKAAAACGNvbnN0YW50BANwb3cN
bG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQDbW9kCGNvbnN0YW50AgoAAAAQbG9j
YWwuZG91YmxlLnNldAhjb25zdGFudAQKY2lyY3VpdF9oaRFhcml0aG1ldGljLmRvdWJsZRBsb2NhbC5k
b3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQBKgNpMmQOYXJpdGhtZXRpYy5pbnQOYXJp
dGhtZXRpYy5pbnQIY29uc3RhbnQCpGwDAAhjb25zdGFudAQBLw5hcml0aG1ldGljLmludAhjb25zdGFu
dAIKAAAACGNvbnN0YW50BANwb3cNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQD
bW9kCGNvbnN0YW50AgoAAAAOZ2xvYmFsLmludC5zZXQIY29uc3RhbnQEEGNyYWZ0X3RpZXI6aW5nb3QO
YXJpdGhtZXRpYy5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQBKghjb25z
dGFudAICAAAAEWdsb2JhbC5kb3VibGUuc2V0CGNvbnN0YW50BBFjcmFmdF9jb3VudDppbmdvdBFhcml0
aG1ldGljLmRvdWJsZQpkb3VibGUubWF4CGNvbnN0YW50AwAAAAAAAAAAEWFyaXRobWV0aWMuZG91Ymxl
EGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQECGJvYXJkX2hpCGNvbnN0YW50BAEtEWFyaXRobWV0aWMu
ZG91YmxlEWdsb2JhbC5kb3VibGUuZ2V0CGNvbnN0YW50BA9jcmFmdF9pbnZlbnRvcnkIY29uc3RhbnQE
ASoRYXJpdGhtZXRpYy5kb3VibGUTZmFjdG9yeS5pdGVtcy5jb3VudAhjb25zdGFudAQFcGxhdGUOYXJp
dGhtZXRpYy5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQBKghjb25zdGFu
dAICAAAACGNvbnN0YW50BAErE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEDXBsYXRlLmNpcmN1
aXQOYXJpdGhtZXRpYy5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQBKghj
b25zdGFudAICAAAACGNvbnN0YW50BAErCmRvdWJsZS5tYXgIY29uc3RhbnQDAAAAAAAAAAALZG91Ymxl
LmNlaWwRYXJpdGhtZXRpYy5kb3VibGURYXJpdGhtZXRpYy5kb3VibGUQbG9jYWwuZG91YmxlLmdldAhj
b25zdGFudAQKY2lyY3VpdF9oaQhjb25zdGFudAQBLRFhcml0aG1ldGljLmRvdWJsZRFnbG9iYWwuZG91
YmxlLmdldAhjb25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0YW50BAEqEWFyaXRobWV0aWMuZG91
YmxlE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEBWNhYmxlDmFyaXRobWV0aWMuaW50DWxvY2Fs
LmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEASoIY29uc3RhbnQCAgAAAAhjb25zdGFudAQB
KxNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BAdjaXJjdWl0DmFyaXRobWV0aWMuaW50DWxvY2Fs
LmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEASoIY29uc3RhbnQCAgAAAAhjb25zdGFudAQB
Lwhjb25zdGFudAMAAAAAAAAAQBNnZW5lcmljLmV4ZWN1dGVzeW5jCGNvbnN0YW50BAtjcmFmdCBpbmdv
dA5nZW5lcmljLmdvdG9pZghjb25zdGFudAJjAAAADmNvbXBhcmlzb24uaW50Dmdsb2JhbC5pbnQuZ2V0
CGNvbnN0YW50BAxjcmFmdF9zdGF0dXMIY29uc3RhbnQEAT4IY29uc3RhbnQCxwAAABBsb2NhbC5kb3Vi
bGUuc2V0CGNvbnN0YW50BAhib2FyZF9sbxFhcml0aG1ldGljLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0
CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQBKgNpMmQOYXJpdGhtZXRpYy5pbnQOYXJpdGhtZXRpYy5p
bnQIY29uc3RhbnQCmjANAAhjb25zdGFudAQBLw5hcml0aG1ldGljLmludAhjb25zdGFudAIKAAAACGNv
bnN0YW50BANwb3cNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQDbW9kCGNvbnN0
YW50AgoAAAAQbG9jYWwuZG91YmxlLnNldAhjb25zdGFudAQKY2lyY3VpdF9sbxFhcml0aG1ldGljLmRv
dWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQBKghjb25zdGFudAMA
AAAAAAAAQA5nbG9iYWwuaW50LnNldAhjb25zdGFudAQQY3JhZnRfdGllcjppbmdvdA5hcml0aG1ldGlj
LmludA5hcml0aG1ldGljLmludA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BAEq
CGNvbnN0YW50AgIAAAAIY29uc3RhbnQEAS0IY29uc3RhbnQCAQAAABFnbG9iYWwuZG91YmxlLnNldAhj
b25zdGFudAQRY3JhZnRfY291bnQ6aW5nb3QRYXJpdGhtZXRpYy5kb3VibGUKZG91YmxlLm1heAhjb25z
dGFudAMAAAAAAAAAABFhcml0aG1ldGljLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAhi
b2FyZF9sbwhjb25zdGFudAQBLRFhcml0aG1ldGljLmRvdWJsZRFnbG9iYWwuZG91YmxlLmdldAhjb25z
dGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0YW50BAEqEWFyaXRobWV0aWMuZG91YmxlE2ZhY3Rvcnku
aXRlbXMuY291bnQIY29uc3RhbnQEBXBsYXRlDmFyaXRobWV0aWMuaW50DmFyaXRobWV0aWMuaW50DWxv
Y2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEASoIY29uc3RhbnQCAgAAAAhjb25zdGFu
dAQBLQhjb25zdGFudAIBAAAACGNvbnN0YW50BAErE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQE
DXBsYXRlLmNpcmN1aXQOYXJpdGhtZXRpYy5pbnQOYXJpdGhtZXRpYy5pbnQNbG9jYWwuaW50LmdldAhj
b25zdGFudAQEdGllcghjb25zdGFudAQBKghjb25zdGFudAICAAAACGNvbnN0YW50BAEtCGNvbnN0YW50
AgEAAAAIY29uc3RhbnQEASsKZG91YmxlLm1heAhjb25zdGFudAMAAAAAAAAAAAtkb3VibGUuY2VpbBFh
cml0aG1ldGljLmRvdWJsZRFhcml0aG1ldGljLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50
BApjaXJjdWl0X2xvCGNvbnN0YW50BAEtEWFyaXRobWV0aWMuZG91YmxlEWdsb2JhbC5kb3VibGUuZ2V0
CGNvbnN0YW50BA9jcmFmdF9pbnZlbnRvcnkIY29uc3RhbnQEASoRYXJpdGhtZXRpYy5kb3VibGUTZmFj
dG9yeS5pdGVtcy5jb3VudAhjb25zdGFudAQFY2FibGUOYXJpdGhtZXRpYy5pbnQOYXJpdGhtZXRpYy5p
bnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQBKghjb25zdGFudAICAAAACGNv
bnN0YW50BAEtCGNvbnN0YW50AgEAAAAIY29uc3RhbnQEASsTZmFjdG9yeS5pdGVtcy5jb3VudAhjb25z
dGFudAQHY2lyY3VpdA5hcml0aG1ldGljLmludA5hcml0aG1ldGljLmludA1sb2NhbC5pbnQuZ2V0CGNv
bnN0YW50BAR0aWVyCGNvbnN0YW50BAEqCGNvbnN0YW50AgIAAAAIY29uc3RhbnQEAS0IY29uc3RhbnQC
AQAAAAhjb25zdGFudAQBLwhjb25zdGFudAMAAAAAAAAAQBNnZW5lcmljLmV4ZWN1dGVzeW5jCGNvbnN0
YW50BAtjcmFmdCBpbmdvdA5nbG9iYWwuaW50LnNldAhjb25zdGFudAQQY3JhZnRfc3RhdHVzOjMuMQhj
b25zdGFudAIBAAAAD2dlbmVyaWMuZXhlY3V0ZQhjb25zdGFudAQPY3JhZnQgMzoxOmJvYXJkD2dlbmVy
aWMuZXhlY3V0ZQhjb25zdGFudAQRY3JhZnQgMzoxOmNpcmN1aXQRZ2VuZXJpYy53YWl0dW50aWwPY29t
cGFyaXNvbi5ib29sD2NvbXBhcmlzb24uYm9vbA9jb21wYXJpc29uLmJvb2wPY29tcGFyaXNvbi5ib29s
DmNvbXBhcmlzb24uaW50Dmdsb2JhbC5pbnQuZ2V0CGNvbnN0YW50BBBjcmFmdF9zdGF0dXM6My4xCGNv
bnN0YW50BAI+PQhjb25zdGFudAIHAAAACGNvbnN0YW50BAEmEWNvbXBhcmlzb24uZG91YmxlE2ZhY3Rv
cnkuaXRlbXMuY291bnQIY29uc3RhbnQEDXBsYXRlLmNpcmN1aXQOYXJpdGhtZXRpYy5pbnQOYXJpdGht
ZXRpYy5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQBKghjb25zdGFudAIC
AAAACGNvbnN0YW50BAEtCGNvbnN0YW50AgEAAAAIY29uc3RhbnQEAj49EGxvY2FsLmRvdWJsZS5nZXQI
Y29uc3RhbnQECGJvYXJkX2xvCGNvbnN0YW50BAEmEWNvbXBhcmlzb24uZG91YmxlE2ZhY3RvcnkuaXRl
bXMuY291bnQIY29uc3RhbnQEDXBsYXRlLmNpcmN1aXQOYXJpdGhtZXRpYy5pbnQNbG9jYWwuaW50Lmdl
dAhjb25zdGFudAQEdGllcghjb25zdGFudAQBKghjb25zdGFudAICAAAACGNvbnN0YW50BAI+PRBsb2Nh
bC5kb3VibGUuZ2V0CGNvbnN0YW50BAhib2FyZF9oaQhjb25zdGFudAQBJhFjb21wYXJpc29uLmRvdWJs
ZRNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BAdjaXJjdWl0DmFyaXRobWV0aWMuaW50DmFyaXRo
bWV0aWMuaW50DWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEASoIY29uc3RhbnQC
AgAAAAhjb25zdGFudAQBLQhjb25zdGFudAIBAAAACGNvbnN0YW50BAI+PRBsb2NhbC5kb3VibGUuZ2V0
CGNvbnN0YW50BApjaXJjdWl0X2xvCGNvbnN0YW50BAEmEWNvbXBhcmlzb24uZG91YmxlE2ZhY3Rvcnku
aXRlbXMuY291bnQIY29uc3RhbnQEB2NpcmN1aXQOYXJpdGhtZXRpYy5pbnQNbG9jYWwuaW50LmdldAhj
b25zdGFudAQEdGllcghjb25zdGFudAQBKghjb25zdGFudAICAAAACGNvbnN0YW50BAI+PRBsb2NhbC5k
b3VibGUuZ2V0CGNvbnN0YW50BApjaXJjdWl0X2hpDWZhY3RvcnkuY3JhZnQIY29uc3RhbnQEBGNoaXAN
bG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllchBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3Vu
dA==
; Chips
:global double craft_inventory
:local int tier
:local double count
:local double board_lo
:local double board_hi
:local double circuit_lo
:local double circuit_hi

tier = global.int.get("craft_tier:3.1")
count = global.double.get("craft_count:3.1")
gotoif(99, tier < 1 | tier > 5 | count < 1.0)

; Verify ingot resources
; Also craft lower tier chips for input
executesync("craft 3:1:in")

; Ensure we have enough ingots (hi)
board_hi = count * i2d((862210 / (10 ^ tier)) % 10)
circuit_hi = count * i2d((224420 / (10 ^ tier)) % 10)
global.int.set("craft_tier:ingot", tier * 2)
global.double.set("craft_count:ingot", max(0.0, board_hi - craft_inventory * (count("plate", tier * 2) + count("plate.circuit", tier * 2))) + max(0.0, ceil((circuit_hi - craft_inventory * (count("cable", tier * 2) + count("circuit", tier * 2)))/2.0)))
executesync("craft ingot")
gotoif(99, global.int.get("craft_status") > 199)

; Ensure we have enough ingots (lo)
board_lo = count * i2d((864410 / (10 ^ tier)) % 10)
circuit_lo = count * 2.0
global.int.set("craft_tier:ingot", tier * 2 - 1)
global.double.set("craft_count:ingot", max(0.0, board_lo - craft_inventory * (count("plate", tier * 2 - 1) + count("plate.circuit", tier * 2 - 1))) + max(0.0, ceil((circuit_lo - craft_inventory * (count("cable", tier * 2 - 1) + count("circuit", tier * 2 - 1)))/2.0)))
executesync("craft ingot")

global.int.set("craft_status:3.1", 1)
execute("craft 3:1:board")
execute("craft 3:1:circuit")

waituntil(global.int.get("craft_status:3.1") >= 7 & count("plate.circuit", tier * 2 - 1) >= board_lo & count("plate.circuit", tier * 2) >= board_hi & count("circuit", tier * 2 - 1) >= circuit_lo & count("circuit", tier * 2) >= circuit_hi)
craft("chip", tier, count)


craft 3:1:in 18
DGNyYWZ0IDM6MTppbgAAAAAAAAAAEgAAAA1sb2NhbC5pbnQuc2V0CGNvbnN0YW50BAR0aWVyDmdsb2Jh
bC5pbnQuZ2V0CGNvbnN0YW50BA5jcmFmdF90aWVyOjMuMRBsb2NhbC5kb3VibGUuc2V0CGNvbnN0YW50
BAVjb3VudBFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfY291bnQ6My4xDmdsb2JhbC5p
bnQuc2V0CGNvbnN0YW50BBBjcmFmdF90aWVyOmluZ290DmFyaXRobWV0aWMuaW50DWxvY2FsLmludC5n
ZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEASoIY29uc3RhbnQCAgAAABFnbG9iYWwuZG91YmxlLnNl
dAhjb25zdGFudAQRY3JhZnRfY291bnQ6aW5nb3QRYXJpdGhtZXRpYy5kb3VibGUKZG91YmxlLm1heAhj
b25zdGFudAMAAAAAAAAAABFhcml0aG1ldGljLmRvdWJsZRFhcml0aG1ldGljLmRvdWJsZRBsb2NhbC5k
b3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQBKgNpMmQOYXJpdGhtZXRpYy5pbnQOYXJp
dGhtZXRpYy5pbnQIY29uc3RhbnQCAigNAAhjb25zdGFudAQBLw5hcml0aG1ldGljLmludAhjb25zdGFu
dAIKAAAACGNvbnN0YW50BANwb3cNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQD
bW9kCGNvbnN0YW50AgoAAAAIY29uc3RhbnQEAS0RYXJpdGhtZXRpYy5kb3VibGURZ2xvYmFsLmRvdWJs
ZS5nZXQIY29uc3RhbnQED2NyYWZ0X2ludmVudG9yeQhjb25zdGFudAQBKhFhcml0aG1ldGljLmRvdWJs
ZRNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BAVwbGF0ZQ5hcml0aG1ldGljLmludA1sb2NhbC5p
bnQuZ2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BAEqCGNvbnN0YW50AgIAAAAIY29uc3RhbnQEASsT
ZmFjdG9yeS5pdGVtcy5jb3VudAhjb25zdGFudAQNcGxhdGUuY2lyY3VpdA5hcml0aG1ldGljLmludA1s
b2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BAEqCGNvbnN0YW50AgIAAAAIY29uc3Rh
bnQEASsKZG91YmxlLm1heAhjb25zdGFudAMAAAAAAAAAAAtkb3VibGUuY2VpbBFhcml0aG1ldGljLmRv
dWJsZRFhcml0aG1ldGljLmRvdWJsZRFhcml0aG1ldGljLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNv
bnN0YW50BAVjb3VudAhjb25zdGFudAQBKgNpMmQOYXJpdGhtZXRpYy5pbnQOYXJpdGhtZXRpYy5pbnQI
Y29uc3RhbnQCpGwDAAhjb25zdGFudAQBLw5hcml0aG1ldGljLmludAhjb25zdGFudAIKAAAACGNvbnN0
YW50BANwb3cNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQDbW9kCGNvbnN0YW50
AgoAAAAIY29uc3RhbnQEAS0RYXJpdGhtZXRpYy5kb3VibGURZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3Rh
bnQED2NyYWZ0X2ludmVudG9yeQhjb25zdGFudAQBKhFhcml0aG1ldGljLmRvdWJsZRNmYWN0b3J5Lml0
ZW1zLmNvdW50CGNvbnN0YW50BAVjYWJsZQ5hcml0aG1ldGljLmludA1sb2NhbC5pbnQuZ2V0CGNvbnN0
YW50BAR0aWVyCGNvbnN0YW50BAEqCGNvbnN0YW50AgIAAAAIY29uc3RhbnQEASsTZmFjdG9yeS5pdGVt
cy5jb3VudAhjb25zdGFudAQHY2lyY3VpdA5hcml0aG1ldGljLmludA1sb2NhbC5pbnQuZ2V0CGNvbnN0
YW50BAR0aWVyCGNvbnN0YW50BAEqCGNvbnN0YW50AgIAAAAIY29uc3RhbnQEAS8IY29uc3RhbnQDAAAA
AAAAAEAOZ2xvYmFsLmludC5zZXQIY29uc3RhbnQEEmNyYWZ0X3ZlcmlmeTppbmdvdAhjb25zdGFudAIB
AAAAE2dlbmVyaWMuZXhlY3V0ZXN5bmMIY29uc3RhbnQEC2NyYWZ0IGluZ290DmdlbmVyaWMuZ290b2lm
CGNvbnN0YW50AmMAAAAOY29tcGFyaXNvbi5pbnQOZ2xvYmFsLmludC5nZXQIY29uc3RhbnQEDGNyYWZ0
X3N0YXR1cwhjb25zdGFudAQBPghjb25zdGFudALHAAAADmdsb2JhbC5pbnQuc2V0CGNvbnN0YW50BBBj
cmFmdF90aWVyOmluZ290DmFyaXRobWV0aWMuaW50DmFyaXRobWV0aWMuaW50DWxvY2FsLmludC5nZXQI
Y29uc3RhbnQEBHRpZXIIY29uc3RhbnQEASoIY29uc3RhbnQCAgAAAAhjb25zdGFudAQBLQhjb25zdGFu
dAIBAAAAEWdsb2JhbC5kb3VibGUuc2V0CGNvbnN0YW50BBFjcmFmdF9jb3VudDppbmdvdBFhcml0aG1l
dGljLmRvdWJsZQpkb3VibGUubWF4CGNvbnN0YW50AwAAAAAAAAAAEWFyaXRobWV0aWMuZG91YmxlEWFy
aXRobWV0aWMuZG91YmxlEGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQEBWNvdW50CGNvbnN0YW50BAEq
A2kyZA5hcml0aG1ldGljLmludA5hcml0aG1ldGljLmludAhjb25zdGFudAKaMA0ACGNvbnN0YW50BAEv
DmFyaXRobWV0aWMuaW50CGNvbnN0YW50AgoAAAAIY29uc3RhbnQEA3Bvdw1sb2NhbC5pbnQuZ2V0CGNv
bnN0YW50BAR0aWVyCGNvbnN0YW50BANtb2QIY29uc3RhbnQCCgAAAAhjb25zdGFudAQBLRFhcml0aG1l
dGljLmRvdWJsZRFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0
YW50BAEqEWFyaXRobWV0aWMuZG91YmxlE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEBXBsYXRl
DmFyaXRobWV0aWMuaW50DmFyaXRobWV0aWMuaW50DWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXII
Y29uc3RhbnQEASoIY29uc3RhbnQCAgAAAAhjb25zdGFudAQBLQhjb25zdGFudAIBAAAACGNvbnN0YW50
BAErE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEDXBsYXRlLmNpcmN1aXQOYXJpdGhtZXRpYy5p
bnQOYXJpdGhtZXRpYy5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQBKghj
b25zdGFudAICAAAACGNvbnN0YW50BAEtCGNvbnN0YW50AgEAAAAIY29uc3RhbnQEASsKZG91YmxlLm1h
eAhjb25zdGFudAMAAAAAAAAAAAtkb3VibGUuY2VpbBFhcml0aG1ldGljLmRvdWJsZRFhcml0aG1ldGlj
LmRvdWJsZRFhcml0aG1ldGljLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhj
b25zdGFudAQBKghjb25zdGFudAMAAAAAAAAAQAhjb25zdGFudAQBLRFhcml0aG1ldGljLmRvdWJsZRFn
bG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0YW50BAEqEWFyaXRo
bWV0aWMuZG91YmxlE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEBWNhYmxlDmFyaXRobWV0aWMu
aW50DmFyaXRobWV0aWMuaW50DWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEASoI
Y29uc3RhbnQCAgAAAAhjb25zdGFudAQBLQhjb25zdGFudAIBAAAACGNvbnN0YW50BAErE2ZhY3Rvcnku
aXRlbXMuY291bnQIY29uc3RhbnQEB2NpcmN1aXQOYXJpdGhtZXRpYy5pbnQOYXJpdGhtZXRpYy5pbnQN
bG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQBKghjb25zdGFudAICAAAACGNvbnN0
YW50BAEtCGNvbnN0YW50AgEAAAAIY29uc3RhbnQEAS8IY29uc3RhbnQDAAAAAAAAAEAOZ2xvYmFsLmlu
dC5zZXQIY29uc3RhbnQEEmNyYWZ0X3ZlcmlmeTppbmdvdAhjb25zdGFudAIBAAAAE2dlbmVyaWMuZXhl
Y3V0ZXN5bmMIY29uc3RhbnQEC2NyYWZ0IGluZ290DmdlbmVyaWMuZ290b2lmCGNvbnN0YW50AmMAAAAO
Y29tcGFyaXNvbi5pbnQOZ2xvYmFsLmludC5nZXQIY29uc3RhbnQEDGNyYWZ0X3N0YXR1cwhjb25zdGFu
dAQBPghjb25zdGFudALHAAAADmdsb2JhbC5pbnQuc2V0CGNvbnN0YW50BA5jcmFmdF90aWVyOjMuMQ5h
cml0aG1ldGljLmludA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BAEtCGNvbnN0
YW50AgEAAAARZ2xvYmFsLmRvdWJsZS5zZXQIY29uc3RhbnQED2NyYWZ0X2NvdW50OjMuMRFhcml0aG1l
dGljLmRvdWJsZRFhcml0aG1ldGljLmRvdWJsZRFhcml0aG1ldGljLmRvdWJsZRBsb2NhbC5kb3VibGUu
Z2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQBKghjb25zdGFudAMAAAAAAAAAQAhjb25zdGFudAQB
KhFhcml0aG1ldGljLmRvdWJsZQxkb3VibGUuZmxvb3IRYXJpdGhtZXRpYy5kb3VibGUIY29uc3RhbnQD
AAAAABBFJEEIY29uc3RhbnQEAS8RYXJpdGhtZXRpYy5kb3VibGUIY29uc3RhbnQDAAAAAAAAJEAIY29u
c3RhbnQEA3BvdwNpMmQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQDbW9kCGNv
bnN0YW50AwAAAAAAACRACGNvbnN0YW50BAEtEWFyaXRobWV0aWMuZG91YmxlEWdsb2JhbC5kb3VibGUu
Z2V0CGNvbnN0YW50BA9jcmFmdF9pbnZlbnRvcnkIY29uc3RhbnQEASoTZmFjdG9yeS5pdGVtcy5jb3Vu
dAhjb25zdGFudAQEY2hpcA5hcml0aG1ldGljLmludA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVy
CGNvbnN0YW50BAEtCGNvbnN0YW50AgEAAAATZ2VuZXJpYy5leGVjdXRlc3luYwhjb25zdGFudAQJY3Jh
ZnQgMzoxDmdlbmVyaWMuZ290b2lmCGNvbnN0YW50AmMAAAAOY29tcGFyaXNvbi5pbnQOZ2xvYmFsLmlu
dC5nZXQIY29uc3RhbnQEDGNyYWZ0X3N0YXR1cwhjb25zdGFudAQBPghjb25zdGFudALHAAAADmdsb2Jh
bC5pbnQuc2V0CGNvbnN0YW50BA5jcmFmdF90aWVyOjMuMQ1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0
aWVyEWdsb2JhbC5kb3VibGUuc2V0CGNvbnN0YW50BA9jcmFmdF9jb3VudDozLjEQbG9jYWwuZG91Ymxl
LmdldAhjb25zdGFudAQFY291bnQ=
:global double craft_inventory
:local int tier
:local double count

tier = global.int.get("craft_tier:3.1")
count = global.double.get("craft_count:3.1")

; Ingots (hi)
;   board_hi = global.double.get("craft_count:3.1") * i2d((862210 / (10 ^ mytier)) % 10)
;   circuit_hi = global.double.get("craft_count:3.1") * i2d((224420 / (10 ^ mytier)) % 10)
global.int.set("craft_tier:ingot", tier * 2)
global.double.set("craft_count:ingot", max(0.0, count * i2d((862210 / (10 ^ tier)) % 10) - craft_inventory * (count("plate", tier * 2) + count("plate.circuit", tier * 2))) + max(0.0, ceil((count * i2d((224420 / (10 ^ tier)) % 10) - craft_inventory * (count("cable", tier * 2) + count("circuit", tier * 2)))/2.0)))
global.int.set("craft_verify:ingot", 1)
executesync("craft ingot")
gotoif(99, global.int.get("craft_status") > 199)

; Ingots (lo)
;   board_lo = global.double.get("craft_count:3.1") * i2d((864410 / (10 ^ mytier)) % 10)
;   circuit_lo = global.double.get("craft_count:3.1") * 2.0
global.int.set("craft_tier:ingot", tier * 2 - 1)
global.double.set("craft_count:ingot", max(0.0, count * i2d((864410 / (10 ^ tier)) % 10) - craft_inventory * (count("plate", tier * 2 - 1) + count("plate.circuit", tier * 2 - 1))) + max(0.0, ceil((count*2.0 - craft_inventory * (count("cable", tier * 2 - 1) + count("circuit", tier * 2 - 1)))/2.0)))
global.int.set("craft_verify:ingot", 1)
executesync("craft ingot")
gotoif(99, global.int.get("craft_status") > 199)

; Input chips
global.int.set("craft_tier:3.1", tier - 1)
global.double.set("craft_count:3.1", count * 2.0 * (floor(664200.0 / (10.0 ^ i2d(tier))) % 10.0) - craft_inventory * count("chip", tier - 1))
executesync("craft 3:1")
gotoif(99, global.int.get("craft_status") > 199)

; Restore state for this tier
global.int.set("craft_tier:3.1", tier)
global.double.set("craft_count:3.1", count)


craft 3:1:board 16
D2NyYWZ0IDM6MTpib2FyZAAAAAAAAAAAEAAAAA1sb2NhbC5pbnQuc2V0CGNvbnN0YW50BAR0aWVyDmds
b2JhbC5pbnQuZ2V0CGNvbnN0YW50BA5jcmFmdF90aWVyOjMuMRBsb2NhbC5kb3VibGUuc2V0CGNvbnN0
YW50BAhib2FyZF9sbxFhcml0aG1ldGljLmRvdWJsZRFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQP
Y3JhZnRfY291bnQ6My4xCGNvbnN0YW50BAEqA2kyZA5hcml0aG1ldGljLmludA5hcml0aG1ldGljLmlu
dAhjb25zdGFudAKaMA0ACGNvbnN0YW50BAEvDmFyaXRobWV0aWMuaW50CGNvbnN0YW50AgoAAAAIY29u
c3RhbnQEA3Bvdw1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BANtb2QIY29uc3Rh
bnQCCgAAABBsb2NhbC5kb3VibGUuc2V0CGNvbnN0YW50BAhib2FyZF9oaRFhcml0aG1ldGljLmRvdWJs
ZRFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfY291bnQ6My4xCGNvbnN0YW50BAEqA2ky
ZA5hcml0aG1ldGljLmludA5hcml0aG1ldGljLmludAhjb25zdGFudAICKA0ACGNvbnN0YW50BAEvDmFy
aXRobWV0aWMuaW50CGNvbnN0YW50AgoAAAAIY29uc3RhbnQEA3Bvdw1sb2NhbC5pbnQuZ2V0CGNvbnN0
YW50BAR0aWVyCGNvbnN0YW50BANtb2QIY29uc3RhbnQCCgAAAA5nZW5lcmljLmdvdG9pZghjb25zdGFu
dAIHAAAAEWNvbXBhcmlzb24uZG91YmxlEGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQECGJvYXJkX2xv
CGNvbnN0YW50BAI8PRFhcml0aG1ldGljLmRvdWJsZRFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQP
Y3JhZnRfaW52ZW50b3J5CGNvbnN0YW50BAEqEWFyaXRobWV0aWMuZG91YmxlE2ZhY3RvcnkuaXRlbXMu
Y291bnQIY29uc3RhbnQEDXBsYXRlLmNpcmN1aXQOYXJpdGhtZXRpYy5pbnQOYXJpdGhtZXRpYy5pbnQN
bG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQBKghjb25zdGFudAICAAAACGNvbnN0
YW50BAEtCGNvbnN0YW50AgEAAAAIY29uc3RhbnQEASsTZmFjdG9yeS5pdGVtcy5jb3VudAhjb25zdGFu
dAQFcGxhdGUOYXJpdGhtZXRpYy5pbnQOYXJpdGhtZXRpYy5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFu
dAQEdGllcghjb25zdGFudAQBKghjb25zdGFudAICAAAACGNvbnN0YW50BAEtCGNvbnN0YW50AgEAAAAR
Z2VuZXJpYy53YWl0d2hpbGUWZmFjdG9yeS5tYWNoaW5lLmFjdGl2ZQhjb25zdGFudAQHcHJlc3Nlcg9m
YWN0b3J5LnByb2R1Y2UIY29uc3RhbnQEBWluZ290DmFyaXRobWV0aWMuaW50DmFyaXRobWV0aWMuaW50
DWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEASoIY29uc3RhbnQCAgAAAAhjb25z
dGFudAQBLQhjb25zdGFudAIBAAAAEWFyaXRobWV0aWMuZG91YmxlEGxvY2FsLmRvdWJsZS5nZXQIY29u
c3RhbnQECGJvYXJkX2xvCGNvbnN0YW50BAEtEWFyaXRobWV0aWMuZG91YmxlEWdsb2JhbC5kb3VibGUu
Z2V0CGNvbnN0YW50BA9jcmFmdF9pbnZlbnRvcnkIY29uc3RhbnQEASoRYXJpdGhtZXRpYy5kb3VibGUT
ZmFjdG9yeS5pdGVtcy5jb3VudAhjb25zdGFudAQNcGxhdGUuY2lyY3VpdA5hcml0aG1ldGljLmludA5h
cml0aG1ldGljLmludA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BAEqCGNvbnN0
YW50AgIAAAAIY29uc3RhbnQEAS0IY29uc3RhbnQCAQAAAAhjb25zdGFudAQBKxNmYWN0b3J5Lml0ZW1z
LmNvdW50CGNvbnN0YW50BAVwbGF0ZQ5hcml0aG1ldGljLmludA5hcml0aG1ldGljLmludA1sb2NhbC5p
bnQuZ2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BAEqCGNvbnN0YW50AgIAAAAIY29uc3RhbnQEAS0I
Y29uc3RhbnQCAQAAAAhjb25zdGFudAQHcHJlc3Nlcg5nZW5lcmljLmdvdG9pZghjb25zdGFudAIKAAAA
EWNvbXBhcmlzb24uZG91YmxlEGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQECGJvYXJkX2hpCGNvbnN0
YW50BAI8PRFhcml0aG1ldGljLmRvdWJsZRFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRf
aW52ZW50b3J5CGNvbnN0YW50BAEqEWFyaXRobWV0aWMuZG91YmxlE2ZhY3RvcnkuaXRlbXMuY291bnQI
Y29uc3RhbnQEDXBsYXRlLmNpcmN1aXQOYXJpdGhtZXRpYy5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFu
dAQEdGllcghjb25zdGFudAQBKghjb25zdGFudAICAAAACGNvbnN0YW50BAErE2ZhY3RvcnkuaXRlbXMu
Y291bnQIY29uc3RhbnQEBXBsYXRlDmFyaXRobWV0aWMuaW50DWxvY2FsLmludC5nZXQIY29uc3RhbnQE
BHRpZXIIY29uc3RhbnQEASoIY29uc3RhbnQCAgAAABFnZW5lcmljLndhaXR3aGlsZRZmYWN0b3J5Lm1h
Y2hpbmUuYWN0aXZlCGNvbnN0YW50BAdwcmVzc2VyD2ZhY3RvcnkucHJvZHVjZQhjb25zdGFudAQFaW5n
b3QOYXJpdGhtZXRpYy5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQBKghj
b25zdGFudAICAAAAEWFyaXRobWV0aWMuZG91YmxlEGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQECGJv
YXJkX2hpCGNvbnN0YW50BAEtEWFyaXRobWV0aWMuZG91YmxlEWdsb2JhbC5kb3VibGUuZ2V0CGNvbnN0
YW50BA9jcmFmdF9pbnZlbnRvcnkIY29uc3RhbnQEASoRYXJpdGhtZXRpYy5kb3VibGUTZmFjdG9yeS5p
dGVtcy5jb3VudAhjb25zdGFudAQNcGxhdGUuY2lyY3VpdA5hcml0aG1ldGljLmludA1sb2NhbC5pbnQu
Z2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BAEqCGNvbnN0YW50AgIAAAAIY29uc3RhbnQEASsTZmFj
dG9yeS5pdGVtcy5jb3VudAhjb25zdGFudAQFcGxhdGUOYXJpdGhtZXRpYy5pbnQNbG9jYWwuaW50Lmdl
dAhjb25zdGFudAQEdGllcghjb25zdGFudAQBKghjb25zdGFudAICAAAACGNvbnN0YW50BAdwcmVzc2Vy
DmdlbmVyaWMuZ290b2lmCGNvbnN0YW50Ag0AAAARY29tcGFyaXNvbi5kb3VibGUQbG9jYWwuZG91Ymxl
LmdldAhjb25zdGFudAQIYm9hcmRfbG8IY29uc3RhbnQEAjw9EWFyaXRobWV0aWMuZG91YmxlEWdsb2Jh
bC5kb3VibGUuZ2V0CGNvbnN0YW50BA9jcmFmdF9pbnZlbnRvcnkIY29uc3RhbnQEASoTZmFjdG9yeS5p
dGVtcy5jb3VudAhjb25zdGFudAQNcGxhdGUuY2lyY3VpdA5hcml0aG1ldGljLmludA5hcml0aG1ldGlj
LmludA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BAEqCGNvbnN0YW50AgIAAAAI
Y29uc3RhbnQEAS0IY29uc3RhbnQCAQAAABFnZW5lcmljLndhaXR3aGlsZQ9jb21wYXJpc29uLmJvb2wW
ZmFjdG9yeS5tYWNoaW5lLmFjdGl2ZQhjb25zdGFudAQIcmVmaW5lcnkIY29uc3RhbnQEAXwRY29tcGFy
aXNvbi5kb3VibGUTZmFjdG9yeS5pdGVtcy5jb3VudAhjb25zdGFudAQFcGxhdGUOYXJpdGhtZXRpYy5p
bnQOYXJpdGhtZXRpYy5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQBKghj
b25zdGFudAICAAAACGNvbnN0YW50BAEtCGNvbnN0YW50AgEAAAAIY29uc3RhbnQEATwRYXJpdGhtZXRp
Yy5kb3VibGUQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQIYm9hcmRfbG8IY29uc3RhbnQEAS0RYXJp
dGhtZXRpYy5kb3VibGURZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3RhbnQED2NyYWZ0X2ludmVudG9yeQhj
b25zdGFudAQBKhNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BA1wbGF0ZS5jaXJjdWl0DmFyaXRo
bWV0aWMuaW50DmFyaXRobWV0aWMuaW50DWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3Rh
bnQEASoIY29uc3RhbnQCAgAAAAhjb25zdGFudAQBLQhjb25zdGFudAIBAAAAD2ZhY3RvcnkucHJvZHVj
ZQhjb25zdGFudAQFcGxhdGUOYXJpdGhtZXRpYy5pbnQOYXJpdGhtZXRpYy5pbnQNbG9jYWwuaW50Lmdl
dAhjb25zdGFudAQEdGllcghjb25zdGFudAQBKghjb25zdGFudAICAAAACGNvbnN0YW50BAEtCGNvbnN0
YW50AgEAAAARYXJpdGhtZXRpYy5kb3VibGUQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQIYm9hcmRf
bG8IY29uc3RhbnQEAS0RYXJpdGhtZXRpYy5kb3VibGURZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3RhbnQE
D2NyYWZ0X2ludmVudG9yeQhjb25zdGFudAQBKhNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BA1w
bGF0ZS5jaXJjdWl0DmFyaXRobWV0aWMuaW50DmFyaXRobWV0aWMuaW50DWxvY2FsLmludC5nZXQIY29u
c3RhbnQEBHRpZXIIY29uc3RhbnQEASoIY29uc3RhbnQCAgAAAAhjb25zdGFudAQBLQhjb25zdGFudAIB
AAAACGNvbnN0YW50BAhyZWZpbmVyeQ5nZW5lcmljLmdvdG9pZghjb25zdGFudAIQAAAAEWNvbXBhcmlz
b24uZG91YmxlEGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQECGJvYXJkX2hpCGNvbnN0YW50BAI8PRFh
cml0aG1ldGljLmRvdWJsZRFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfaW52ZW50b3J5
CGNvbnN0YW50BAEqE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEDXBsYXRlLmNpcmN1aXQOYXJp
dGhtZXRpYy5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQBKghjb25zdGFu
dAICAAAAEWdlbmVyaWMud2FpdHdoaWxlD2NvbXBhcmlzb24uYm9vbBZmYWN0b3J5Lm1hY2hpbmUuYWN0
aXZlCGNvbnN0YW50BAhyZWZpbmVyeQhjb25zdGFudAQBfBFjb21wYXJpc29uLmRvdWJsZRNmYWN0b3J5
Lml0ZW1zLmNvdW50CGNvbnN0YW50BAVwbGF0ZQ5hcml0aG1ldGljLmludA1sb2NhbC5pbnQuZ2V0CGNv
bnN0YW50BAR0aWVyCGNvbnN0YW50BAEqCGNvbnN0YW50AgIAAAAIY29uc3RhbnQEATwRYXJpdGhtZXRp
Yy5kb3VibGUQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQIYm9hcmRfaGkIY29uc3RhbnQEAS0RYXJp
dGhtZXRpYy5kb3VibGURZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3RhbnQED2NyYWZ0X2ludmVudG9yeQhj
b25zdGFudAQBKhNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BA1wbGF0ZS5jaXJjdWl0DmFyaXRo
bWV0aWMuaW50DWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEASoIY29uc3RhbnQC
AgAAAA9mYWN0b3J5LnByb2R1Y2UIY29uc3RhbnQEBXBsYXRlDmFyaXRobWV0aWMuaW50DWxvY2FsLmlu
dC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEASoIY29uc3RhbnQCAgAAABFhcml0aG1ldGljLmRv
dWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAhib2FyZF9oaQhjb25zdGFudAQBLRFhcml0aG1l
dGljLmRvdWJsZRFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0
YW50BAEqE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEDXBsYXRlLmNpcmN1aXQOYXJpdGhtZXRp
Yy5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQBKghjb25zdGFudAICAAAA
CGNvbnN0YW50BAhyZWZpbmVyeQ5nbG9iYWwuaW50LnNldAhjb25zdGFudAQQY3JhZnRfc3RhdHVzOjMu
MQ5hcml0aG1ldGljLmludA5nbG9iYWwuaW50LmdldAhjb25zdGFudAQQY3JhZnRfc3RhdHVzOjMuMQhj
b25zdGFudAQBKwhjb25zdGFudAICAAAA
:global double craft_inventory
:local int tier
:local double board_lo
:local double board_hi

tier = global.int.get("craft_tier:3.1")
board_lo = global.double.get("craft_count:3.1") * i2d((864410 / (10 ^ tier)) % 10)
board_hi = global.double.get("craft_count:3.1") * i2d((862210 / (10 ^ tier)) % 10)

; Craft plates
lo1: gotoif(hi1, board_lo <= craft_inventory * (count("plate.circuit", tier * 2 - 1) + count("plate", tier * 2 - 1)))
   waitwhile(active("presser"))
   produce("ingot", tier * 2 - 1, board_lo - craft_inventory * (count("plate.circuit", tier * 2 - 1) + count("plate", tier * 2 - 1)), "presser")

hi1: gotoif(lo2, board_hi <= craft_inventory * (count("plate.circuit", tier * 2) + count("plate", tier * 2)))
   waitwhile(active("presser"))
   produce("ingot", tier * 2, board_hi - craft_inventory * (count("plate.circuit", tier * 2) + count("plate", tier * 2)), "presser")

; Craft circuit boards
lo2: gotoif(hi2, board_lo <= craft_inventory * (count("plate.circuit", tier * 2 - 1)))
   waitwhile(active("refinery") | count("plate", tier * 2 - 1) < board_lo - craft_inventory * (count("plate.circuit", tier * 2 - 1)))
   produce("plate", tier * 2 - 1, board_lo - craft_inventory * (count("plate.circuit", tier * 2 - 1)), "refinery")

hi2: gotoif(end, board_hi <= craft_inventory * (count("plate.circuit", tier * 2)))
   waitwhile(active("refinery") | count("plate", tier * 2) < board_hi - craft_inventory * (count("plate.circuit", tier * 2)))
   produce("plate", tier * 2, board_hi - craft_inventory * (count("plate.circuit", tier * 2)), "refinery")

end: global.int.set("craft_status:3.1", global.int.get("craft_status:3.1") + 2)


craft 3:1:circuit 16
EWNyYWZ0IDM6MTpjaXJjdWl0AAAAAAAAAAAQAAAADWxvY2FsLmludC5zZXQIY29uc3RhbnQEBHRpZXIO
Z2xvYmFsLmludC5nZXQIY29uc3RhbnQEDmNyYWZ0X3RpZXI6My4xEGxvY2FsLmRvdWJsZS5zZXQIY29u
c3RhbnQECmNpcmN1aXRfbG8RYXJpdGhtZXRpYy5kb3VibGURZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3Rh
bnQED2NyYWZ0X2NvdW50OjMuMQhjb25zdGFudAQBKghjb25zdGFudAMAAAAAAAAAQBBsb2NhbC5kb3Vi
bGUuc2V0CGNvbnN0YW50BApjaXJjdWl0X2hpEWFyaXRobWV0aWMuZG91YmxlEWdsb2JhbC5kb3VibGUu
Z2V0CGNvbnN0YW50BA9jcmFmdF9jb3VudDozLjEIY29uc3RhbnQEASoDaTJkDmFyaXRobWV0aWMuaW50
DmFyaXRobWV0aWMuaW50CGNvbnN0YW50AqRsAwAIY29uc3RhbnQEAS8OYXJpdGhtZXRpYy5pbnQIY29u
c3RhbnQCCgAAAAhjb25zdGFudAQDcG93DWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3Rh
bnQEA21vZAhjb25zdGFudAIKAAAADmdlbmVyaWMuZ290b2lmCGNvbnN0YW50AgcAAAARY29tcGFyaXNv
bi5kb3VibGUQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQKY2lyY3VpdF9sbwhjb25zdGFudAQCPD0R
YXJpdGhtZXRpYy5kb3VibGURZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3RhbnQED2NyYWZ0X2ludmVudG9y
eQhjb25zdGFudAQBKhFhcml0aG1ldGljLmRvdWJsZRNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50
BAdjaXJjdWl0DmFyaXRobWV0aWMuaW50DmFyaXRobWV0aWMuaW50DWxvY2FsLmludC5nZXQIY29uc3Rh
bnQEBHRpZXIIY29uc3RhbnQEASoIY29uc3RhbnQCAgAAAAhjb25zdGFudAQBLQhjb25zdGFudAIBAAAA
CGNvbnN0YW50BAErE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEBWNhYmxlDmFyaXRobWV0aWMu
aW50DmFyaXRobWV0aWMuaW50DWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEASoI
Y29uc3RhbnQCAgAAAAhjb25zdGFudAQBLQhjb25zdGFudAIBAAAAEWdlbmVyaWMud2FpdHdoaWxlFmZh
Y3RvcnkubWFjaGluZS5hY3RpdmUIY29uc3RhbnQECHJlZmluZXJ5D2ZhY3RvcnkucHJvZHVjZQhjb25z
dGFudAQFaW5nb3QOYXJpdGhtZXRpYy5pbnQOYXJpdGhtZXRpYy5pbnQNbG9jYWwuaW50LmdldAhjb25z
dGFudAQEdGllcghjb25zdGFudAQBKghjb25zdGFudAICAAAACGNvbnN0YW50BAEtCGNvbnN0YW50AgEA
AAALZG91YmxlLmNlaWwRYXJpdGhtZXRpYy5kb3VibGURYXJpdGhtZXRpYy5kb3VibGUQbG9jYWwuZG91
YmxlLmdldAhjb25zdGFudAQKY2lyY3VpdF9sbwhjb25zdGFudAQBLRFhcml0aG1ldGljLmRvdWJsZRFn
bG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0YW50BAEqEWFyaXRo
bWV0aWMuZG91YmxlE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEB2NpcmN1aXQOYXJpdGhtZXRp
Yy5pbnQOYXJpdGhtZXRpYy5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQB
Kghjb25zdGFudAICAAAACGNvbnN0YW50BAEtCGNvbnN0YW50AgEAAAAIY29uc3RhbnQEASsTZmFjdG9y
eS5pdGVtcy5jb3VudAhjb25zdGFudAQFY2FibGUOYXJpdGhtZXRpYy5pbnQOYXJpdGhtZXRpYy5pbnQN
bG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQBKghjb25zdGFudAICAAAACGNvbnN0
YW50BAEtCGNvbnN0YW50AgEAAAAIY29uc3RhbnQEAS8IY29uc3RhbnQDAAAAAAAAAEAIY29uc3RhbnQE
CHJlZmluZXJ5DmdlbmVyaWMuZ290b2lmCGNvbnN0YW50AgoAAAARY29tcGFyaXNvbi5kb3VibGUQbG9j
YWwuZG91YmxlLmdldAhjb25zdGFudAQKY2lyY3VpdF9oaQhjb25zdGFudAQCPD0RYXJpdGhtZXRpYy5k
b3VibGURZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3RhbnQED2NyYWZ0X2ludmVudG9yeQhjb25zdGFudAQB
KhFhcml0aG1ldGljLmRvdWJsZRNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BAdjaXJjdWl0DmFy
aXRobWV0aWMuaW50DWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEASoIY29uc3Rh
bnQCAgAAAAhjb25zdGFudAQBKxNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BAVjYWJsZQ5hcml0
aG1ldGljLmludA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BAEqCGNvbnN0YW50
AgIAAAARZ2VuZXJpYy53YWl0d2hpbGUWZmFjdG9yeS5tYWNoaW5lLmFjdGl2ZQhjb25zdGFudAQIcmVm
aW5lcnkPZmFjdG9yeS5wcm9kdWNlCGNvbnN0YW50BAVpbmdvdA5hcml0aG1ldGljLmludA1sb2NhbC5p
bnQuZ2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BAEqCGNvbnN0YW50AgIAAAALZG91YmxlLmNlaWwR
YXJpdGhtZXRpYy5kb3VibGURYXJpdGhtZXRpYy5kb3VibGUQbG9jYWwuZG91YmxlLmdldAhjb25zdGFu
dAQKY2lyY3VpdF9oaQhjb25zdGFudAQBLRFhcml0aG1ldGljLmRvdWJsZRFnbG9iYWwuZG91YmxlLmdl
dAhjb25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0YW50BAEqEWFyaXRobWV0aWMuZG91YmxlE2Zh
Y3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEB2NpcmN1aXQOYXJpdGhtZXRpYy5pbnQNbG9jYWwuaW50
LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQBKghjb25zdGFudAICAAAACGNvbnN0YW50BAErE2Zh
Y3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEBWNhYmxlDmFyaXRobWV0aWMuaW50DWxvY2FsLmludC5n
ZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEASoIY29uc3RhbnQCAgAAAAhjb25zdGFudAQBLwhjb25z
dGFudAMAAAAAAAAAQAhjb25zdGFudAQIcmVmaW5lcnkOZ2VuZXJpYy5nb3RvaWYIY29uc3RhbnQCDQAA
ABFjb21wYXJpc29uLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BApjaXJjdWl0X2xvCGNv
bnN0YW50BAI8PRFhcml0aG1ldGljLmRvdWJsZRFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3Jh
ZnRfaW52ZW50b3J5CGNvbnN0YW50BAEqE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEB2NpcmN1
aXQOYXJpdGhtZXRpYy5pbnQOYXJpdGhtZXRpYy5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGll
cghjb25zdGFudAQBKghjb25zdGFudAICAAAACGNvbnN0YW50BAEtCGNvbnN0YW50AgEAAAARZ2VuZXJp
Yy53YWl0d2hpbGUPY29tcGFyaXNvbi5ib29sEWNvbXBhcmlzb24uZG91YmxlE2ZhY3RvcnkuaXRlbXMu
Y291bnQIY29uc3RhbnQEBWNhYmxlDmFyaXRobWV0aWMuaW50DmFyaXRobWV0aWMuaW50DWxvY2FsLmlu
dC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEASoIY29uc3RhbnQCAgAAAAhjb25zdGFudAQBLQhj
b25zdGFudAIBAAAACGNvbnN0YW50BAE8EWFyaXRobWV0aWMuZG91YmxlEGxvY2FsLmRvdWJsZS5nZXQI
Y29uc3RhbnQECmNpcmN1aXRfbG8IY29uc3RhbnQEAS0RYXJpdGhtZXRpYy5kb3VibGURZ2xvYmFsLmRv
dWJsZS5nZXQIY29uc3RhbnQED2NyYWZ0X2ludmVudG9yeQhjb25zdGFudAQBKhNmYWN0b3J5Lml0ZW1z
LmNvdW50CGNvbnN0YW50BAdjaXJjdWl0DmFyaXRobWV0aWMuaW50DmFyaXRobWV0aWMuaW50DWxvY2Fs
LmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEASoIY29uc3RhbnQCAgAAAAhjb25zdGFudAQB
LQhjb25zdGFudAIBAAAACGNvbnN0YW50BAF8FmZhY3RvcnkubWFjaGluZS5hY3RpdmUIY29uc3RhbnQE
CWFzc2VtYmxlcg9mYWN0b3J5LnByb2R1Y2UIY29uc3RhbnQEBWNhYmxlDmFyaXRobWV0aWMuaW50DmFy
aXRobWV0aWMuaW50DWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEASoIY29uc3Rh
bnQCAgAAAAhjb25zdGFudAQBLQhjb25zdGFudAIBAAAAEWFyaXRobWV0aWMuZG91YmxlEGxvY2FsLmRv
dWJsZS5nZXQIY29uc3RhbnQECmNpcmN1aXRfbG8IY29uc3RhbnQEAS0RYXJpdGhtZXRpYy5kb3VibGUR
Z2xvYmFsLmRvdWJsZS5nZXQIY29uc3RhbnQED2NyYWZ0X2ludmVudG9yeQhjb25zdGFudAQBKhNmYWN0
b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BAdjaXJjdWl0DmFyaXRobWV0aWMuaW50DmFyaXRobWV0aWMu
aW50DWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEASoIY29uc3RhbnQCAgAAAAhj
b25zdGFudAQBLQhjb25zdGFudAIBAAAACGNvbnN0YW50BAlhc3NlbWJsZXIOZ2VuZXJpYy5nb3RvaWYI
Y29uc3RhbnQCEAAAABFjb21wYXJpc29uLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BApj
aXJjdWl0X2hpCGNvbnN0YW50BAI8PRFhcml0aG1ldGljLmRvdWJsZRFnbG9iYWwuZG91YmxlLmdldAhj
b25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0YW50BAEqE2ZhY3RvcnkuaXRlbXMuY291bnQIY29u
c3RhbnQEB2NpcmN1aXQOYXJpdGhtZXRpYy5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghj
b25zdGFudAQBKghjb25zdGFudAICAAAAEWdlbmVyaWMud2FpdHdoaWxlD2NvbXBhcmlzb24uYm9vbBFj
b21wYXJpc29uLmRvdWJsZRNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BAVjYWJsZQ5hcml0aG1l
dGljLmludA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BAEqCGNvbnN0YW50AgIA
AAAIY29uc3RhbnQEATwRYXJpdGhtZXRpYy5kb3VibGUQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQK
Y2lyY3VpdF9oaQhjb25zdGFudAQBLRFhcml0aG1ldGljLmRvdWJsZRFnbG9iYWwuZG91YmxlLmdldAhj
b25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0YW50BAEqE2ZhY3RvcnkuaXRlbXMuY291bnQIY29u
c3RhbnQEB2NpcmN1aXQOYXJpdGhtZXRpYy5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghj
b25zdGFudAQBKghjb25zdGFudAICAAAACGNvbnN0YW50BAF8FmZhY3RvcnkubWFjaGluZS5hY3RpdmUI
Y29uc3RhbnQECWFzc2VtYmxlcg9mYWN0b3J5LnByb2R1Y2UIY29uc3RhbnQEBWNhYmxlDmFyaXRobWV0
aWMuaW50DWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEASoIY29uc3RhbnQCAgAA
ABFhcml0aG1ldGljLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BApjaXJjdWl0X2hpCGNv
bnN0YW50BAEtEWFyaXRobWV0aWMuZG91YmxlEWdsb2JhbC5kb3VibGUuZ2V0CGNvbnN0YW50BA9jcmFm
dF9pbnZlbnRvcnkIY29uc3RhbnQEASoTZmFjdG9yeS5pdGVtcy5jb3VudAhjb25zdGFudAQHY2lyY3Vp
dA5hcml0aG1ldGljLmludA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BAEqCGNv
bnN0YW50AgIAAAAIY29uc3RhbnQECWFzc2VtYmxlcg5nbG9iYWwuaW50LnNldAhjb25zdGFudAQQY3Jh
ZnRfc3RhdHVzOjMuMQ5hcml0aG1ldGljLmludA5nbG9iYWwuaW50LmdldAhjb25zdGFudAQQY3JhZnRf
c3RhdHVzOjMuMQhjb25zdGFudAQBKwhjb25zdGFudAIEAAAA
:global double craft_inventory
:local int tier
:local double circuit_lo
:local double circuit_hi

tier = global.int.get("craft_tier:3.1")
circuit_lo = global.double.get("craft_count:3.1") * 2.0
circuit_hi = global.double.get("craft_count:3.1") * i2d((224420 / (10 ^ tier)) % 10)

; Craft cables
lo1: gotoif(hi1, circuit_lo <= craft_inventory * (count("circuit", tier * 2 - 1) + count("cable", tier * 2 - 1)))
	waitwhile(active("refinery"))
	produce("ingot", tier * 2 - 1, ceil((circuit_lo - craft_inventory * (count("circuit", tier * 2 - 1) + count("cable", tier * 2 - 1))) / 2.0), "refinery")

hi1: gotoif(lo2, circuit_hi <= craft_inventory * (count("circuit", tier * 2) + count("cable", tier * 2)))
	waitwhile(active("refinery"))
	produce("ingot", tier * 2, ceil((circuit_hi - craft_inventory * (count("circuit", tier * 2) + count("cable", tier * 2))) / 2.0), "refinery")

; Craft circuit wires
lo2: gotoif(hi2, circuit_lo <= craft_inventory * count("circuit", tier * 2 - 1))
   waitwhile(count("cable", tier * 2 - 1) < circuit_lo - craft_inventory * count("circuit", tier * 2 - 1) | active("assembler"))
   produce("cable", tier * 2 - 1, circuit_lo - craft_inventory * count("circuit", tier * 2 - 1), "assembler")

hi2: gotoif(end, circuit_hi <= craft_inventory * count("circuit", tier * 2))
   waitwhile(count("cable", tier * 2) < circuit_hi - craft_inventory * count("circuit", tier * 2) | active("assembler"))
   produce("cable", tier * 2, circuit_hi - craft_inventory * count("circuit", tier * 2), "assembler")

end: global.int.set("craft_status:3.1", global.int.get("craft_status:3.1") + 4)


Plates (2)

Gold plate.png

Name Lines Code
craft 3:2 9
CWNyYWZ0IDM6MgAAAAAAAAAACQAAAA1sb2NhbC5pbnQuc2V0CGNvbnN0YW50BAR0aWVyDmdsb2JhbC5p
bnQuZ2V0CGNvbnN0YW50BA5jcmFmdF90aWVyOjMuMhBsb2NhbC5kb3VibGUuc2V0CGNvbnN0YW50BAVj
b3VudBFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfY291bnQ6My4yDmdlbmVyaWMuZ290
b2lmCGNvbnN0YW50AmMAAAAPY29tcGFyaXNvbi5ib29sD2NvbXBhcmlzb24uYm9vbA5jb21wYXJpc29u
LmludA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BAE8CGNvbnN0YW50AgEAAAAI
Y29uc3RhbnQEAXwOY29tcGFyaXNvbi5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25z
dGFudAQBPghjb25zdGFudAIKAAAACGNvbnN0YW50BAF8EWNvbXBhcmlzb24uZG91YmxlEGxvY2FsLmRv
dWJsZS5nZXQIY29uc3RhbnQEBWNvdW50CGNvbnN0YW50BAE8CGNvbnN0YW50AwAAAAAAAPA/Dmdsb2Jh
bC5pbnQuc2V0CGNvbnN0YW50BBBjcmFmdF90aWVyOmluZ290DWxvY2FsLmludC5nZXQIY29uc3RhbnQE
BHRpZXIRZ2xvYmFsLmRvdWJsZS5zZXQIY29uc3RhbnQEEWNyYWZ0X2NvdW50OmluZ290EGxvY2FsLmRv
dWJsZS5nZXQIY29uc3RhbnQEBWNvdW50E2dlbmVyaWMuZXhlY3V0ZXN5bmMIY29uc3RhbnQEC2NyYWZ0
IGluZ290DmdlbmVyaWMuZ290b2lmCGNvbnN0YW50AmMAAAAOY29tcGFyaXNvbi5pbnQOZ2xvYmFsLmlu
dC5nZXQIY29uc3RhbnQEDGNyYWZ0X3N0YXR1cwhjb25zdGFudAQBPghjb25zdGFudALHAAAAEWdlbmVy
aWMud2FpdHdoaWxlFmZhY3RvcnkubWFjaGluZS5hY3RpdmUIY29uc3RhbnQEB3ByZXNzZXIPZmFjdG9y
eS5wcm9kdWNlCGNvbnN0YW50BAVpbmdvdA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyEGxvY2Fs
LmRvdWJsZS5nZXQIY29uc3RhbnQEBWNvdW50CGNvbnN0YW50BAdwcmVzc2Vy
; Regular plates
:global int craft_status
:local double count
:local int tier

tier = global.int.get("craft_tier:3.2")
count = global.double.get("craft_count:3.2")
gotoif(99, tier < 1 | tier > 10 | count < 1.0)

global.int.set("craft_tier:ingot", tier)
global.double.set("craft_count:ingot", count)
executesync("craft ingot")
gotoif(99, craft_status > 199)

waitwhile(active("presser"))
produce("ingot", tier, count, "presser")


Dense plates (3)

Dense gold plate.png

Name Lines Code
craft 3:3 14
CWNyYWZ0IDM6MwAAAAAAAAAADgAAAA1sb2NhbC5pbnQuc2V0CGNvbnN0YW50BAR0aWVyDmdsb2JhbC5p
bnQuZ2V0CGNvbnN0YW50BA5jcmFmdF90aWVyOjMuMxBsb2NhbC5kb3VibGUuc2V0CGNvbnN0YW50BAVj
b3VudBFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfY291bnQ6My4zDmdlbmVyaWMuZ290
b2lmCGNvbnN0YW50AmMAAAAPY29tcGFyaXNvbi5ib29sD2NvbXBhcmlzb24uYm9vbA5jb21wYXJpc29u
LmludA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BAE8CGNvbnN0YW50AgEAAAAI
Y29uc3RhbnQEAXwOY29tcGFyaXNvbi5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25z
dGFudAQBPghjb25zdGFudAIKAAAACGNvbnN0YW50BAF8EWNvbXBhcmlzb24uZG91YmxlEGxvY2FsLmRv
dWJsZS5nZXQIY29uc3RhbnQEBWNvdW50CGNvbnN0YW50BAE8CGNvbnN0YW50AwAAAAAAAPA/EGxvY2Fs
LmRvdWJsZS5zZXQIY29uc3RhbnQEBnBsYXRlcxFhcml0aG1ldGljLmRvdWJsZRFhcml0aG1ldGljLmRv
dWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQBKghjb25zdGFudAMA
AAAAAAAiQAhjb25zdGFudAQBLRFhcml0aG1ldGljLmRvdWJsZRFnbG9iYWwuZG91YmxlLmdldAhjb25z
dGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0YW50BAEqE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3Rh
bnQEC3BsYXRlLnN0YWNrDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIOZ2xvYmFsLmludC5zZXQI
Y29uc3RhbnQEEGNyYWZ0X3RpZXI6aW5nb3QNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllchFnbG9i
YWwuZG91YmxlLnNldAhjb25zdGFudAQRY3JhZnRfY291bnQ6aW5nb3QRYXJpdGhtZXRpYy5kb3VibGUQ
bG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQGcGxhdGVzCGNvbnN0YW50BAEtEWFyaXRobWV0aWMuZG91
YmxlEWdsb2JhbC5kb3VibGUuZ2V0CGNvbnN0YW50BA9jcmFmdF9pbnZlbnRvcnkIY29uc3RhbnQEASoT
ZmFjdG9yeS5pdGVtcy5jb3VudAhjb25zdGFudAQFcGxhdGUNbG9jYWwuaW50LmdldAhjb25zdGFudAQE
dGllchNnZW5lcmljLmV4ZWN1dGVzeW5jCGNvbnN0YW50BAtjcmFmdCBpbmdvdA5nZW5lcmljLmdvdG9p
Zghjb25zdGFudAJjAAAADmNvbXBhcmlzb24uaW50Dmdsb2JhbC5pbnQuZ2V0CGNvbnN0YW50BAxjcmFm
dF9zdGF0dXMIY29uc3RhbnQEAT4IY29uc3RhbnQCxwAAAA5nZW5lcmljLmdvdG9pZghjb25zdGFudAIM
AAAAEWNvbXBhcmlzb24uZG91YmxlEGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQEBnBsYXRlcwhjb25z
dGFudAQCPD0RYXJpdGhtZXRpYy5kb3VibGURZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3RhbnQED2NyYWZ0
X2ludmVudG9yeQhjb25zdGFudAQBKhNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BAVwbGF0ZQ1s
b2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyEWdlbmVyaWMud2FpdHdoaWxlFmZhY3RvcnkubWFjaGlu
ZS5hY3RpdmUIY29uc3RhbnQEB3ByZXNzZXIPZmFjdG9yeS5wcm9kdWNlCGNvbnN0YW50BAVpbmdvdA1s
b2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyEWFyaXRobWV0aWMuZG91YmxlEGxvY2FsLmRvdWJsZS5n
ZXQIY29uc3RhbnQEBnBsYXRlcwhjb25zdGFudAQBLRFhcml0aG1ldGljLmRvdWJsZRFnbG9iYWwuZG91
YmxlLmdldAhjb25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0YW50BAEqE2ZhY3RvcnkuaXRlbXMu
Y291bnQIY29uc3RhbnQEBXBsYXRlDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQE
B3ByZXNzZXIRZ2VuZXJpYy53YWl0d2hpbGUPY29tcGFyaXNvbi5ib29sEWNvbXBhcmlzb24uZG91Ymxl
E2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEBXBsYXRlDWxvY2FsLmludC5nZXQIY29uc3RhbnQE
BHRpZXIIY29uc3RhbnQEATwQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQGcGxhdGVzCGNvbnN0YW50
BAF8FmZhY3RvcnkubWFjaGluZS5hY3RpdmUIY29uc3RhbnQEB3ByZXNzZXINZmFjdG9yeS5jcmFmdAhj
b25zdGFudAQLcGxhdGUuc3RhY2sNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllchFhcml0aG1ldGlj
LmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQBLRFhcml0aG1l
dGljLmRvdWJsZRFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0
YW50BAEqE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEC3BsYXRlLnN0YWNrDWxvY2FsLmludC5n
ZXQIY29uc3RhbnQEBHRpZXIPZmFjdG9yeS5wcm9kdWNlCGNvbnN0YW50BAtwbGF0ZS5zdGFjaw1sb2Nh
bC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyEGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQEBWNvdW50CGNv
bnN0YW50BAdwcmVzc2Vy
; Dense plates
:global double craft_inventory
:local int tier
:local double count
:local double plates

tier = global.int.get("craft_tier:3.3")
count = global.double.get("craft_count:3.3")
gotoif(99, tier < 1 | tier > 10 | count < 1.0)

plates = count * 9.0 - craft_inventory * count("plate.stack", tier)

global.int.set("craft_tier:ingot", tier)
global.double.set("craft_count:ingot", plates - craft_inventory * count("plate", tier))
executesync("craft ingot")
gotoif(99, global.int.get("craft_status") > 199)

plates: gotoif(stacks, plates <= craft_inventory * count("plate", tier))
  waitwhile(active("presser"))
  produce("ingot", tier, plates - craft_inventory * count("plate", tier), "presser")

stacks: waitwhile(count("plate", tier) < plates | active("presser"))
  craft("plate.stack", tier, count - craft_inventory * count("plate.stack", tier))
  produce("plate.stack", tier, count, "presser")


Blocks (4)

Gold block.png

Name Lines Code
craft 3:4 10
CWNyYWZ0IDM6NAAAAAAAAAAACgAAAA1sb2NhbC5pbnQuc2V0CGNvbnN0YW50BAR0aWVyDmdsb2JhbC5p
bnQuZ2V0CGNvbnN0YW50BA5jcmFmdF90aWVyOjMuNBBsb2NhbC5kb3VibGUuc2V0CGNvbnN0YW50BAVj
b3VudBFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfY291bnQ6My40DmdlbmVyaWMuZ290
b2lmCGNvbnN0YW50AmMAAAAPY29tcGFyaXNvbi5ib29sD2NvbXBhcmlzb24uYm9vbA5jb21wYXJpc29u
LmludA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BAE8CGNvbnN0YW50AgEAAAAI
Y29uc3RhbnQEAXwOY29tcGFyaXNvbi5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25z
dGFudAQBPghjb25zdGFudAIKAAAACGNvbnN0YW50BAF8EWNvbXBhcmlzb24uZG91YmxlEGxvY2FsLmRv
dWJsZS5nZXQIY29uc3RhbnQEBWNvdW50CGNvbnN0YW50BAE8CGNvbnN0YW50AwAAAAAAAPA/EGxvY2Fs
LmRvdWJsZS5zZXQIY29uc3RhbnQEDnBsYXRlc3BlcmJsb2NrEWFyaXRobWV0aWMuZG91YmxlCGNvbnN0
YW50AwAAAAAAABBACGNvbnN0YW50BAEqDGRvdWJsZS5yb3VuZBFhcml0aG1ldGljLmRvdWJsZRFhcml0
aG1ldGljLmRvdWJsZQhjb25zdGFudAMAADBkBQsfQghjb25zdGFudAQBLxFhcml0aG1ldGljLmRvdWJs
ZQhjb25zdGFudAMAAAAAAAAkQAhjb25zdGFudAQDcG93A2kyZA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50
BAR0aWVyCGNvbnN0YW50BANtb2QIY29uc3RhbnQDAAAAAAAAJEAOZ2xvYmFsLmludC5zZXQIY29uc3Rh
bnQEDmNyYWZ0X3RpZXI6My4zDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIRZ2xvYmFsLmRvdWJs
ZS5zZXQIY29uc3RhbnQED2NyYWZ0X2NvdW50OjMuMxFhcml0aG1ldGljLmRvdWJsZRFhcml0aG1ldGlj
LmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQBKhBsb2NhbC5k
b3VibGUuZ2V0CGNvbnN0YW50BA5wbGF0ZXNwZXJibG9jawhjb25zdGFudAQBLRFhcml0aG1ldGljLmRv
dWJsZRFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0YW50BAEq
E2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEC3BsYXRlLmRlbnNlDWxvY2FsLmludC5nZXQIY29u
c3RhbnQEBHRpZXITZ2VuZXJpYy5leGVjdXRlc3luYwhjb25zdGFudAQJY3JhZnQgMzozDmdlbmVyaWMu
Z290b2lmCGNvbnN0YW50AmMAAAAOY29tcGFyaXNvbi5pbnQOZ2xvYmFsLmludC5nZXQIY29uc3RhbnQE
DGNyYWZ0X3N0YXR1cwhjb25zdGFudAQBPghjb25zdGFudALHAAAAEWdlbmVyaWMud2FpdHdoaWxlEWNv
bXBhcmlzb24uZG91YmxlE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEC3BsYXRlLmRlbnNlDWxv
Y2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEATwRYXJpdGhtZXRpYy5kb3VibGUQbG9j
YWwuZG91YmxlLmdldAhjb25zdGFudAQFY291bnQIY29uc3RhbnQEASoQbG9jYWwuZG91YmxlLmdldAhj
b25zdGFudAQOcGxhdGVzcGVyYmxvY2sNZmFjdG9yeS5jcmFmdAhjb25zdGFudAQFYmxvY2sNbG9jYWwu
aW50LmdldAhjb25zdGFudAQEdGllchBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudA==
; Blocks
:global double craft_inventory
:local int tier
:local double count
:local double platesperblock
:local double stacks
:local double plates

tier = global.int.get("craft_tier:3.4")
count = global.double.get("craft_count:3.4")
gotoif(99, tier < 1 | tier > 10 | count < 1.0)

plates: platesperblock = 4.0 * round((33332222220.0 / (10.0 ^ i2d(tier))) % 10.0)
  global.int.set("craft_tier:3.3", tier)
  global.double.set("craft_count:3.3", count * platesperblock - craft_inventory * count("plate.dense", tier))
  executesync("craft 3:3")
gotoif(99, global.int.get("craft_status") > 199)

waitwhile(count("plate.dense", tier) < count * platesperblock)
craft("block", tier, count)


Cables (5)

Golden cable.png

Name Lines Code
craft 3:5 9
CWNyYWZ0IDM6NQAAAAAAAAAACQAAAA1sb2NhbC5pbnQuc2V0CGNvbnN0YW50BAR0aWVyDmdsb2JhbC5p
bnQuZ2V0CGNvbnN0YW50BA5jcmFmdF90aWVyOjMuNRBsb2NhbC5kb3VibGUuc2V0CGNvbnN0YW50BAVj
b3VudBFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfY291bnQ6My41DmdlbmVyaWMuZ290
b2lmCGNvbnN0YW50AmMAAAAPY29tcGFyaXNvbi5ib29sD2NvbXBhcmlzb24uYm9vbA5jb21wYXJpc29u
LmludA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BAE8CGNvbnN0YW50AgEAAAAI
Y29uc3RhbnQEAXwOY29tcGFyaXNvbi5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25z
dGFudAQBPghjb25zdGFudAIKAAAACGNvbnN0YW50BAF8EWNvbXBhcmlzb24uZG91YmxlEGxvY2FsLmRv
dWJsZS5nZXQIY29uc3RhbnQEBWNvdW50CGNvbnN0YW50BAE8CGNvbnN0YW50AwAAAAAAAPA/Dmdsb2Jh
bC5pbnQuc2V0CGNvbnN0YW50BBBjcmFmdF90aWVyOmluZ290DWxvY2FsLmludC5nZXQIY29uc3RhbnQE
BHRpZXIRZ2xvYmFsLmRvdWJsZS5zZXQIY29uc3RhbnQEEWNyYWZ0X2NvdW50OmluZ290EWFyaXRobWV0
aWMuZG91YmxlEGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQEBWNvdW50CGNvbnN0YW50BAEvCGNvbnN0
YW50AwAAAAAAAABAE2dlbmVyaWMuZXhlY3V0ZXN5bmMIY29uc3RhbnQEC2NyYWZ0IGluZ290DmdlbmVy
aWMuZ290b2lmCGNvbnN0YW50AmMAAAAOY29tcGFyaXNvbi5pbnQOZ2xvYmFsLmludC5nZXQIY29uc3Rh
bnQEDGNyYWZ0X3N0YXR1cwhjb25zdGFudAQBPghjb25zdGFudALHAAAAEWdlbmVyaWMud2FpdHdoaWxl
FmZhY3RvcnkubWFjaGluZS5hY3RpdmUIY29uc3RhbnQECHJlZmluZXJ5D2ZhY3RvcnkucHJvZHVjZQhj
b25zdGFudAQFaW5nb3QNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcgtkb3VibGUuY2VpbBFhcml0
aG1ldGljLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQBLwhj
b25zdGFudAMAAAAAAAAAQAhjb25zdGFudAQIcmVmaW5lcnk=
; Cables
:global double craft_inventory
:local int tier
:local double count

tier = global.int.get("craft_tier:3.5")
count = global.double.get("craft_count:3.5")
gotoif(99, tier < 1 | tier > 10 | count < 1.0)

global.int.set("craft_tier:ingot", tier)
global.double.set("craft_count:ingot", count / 2.0)
executesync("craft ingot")
gotoif(99, global.int.get("craft_status") > 199)

waitwhile(active("refinery"))
produce("ingot", tier, ceil(count / 2.0), "refinery")


Insulated cables (6)

Golden insulated cable.png

Name Lines Code
craft 3:6 21
CWNyYWZ0IDM6NgAAAAAAAAAAFQAAAA1sb2NhbC5pbnQuc2V0CGNvbnN0YW50BAR0aWVyDmdsb2JhbC5p
bnQuZ2V0CGNvbnN0YW50BA5jcmFmdF90aWVyOjMuNhBsb2NhbC5kb3VibGUuc2V0CGNvbnN0YW50BAVj
b3VudBFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfY291bnQ6My42DmdlbmVyaWMuZ290
b2lmCGNvbnN0YW50AmMAAAAPY29tcGFyaXNvbi5ib29sD2NvbXBhcmlzb24uYm9vbA5jb21wYXJpc29u
LmludA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BAE8CGNvbnN0YW50AgEAAAAI
Y29uc3RhbnQEAXwOY29tcGFyaXNvbi5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25z
dGFudAQBPghjb25zdGFudAIKAAAACGNvbnN0YW50BAF8EWNvbXBhcmlzb24uZG91YmxlEGxvY2FsLmRv
dWJsZS5nZXQIY29uc3RhbnQEBWNvdW50CGNvbnN0YW50BAE8CGNvbnN0YW50AwAAAAAAAPA/EGxvY2Fs
LmRvdWJsZS5zZXQIY29uc3RhbnQEBmNhYmxlcxFhcml0aG1ldGljLmRvdWJsZRBsb2NhbC5kb3VibGUu
Z2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQBKgpkb3VibGUubWF4CmRvdWJsZS5tYXgIY29uc3Rh
bnQDAAAAAAAA8D8RYXJpdGhtZXRpYy5kb3VibGUDaTJkDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRp
ZXIIY29uc3RhbnQEAS0IY29uc3RhbnQDAAAAAAAAAEAKZG91YmxlLm1heBFhcml0aG1ldGljLmRvdWJs
ZQhjb25zdGFudAMAAAAAAAAkQAhjb25zdGFudAQBLRFhcml0aG1ldGljLmRvdWJsZQhjb25zdGFudAMA
AAAAAAAUQAhjb25zdGFudAQBKhFhcml0aG1ldGljLmRvdWJsZRFhcml0aG1ldGljLmRvdWJsZQNpMmQN
bG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQBLQhjb25zdGFudAMAAAAAAAAgQAhj
b25zdGFudAQDcG93CGNvbnN0YW50AwAAAAAAAABAC2RvdWJsZS5jZWlsEWFyaXRobWV0aWMuZG91Ymxl
EWFyaXRobWV0aWMuZG91YmxlEWFyaXRobWV0aWMuZG91YmxlA2kyZA1sb2NhbC5pbnQuZ2V0CGNvbnN0
YW50BAR0aWVyCGNvbnN0YW50BAEtCGNvbnN0YW50AwAAAAAAAPA/CGNvbnN0YW50BANwb3cIY29uc3Rh
bnQDAAAAAAAA+D8IY29uc3RhbnQEAS0IY29uc3RhbnQDAAAAAAAAJkAQbG9jYWwuZG91YmxlLnNldAhj
b25zdGFudAQGcnViYmVyEWFyaXRobWV0aWMuZG91YmxlEGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQE
BWNvdW50CGNvbnN0YW50BAEqCmRvdWJsZS5tYXgIY29uc3RhbnQDAAAAAAAAAAARYXJpdGhtZXRpYy5k
b3VibGURYXJpdGhtZXRpYy5kb3VibGURYXJpdGhtZXRpYy5kb3VibGUIY29uc3RhbnQDAAAAAAAAAEAI
Y29uc3RhbnQEASoDaTJkDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEAS0IY29u
c3RhbnQDAAAAAAAAEEAIY29uc3RhbnQEAS0KZG91YmxlLm1heAhjb25zdGFudAMAAAAAAAAAABFhcml0
aG1ldGljLmRvdWJsZQhjb25zdGFudAMAAAAAAAAAQAhjb25zdGFudAQBLRFhcml0aG1ldGljLmRvdWJs
ZRFhcml0aG1ldGljLmRvdWJsZQNpMmQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFu
dAQBLQhjb25zdGFudAMAAAAAAAAgQAhjb25zdGFudAQBKhFhcml0aG1ldGljLmRvdWJsZQNpMmQNbG9j
YWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQBLQhjb25zdGFudAMAAAAAAAAiQA5nZW5l
cmljLmdvdG9pZghjb25zdGFudAIKAAAAEWNvbXBhcmlzb24uZG91YmxlE2ZhY3RvcnkuaXRlbXMuY291
bnQIY29uc3RhbnQEBnJ1YmJlcghjb25zdGFudAIBAAAACGNvbnN0YW50BAI+PRFhcml0aG1ldGljLmRv
dWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAZydWJiZXIIY29uc3RhbnQEAS0RYXJpdGhtZXRp
Yy5kb3VibGURZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3RhbnQED2NyYWZ0X2ludmVudG9yeQhjb25zdGFu
dAQBKhNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BAxwbGF0ZS5ydWJiZXIIY29uc3RhbnQCAQAA
AA5nbG9iYWwuaW50LnNldAhjb25zdGFudAQMY3JhZnRfc3RhdHVzCGNvbnN0YW50ApwBAAAOZ2xvYmFs
LmludC5zZXQIY29uc3RhbnQEEmNyYWZ0X3JlcXVpcmVfdGllcghjb25zdGFudAL/////EWdsb2JhbC5k
b3VibGUuc2V0CGNvbnN0YW50BBNjcmFmdF9yZXF1aXJlX2NvdW50EGxvY2FsLmRvdWJsZS5nZXQIY29u
c3RhbnQEBnJ1YmJlcg5nbG9iYWwuaW50LnNldAhjb25zdGFudAQQY3JhZnRfdGllcjppbmdvdA1sb2Nh
bC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyEWdsb2JhbC5kb3VibGUuc2V0CGNvbnN0YW50BBFjcmFmdF9j
b3VudDppbmdvdBFhcml0aG1ldGljLmRvdWJsZRFhcml0aG1ldGljLmRvdWJsZRBsb2NhbC5kb3VibGUu
Z2V0CGNvbnN0YW50BAZjYWJsZXMIY29uc3RhbnQEAS0TZmFjdG9yeS5pdGVtcy5jb3VudAhjb25zdGFu
dAQFY2FibGUNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQBLwhjb25zdGFudAMA
AAAAAAAAQBNnZW5lcmljLmV4ZWN1dGVzeW5jCGNvbnN0YW50BAtjcmFmdCBpbmdvdA5nZW5lcmljLmdv
dG9pZghjb25zdGFudAJjAAAADmNvbXBhcmlzb24uaW50Dmdsb2JhbC5pbnQuZ2V0CGNvbnN0YW50BAxj
cmFmdF9zdGF0dXMIY29uc3RhbnQEAT4IY29uc3RhbnQCxwAAAA5nZW5lcmljLmdvdG9pZghjb25zdGFu
dAIRAAAAEWNvbXBhcmlzb24uZG91YmxlEGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQEBmNhYmxlcwhj
b25zdGFudAQCPD0RYXJpdGhtZXRpYy5kb3VibGURZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3RhbnQED2Ny
YWZ0X2ludmVudG9yeQhjb25zdGFudAQBKhNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BAVjYWJs
ZQ1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyEWdlbmVyaWMud2FpdHdoaWxlFmZhY3RvcnkubWFj
aGluZS5hY3RpdmUIY29uc3RhbnQECHJlZmluZXJ5D2ZhY3RvcnkucHJvZHVjZQhjb25zdGFudAQFaW5n
b3QNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcgtkb3VibGUuY2VpbBFhcml0aG1ldGljLmRvdWJs
ZRFhcml0aG1ldGljLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAZjYWJsZXMIY29uc3Rh
bnQEAS0RYXJpdGhtZXRpYy5kb3VibGURZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3RhbnQED2NyYWZ0X2lu
dmVudG9yeQhjb25zdGFudAQBKhNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BAVjYWJsZQ1sb2Nh
bC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BAEvCGNvbnN0YW50AwAAAAAAAABACGNvbnN0
YW50BAhyZWZpbmVyeQ5nZW5lcmljLmdvdG9pZghjb25zdGFudAIUAAAAEWNvbXBhcmlzb24uZG91Ymxl
EGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQEBnJ1YmJlcghjb25zdGFudAQCPD0TZmFjdG9yeS5pdGVt
cy5jb3VudAhjb25zdGFudAQMcGxhdGUucnViYmVyCGNvbnN0YW50AgEAAAARZ2VuZXJpYy53YWl0d2hp
bGUWZmFjdG9yeS5tYWNoaW5lLmFjdGl2ZQhjb25zdGFudAQHcHJlc3Nlcg9mYWN0b3J5LnByb2R1Y2UI
Y29uc3RhbnQEBnJ1YmJlcg1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyEWFyaXRobWV0aWMuZG91
YmxlEGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQEBnJ1YmJlcghjb25zdGFudAQBLRFhcml0aG1ldGlj
LmRvdWJsZRFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0YW50
BAEqE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEDHBsYXRlLnJ1YmJlcghjb25zdGFudAIBAAAA
CGNvbnN0YW50BAdwcmVzc2VyEWdlbmVyaWMud2FpdHVudGlsD2NvbXBhcmlzb24uYm9vbBFjb21wYXJp
c29uLmRvdWJsZRNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BAVjYWJsZQ1sb2NhbC5pbnQuZ2V0
CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BAI+PRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAZjYWJs
ZXMIY29uc3RhbnQEASYRY29tcGFyaXNvbi5kb3VibGUTZmFjdG9yeS5pdGVtcy5jb3VudAhjb25zdGFu
dAQMcGxhdGUucnViYmVyCGNvbnN0YW50AgEAAAAIY29uc3RhbnQEAj49EGxvY2FsLmRvdWJsZS5nZXQI
Y29uc3RhbnQEBnJ1YmJlcg1mYWN0b3J5LmNyYWZ0CGNvbnN0YW50BA9jYWJsZS5pbnN1bGF0ZWQNbG9j
YWwuaW50LmdldAhjb25zdGFudAQEdGllchBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudA==
; Insulated cables
:global double craft_inventory
:local int tier
:local double count
:local double cables
:local double rubber

tier = global.int.get("craft_tier:3.6")
count = global.double.get("craft_count:3.6")
gotoif(99, tier < 1 | tier > 10 | count < 1.0)

cables = count * max(max(1.0, i2d(tier) - 2.0), max(10.0 - (5.0 * ((i2d(tier) - 8.0) ^ 2.0)), ceil(((i2d(tier) - 1.0) ^ 1.5) - 11.0)))
rubber = count * max(0.0, ((2.0 * i2d(tier)) - 4.0) - max(0.0, 2.0 - ((i2d(tier) - 8.0) * (i2d(tier) - 9.0))))

gotoif(ingots, count("rubber", 1) >= rubber - craft_inventory * count("plate.rubber", 1))
  global.int.set("craft_status", 412)
  global.int.set("craft_require_tier", -1)
  global.double.set("craft_require_count", rubber)

ingots: global.int.set("craft_tier:ingot", tier)
  global.double.set("craft_count:ingot", (cables - count("cable", tier)) / 2.0)
  executesync("craft ingot")
check: gotoif(99, global.int.get("craft_status") > 199)

cables: gotoif(rubber, cables <= craft_inventory * count("cable", tier))
  waitwhile(active("refinery"))
  produce("ingot", tier, ceil((cables - craft_inventory * count("cable", tier)) / 2.0), "refinery")

rubber: gotoif(craft, rubber <= count("plate.rubber", 1))
  waitwhile(active("presser"))
  produce("rubber", tier, rubber - craft_inventory * count("plate.rubber", 1), "presser")

craft: waituntil(count("cable", tier) >= cables & count("plate.rubber", 1) >= rubber)
craft("cable.insulated", tier, count)


Rods (7)

Golden rod.png

Name Lines Code
craft 3:7 9
CWNyYWZ0IDM6NwAAAAAAAAAACQAAAA1sb2NhbC5pbnQuc2V0CGNvbnN0YW50BAR0aWVyDmdsb2JhbC5p
bnQuZ2V0CGNvbnN0YW50BA5jcmFmdF90aWVyOjMuNxBsb2NhbC5kb3VibGUuc2V0CGNvbnN0YW50BAVj
b3VudBFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfY291bnQ6My43DmdlbmVyaWMuZ290
b2lmCGNvbnN0YW50AmMAAAAPY29tcGFyaXNvbi5ib29sD2NvbXBhcmlzb24uYm9vbA5jb21wYXJpc29u
LmludA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BAE8CGNvbnN0YW50AgEAAAAI
Y29uc3RhbnQEAXwOY29tcGFyaXNvbi5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25z
dGFudAQBPghjb25zdGFudAIKAAAACGNvbnN0YW50BAF8EWNvbXBhcmlzb24uZG91YmxlEGxvY2FsLmRv
dWJsZS5nZXQIY29uc3RhbnQEBWNvdW50CGNvbnN0YW50BAE8CGNvbnN0YW50AwAAAAAAAPA/Dmdsb2Jh
bC5pbnQuc2V0CGNvbnN0YW50BBBjcmFmdF90aWVyOmluZ290DWxvY2FsLmludC5nZXQIY29uc3RhbnQE
BHRpZXIRZ2xvYmFsLmRvdWJsZS5zZXQIY29uc3RhbnQEEWNyYWZ0X2NvdW50OmluZ290EWFyaXRobWV0
aWMuZG91YmxlEGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQEBWNvdW50CGNvbnN0YW50BAEvCGNvbnN0
YW50AwAAAAAAAABAE2dlbmVyaWMuZXhlY3V0ZXN5bmMIY29uc3RhbnQEC2NyYWZ0IGluZ290DmdlbmVy
aWMuZ290b2lmCGNvbnN0YW50AmMAAAAOY29tcGFyaXNvbi5pbnQOZ2xvYmFsLmludC5nZXQIY29uc3Rh
bnQEDGNyYWZ0X3N0YXR1cwhjb25zdGFudAQBPghjb25zdGFudALHAAAAEWdlbmVyaWMud2FpdHdoaWxl
FmZhY3RvcnkubWFjaGluZS5hY3RpdmUIY29uc3RhbnQECHJlZmluZXJ5D2ZhY3RvcnkucHJvZHVjZQhj
b25zdGFudAQFaW5nb3QNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcgtkb3VibGUuY2VpbBFhcml0
aG1ldGljLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQBLwhj
b25zdGFudAMAAAAAAAAAQAhjb25zdGFudAQGc2hhcGVy
; Rods
:global double craft_inventory
:local int tier
:local double count

tier = global.int.get("craft_tier:3.7")
count = global.double.get("craft_count:3.7")
gotoif(99, tier < 1 | tier > 10 | count < 1.0)

global.int.set("craft_tier:ingot", tier)
global.double.set("craft_count:ingot", count / 2.0)
executesync("craft ingot")
gotoif(99, global.int.get("craft_status") > 199)

waitwhile(active("refinery"))
produce("ingot", tier, ceil(count / 2.0), "shaper")


Motors (8)

Golden motor.png

Name Lines Code
craft 3:8 20
CWNyYWZ0IDM6OAAAAAAAAAAAFAAAAA1sb2NhbC5pbnQuc2V0CGNvbnN0YW50BAR0aWVyDmdsb2JhbC5p
bnQuZ2V0CGNvbnN0YW50BA5jcmFmdF90aWVyOjMuOBBsb2NhbC5kb3VibGUuc2V0CGNvbnN0YW50BAVj
b3VudBFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfY291bnQ6My44DmdlbmVyaWMuZ290
b2lmCGNvbnN0YW50AmMAAAAPY29tcGFyaXNvbi5ib29sD2NvbXBhcmlzb24uYm9vbA5jb21wYXJpc29u
LmludA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BAE8CGNvbnN0YW50AgEAAAAI
Y29uc3RhbnQEAXwOY29tcGFyaXNvbi5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25z
dGFudAQBPghjb25zdGFudAIKAAAACGNvbnN0YW50BAF8EWNvbXBhcmlzb24uZG91YmxlEGxvY2FsLmRv
dWJsZS5nZXQIY29uc3RhbnQEBWNvdW50CGNvbnN0YW50BAE8CGNvbnN0YW50AwAAAAAAAPA/EGxvY2Fs
LmRvdWJsZS5zZXQIY29uc3RhbnQEBHJvZHMRYXJpdGhtZXRpYy5kb3VibGURYXJpdGhtZXRpYy5kb3Vi
bGUQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQFY291bnQIY29uc3RhbnQEASoIY29uc3RhbnQDAAAA
AAAAAEAIY29uc3RhbnQEASsKZG91YmxlLm1heAhjb25zdGFudAMAAAAAAAAAAAtkb3VibGUuY2VpbBFh
cml0aG1ldGljLmRvdWJsZRFhcml0aG1ldGljLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50
BAVjb3VudAhjb25zdGFudAQBLRFhcml0aG1ldGljLmRvdWJsZRFnbG9iYWwuZG91YmxlLmdldAhjb25z
dGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0YW50BAEqE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3Rh
bnQEBXNjcmV3DWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEAS8IY29uc3RhbnQD
AAAAAAAAEEAOZ2VuZXJpYy5nb3RvaWYIY29uc3RhbnQCCQAAABFjb21wYXJpc29uLmRvdWJsZRBsb2Nh
bC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQCPD0TZmFjdG9yeS5pdGVtcy5jb3Vu
dAhjb25zdGFudAQGcnViYmVyCGNvbnN0YW50AgEAAAAOZ2xvYmFsLmludC5zZXQIY29uc3RhbnQEDGNy
YWZ0X3N0YXR1cwhjb25zdGFudAKcAQAADmdsb2JhbC5pbnQuc2V0CGNvbnN0YW50BBJjcmFmdF9yZXF1
aXJlX3RpZXIIY29uc3RhbnQC/////xFnbG9iYWwuZG91YmxlLnNldAhjb25zdGFudAQTY3JhZnRfcmVx
dWlyZV9jb3VudBBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudA5nbG9iYWwuaW50LnNldAhj
b25zdGFudAQQY3JhZnRfdGllcjppbmdvdA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyEWdsb2Jh
bC5kb3VibGUuc2V0CGNvbnN0YW50BBFjcmFmdF9jb3VudDppbmdvdBFhcml0aG1ldGljLmRvdWJsZRFh
cml0aG1ldGljLmRvdWJsZQpkb3VibGUubWF4CGNvbnN0YW50AwAAAAAAAAAAC2RvdWJsZS5jZWlsEWFy
aXRobWV0aWMuZG91YmxlEWFyaXRobWV0aWMuZG91YmxlEGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQE
BHJvZHMIY29uc3RhbnQEAS0RYXJpdGhtZXRpYy5kb3VibGURZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3Rh
bnQED2NyYWZ0X2ludmVudG9yeQhjb25zdGFudAQBKhNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50
BANyb2QNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQBLwhjb25zdGFudAMAAAAA
AAAAQAhjb25zdGFudAQBKwpkb3VibGUubWF4CGNvbnN0YW50AwAAAAAAAAAAC2RvdWJsZS5jZWlsEWFy
aXRobWV0aWMuZG91YmxlEWFyaXRobWV0aWMuZG91YmxlEGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQE
BWNvdW50CGNvbnN0YW50BAEtEWFyaXRobWV0aWMuZG91YmxlEWdsb2JhbC5kb3VibGUuZ2V0CGNvbnN0
YW50BA9jcmFmdF9pbnZlbnRvcnkIY29uc3RhbnQEASoRYXJpdGhtZXRpYy5kb3VibGUTZmFjdG9yeS5p
dGVtcy5jb3VudAhjb25zdGFudAQFY2FibGUNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25z
dGFudAQBKxNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BAR3aXJlDWxvY2FsLmludC5nZXQIY29u
c3RhbnQEBHRpZXIIY29uc3RhbnQEAS8IY29uc3RhbnQDAAAAAAAAAEAIY29uc3RhbnQEASsKZG91Ymxl
Lm1heAhjb25zdGFudAMAAAAAAAAAABFhcml0aG1ldGljLmRvdWJsZRFhcml0aG1ldGljLmRvdWJsZRBs
b2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQBKghjb25zdGFudAMAAAAAAAAQ
QAhjb25zdGFudAQBLRFhcml0aG1ldGljLmRvdWJsZRFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQP
Y3JhZnRfaW52ZW50b3J5CGNvbnN0YW50BAEqE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEBXBs
YXRlDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXITZ2VuZXJpYy5leGVjdXRlc3luYwhjb25zdGFu
dAQLY3JhZnQgaW5nb3QOZ2VuZXJpYy5nb3RvaWYIY29uc3RhbnQCYwAAAA5jb21wYXJpc29uLmludA5n
bG9iYWwuaW50LmdldAhjb25zdGFudAQMY3JhZnRfc3RhdHVzCGNvbnN0YW50BAE+CGNvbnN0YW50AscA
AAAOZ2xvYmFsLmludC5zZXQIY29uc3RhbnQEEGNyYWZ0X3N0YXR1czozLjgIY29uc3RhbnQCAQAAAA9n
ZW5lcmljLmV4ZWN1dGUIY29uc3RhbnQEDmNyYWZ0IDM6ODpyb2RzD2dlbmVyaWMuZXhlY3V0ZQhjb25z
dGFudAQOY3JhZnQgMzo4OndpcmUOZ2VuZXJpYy5nb3RvaWYIY29uc3RhbnQCEwAAABFjb21wYXJpc29u
LmRvdWJsZRFhcml0aG1ldGljLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhj
b25zdGFudAQBKghjb25zdGFudAMAAAAAAAAQQAhjb25zdGFudAQCPD0RYXJpdGhtZXRpYy5kb3VibGUR
Z2xvYmFsLmRvdWJsZS5nZXQIY29uc3RhbnQED2NyYWZ0X2ludmVudG9yeQhjb25zdGFudAQBKhNmYWN0
b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BAVwbGF0ZQ1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVy
EWdlbmVyaWMud2FpdHdoaWxlFmZhY3RvcnkubWFjaGluZS5hY3RpdmUIY29uc3RhbnQEB3ByZXNzZXIP
ZmFjdG9yeS5wcm9kdWNlCGNvbnN0YW50BAVpbmdvdA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVy
EWFyaXRobWV0aWMuZG91YmxlEWFyaXRobWV0aWMuZG91YmxlEGxvY2FsLmRvdWJsZS5nZXQIY29uc3Rh
bnQEBWNvdW50CGNvbnN0YW50BAEqCGNvbnN0YW50AwAAAAAAABBACGNvbnN0YW50BAEtEWFyaXRobWV0
aWMuZG91YmxlEWdsb2JhbC5kb3VibGUuZ2V0CGNvbnN0YW50BA9jcmFmdF9pbnZlbnRvcnkIY29uc3Rh
bnQEASoTZmFjdG9yeS5pdGVtcy5jb3VudAhjb25zdGFudAQFcGxhdGUNbG9jYWwuaW50LmdldAhjb25z
dGFudAQEdGllcghjb25zdGFudAQHcHJlc3NlchFnZW5lcmljLndhaXR1bnRpbA9jb21wYXJpc29uLmJv
b2wPY29tcGFyaXNvbi5ib29sD2NvbXBhcmlzb24uYm9vbA9jb21wYXJpc29uLmJvb2wOY29tcGFyaXNv
bi5pbnQOZ2xvYmFsLmludC5nZXQIY29uc3RhbnQEEGNyYWZ0X3N0YXR1czozLjgIY29uc3RhbnQEAj49
CGNvbnN0YW50AgcAAAAIY29uc3RhbnQEASYRY29tcGFyaXNvbi5kb3VibGUTZmFjdG9yeS5pdGVtcy5j
b3VudAhjb25zdGFudAQFcGxhdGUNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQC
Pj0RYXJpdGhtZXRpYy5kb3VibGUQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQFY291bnQIY29uc3Rh
bnQEASoIY29uc3RhbnQDAAAAAAAAEEAIY29uc3RhbnQEASYRY29tcGFyaXNvbi5kb3VibGUTZmFjdG9y
eS5pdGVtcy5jb3VudAhjb25zdGFudAQDcm9kDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29u
c3RhbnQEAj49EWFyaXRobWV0aWMuZG91YmxlEGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQEBWNvdW50
CGNvbnN0YW50BAEqCGNvbnN0YW50AwAAAAAAAABACGNvbnN0YW50BAEmEWNvbXBhcmlzb24uZG91Ymxl
E2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEBXNjcmV3DWxvY2FsLmludC5nZXQIY29uc3RhbnQE
BHRpZXIIY29uc3RhbnQEAj49EGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQEBWNvdW50CGNvbnN0YW50
BAEmEWNvbXBhcmlzb24uZG91YmxlE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEBHdpcmUNbG9j
YWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQCPj0QbG9jYWwuZG91YmxlLmdldAhjb25z
dGFudAQFY291bnQNZmFjdG9yeS5jcmFmdAhjb25zdGFudAQFbW90b3INbG9jYWwuaW50LmdldAhjb25z
dGFudAQEdGllchBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudA==
; Motor
:global double craft_inventory
:local int tier
:local double count
:local double rods
:local double plates

tier = global.int.get("craft_tier:3.8")
count = global.double.get("craft_count:3.8")
gotoif(99, tier < 1 | tier > 10 | count < 1.0)

; ingots
rods = count * 2.0 + max(0.0, ceil((count - craft_inventory * count("screw", tier))/4.0))
;rods:  produce("ingot", tier, ceil((rods - craft_inventory * count("rod", tier))/2.0), "shaper")
;wires: produce("ingot", tier, ceil((count - craft_inventory * (count("cable", tier) + count("wire", tier)))/2.0), "refinery")
;plates: produce("ingot", tier, count * 4.0 - craft_inventory * count("plate", tier), "presser")

gotoif(ingots, count <= count("rubber", 1))
  global.int.set("craft_status", 412)
  global.int.set("craft_require_tier", -1)
  global.double.set("craft_require_count", count)

ingots: global.int.set("craft_tier:ingot", tier)
  global.double.set("craft_count:ingot", max(0.0, ceil((rods - craft_inventory * count("rod", tier))/2.0)) + max(0.0, ceil((count - craft_inventory * (count("cable", tier) + count("wire", tier)))/2.0)) + max(0.0, count * 4.0 - craft_inventory * count("plate", tier)))
  executesync("craft ingot")
gotoif(99, global.int.get("craft_status") > 199)

global.int.set("craft_status:3.8", 1)
execute("craft 3:8:rods")
execute("craft 3:8:wire")

; plates
;plates = count * 4.0

gotoif(wait, count * 4.0 <= craft_inventory * count("plate", tier))
waitwhile(active("presser"))
produce("ingot", tier, count * 4.0 - craft_inventory * count("plate", tier), "presser")

wait: waituntil(global.int.get("craft_status:3.8") >= 7 & count("plate", tier) >= count * 4.0 & count("rod", tier) >= count * 2.0 & count("screw", tier) >= count & count("wire", tier) >= count)
craft("motor", tier, count)


craft 3:8:rods 10
DmNyYWZ0IDM6ODpyb2RzAAAAAAAAAAAKAAAADWxvY2FsLmludC5zZXQIY29uc3RhbnQEBHRpZXIOZ2xv
YmFsLmludC5nZXQIY29uc3RhbnQEDmNyYWZ0X3RpZXI6My44EGxvY2FsLmRvdWJsZS5zZXQIY29uc3Rh
bnQEBWNvdW50EWdsb2JhbC5kb3VibGUuZ2V0CGNvbnN0YW50BA9jcmFmdF9jb3VudDozLjgQbG9jYWwu
ZG91YmxlLnNldAhjb25zdGFudAQEcm9kcxFhcml0aG1ldGljLmRvdWJsZRFhcml0aG1ldGljLmRvdWJs
ZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQBKghjb25zdGFudAMAAAAA
AAAAQAhjb25zdGFudAQBKwpkb3VibGUubWF4CGNvbnN0YW50AwAAAAAAAAAAC2RvdWJsZS5jZWlsEWFy
aXRobWV0aWMuZG91YmxlEWFyaXRobWV0aWMuZG91YmxlEGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQE
BWNvdW50CGNvbnN0YW50BAEtEWFyaXRobWV0aWMuZG91YmxlEWdsb2JhbC5kb3VibGUuZ2V0CGNvbnN0
YW50BA9jcmFmdF9pbnZlbnRvcnkIY29uc3RhbnQEASoTZmFjdG9yeS5pdGVtcy5jb3VudAhjb25zdGFu
dAQFc2NyZXcNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQBLwhjb25zdGFudAMA
AAAAAAAQQA5nZW5lcmljLmdvdG9pZghjb25zdGFudAIHAAAAEWNvbXBhcmlzb24uZG91YmxlEGxvY2Fs
LmRvdWJsZS5nZXQIY29uc3RhbnQEBHJvZHMIY29uc3RhbnQEAjw9EWFyaXRobWV0aWMuZG91YmxlEWds
b2JhbC5kb3VibGUuZ2V0CGNvbnN0YW50BA9jcmFmdF9pbnZlbnRvcnkIY29uc3RhbnQEASoTZmFjdG9y
eS5pdGVtcy5jb3VudAhjb25zdGFudAQDcm9kDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIRZ2Vu
ZXJpYy53YWl0d2hpbGUWZmFjdG9yeS5tYWNoaW5lLmFjdGl2ZQhjb25zdGFudAQGc2hhcGVyD2ZhY3Rv
cnkucHJvZHVjZQhjb25zdGFudAQFaW5nb3QNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcgtkb3Vi
bGUuY2VpbBFhcml0aG1ldGljLmRvdWJsZRFhcml0aG1ldGljLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0
CGNvbnN0YW50BARyb2RzCGNvbnN0YW50BAEtEWFyaXRobWV0aWMuZG91YmxlEWdsb2JhbC5kb3VibGUu
Z2V0CGNvbnN0YW50BA9jcmFmdF9pbnZlbnRvcnkIY29uc3RhbnQEASoTZmFjdG9yeS5pdGVtcy5jb3Vu
dAhjb25zdGFudAQDcm9kDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEAS8IY29u
c3RhbnQDAAAAAAAAAEAIY29uc3RhbnQEBnNoYXBlcg5nZW5lcmljLmdvdG9pZghjb25zdGFudAIKAAAA
EWNvbXBhcmlzb24uZG91YmxlEGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQEBWNvdW50CGNvbnN0YW50
BAI8PRFhcml0aG1ldGljLmRvdWJsZRFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfaW52
ZW50b3J5CGNvbnN0YW50BAEqE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEBXNjcmV3DWxvY2Fs
LmludC5nZXQIY29uc3RhbnQEBHRpZXIRZ2VuZXJpYy53YWl0d2hpbGUPY29tcGFyaXNvbi5ib29sEWNv
bXBhcmlzb24uZG91YmxlE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEA3JvZA1sb2NhbC5pbnQu
Z2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BAE8EWFyaXRobWV0aWMuZG91YmxlEWFyaXRobWV0aWMu
ZG91YmxlEGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQEBWNvdW50CGNvbnN0YW50BAEtEWFyaXRobWV0
aWMuZG91YmxlEWdsb2JhbC5kb3VibGUuZ2V0CGNvbnN0YW50BA9jcmFmdF9pbnZlbnRvcnkIY29uc3Rh
bnQEASoTZmFjdG9yeS5pdGVtcy5jb3VudAhjb25zdGFudAQFc2NyZXcNbG9jYWwuaW50LmdldAhjb25z
dGFudAQEdGllcghjb25zdGFudAQBLwhjb25zdGFudAMAAAAAAAAQQAhjb25zdGFudAQBfBZmYWN0b3J5
Lm1hY2hpbmUuYWN0aXZlCGNvbnN0YW50BAZjdXR0ZXIPZmFjdG9yeS5wcm9kdWNlCGNvbnN0YW50BANy
b2QNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcgtkb3VibGUuY2VpbBFhcml0aG1ldGljLmRvdWJs
ZRFhcml0aG1ldGljLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFu
dAQBLRFhcml0aG1ldGljLmRvdWJsZRFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfaW52
ZW50b3J5CGNvbnN0YW50BAEqE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEBXNjcmV3DWxvY2Fs
LmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEAS8IY29uc3RhbnQDAAAAAAAAEEAIY29uc3Rh
bnQEBmN1dHRlcg5nbG9iYWwuaW50LnNldAhjb25zdGFudAQQY3JhZnRfc3RhdHVzOjMuOA5hcml0aG1l
dGljLmludA5nbG9iYWwuaW50LmdldAhjb25zdGFudAQQY3JhZnRfc3RhdHVzOjMuOAhjb25zdGFudAQB
Kwhjb25zdGFudAICAAAA
:global double craft_inventory
:local int tier
:local double count
:local double rods
;:local double screws

; rods & screws
tier = global.int.get("craft_tier:3.8")
count = global.double.get("craft_count:3.8")
;screws = count
rods = count * 2.0 + max(0.0, ceil((count - craft_inventory * count("screw", tier))/4.0))

rods: gotoif(screws, rods <= craft_inventory * count("rod", tier))
waitwhile(active("shaper"))
produce("ingot", tier, ceil((rods - craft_inventory * count("rod", tier))/2.0), "shaper")

screws: gotoif(end, count <= craft_inventory * count("screw", tier))
waitwhile(count("rod", tier) < (count - craft_inventory * count("screw", tier))/4.0 | active("cutter"))
produce("rod", tier, ceil((count - craft_inventory * count("screw", tier))/4.0), "cutter")

end: global.int.set("craft_status:3.8", global.int.get("craft_status:3.8") + 2)


craft 3:8:wire 9
DmNyYWZ0IDM6ODp3aXJlAAAAAAAAAAAJAAAADWxvY2FsLmludC5zZXQIY29uc3RhbnQEBHRpZXIOZ2xv
YmFsLmludC5nZXQIY29uc3RhbnQEDmNyYWZ0X3RpZXI6My44EGxvY2FsLmRvdWJsZS5zZXQIY29uc3Rh
bnQEBWNvdW50EWdsb2JhbC5kb3VibGUuZ2V0CGNvbnN0YW50BA9jcmFmdF9jb3VudDozLjgOZ2VuZXJp
Yy5nb3RvaWYIY29uc3RhbnQCBgAAABFjb21wYXJpc29uLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNv
bnN0YW50BAVjb3VudAhjb25zdGFudAQCPD0RYXJpdGhtZXRpYy5kb3VibGURZ2xvYmFsLmRvdWJsZS5n
ZXQIY29uc3RhbnQED2NyYWZ0X2ludmVudG9yeQhjb25zdGFudAQBKhFhcml0aG1ldGljLmRvdWJsZRNm
YWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BAVjYWJsZQ1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0
aWVyCGNvbnN0YW50BAErE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEBHdpcmUNbG9jYWwuaW50
LmdldAhjb25zdGFudAQEdGllchFnZW5lcmljLndhaXR3aGlsZRZmYWN0b3J5Lm1hY2hpbmUuYWN0aXZl
CGNvbnN0YW50BAhyZWZpbmVyeQ9mYWN0b3J5LnByb2R1Y2UIY29uc3RhbnQEBWluZ290DWxvY2FsLmlu
dC5nZXQIY29uc3RhbnQEBHRpZXILZG91YmxlLmNlaWwRYXJpdGhtZXRpYy5kb3VibGURYXJpdGhtZXRp
Yy5kb3VibGUQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQFY291bnQIY29uc3RhbnQEAS0RYXJpdGht
ZXRpYy5kb3VibGURZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3RhbnQED2NyYWZ0X2ludmVudG9yeQhjb25z
dGFudAQBKhFhcml0aG1ldGljLmRvdWJsZRNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BAVjYWJs
ZQ1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BAErE2ZhY3RvcnkuaXRlbXMuY291
bnQIY29uc3RhbnQEBHdpcmUNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQBLwhj
b25zdGFudAMAAAAAAAAAQAhjb25zdGFudAQIcmVmaW5lcnkOZ2VuZXJpYy5nb3RvaWYIY29uc3RhbnQC
CQAAABFjb21wYXJpc29uLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25z
dGFudAQCPD0RYXJpdGhtZXRpYy5kb3VibGURZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3RhbnQED2NyYWZ0
X2ludmVudG9yeQhjb25zdGFudAQBKhNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BAR3aXJlDWxv
Y2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIRZ2VuZXJpYy53YWl0d2hpbGUPY29tcGFyaXNvbi5ib29s
EWNvbXBhcmlzb24uZG91YmxlE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEBWNhYmxlDWxvY2Fs
LmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEATwRYXJpdGhtZXRpYy5kb3VibGURYXJpdGht
ZXRpYy5kb3VibGUQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQFY291bnQIY29uc3RhbnQEAS0QbG9j
YWwuZG91YmxlLmdldAhjb25zdGFudAQFY291bnQIY29uc3RhbnQEAS0RYXJpdGhtZXRpYy5kb3VibGUR
Z2xvYmFsLmRvdWJsZS5nZXQIY29uc3RhbnQED2NyYWZ0X2ludmVudG9yeQhjb25zdGFudAQBKhNmYWN0
b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BAR3aXJlDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXII
Y29uc3RhbnQEAXwWZmFjdG9yeS5tYWNoaW5lLmFjdGl2ZQhjb25zdGFudAQIcmVmaW5lcnkPZmFjdG9y
eS5wcm9kdWNlCGNvbnN0YW50BAVjYWJsZQ1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyEWFyaXRo
bWV0aWMuZG91YmxlEGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQEBWNvdW50CGNvbnN0YW50BAEtEWFy
aXRobWV0aWMuZG91YmxlEWdsb2JhbC5kb3VibGUuZ2V0CGNvbnN0YW50BA9jcmFmdF9pbnZlbnRvcnkI
Y29uc3RhbnQEASoTZmFjdG9yeS5pdGVtcy5jb3VudAhjb25zdGFudAQEd2lyZQ1sb2NhbC5pbnQuZ2V0
CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BAhyZWZpbmVyeQ5nbG9iYWwuaW50LnNldAhjb25zdGFudAQQ
Y3JhZnRfc3RhdHVzOjMuOA5hcml0aG1ldGljLmludA5nbG9iYWwuaW50LmdldAhjb25zdGFudAQQY3Jh
ZnRfc3RhdHVzOjMuOAhjb25zdGFudAQBKwhjb25zdGFudAIEAAAA
:global double craft_inventory
:local int tier
:local double count

; rods & screws
tier = global.int.get("craft_tier:3.8")
count = global.double.get("craft_count:3.8")

gotoif(wire, count <= craft_inventory * (count("cable", tier) + count("wire", tier)))
waitwhile(active("refinery"))
produce("ingot", tier, ceil((count - craft_inventory * (count("cable", tier) + count("wire", tier)))/2.0), "refinery")

wire: gotoif(end, count <= craft_inventory * count("wire", tier))
waitwhile(count("cable", tier) < count - count - craft_inventory * count("wire", tier) | active("refinery"))
produce("cable", tier, count - craft_inventory * count("wire", tier), "refinery")

end: global.int.set("craft_status:3.8", global.int.get("craft_status:3.8") + 4)


Pumps (9)

Golden pump.png

Name Lines Code
craft 3:9 10
CWNyYWZ0IDM6OQAAAAAAAAAACgAAAA1sb2NhbC5pbnQuc2V0CGNvbnN0YW50BAR0aWVyDmdsb2JhbC5p
bnQuZ2V0CGNvbnN0YW50BA5jcmFmdF90aWVyOjMuORBsb2NhbC5kb3VibGUuc2V0CGNvbnN0YW50BAVj
b3VudBFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfY291bnQ6My45DmdlbmVyaWMuZ290
b2lmCGNvbnN0YW50AmMAAAAPY29tcGFyaXNvbi5ib29sD2NvbXBhcmlzb24uYm9vbA5jb21wYXJpc29u
LmludA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BAE8CGNvbnN0YW50AgEAAAAI
Y29uc3RhbnQEAXwOY29tcGFyaXNvbi5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25z
dGFudAQBPghjb25zdGFudAIKAAAACGNvbnN0YW50BAF8EWNvbXBhcmlzb24uZG91YmxlEGxvY2FsLmRv
dWJsZS5nZXQIY29uc3RhbnQEBWNvdW50CGNvbnN0YW50BAE8CGNvbnN0YW50AwAAAAAAAPA/E2dlbmVy
aWMuZXhlY3V0ZXN5bmMIY29uc3RhbnQEDGNyYWZ0IDM6OTppbg5nZW5lcmljLmdvdG9pZghjb25zdGFu
dAJjAAAADmNvbXBhcmlzb24uaW50Dmdsb2JhbC5pbnQuZ2V0CGNvbnN0YW50BAxjcmFmdF9zdGF0dXMI
Y29uc3RhbnQEAT4IY29uc3RhbnQCxwAAAA5nbG9iYWwuaW50LnNldAhjb25zdGFudAQQY3JhZnRfc3Rh
dHVzOjMuOQhjb25zdGFudAIBAAAAD2dlbmVyaWMuZXhlY3V0ZQhjb25zdGFudAQQY3JhZnQgMzo5OnBs
YXRlcw9nZW5lcmljLmV4ZWN1dGUIY29uc3RhbnQED2NyYWZ0IDM6OTpyaW5ncxFnZW5lcmljLndhaXR1
bnRpbA9jb21wYXJpc29uLmJvb2wPY29tcGFyaXNvbi5ib29sD2NvbXBhcmlzb24uYm9vbA5jb21wYXJp
c29uLmludA5nbG9iYWwuaW50LmdldAhjb25zdGFudAQQY3JhZnRfc3RhdHVzOjMuOQhjb25zdGFudAQC
Pj0IY29uc3RhbnQCBwAAAAhjb25zdGFudAQBJhFjb21wYXJpc29uLmRvdWJsZRNmYWN0b3J5Lml0ZW1z
LmNvdW50CGNvbnN0YW50BAVwbGF0ZQ1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50
BAI+PRFhcml0aG1ldGljLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25z
dGFudAQBKghjb25zdGFudAMAAAAAAAAAQAhjb25zdGFudAQBJhFjb21wYXJpc29uLmRvdWJsZRNmYWN0
b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BAxwbGF0ZS5ydWJiZXIIY29uc3RhbnQCAQAAAAhjb25zdGFu
dAQCPj0RYXJpdGhtZXRpYy5kb3VibGUQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQFY291bnQIY29u
c3RhbnQEASoIY29uc3RhbnQDAAAAAAAAEEAIY29uc3RhbnQEASYRY29tcGFyaXNvbi5kb3VibGUTZmFj
dG9yeS5pdGVtcy5jb3VudAhjb25zdGFudAQEcmluZw1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVy
CGNvbnN0YW50BAI+PRFhcml0aG1ldGljLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVj
b3VudAhjb25zdGFudAQBKghjb25zdGFudAMAAAAAAAAAQA1mYWN0b3J5LmNyYWZ0CGNvbnN0YW50BARw
dW1wDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQF
Y291bnQ=
; Pumps
:global double craft_inventory
:local int tier
:local double count
:local double rubber
:local double rods

tier = global.int.get("craft_tier:3.9")
count = global.double.get("craft_count:3.9")
gotoif(99, tier < 1 | tier > 10 | count < 1.0)

executesync("craft 3:9:in")
gotoif(99, global.int.get("craft_status") > 199)

global.int.set("craft_status:3.9", 1)
execute("craft 3:9:plates")
execute("craft 3:9:rings")

waituntil(global.int.get("craft_status:3.9") >= 7 & count("plate", tier) >= count*2.0 & count("plate.rubber", 1) >= count*4.0 & count("ring", tier) >= count*2.0)
craft("pump", tier, count)


craft 3:9:in 16
DGNyYWZ0IDM6OTppbgAAAAAAAAAAEAAAAA1sb2NhbC5pbnQuc2V0CGNvbnN0YW50BAR0aWVyDmdsb2Jh
bC5pbnQuZ2V0CGNvbnN0YW50BA5jcmFmdF90aWVyOjMuORBsb2NhbC5kb3VibGUuc2V0CGNvbnN0YW50
BAVjb3VudBFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfY291bnQ6My45EGxvY2FsLmRv
dWJsZS5zZXQIY29uc3RhbnQEBnJ1YmJlchFhcml0aG1ldGljLmRvdWJsZQpkb3VibGUubWF4CGNvbnN0
YW50AwAAAAAAAAAAEWFyaXRobWV0aWMuZG91YmxlEGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQEBWNv
dW50CGNvbnN0YW50BAEtEWFyaXRobWV0aWMuZG91YmxlEWdsb2JhbC5kb3VibGUuZ2V0CGNvbnN0YW50
BA9jcmFmdF9pbnZlbnRvcnkIY29uc3RhbnQEASoTZmFjdG9yeS5pdGVtcy5jb3VudAhjb25zdGFudAQF
bW90b3INbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQBKwpkb3VibGUubWF4CGNv
bnN0YW50AwAAAAAAAAAAEWFyaXRobWV0aWMuZG91YmxlEWFyaXRobWV0aWMuZG91YmxlEGxvY2FsLmRv
dWJsZS5nZXQIY29uc3RhbnQEBWNvdW50CGNvbnN0YW50BAEqCGNvbnN0YW50AwAAAAAAABBACGNvbnN0
YW50BAEtEWFyaXRobWV0aWMuZG91YmxlEWdsb2JhbC5kb3VibGUuZ2V0CGNvbnN0YW50BA9jcmFmdF9p
bnZlbnRvcnkIY29uc3RhbnQEASoTZmFjdG9yeS5pdGVtcy5jb3VudAhjb25zdGFudAQMcGxhdGUucnVi
YmVyDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIOZ2VuZXJpYy5nb3RvaWYIY29uc3RhbnQCCAAA
ABFjb21wYXJpc29uLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAZydWJiZXIIY29uc3Rh
bnQEAjw9E2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEBnJ1YmJlcghjb25zdGFudAIBAAAADmds
b2JhbC5pbnQuc2V0CGNvbnN0YW50BAxjcmFmdF9zdGF0dXMIY29uc3RhbnQCnAEAAA5nbG9iYWwuaW50
LnNldAhjb25zdGFudAQSY3JhZnRfcmVxdWlyZV90aWVyCGNvbnN0YW50Av////8RZ2xvYmFsLmRvdWJs
ZS5zZXQIY29uc3RhbnQEE2NyYWZ0X3JlcXVpcmVfY291bnQQbG9jYWwuZG91YmxlLmdldAhjb25zdGFu
dAQGcnViYmVyDmdsb2JhbC5pbnQuc2V0CGNvbnN0YW50BBBjcmFmdF90aWVyOmluZ290DWxvY2FsLmlu
dC5nZXQIY29uc3RhbnQEBHRpZXIQbG9jYWwuZG91YmxlLnNldAhjb25zdGFudAQKbmVlZF9wdW1wcwpk
b3VibGUubWF4CGNvbnN0YW50AwAAAAAAAAAAEWFyaXRobWV0aWMuZG91YmxlEGxvY2FsLmRvdWJsZS5n
ZXQIY29uc3RhbnQEBWNvdW50CGNvbnN0YW50BAEtEWFyaXRobWV0aWMuZG91YmxlEWdsb2JhbC5kb3Vi
bGUuZ2V0CGNvbnN0YW50BA9jcmFmdF9pbnZlbnRvcnkIY29uc3RhbnQEASoTZmFjdG9yeS5pdGVtcy5j
b3VudAhjb25zdGFudAQFbW90b3INbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllchBsb2NhbC5kb3Vi
bGUuc2V0CGNvbnN0YW50BARyb2RzEWFyaXRobWV0aWMuZG91YmxlEWFyaXRobWV0aWMuZG91YmxlCmRv
dWJsZS5tYXgIY29uc3RhbnQDAAAAAAAAAAARYXJpdGhtZXRpYy5kb3VibGURYXJpdGhtZXRpYy5kb3Vi
bGUQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQFY291bnQIY29uc3RhbnQEASoIY29uc3RhbnQDAAAA
AAAAAEAIY29uc3RhbnQEAS0TZmFjdG9yeS5pdGVtcy5jb3VudAhjb25zdGFudAQEcmluZw1sb2NhbC5p
bnQuZ2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BAErEWFyaXRobWV0aWMuZG91YmxlEGxvY2FsLmRv
dWJsZS5nZXQIY29uc3RhbnQECm5lZWRfcHVtcHMIY29uc3RhbnQEASoIY29uc3RhbnQDAAAAAAAAAEAI
Y29uc3RhbnQEASsKZG91YmxlLm1heAhjb25zdGFudAMAAAAAAAAAAAtkb3VibGUuY2VpbBFhcml0aG1l
dGljLmRvdWJsZRFhcml0aG1ldGljLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BApuZWVk
X3B1bXBzCGNvbnN0YW50BAEtEWFyaXRobWV0aWMuZG91YmxlEWdsb2JhbC5kb3VibGUuZ2V0CGNvbnN0
YW50BA9jcmFmdF9pbnZlbnRvcnkIY29uc3RhbnQEASoTZmFjdG9yeS5pdGVtcy5jb3VudAhjb25zdGFu
dAQFc2NyZXcNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQBLwhjb25zdGFudAMA
AAAAAAAQQBFnbG9iYWwuZG91YmxlLnNldAhjb25zdGFudAQRY3JhZnRfY291bnQ6aW5nb3QRYXJpdGht
ZXRpYy5kb3VibGURYXJpdGhtZXRpYy5kb3VibGUKZG91YmxlLm1heAhjb25zdGFudAMAAAAAAAAAABFh
cml0aG1ldGljLmRvdWJsZRFhcml0aG1ldGljLmRvdWJsZRFhcml0aG1ldGljLmRvdWJsZRBsb2NhbC5k
b3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQBKghjb25zdGFudAMAAAAAAAAAQAhjb25z
dGFudAQBKxFhcml0aG1ldGljLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BApuZWVkX3B1
bXBzCGNvbnN0YW50BAEqCGNvbnN0YW50AwAAAAAAABBACGNvbnN0YW50BAEtEWFyaXRobWV0aWMuZG91
YmxlEWdsb2JhbC5kb3VibGUuZ2V0CGNvbnN0YW50BA9jcmFmdF9pbnZlbnRvcnkIY29uc3RhbnQEASoT
ZmFjdG9yeS5pdGVtcy5jb3VudAhjb25zdGFudAQFcGxhdGUNbG9jYWwuaW50LmdldAhjb25zdGFudAQE
dGllcghjb25zdGFudAQBKwpkb3VibGUubWF4CGNvbnN0YW50AwAAAAAAAAAAC2RvdWJsZS5jZWlsEWFy
aXRobWV0aWMuZG91YmxlEWFyaXRobWV0aWMuZG91YmxlEGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQE
BHJvZHMIY29uc3RhbnQEAS0RYXJpdGhtZXRpYy5kb3VibGURZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3Rh
bnQED2NyYWZ0X2ludmVudG9yeQhjb25zdGFudAQBKhNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50
BANyb2QNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQBLwhjb25zdGFudAMAAAAA
AAAAQAhjb25zdGFudAQBKwpkb3VibGUubWF4CGNvbnN0YW50AwAAAAAAAAAAC2RvdWJsZS5jZWlsEWFy
aXRobWV0aWMuZG91YmxlEWFyaXRobWV0aWMuZG91YmxlEGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQE
BWNvdW50CGNvbnN0YW50BAEtEWFyaXRobWV0aWMuZG91YmxlEWdsb2JhbC5kb3VibGUuZ2V0CGNvbnN0
YW50BA9jcmFmdF9pbnZlbnRvcnkIY29uc3RhbnQEASoRYXJpdGhtZXRpYy5kb3VibGUTZmFjdG9yeS5p
dGVtcy5jb3VudAhjb25zdGFudAQFY2FibGUNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25z
dGFudAQBKxNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BAR3aXJlDWxvY2FsLmludC5nZXQIY29u
c3RhbnQEBHRpZXIIY29uc3RhbnQEAS8IY29uc3RhbnQDAAAAAAAAAEATZ2VuZXJpYy5leGVjdXRlc3lu
Ywhjb25zdGFudAQLY3JhZnQgaW5nb3QOZ2VuZXJpYy5nb3RvaWYIY29uc3RhbnQCYwAAAA5jb21wYXJp
c29uLmludA5nbG9iYWwuaW50LmdldAhjb25zdGFudAQMY3JhZnRfc3RhdHVzCGNvbnN0YW50BAE+CGNv
bnN0YW50AscAAAAOZ2xvYmFsLmludC5zZXQIY29uc3RhbnQEDmNyYWZ0X3RpZXI6My44DWxvY2FsLmlu
dC5nZXQIY29uc3RhbnQEBHRpZXIRZ2xvYmFsLmRvdWJsZS5zZXQIY29uc3RhbnQED2NyYWZ0X2NvdW50
OjMuOBFhcml0aG1ldGljLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25z
dGFudAQBLRFhcml0aG1ldGljLmRvdWJsZRFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRf
aW52ZW50b3J5CGNvbnN0YW50BAEqE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEBW1vdG9yDWxv
Y2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXITZ2VuZXJpYy5leGVjdXRlc3luYwhjb25zdGFudAQJY3Jh
ZnQgMzo4
:global double craft_inventory
:local int tier
:local double count
:local double rubber
:local double need_pumps
:local double rods
:local double plates

tier = global.int.get("craft_tier:3.9")
count = global.double.get("craft_count:3.9")

; rubber and ingots
rubber = max(0.0, count - craft_inventory * count("motor", tier)) + max(0.0, count*4.0 - craft_inventory * count("plate.rubber", tier))
gotoif(ingots, rubber <= count("rubber", 1))
  global.int.set("craft_status", 412)
  global.int.set("craft_require_tier", -1)
  global.double.set("craft_require_count", rubber)

ingots: global.int.set("craft_tier:ingot", tier)
; plates: count*2.0 - craft_inventory * count("plate", tier)
; rods = count * 2.0 - count("ring", tier)
; rings: ceil((rods - craft_inventory * count("rod", tier))/2.0)
; motors...
;    rods = count * 2.0 + max(0.0, ceil((count - craft_inventory * count("screw", tier))/4.0))
;    global.double.set("craft_count:ingot", max(0.0, ceil((rods - craft_inventory * count("rod", tier))/2.0)) + max(0.0, ceil((count - craft_inventory * (count("cable", tier) + count("wire", tier)))/2.0)) + max(0.0, count * 4.0 - craft_inventory * count("plate", tier)))
  need_pumps = max(0.0, count - craft_inventory * count("motor", tier))
  rods = max(0.0, count * 2.0 - count("ring", tier)) + need_pumps * 2.0 + max(0.0, ceil((need_pumps - craft_inventory * count("screw", tier))/4.0))
  global.double.set("craft_count:ingot", max(0.0, count*2.0 + need_pumps * 4.0 - craft_inventory * count("plate", tier)) + max(0.0, ceil((rods - craft_inventory * count("rod", tier))/2.0)) + max(0.0, ceil((count - craft_inventory * (count("cable", tier) + count("wire", tier)))/2.0)))
  executesync("craft ingot")
gotoif(99, global.int.get("craft_status") > 199)

global.int.set("craft_tier:3.8", tier)
global.double.set("craft_count:3.8", count - craft_inventory * count("motor", tier))
executesync("craft 3:8")


craft 3:9:plates 9
EGNyYWZ0IDM6OTpwbGF0ZXMAAAAAAAAAAAkAAAANbG9jYWwuaW50LnNldAhjb25zdGFudAQEdGllcg5n
bG9iYWwuaW50LmdldAhjb25zdGFudAQOY3JhZnRfdGllcjozLjkQbG9jYWwuZG91YmxlLnNldAhjb25z
dGFudAQFY291bnQRZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3RhbnQED2NyYWZ0X2NvdW50OjMuOQ5nZW5l
cmljLmdvdG9pZghjb25zdGFudAIGAAAAEWNvbXBhcmlzb24uZG91YmxlEWFyaXRobWV0aWMuZG91Ymxl
EGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQEBWNvdW50CGNvbnN0YW50BAEqCGNvbnN0YW50AwAAAAAA
AABACGNvbnN0YW50BAE8EWFyaXRobWV0aWMuZG91YmxlEWdsb2JhbC5kb3VibGUuZ2V0CGNvbnN0YW50
BA9jcmFmdF9pbnZlbnRvcnkIY29uc3RhbnQEASoTZmFjdG9yeS5pdGVtcy5jb3VudAhjb25zdGFudAQF
cGxhdGUNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllchFnZW5lcmljLndhaXR3aGlsZRZmYWN0b3J5
Lm1hY2hpbmUuYWN0aXZlCGNvbnN0YW50BAdwcmVzc2VyD2ZhY3RvcnkucHJvZHVjZQhjb25zdGFudAQF
aW5nb3QNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllchFhcml0aG1ldGljLmRvdWJsZRFhcml0aG1l
dGljLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQBKghjb25z
dGFudAMAAAAAAAAAQAhjb25zdGFudAQBLRFhcml0aG1ldGljLmRvdWJsZRFnbG9iYWwuZG91YmxlLmdl
dAhjb25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0YW50BAEqE2ZhY3RvcnkuaXRlbXMuY291bnQI
Y29uc3RhbnQEBXBsYXRlDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEB3ByZXNz
ZXIOZ2VuZXJpYy5nb3RvaWYIY29uc3RhbnQCCQAAABFjb21wYXJpc29uLmRvdWJsZRFhcml0aG1ldGlj
LmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQBKghjb25zdGFu
dAMAAAAAAAAQQAhjb25zdGFudAQBPBFhcml0aG1ldGljLmRvdWJsZRFnbG9iYWwuZG91YmxlLmdldAhj
b25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0YW50BAEqE2ZhY3RvcnkuaXRlbXMuY291bnQIY29u
c3RhbnQEDHBsYXRlLnJ1YmJlcg1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyEWdlbmVyaWMud2Fp
dHdoaWxlFmZhY3RvcnkubWFjaGluZS5hY3RpdmUIY29uc3RhbnQEB3ByZXNzZXIPZmFjdG9yeS5wcm9k
dWNlCGNvbnN0YW50BAZydWJiZXIIY29uc3RhbnQCAQAAABFhcml0aG1ldGljLmRvdWJsZRFhcml0aG1l
dGljLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQBKghjb25z
dGFudAMAAAAAAAAQQAhjb25zdGFudAQBLRFhcml0aG1ldGljLmRvdWJsZRFnbG9iYWwuZG91YmxlLmdl
dAhjb25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0YW50BAEqE2ZhY3RvcnkuaXRlbXMuY291bnQI
Y29uc3RhbnQEDHBsYXRlLnJ1YmJlcg1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50
BAdwcmVzc2VyDmdsb2JhbC5pbnQuc2V0CGNvbnN0YW50BBBjcmFmdF9zdGF0dXM6My45DmFyaXRobWV0
aWMuaW50Dmdsb2JhbC5pbnQuZ2V0CGNvbnN0YW50BBBjcmFmdF9zdGF0dXM6My45CGNvbnN0YW50BAEr
CGNvbnN0YW50AgIAAAA=
:global double craft_inventory
:local int tier
:local double count

tier = global.int.get("craft_tier:3.9")
count = global.double.get("craft_count:3.9")

;plates = count * 2.0
plates: gotoif(rubber, count*2.0 < craft_inventory * count("plate", tier))
  waitwhile(active("presser"))
  produce("ingot", tier, count*2.0 - craft_inventory * count("plate", tier), "presser")

rubber: gotoif(end, count*4.0 < craft_inventory * count("plate.rubber", tier))
waitwhile(active("presser"))
  produce("rubber", 1, count*4.0 - craft_inventory * count("plate.rubber", tier), "presser")

end: global.int.set("craft_status:3.9", global.int.get("craft_status:3.9") + 2)


craft 3:9:rings 10
D2NyYWZ0IDM6OTpyaW5ncwAAAAAAAAAACgAAAA1sb2NhbC5pbnQuc2V0CGNvbnN0YW50BAR0aWVyDmds
b2JhbC5pbnQuZ2V0CGNvbnN0YW50BA5jcmFmdF90aWVyOjMuORBsb2NhbC5kb3VibGUuc2V0CGNvbnN0
YW50BAVjb3VudBFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfY291bnQ6My45EGxvY2Fs
LmRvdWJsZS5zZXQIY29uc3RhbnQEBHJvZHMRYXJpdGhtZXRpYy5kb3VibGURYXJpdGhtZXRpYy5kb3Vi
bGUQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQFY291bnQIY29uc3RhbnQEASoIY29uc3RhbnQDAAAA
AAAAAEAIY29uc3RhbnQEAS0TZmFjdG9yeS5pdGVtcy5jb3VudAhjb25zdGFudAQEcmluZw1sb2NhbC5p
bnQuZ2V0CGNvbnN0YW50BAR0aWVyDmdlbmVyaWMuZ290b2lmCGNvbnN0YW50AgcAAAARY29tcGFyaXNv
bi5kb3VibGUQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQEcm9kcwhjb25zdGFudAQBPBFhcml0aG1l
dGljLmRvdWJsZRFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0
YW50BAEqE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEA3JvZA1sb2NhbC5pbnQuZ2V0CGNvbnN0
YW50BAR0aWVyEWdlbmVyaWMud2FpdHdoaWxlFmZhY3RvcnkubWFjaGluZS5hY3RpdmUIY29uc3RhbnQE
BnNoYXBlcg9mYWN0b3J5LnByb2R1Y2UIY29uc3RhbnQEBWluZ290DWxvY2FsLmludC5nZXQIY29uc3Rh
bnQEBHRpZXILZG91YmxlLmNlaWwRYXJpdGhtZXRpYy5kb3VibGURYXJpdGhtZXRpYy5kb3VibGUQbG9j
YWwuZG91YmxlLmdldAhjb25zdGFudAQEcm9kcwhjb25zdGFudAQBLRFhcml0aG1ldGljLmRvdWJsZRFn
bG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0YW50BAEqE2ZhY3Rv
cnkuaXRlbXMuY291bnQIY29uc3RhbnQEA3JvZA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyCGNv
bnN0YW50BAEvCGNvbnN0YW50AwAAAAAAAABACGNvbnN0YW50BAZzaGFwZXIOZ2VuZXJpYy5nb3RvaWYI
Y29uc3RhbnQCCgAAABFjb21wYXJpc29uLmRvdWJsZRFhcml0aG1ldGljLmRvdWJsZRBsb2NhbC5kb3Vi
bGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQBKghjb25zdGFudAMAAAAAAAAAQAhjb25zdGFu
dAQBPBFhcml0aG1ldGljLmRvdWJsZRFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfaW52
ZW50b3J5CGNvbnN0YW50BAEqE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEBHJpbmcNbG9jYWwu
aW50LmdldAhjb25zdGFudAQEdGllchFnZW5lcmljLndhaXR3aGlsZQ9jb21wYXJpc29uLmJvb2wRY29t
cGFyaXNvbi5kb3VibGUTZmFjdG9yeS5pdGVtcy5jb3VudAhjb25zdGFudAQDcm9kDWxvY2FsLmludC5n
ZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEATwQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQEcm9k
cwhjb25zdGFudAQBfBZmYWN0b3J5Lm1hY2hpbmUuYWN0aXZlCGNvbnN0YW50BAZzaGFwZXIPZmFjdG9y
eS5wcm9kdWNlCGNvbnN0YW50BANyb2QNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllchFhcml0aG1l
dGljLmRvdWJsZRFhcml0aG1ldGljLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3Vu
dAhjb25zdGFudAQBKghjb25zdGFudAMAAAAAAAAAQAhjb25zdGFudAQBLRFhcml0aG1ldGljLmRvdWJs
ZRFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0YW50BAEqE2Zh
Y3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEBHJpbmcNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGll
cghjb25zdGFudAQGc2hhcGVyDmdsb2JhbC5pbnQuc2V0CGNvbnN0YW50BBBjcmFmdF9zdGF0dXM6My45
DmFyaXRobWV0aWMuaW50Dmdsb2JhbC5pbnQuZ2V0CGNvbnN0YW50BBBjcmFmdF9zdGF0dXM6My45CGNv
bnN0YW50BAErCGNvbnN0YW50AgQAAAA=
:global double craft_inventory
:local int tier
:local double count
:local double rods

tier = global.int.get("craft_tier:3.9")
count = global.double.get("craft_count:3.9")

; 2 rings
rods = count * 2.0 - count("ring", tier)
rods: gotoif(rings, rods < craft_inventory * count("rod", tier))
  waitwhile(active("shaper"))
  produce("ingot", tier, ceil((rods - craft_inventory * count("rod", tier))/2.0), "shaper")

rings: gotoif(end, count*2.0 < craft_inventory * count("ring", tier))
  waitwhile(count("rod", tier) < rods | active("shaper"))
  produce("rod", tier, count*2.0 - craft_inventory * count("ring", tier), "shaper")

end: global.int.set("craft_status:3.9", global.int.get("craft_status:3.9") + 4)


Wires

(pic)

Name Lines Code
craft part:wire 9
D2NyYWZ0IHBhcnQ6d2lyZQAAAAAAAAAACQAAAA1sb2NhbC5pbnQuc2V0CGNvbnN0YW50BAR0aWVyDmds
b2JhbC5pbnQuZ2V0CGNvbnN0YW50BA9jcmFmdF90aWVyOndpcmUQbG9jYWwuZG91YmxlLnNldAhjb25z
dGFudAQFY291bnQRZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3RhbnQEEGNyYWZ0X2NvdW50OndpcmUOZ2Vu
ZXJpYy5nb3RvaWYIY29uc3RhbnQCYwAAAA9jb21wYXJpc29uLmJvb2wPY29tcGFyaXNvbi5ib29sD2Nv
bXBhcmlzb24uYm9vbA5jb21wYXJpc29uLmludA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyCGNv
bnN0YW50BAE8CGNvbnN0YW50AgEAAAAIY29uc3RhbnQEAXwOY29tcGFyaXNvbi5pbnQNbG9jYWwuaW50
LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQBPghjb25zdGFudAIKAAAACGNvbnN0YW50BAF8EWNv
bXBhcmlzb24uZG91YmxlEGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQEBWNvdW50CGNvbnN0YW50BAE8
CGNvbnN0YW50AwAAAAAAAPA/CGNvbnN0YW50BAF8DmNvbXBhcmlzb24uaW50Dmdsb2JhbC5pbnQuZ2V0
CGNvbnN0YW50BAxjcmFmdF9zdGF0dXMIY29uc3RhbnQEAT4IY29uc3RhbnQCxwAAAA5nZW5lcmljLmdv
dG9pZghjb25zdGFudAIIAAAAEWNvbXBhcmlzb24uZG91YmxlEGxvY2FsLmRvdWJsZS5nZXQIY29uc3Rh
bnQEBWNvdW50CGNvbnN0YW50BAE8EWFyaXRobWV0aWMuZG91YmxlEWdsb2JhbC5kb3VibGUuZ2V0CGNv
bnN0YW50BA9jcmFmdF9pbnZlbnRvcnkIY29uc3RhbnQEASoTZmFjdG9yeS5pdGVtcy5jb3VudAhjb25z
dGFudAQFY2FibGUNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllchFnZW5lcmljLndhaXR3aGlsZRZm
YWN0b3J5Lm1hY2hpbmUuYWN0aXZlCGNvbnN0YW50BAhyZWZpbmVyeQ9mYWN0b3J5LnByb2R1Y2UIY29u
c3RhbnQEBWluZ290DWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXILZG91YmxlLmNlaWwRYXJpdGht
ZXRpYy5kb3VibGURYXJpdGhtZXRpYy5kb3VibGUQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQFY291
bnQIY29uc3RhbnQEAS0RYXJpdGhtZXRpYy5kb3VibGURZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3RhbnQE
D2NyYWZ0X2ludmVudG9yeQhjb25zdGFudAQBKhNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BAVj
YWJsZQ1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BAEvCGNvbnN0YW50AwAAAAAA
AABACGNvbnN0YW50BAhyZWZpbmVyeRFnZW5lcmljLndhaXR3aGlsZRZmYWN0b3J5Lm1hY2hpbmUuYWN0
aXZlCGNvbnN0YW50BAhyZWZpbmVyeQ9mYWN0b3J5LnByb2R1Y2UIY29uc3RhbnQEBWNhYmxlDWxvY2Fs
LmludC5nZXQIY29uc3RhbnQEBHRpZXIQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQFY291bnQIY29u
c3RhbnQECHJlZmluZXJ5EWdlbmVyaWMud2FpdHVudGlsEWNvbXBhcmlzb24uZG91YmxlE2ZhY3Rvcnku
aXRlbXMuY291bnQIY29uc3RhbnQEBHdpcmUNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25z
dGFudAQCPj0QbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQFY291bnQ=
:global double craft_inventory
:local int tier
:local double count

tier = global.int.get("craft_tier:wire")
count = global.double.get("craft_count:wire")
gotoif(99, tier < 1 | tier > 10 | count < 1.0 | global.int.get("craft_status") > 199)

cables: gotoif(wires, count < craft_inventory * count("cable", tier))
  waitwhile(active("refinery"))
  produce("ingot", tier, ceil((count - craft_inventory * count("cable", tier)) / 2.0), "refinery")
  waitwhile(active("refinery"))

wires: produce("cable", tier, count, "refinery")
  waituntil(count("wire", tier) >= count)


Screws

(pic)

Name Lines Code
craft part:screw 12
EGNyYWZ0IHBhcnQ6c2NyZXcAAAAAAAAAAAwAAAANbG9jYWwuaW50LnNldAhjb25zdGFudAQEdGllcg5n
bG9iYWwuaW50LmdldAhjb25zdGFudAQQY3JhZnRfdGllcjpzY3JldxBsb2NhbC5kb3VibGUuc2V0CGNv
bnN0YW50BAVjb3VudBFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQRY3JhZnRfY291bnQ6c2NyZXcO
Z2VuZXJpYy5nb3RvaWYIY29uc3RhbnQCYwAAAA9jb21wYXJpc29uLmJvb2wPY29tcGFyaXNvbi5ib29s
D2NvbXBhcmlzb24uYm9vbA5jb21wYXJpc29uLmludA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVy
CGNvbnN0YW50BAE8CGNvbnN0YW50AgEAAAAIY29uc3RhbnQEAXwOY29tcGFyaXNvbi5pbnQNbG9jYWwu
aW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQBPghjb25zdGFudAIKAAAACGNvbnN0YW50BAF8
EWNvbXBhcmlzb24uZG91YmxlEGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQEBWNvdW50CGNvbnN0YW50
BAE8CGNvbnN0YW50AwAAAAAAAPA/CGNvbnN0YW50BAF8DmNvbXBhcmlzb24uaW50Dmdsb2JhbC5pbnQu
Z2V0CGNvbnN0YW50BAxjcmFmdF9zdGF0dXMIY29uc3RhbnQEAT4IY29uc3RhbnQCxwAAABBsb2NhbC5k
b3VibGUuc2V0CGNvbnN0YW50BARyb2RzC2RvdWJsZS5jZWlsEWFyaXRobWV0aWMuZG91YmxlEGxvY2Fs
LmRvdWJsZS5nZXQIY29uc3RhbnQEBWNvdW50CGNvbnN0YW50BAEvCGNvbnN0YW50AwAAAAAAABBADmdl
bmVyaWMuZ290b2lmCGNvbnN0YW50AgkAAAARY29tcGFyaXNvbi5kb3VibGUQbG9jYWwuZG91YmxlLmdl
dAhjb25zdGFudAQEcm9kcwhjb25zdGFudAQCPD0RYXJpdGhtZXRpYy5kb3VibGURZ2xvYmFsLmRvdWJs
ZS5nZXQIY29uc3RhbnQED2NyYWZ0X2ludmVudG9yeQhjb25zdGFudAQBKhNmYWN0b3J5Lml0ZW1zLmNv
dW50CGNvbnN0YW50BANyb2QNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllchFnZW5lcmljLndhaXR3
aGlsZRZmYWN0b3J5Lm1hY2hpbmUuYWN0aXZlCGNvbnN0YW50BAZzaGFwZXIPZmFjdG9yeS5wcm9kdWNl
CGNvbnN0YW50BAVpbmdvdA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyC2RvdWJsZS5jZWlsEWFy
aXRobWV0aWMuZG91YmxlEWFyaXRobWV0aWMuZG91YmxlEGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQE
BHJvZHMIY29uc3RhbnQEAS0RYXJpdGhtZXRpYy5kb3VibGURZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3Rh
bnQED2NyYWZ0X2ludmVudG9yeQhjb25zdGFudAQBKhNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50
BANyb2QNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQBLwhjb25zdGFudAMAAAAA
AAAAQAhjb25zdGFudAQGc2hhcGVyEWdlbmVyaWMud2FpdHdoaWxlFmZhY3RvcnkubWFjaGluZS5hY3Rp
dmUIY29uc3RhbnQEBnNoYXBlchFnZW5lcmljLndhaXR3aGlsZRZmYWN0b3J5Lm1hY2hpbmUuYWN0aXZl
CGNvbnN0YW50BAZjdXR0ZXIPZmFjdG9yeS5wcm9kdWNlCGNvbnN0YW50BANyb2QNbG9jYWwuaW50Lmdl
dAhjb25zdGFudAQEdGllchBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BARyb2RzCGNvbnN0YW50BAZj
dXR0ZXIRZ2VuZXJpYy53YWl0d2hpbGUWZmFjdG9yeS5tYWNoaW5lLmFjdGl2ZQhjb25zdGFudAQGY3V0
dGVyDGdlbmVyaWMud2FpdAhjb25zdGFudAMAAAAAAAAAAA==
:global double craft_inventory
:local int tier
:local double count

tier = global.int.get("craft_tier:screw")
count = global.double.get("craft_count:screw")
gotoif(99, tier < 1 | tier > 10 | count < 1.0 | global.int.get("craft_status") > 199)

:local double rods
rods = ceil(count / 4.0)

rods: gotoif(screws, rods <= craft_inventory * count("rod", tier))
waitwhile(active("shaper"))
produce("ingot", tier, ceil((rods - craft_inventory * count("rod", tier)) / 2.0), "shaper")
waitwhile(active("shaper"))

screws: waitwhile(active("cutter"))
produce("rod", tier, rods, "cutter")
waitwhile(active("cutter"))

wait(0.0)

Machine scripts

Oven (1)

(pic)

Name Lines Code
craft 2:1 16
CWNyYWZ0IDI6MQAAAAAAAAAAEAAAAA1sb2NhbC5pbnQuc2V0CGNvbnN0YW50BAR0aWVyDmdsb2JhbC5p
bnQuZ2V0CGNvbnN0YW50BA5jcmFmdF90aWVyOjIuMRBsb2NhbC5kb3VibGUuc2V0CGNvbnN0YW50BAVj
b3VudBFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfY291bnQ6Mi4xDmdlbmVyaWMuZ290
b2lmCGNvbnN0YW50AmMAAAAPY29tcGFyaXNvbi5ib29sD2NvbXBhcmlzb24uYm9vbA9jb21wYXJpc29u
LmJvb2wOY29tcGFyaXNvbi5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQB
PAhjb25zdGFudAIBAAAACGNvbnN0YW50BAF8DmNvbXBhcmlzb24uaW50DWxvY2FsLmludC5nZXQIY29u
c3RhbnQEBHRpZXIIY29uc3RhbnQEAT4IY29uc3RhbnQCCgAAAAhjb25zdGFudAQBfBFjb21wYXJpc29u
LmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQBPAhjb25zdGFu
dAMAAAAAAADwPwhjb25zdGFudAQBfA5jb21wYXJpc29uLmludA5nbG9iYWwuaW50LmdldAhjb25zdGFu
dAQMY3JhZnRfc3RhdHVzCGNvbnN0YW50BAE+CGNvbnN0YW50AscAAAATZ2VuZXJpYy5leGVjdXRlc3lu
Ywhjb25zdGFudAQMY3JhZnQgMjoxOmluDmdlbmVyaWMuZ290b2lmCGNvbnN0YW50AmMAAAAOY29tcGFy
aXNvbi5pbnQOZ2xvYmFsLmludC5nZXQIY29uc3RhbnQEDGNyYWZ0X3N0YXR1cwhjb25zdGFudAQBPghj
b25zdGFudALHAAAAEGxvY2FsLmRvdWJsZS5zZXQIY29uc3RhbnQEBnBsYXRlcxFhcml0aG1ldGljLmRv
dWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQBKgxkb3VibGUuZmxv
b3IRYXJpdGhtZXRpYy5kb3VibGURYXJpdGhtZXRpYy5kb3VibGUIY29uc3RhbnQDAABBzTCyNEIIY29u
c3RhbnQEAS8RYXJpdGhtZXRpYy5kb3VibGUIY29uc3RhbnQDAAAAAAAAJEAIY29uc3RhbnQEA3BvdwNp
MmQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQDbW9kCGNvbnN0YW50AwAAAAAA
ACRAEGxvY2FsLmRvdWJsZS5zZXQIY29uc3RhbnQEBmJsb2NrcxFhcml0aG1ldGljLmRvdWJsZRBsb2Nh
bC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQBKgxkb3VibGUuZmxvb3IRYXJpdGht
ZXRpYy5kb3VibGURYXJpdGhtZXRpYy5kb3VibGUIY29uc3RhbnQDAAAEPiOyFEIIY29uc3RhbnQEAS8R
YXJpdGhtZXRpYy5kb3VibGUIY29uc3RhbnQDAAAAAAAAJEAIY29uc3RhbnQEA3BvdwNpMmQNbG9jYWwu
aW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQDbW9kCGNvbnN0YW50AwAAAAAAACRAEGxvY2Fs
LmRvdWJsZS5zZXQIY29uc3RhbnQEBmNhYmxlcxFhcml0aG1ldGljLmRvdWJsZRBsb2NhbC5kb3VibGUu
Z2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQBKgxkb3VibGUuZmxvb3IRYXJpdGhtZXRpYy5kb3Vi
bGURYXJpdGhtZXRpYy5kb3VibGUIY29uc3RhbnQDAABKaS2yJEIIY29uc3RhbnQEAS8RYXJpdGhtZXRp
Yy5kb3VibGUIY29uc3RhbnQDAAAAAAAAJEAIY29uc3RhbnQEA3BvdwNpMmQNbG9jYWwuaW50LmdldAhj
b25zdGFudAQEdGllcghjb25zdGFudAQDbW9kCGNvbnN0YW50AwAAAAAAACRADmdsb2JhbC5pbnQuc2V0
CGNvbnN0YW50BBBjcmFmdF9zdGF0dXM6Mi4xCGNvbnN0YW50AgEAAAAPZ2VuZXJpYy5leGVjdXRlCGNv
bnN0YW50BBBjcmFmdCAyOjE6cGxhdGVzDmdsb2JhbC5pbnQuc2V0CGNvbnN0YW50BA5jcmFmdF90aWVy
OjMuNg1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyEWdsb2JhbC5kb3VibGUuc2V0CGNvbnN0YW50
BA9jcmFmdF9jb3VudDozLjYRYXJpdGhtZXRpYy5kb3VibGUQbG9jYWwuZG91YmxlLmdldAhjb25zdGFu
dAQGY2FibGVzCGNvbnN0YW50BAEtEWFyaXRobWV0aWMuZG91YmxlEWdsb2JhbC5kb3VibGUuZ2V0CGNv
bnN0YW50BA9jcmFmdF9pbnZlbnRvcnkIY29uc3RhbnQEASoTZmFjdG9yeS5pdGVtcy5jb3VudAhjb25z
dGFudAQPY2FibGUuaW5zdWxhdGVkDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXITZ2VuZXJpYy5l
eGVjdXRlc3luYwhjb25zdGFudAQJY3JhZnQgMzo2DmdlbmVyaWMuZ290b2lmCGNvbnN0YW50AmMAAAAO
Y29tcGFyaXNvbi5pbnQOZ2xvYmFsLmludC5nZXQIY29uc3RhbnQEDGNyYWZ0X3N0YXR1cwhjb25zdGFu
dAQBPghjb25zdGFudALHAAAAEWdlbmVyaWMud2FpdHVudGlsD2NvbXBhcmlzb24uYm9vbA9jb21wYXJp
c29uLmJvb2wPY29tcGFyaXNvbi5ib29sDmNvbXBhcmlzb24uaW50Dmdsb2JhbC5pbnQuZ2V0CGNvbnN0
YW50BBBjcmFmdF9zdGF0dXM6Mi4xCGNvbnN0YW50BAI+PQhjb25zdGFudAIDAAAACGNvbnN0YW50BAEm
EWNvbXBhcmlzb24uZG91YmxlE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEBXBsYXRlDWxvY2Fs
LmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEAj49EGxvY2FsLmRvdWJsZS5nZXQIY29uc3Rh
bnQEBnBsYXRlcwhjb25zdGFudAQBJhFjb21wYXJpc29uLmRvdWJsZRNmYWN0b3J5Lml0ZW1zLmNvdW50
CGNvbnN0YW50BAVibG9jaw1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BAI+PRBs
b2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAZibG9ja3MIY29uc3RhbnQEASYRY29tcGFyaXNvbi5kb3Vi
bGUTZmFjdG9yeS5pdGVtcy5jb3VudAhjb25zdGFudAQPY2FibGUuaW5zdWxhdGVkDWxvY2FsLmludC5n
ZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEAj49EGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQEBmNh
Ymxlcw1mYWN0b3J5LmNyYWZ0CGNvbnN0YW50BAxtYWNoaW5lLm92ZW4NbG9jYWwuaW50LmdldAhjb25z
dGFudAQEdGllchBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudA==
; Oven
:global double craft_inventory
:local int tier
:local double count
:local double plates
:local double blocks
:local double cables

tier = global.int.get("craft_tier:2.1")
count = global.double.get("craft_count:2.1")
gotoif(99, tier < 1 | tier > 10 | count < 1.0 | global.int.get("craft_status") > 199)

executesync("craft 2:1:in")
gotoif(99, global.int.get("craft_status") > 199)

plates = count * floor((88888888641.0 / (10.0 ^ i2d(tier))) % 10.0)
blocks = count * floor((22222000001.0 / (10.0 ^ i2d(tier))) % 10.0)
cables = count * floor((44444333221.0 / (10.0 ^ i2d(tier))) % 10.0)

global.int.set("craft_status:2.1", 1)
execute("craft 2:1:plates")

global.int.set("craft_tier:3.6", tier)
global.double.set("craft_count:3.6", cables - craft_inventory * count("cable.insulated", tier))
executesync("craft 3:6")
gotoif(99, global.int.get("craft_status") > 199)

waituntil(global.int.get("craft_status:2.1") >= 3 & count("plate", tier) >= plates & count("block", tier) >= blocks & count("cable.insulated", tier) >= cables)
craft("machine.oven", tier, count)


craft 2:1:in 18
DGNyYWZ0IDI6MTppbgAAAAAAAAAAEgAAAA1sb2NhbC5pbnQuc2V0CGNvbnN0YW50BAR0aWVyDmdsb2Jh
bC5pbnQuZ2V0CGNvbnN0YW50BA5jcmFmdF90aWVyOjIuMRBsb2NhbC5kb3VibGUuc2V0CGNvbnN0YW50
BAVjb3VudBFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfY291bnQ6Mi4xEGxvY2FsLmRv
dWJsZS5zZXQIY29uc3RhbnQEBmluZ290cwhjb25zdGFudAMAAAAAAAAAAA5nbG9iYWwuaW50LnNldAhj
b25zdGFudAQQY3JhZnRfdGllcjppbmdvdA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyEWdsb2Jh
bC5kb3VibGUuc2V0CGNvbnN0YW50BBFjcmFmdF9jb3VudDppbmdvdBFhcml0aG1ldGljLmRvdWJsZRBs
b2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAZpbmdvdHMIY29uc3RhbnQEAS0TZmFjdG9yeS5pdGVtcy5j
b3VudAhjb25zdGFudAQFaW5nb3QNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcg5nbG9iYWwuaW50
LnNldAhjb25zdGFudAQSY3JhZnRfdmVyaWZ5OmluZ290CGNvbnN0YW50AgEAAAATZ2VuZXJpYy5leGVj
dXRlc3luYwhjb25zdGFudAQLY3JhZnQgaW5nb3QOZ2VuZXJpYy5nb3RvaWYIY29uc3RhbnQCYwAAAA5j
b21wYXJpc29uLmludA5nbG9iYWwuaW50LmdldAhjb25zdGFudAQMY3JhZnRfc3RhdHVzCGNvbnN0YW50
BAE+CGNvbnN0YW50AscAAAAOZ2xvYmFsLmludC5zZXQIY29uc3RhbnQEDmNyYWZ0X3RpZXI6Mi4xDmFy
aXRobWV0aWMuaW50DWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEAS0IY29uc3Rh
bnQCAQAAABFnbG9iYWwuZG91YmxlLnNldAhjb25zdGFudAQPY3JhZnRfY291bnQ6Mi4xEWFyaXRobWV0
aWMuZG91YmxlEGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQEBWNvdW50CGNvbnN0YW50BAEtEWFyaXRo
bWV0aWMuZG91YmxlEWdsb2JhbC5kb3VibGUuZ2V0CGNvbnN0YW50BA9jcmFmdF9pbnZlbnRvcnkIY29u
c3RhbnQEASoTZmFjdG9yeS5pdGVtcy5jb3VudAhjb25zdGFudAQMbWFjaGluZS5vdmVuDmFyaXRobWV0
aWMuaW50DWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEAS0IY29uc3RhbnQCAQAA
ABNnZW5lcmljLmV4ZWN1dGVzeW5jCGNvbnN0YW50BAljcmFmdCAyOjEOZ2VuZXJpYy5nb3RvaWYIY29u
c3RhbnQCYwAAAA5jb21wYXJpc29uLmludA5nbG9iYWwuaW50LmdldAhjb25zdGFudAQMY3JhZnRfc3Rh
dHVzCGNvbnN0YW50BAE+CGNvbnN0YW50AscAAAAOZ2xvYmFsLmludC5zZXQIY29uc3RhbnQEEGNyYWZ0
X3RpZXI6aW5nb3QNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllchFnbG9iYWwuZG91YmxlLnNldAhj
b25zdGFudAQRY3JhZnRfY291bnQ6aW5nb3QRYXJpdGhtZXRpYy5kb3VibGUQbG9jYWwuZG91YmxlLmdl
dAhjb25zdGFudAQGaW5nb3RzCGNvbnN0YW50BAEtE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQE
BWluZ290DWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXITZ2VuZXJpYy5leGVjdXRlc3luYwhjb25z
dGFudAQLY3JhZnQgaW5nb3QOZ2VuZXJpYy5nb3RvaWYIY29uc3RhbnQCYwAAAA5jb21wYXJpc29uLmlu
dA5nbG9iYWwuaW50LmdldAhjb25zdGFudAQMY3JhZnRfc3RhdHVzCGNvbnN0YW50BAE+CGNvbnN0YW50
AscAAAAOZ2xvYmFsLmludC5zZXQIY29uc3RhbnQEDmNyYWZ0X3RpZXI6Mi4xDWxvY2FsLmludC5nZXQI
Y29uc3RhbnQEBHRpZXIRZ2xvYmFsLmRvdWJsZS5zZXQIY29uc3RhbnQED2NyYWZ0X2NvdW50OjIuMRBs
b2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudA==
:global double craft_inventory
:local int tier
:local double count
:local double plates
:local double blocks
:local double cables
:local double ingots

tier = global.int.get("craft_tier:2.1")
count = global.double.get("craft_count:2.1")


; Verify ingots
;plates = count * round((88888888640.0 / (10.0 ^ i2d(tier))) % 10.0)
;blocks = count * round((22222000000.0 / (10.0 ^ i2d(tier))) % 10.0)
;cables = count * round((44444333220.0 / (10.0 ^ i2d(tier))) % 10.0)

ingots = 0.0 ; TODO
global.int.set("craft_tier:ingot", tier)
global.double.set("craft_count:ingot", ingots - count("ingot", tier))
global.int.set("craft_verify:ingot", 1)
executesync("craft ingot")
gotoif(99, global.int.get("craft_status") > 199)

; Lower tier inputs
global.int.set("craft_tier:2.1", tier - 1)
global.double.set("craft_count:2.1", count - craft_inventory * count("machine.oven", tier - 1))
executesync("craft 2:1")
gotoif(99, global.int.get("craft_status") > 199)

; Craft ingots
global.int.set("craft_tier:ingot", tier)
global.double.set("craft_count:ingot", ingots - count("ingot", tier))
executesync("craft ingot")
gotoif(99, global.int.get("craft_status") > 199)

; Restore state for this tier
global.int.set("craft_tier:2.1", tier)
global.double.set("craft_count:2.1", count)
craft 2:1:plates 11
EGNyYWZ0IDI6MTpwbGF0ZXMAAAAAAAAAAAsAAAANbG9jYWwuaW50LnNldAhjb25zdGFudAQEdGllcg5n
bG9iYWwuaW50LmdldAhjb25zdGFudAQOY3JhZnRfdGllcjoyLjEQbG9jYWwuZG91YmxlLnNldAhjb25z
dGFudAQFY291bnQRZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3RhbnQED2NyYWZ0X2NvdW50OjIuMRBsb2Nh
bC5kb3VibGUuc2V0CGNvbnN0YW50BAZibG9ja3MRYXJpdGhtZXRpYy5kb3VibGUQbG9jYWwuZG91Ymxl
LmdldAhjb25zdGFudAQFY291bnQIY29uc3RhbnQEASoMZG91YmxlLmZsb29yEWFyaXRobWV0aWMuZG91
YmxlEWFyaXRobWV0aWMuZG91YmxlCGNvbnN0YW50AwAABD4jshRCCGNvbnN0YW50BAEvEWFyaXRobWV0
aWMuZG91YmxlCGNvbnN0YW50AwAAAAAAACRACGNvbnN0YW50BANwb3cDaTJkDWxvY2FsLmludC5nZXQI
Y29uc3RhbnQEBHRpZXIIY29uc3RhbnQEA21vZAhjb25zdGFudAMAAAAAAAAkQBBsb2NhbC5kb3VibGUu
c2V0CGNvbnN0YW50BAZwbGF0ZXMRYXJpdGhtZXRpYy5kb3VibGUQbG9jYWwuZG91YmxlLmdldAhjb25z
dGFudAQFY291bnQIY29uc3RhbnQEASoMZG91YmxlLmZsb29yEWFyaXRobWV0aWMuZG91YmxlEWFyaXRo
bWV0aWMuZG91YmxlCGNvbnN0YW50AwAAQc0wsjRCCGNvbnN0YW50BAEvEWFyaXRobWV0aWMuZG91Ymxl
CGNvbnN0YW50AwAAAAAAACRACGNvbnN0YW50BANwb3cDaTJkDWxvY2FsLmludC5nZXQIY29uc3RhbnQE
BHRpZXIIY29uc3RhbnQEA21vZAhjb25zdGFudAMAAAAAAAAkQA5nbG9iYWwuaW50LnNldAhjb25zdGFu
dAQOY3JhZnRfdGllcjozLjQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllchFnbG9iYWwuZG91Ymxl
LnNldAhjb25zdGFudAQPY3JhZnRfY291bnQ6My40EWFyaXRobWV0aWMuZG91YmxlEGxvY2FsLmRvdWJs
ZS5nZXQIY29uc3RhbnQEBmJsb2Nrcwhjb25zdGFudAQBLRFhcml0aG1ldGljLmRvdWJsZRFnbG9iYWwu
ZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0YW50BAEqE2ZhY3RvcnkuaXRl
bXMuY291bnQIY29uc3RhbnQEBWJsb2NrDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXITZ2VuZXJp
Yy5leGVjdXRlc3luYwhjb25zdGFudAQJY3JhZnQgMzo0DmdlbmVyaWMuZ290b2lmCGNvbnN0YW50AgsA
AAARY29tcGFyaXNvbi5kb3VibGUQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQGcGxhdGVzCGNvbnN0
YW50BAE8EWFyaXRobWV0aWMuZG91YmxlEWdsb2JhbC5kb3VibGUuZ2V0CGNvbnN0YW50BA9jcmFmdF9p
bnZlbnRvcnkIY29uc3RhbnQEASoTZmFjdG9yeS5pdGVtcy5jb3VudAhjb25zdGFudAQFcGxhdGUNbG9j
YWwuaW50LmdldAhjb25zdGFudAQEdGllchFnZW5lcmljLndhaXR3aGlsZRZmYWN0b3J5Lm1hY2hpbmUu
YWN0aXZlCGNvbnN0YW50BAdwcmVzc2VyD2ZhY3RvcnkucHJvZHVjZQhjb25zdGFudAQFaW5nb3QNbG9j
YWwuaW50LmdldAhjb25zdGFudAQEdGllchFhcml0aG1ldGljLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0
CGNvbnN0YW50BAZwbGF0ZXMIY29uc3RhbnQEAS0RYXJpdGhtZXRpYy5kb3VibGURZ2xvYmFsLmRvdWJs
ZS5nZXQIY29uc3RhbnQED2NyYWZ0X2ludmVudG9yeQhjb25zdGFudAQBKhNmYWN0b3J5Lml0ZW1zLmNv
dW50CGNvbnN0YW50BAVwbGF0ZQ1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BAdw
cmVzc2VyDmdsb2JhbC5pbnQuc2V0CGNvbnN0YW50BBBjcmFmdF9zdGF0dXM6Mi4xDmFyaXRobWV0aWMu
aW50Dmdsb2JhbC5pbnQuZ2V0CGNvbnN0YW50BBBjcmFmdF9zdGF0dXM6Mi4xCGNvbnN0YW50BAErCGNv
bnN0YW50AgIAAAA=
:global double craft_inventory
:local int tier
:local double count
:local double blocks
:local double plates

tier = global.int.get("craft_tier:2.1")
count = global.double.get("craft_count:2.1")

blocks = count * floor((22222000001.0 / (10.0 ^ i2d(tier))) % 10.0)
plates = count * floor((88888888641.0 / (10.0 ^ i2d(tier))) % 10.0)

global.int.set("craft_tier:3.4", tier)
global.double.set("craft_count:3.4", blocks - craft_inventory * count("block", tier))
executesync("craft 3:4")

plates: gotoif(end, plates < craft_inventory * count("plate", tier))
  waitwhile(active("presser"))
  produce("ingot", tier, plates - craft_inventory * count("plate", tier), "presser")

end: global.int.set("craft_status:2.1", global.int.get("craft_status:2.1") + 2)

Assembler (2)

(pic)

Name Lines Code
craft 2:2 17
CWNyYWZ0IDI6MgAAAAAAAAAAEQAAAA1sb2NhbC5pbnQuc2V0CGNvbnN0YW50BAR0aWVyDmdsb2JhbC5p
bnQuZ2V0CGNvbnN0YW50BA5jcmFmdF90aWVyOjIuMhBsb2NhbC5kb3VibGUuc2V0CGNvbnN0YW50BAVj
b3VudBFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfY291bnQ6Mi4yDmdlbmVyaWMuZ290
b2lmCGNvbnN0YW50AmMAAAAPY29tcGFyaXNvbi5ib29sD2NvbXBhcmlzb24uYm9vbA9jb21wYXJpc29u
LmJvb2wOY29tcGFyaXNvbi5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQB
PAhjb25zdGFudAIBAAAACGNvbnN0YW50BAF8DmNvbXBhcmlzb24uaW50DWxvY2FsLmludC5nZXQIY29u
c3RhbnQEBHRpZXIIY29uc3RhbnQEAT4IY29uc3RhbnQCCgAAAAhjb25zdGFudAQBfBFjb21wYXJpc29u
LmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQBPAhjb25zdGFu
dAMAAAAAAADwPwhjb25zdGFudAQBfA5jb21wYXJpc29uLmludA5nbG9iYWwuaW50LmdldAhjb25zdGFu
dAQMY3JhZnRfc3RhdHVzCGNvbnN0YW50BAE+CGNvbnN0YW50AscAAAATZ2VuZXJpYy5leGVjdXRlc3lu
Ywhjb25zdGFudAQMY3JhZnQgMjoyOmluDmdlbmVyaWMuZ290b2lmCGNvbnN0YW50AmMAAAAOY29tcGFy
aXNvbi5pbnQOZ2xvYmFsLmludC5nZXQIY29uc3RhbnQEDGNyYWZ0X3N0YXR1cwhjb25zdGFudAQBPghj
b25zdGFudALHAAAAEGxvY2FsLmRvdWJsZS5zZXQIY29uc3RhbnQEBm1vdG9ycxFhcml0aG1ldGljLmRv
dWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQBKgtkb3VibGUuY2Vp
bBFhcml0aG1ldGljLmRvdWJsZQNpMmQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFu
dAQBLwhjb25zdGFudAMAAAAAAAAgQBBsb2NhbC5kb3VibGUuc2V0CGNvbnN0YW50BAVjaGlwcxFhcml0
aG1ldGljLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQBKgtk
b3VibGUuY2VpbBFhcml0aG1ldGljLmRvdWJsZQNpMmQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGll
cghjb25zdGFudAQBLwhjb25zdGFudAMAAAAAAAAiQA1sb2NhbC5pbnQuc2V0CGNvbnN0YW50BAhjaGlw
dGllcgNkMmkMZG91YmxlLmZsb29yEWFyaXRobWV0aWMuZG91YmxlEWFyaXRobWV0aWMuZG91YmxlCGNv
bnN0YW50AwAAbgXQpCRCCGNvbnN0YW50BAEvEWFyaXRobWV0aWMuZG91YmxlCGNvbnN0YW50AwAAAAAA
ACRACGNvbnN0YW50BANwb3cDaTJkDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQE
A21vZAhjb25zdGFudAMAAAAAAAAkQA5nbG9iYWwuaW50LnNldAhjb25zdGFudAQOY3JhZnRfdGllcjoz
LjENbG9jYWwuaW50LmdldAhjb25zdGFudAQIY2hpcHRpZXIRZ2xvYmFsLmRvdWJsZS5zZXQIY29uc3Rh
bnQED2NyYWZ0X2NvdW50OjMuMRFhcml0aG1ldGljLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0
YW50BAVjaGlwcwhjb25zdGFudAQBLRFhcml0aG1ldGljLmRvdWJsZRFnbG9iYWwuZG91YmxlLmdldAhj
b25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0YW50BAEqE2ZhY3RvcnkuaXRlbXMuY291bnQIY29u
c3RhbnQEBGNoaXANbG9jYWwuaW50LmdldAhjb25zdGFudAQIY2hpcHRpZXITZ2VuZXJpYy5leGVjdXRl
c3luYwhjb25zdGFudAQJY3JhZnQgMzoxDmdsb2JhbC5pbnQuc2V0CGNvbnN0YW50BA5jcmFmdF90aWVy
OjMuOA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyEWdsb2JhbC5kb3VibGUuc2V0CGNvbnN0YW50
BA9jcmFmdF9jb3VudDozLjgRYXJpdGhtZXRpYy5kb3VibGUQbG9jYWwuZG91YmxlLmdldAhjb25zdGFu
dAQGbW90b3JzCGNvbnN0YW50BAEtEWFyaXRobWV0aWMuZG91YmxlEWdsb2JhbC5kb3VibGUuZ2V0CGNv
bnN0YW50BA9jcmFmdF9pbnZlbnRvcnkIY29uc3RhbnQEASoTZmFjdG9yeS5pdGVtcy5jb3VudAhjb25z
dGFudAQFbW90b3INbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllchNnZW5lcmljLmV4ZWN1dGVzeW5j
CGNvbnN0YW50BAljcmFmdCAzOjgOZ2VuZXJpYy5nb3RvaWYIY29uc3RhbnQCYwAAAA5jb21wYXJpc29u
LmludA5nbG9iYWwuaW50LmdldAhjb25zdGFudAQMY3JhZnRfc3RhdHVzCGNvbnN0YW50BAE+CGNvbnN0
YW50AscAAAATZ2VuZXJpYy5leGVjdXRlc3luYwhjb25zdGFudAQQY3JhZnQgMjoyOnBsYXRlcw1mYWN0
b3J5LmNyYWZ0CGNvbnN0YW50BBFtYWNoaW5lLmFzc2VtYmxlcg1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50
BAR0aWVyEGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQEBWNvdW50
; Assembler
:global double craft_inventory
:local int tier
:local double count
:local double motors
:local double chips
:local int chiptier

tier = global.int.get("craft_tier:2.2")
count = global.double.get("craft_count:2.2")
gotoif(99, tier < 1 | tier > 10 | count < 1.0 | global.int.get("craft_status") > 199)

executesync("craft 2:2:in")
gotoif(99, global.int.get("craft_status") > 199)

motors = count * ceil(i2d(tier) / 8.0)
chips = count * ceil(i2d(tier) / 9.0)
chiptier = d2i(floor((44332221111.0 / (10.0 ^ i2d(tier))) % 10.0))

global.int.set("craft_tier:3.1", chiptier)
global.double.set("craft_count:3.1", chips - craft_inventory * count("chip", chiptier))
executesync("craft 3:1")
global.int.set("craft_tier:3.8", tier)
global.double.set("craft_count:3.8", motors - craft_inventory * count("motor", tier))
executesync("craft 3:8")
gotoif(99, global.int.get("craft_status") > 199)

executesync("craft 2:2:plates")
craft("machine.assembler", tier, count)


craft 2:2:in 13
DGNyYWZ0IDI6MjppbgAAAAAAAAAADQAAAA1sb2NhbC5pbnQuc2V0CGNvbnN0YW50BAR0aWVyDmdsb2Jh
bC5pbnQuZ2V0CGNvbnN0YW50BA5jcmFmdF90aWVyOjIuMhBsb2NhbC5kb3VibGUuc2V0CGNvbnN0YW50
BAVjb3VudBFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfY291bnQ6Mi4yEGxvY2FsLmRv
dWJsZS5zZXQIY29uc3RhbnQEBmluZ290cwhjb25zdGFudAMAAAAAAAAAAA5nbG9iYWwuaW50LnNldAhj
b25zdGFudAQQY3JhZnRfdGllcjppbmdvdA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyEWdsb2Jh
bC5kb3VibGUuc2V0CGNvbnN0YW50BBFjcmFmdF9jb3VudDppbmdvdBFhcml0aG1ldGljLmRvdWJsZRBs
b2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAZpbmdvdHMIY29uc3RhbnQEAS0TZmFjdG9yeS5pdGVtcy5j
b3VudAhjb25zdGFudAQFaW5nb3QNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllchNnZW5lcmljLmV4
ZWN1dGVzeW5jCGNvbnN0YW50BAtjcmFmdCBpbmdvdA5nZW5lcmljLmdvdG9pZghjb25zdGFudAJjAAAA
DmNvbXBhcmlzb24uaW50Dmdsb2JhbC5pbnQuZ2V0CGNvbnN0YW50BAxjcmFmdF9zdGF0dXMIY29uc3Rh
bnQEAT4IY29uc3RhbnQCxwAAAA5nbG9iYWwuaW50LnNldAhjb25zdGFudAQOY3JhZnRfdGllcjoyLjIO
YXJpdGhtZXRpYy5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQBLQhjb25z
dGFudAIBAAAAEWdsb2JhbC5kb3VibGUuc2V0CGNvbnN0YW50BA9jcmFmdF9jb3VudDoyLjIRYXJpdGht
ZXRpYy5kb3VibGUQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQFY291bnQIY29uc3RhbnQEAS0RYXJp
dGhtZXRpYy5kb3VibGURZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3RhbnQED2NyYWZ0X2ludmVudG9yeQhj
b25zdGFudAQBKhNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BBFtYWNoaW5lLmFzc2VtYmxlcg5h
cml0aG1ldGljLmludA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BAEtCGNvbnN0
YW50AgEAAAATZ2VuZXJpYy5leGVjdXRlc3luYwhjb25zdGFudAQJY3JhZnQgMjoyDmdlbmVyaWMuZ290
b2lmCGNvbnN0YW50AmMAAAAOY29tcGFyaXNvbi5pbnQOZ2xvYmFsLmludC5nZXQIY29uc3RhbnQEDGNy
YWZ0X3N0YXR1cwhjb25zdGFudAQBPghjb25zdGFudALHAAAADmdsb2JhbC5pbnQuc2V0CGNvbnN0YW50
BA5jcmFmdF90aWVyOjIuMg1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyEWdsb2JhbC5kb3VibGUu
c2V0CGNvbnN0YW50BA9jcmFmdF9jb3VudDoyLjIQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQFY291
bnQ=
:global double craft_inventory
:local int tier
:local double count
:local double plates
:local double blocks
:local double cables
:local double ingots

tier = global.int.get("craft_tier:2.2")
count = global.double.get("craft_count:2.2")

; Ingots
ingots = 0.0 ; TODO
global.int.set("craft_tier:ingot", tier)
global.double.set("craft_count:ingot", ingots - count("ingot", tier))
;global.int.set("craft_verify:ingot", 1)
executesync("craft ingot")
gotoif(99, global.int.get("craft_status") > 199)

; Lower tier inputs
global.int.set("craft_tier:2.2", tier - 1)
global.double.set("craft_count:2.2", count - craft_inventory * count("machine.assembler", tier - 1))
executesync("craft 2:2")
gotoif(99, global.int.get("craft_status") > 199)

; Restore state for this tier
global.int.set("craft_tier:2.2", tier)
global.double.set("craft_count:2.2", count)


craft 2:2:plates 20
EGNyYWZ0IDI6MjpwbGF0ZXMAAAAAAAAAABQAAAANbG9jYWwuaW50LnNldAhjb25zdGFudAQEdGllcg5n
bG9iYWwuaW50LmdldAhjb25zdGFudAQOY3JhZnRfdGllcjoyLjIQbG9jYWwuZG91YmxlLnNldAhjb25z
dGFudAQFY291bnQRZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3RhbnQED2NyYWZ0X2NvdW50OjIuMhBsb2Nh
bC5kb3VibGUuc2V0CGNvbnN0YW50BAZwbGF0ZXMRYXJpdGhtZXRpYy5kb3VibGURYXJpdGhtZXRpYy5k
b3VibGUQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQFY291bnQIY29uc3RhbnQEASoIY29uc3RhbnQD
AAAAAAAAAEAIY29uc3RhbnQEASoMZG91YmxlLmZsb29yEWFyaXRobWV0aWMuZG91YmxlEWFyaXRobWV0
aWMuZG91YmxlCGNvbnN0YW50AwAA1vgG/i5CCGNvbnN0YW50BAEvEWFyaXRobWV0aWMuZG91YmxlCGNv
bnN0YW50AwAAAAAAACRACGNvbnN0YW50BANwb3cDaTJkDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRp
ZXIIY29uc3RhbnQEA21vZAhjb25zdGFudAMAAAAAAAAkQA5nZW5lcmljLmdvdG9pZghjb25zdGFudAIG
AAAADmNvbXBhcmlzb24uaW50DWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEAiE9
CGNvbnN0YW50AgIAAAAQbG9jYWwuZG91YmxlLnNldAhjb25zdGFudAQGcGxhdGVzEWFyaXRobWV0aWMu
ZG91YmxlEGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQEBnBsYXRlcwhjb25zdGFudAQBLQhjb25zdGFu
dAMAAAAAAADwPxBsb2NhbC5kb3VibGUuc2V0CGNvbnN0YW50BAVwaXBlcxFhcml0aG1ldGljLmRvdWJs
ZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQBKgtkb3VibGUuY2VpbBFh
cml0aG1ldGljLmRvdWJsZQNpMmQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQB
Lwhjb25zdGFudAMAAAAAAAAUQBBsb2NhbC5kb3VibGUuc2V0CGNvbnN0YW50BAlyYXdwbGF0ZXMRYXJp
dGhtZXRpYy5kb3VibGUKZG91YmxlLm1heAhjb25zdGFudAMAAAAAAAAAABFhcml0aG1ldGljLmRvdWJs
ZRFhcml0aG1ldGljLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAZwbGF0ZXMIY29uc3Rh
bnQEASoIY29uc3RhbnQDAAAAAAAAIkAIY29uc3RhbnQEAS0RYXJpdGhtZXRpYy5kb3VibGURZ2xvYmFs
LmRvdWJsZS5nZXQIY29uc3RhbnQED2NyYWZ0X2ludmVudG9yeQhjb25zdGFudAQBKhFhcml0aG1ldGlj
LmRvdWJsZRNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BAtwbGF0ZS5kZW5zZQ1sb2NhbC5pbnQu
Z2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BAErE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQE
C3BsYXRlLnN0YWNrDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEASsKZG91Ymxl
Lm1heAhjb25zdGFudAMAAAAAAAAAABFhcml0aG1ldGljLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNv
bnN0YW50BAVwaXBlcwhjb25zdGFudAQBLRFhcml0aG1ldGljLmRvdWJsZRFnbG9iYWwuZG91YmxlLmdl
dAhjb25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0YW50BAEqE2ZhY3RvcnkuaXRlbXMuY291bnQI
Y29uc3RhbnQEBHBpcGUNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcg5nZW5lcmljLmdvdG9pZghj
b25zdGFudAIMAAAAEWNvbXBhcmlzb24uZG91YmxlEGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQECXJh
d3BsYXRlcwhjb25zdGFudAQCPD0RYXJpdGhtZXRpYy5kb3VibGURZ2xvYmFsLmRvdWJsZS5nZXQIY29u
c3RhbnQED2NyYWZ0X2ludmVudG9yeQhjb25zdGFudAQBKhNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0
YW50BAVwbGF0ZQ1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyEWdlbmVyaWMud2FpdHdoaWxlFmZh
Y3RvcnkubWFjaGluZS5hY3RpdmUIY29uc3RhbnQEB3ByZXNzZXIPZmFjdG9yeS5wcm9kdWNlCGNvbnN0
YW50BAVpbmdvdA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyEWFyaXRobWV0aWMuZG91YmxlEGxv
Y2FsLmRvdWJsZS5nZXQIY29uc3RhbnQECXJhd3BsYXRlcwhjb25zdGFudAQBLRFhcml0aG1ldGljLmRv
dWJsZRFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0YW50BAEq
E2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEBXBsYXRlDWxvY2FsLmludC5nZXQIY29uc3RhbnQE
BHRpZXIIY29uc3RhbnQEB3ByZXNzZXIRZ2VuZXJpYy53YWl0d2hpbGUWZmFjdG9yeS5tYWNoaW5lLmFj
dGl2ZQhjb25zdGFudAQHcHJlc3Nlcg5nZW5lcmljLmdvdG9pZghjb25zdGFudAIQAAAAEWNvbXBhcmlz
b24uZG91YmxlEGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQEBnBsYXRlcwhjb25zdGFudAQCPD0RYXJp
dGhtZXRpYy5kb3VibGURZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3RhbnQED2NyYWZ0X2ludmVudG9yeQhj
b25zdGFudAQBKhNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BAtwbGF0ZS5kZW5zZQ1sb2NhbC5p
bnQuZ2V0CGNvbnN0YW50BAR0aWVyDWZhY3RvcnkuY3JhZnQIY29uc3RhbnQEC3BsYXRlLnN0YWNrDWxv
Y2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIRYXJpdGhtZXRpYy5kb3VibGUQbG9jYWwuZG91YmxlLmdl
dAhjb25zdGFudAQGcGxhdGVzCGNvbnN0YW50BAEtEWFyaXRobWV0aWMuZG91YmxlEWdsb2JhbC5kb3Vi
bGUuZ2V0CGNvbnN0YW50BA9jcmFmdF9pbnZlbnRvcnkIY29uc3RhbnQEASoRYXJpdGhtZXRpYy5kb3Vi
bGUTZmFjdG9yeS5pdGVtcy5jb3VudAhjb25zdGFudAQLcGxhdGUuc3RhY2sNbG9jYWwuaW50LmdldAhj
b25zdGFudAQEdGllcghjb25zdGFudAQBKxNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BAtwbGF0
ZS5kZW5zZQ1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyEWdlbmVyaWMud2FpdHdoaWxlFmZhY3Rv
cnkubWFjaGluZS5hY3RpdmUIY29uc3RhbnQEB3ByZXNzZXIPZmFjdG9yeS5wcm9kdWNlCGNvbnN0YW50
BAtwbGF0ZS5zdGFjaw1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyEWFyaXRobWV0aWMuZG91Ymxl
EGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQEBnBsYXRlcwhjb25zdGFudAQBLRFhcml0aG1ldGljLmRv
dWJsZRFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0YW50BAEq
E2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEC3BsYXRlLmRlbnNlDWxvY2FsLmludC5nZXQIY29u
c3RhbnQEBHRpZXIIY29uc3RhbnQEB3ByZXNzZXIOZ2VuZXJpYy5nb3RvaWYIY29uc3RhbnQCEwAAABFj
b21wYXJpc29uLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVwaXBlcwhjb25zdGFudAQC
PD0RYXJpdGhtZXRpYy5kb3VibGURZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3RhbnQED2NyYWZ0X2ludmVu
dG9yeQhjb25zdGFudAQBKhNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BARwaXBlDWxvY2FsLmlu
dC5nZXQIY29uc3RhbnQEBHRpZXIRZ2VuZXJpYy53YWl0d2hpbGUWZmFjdG9yeS5tYWNoaW5lLmFjdGl2
ZQhjb25zdGFudAQGc2hhcGVyD2ZhY3RvcnkucHJvZHVjZQhjb25zdGFudAQFcGxhdGUNbG9jYWwuaW50
LmdldAhjb25zdGFudAQEdGllchFhcml0aG1ldGljLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0
YW50BAVwaXBlcwhjb25zdGFudAQBLRFhcml0aG1ldGljLmRvdWJsZRFnbG9iYWwuZG91YmxlLmdldAhj
b25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0YW50BAEqE2ZhY3RvcnkuaXRlbXMuY291bnQIY29u
c3RhbnQEBHBpcGUNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQGc2hhcGVyEWdl
bmVyaWMud2FpdHVudGlsD2NvbXBhcmlzb24uYm9vbBFjb21wYXJpc29uLmRvdWJsZRNmYWN0b3J5Lml0
ZW1zLmNvdW50CGNvbnN0YW50BAtwbGF0ZS5kZW5zZQ1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVy
CGNvbnN0YW50BAI+PRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAZwbGF0ZXMIY29uc3RhbnQEASYR
Y29tcGFyaXNvbi5kb3VibGUTZmFjdG9yeS5pdGVtcy5jb3VudAhjb25zdGFudAQEcGlwZQ1sb2NhbC5p
bnQuZ2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BAI+PRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50
BAVwaXBlcwxnZW5lcmljLndhaXQIY29uc3RhbnQDAAAAAAAAAAA=
:global double craft_inventory
:local int tier
:local double count
:local double plates
:local double pipes
:local double rawplates

tier = global.int.get("craft_tier:2.2")
count = global.double.get("craft_count:2.2")

plates = count * 2.0 * floor((66555444331.0 / (10.0 ^ i2d(tier))) % 10.0)
gotoif(x, tier != 2) ; only 5 plates for T2
plates = plates - 1.0
x: pipes = count * ceil(i2d(tier) / 5.0)

rawplates = max(0.0, plates * 9.0 - craft_inventory * (count("plate.dense", tier) + count("plate.stack", tier))) + max(0.0, pipes - craft_inventory * count("pipe", tier))
gotoif(plates, rawplates <= craft_inventory * count("plate", tier))
  waitwhile(active("presser"))
  produce("ingot", tier, rawplates - craft_inventory * count("plate", tier), "presser")
  waitwhile(active("presser"))

plates: gotoif(pipes, plates <= craft_inventory * count("plate.dense", tier))
  craft("plate.stack", tier, plates - craft_inventory * (count("plate.stack", tier) + count("plate.dense", tier)))
  waitwhile(active("presser"))
  produce("plate.stack", tier, plates - craft_inventory * count("plate.dense", tier), "presser")
  
pipes: gotoif(end, pipes <= craft_inventory * count("pipe", tier))
  waitwhile(active("shaper"))
  produce("plate", tier, pipes - craft_inventory * count("pipe", tier), "shaper")

end: waituntil(count("plate.dense", tier) >= plates & count("pipe", tier) >= pipes)
wait(0.0)

Refiner (3)

(pic)

Name Lines Code
craft 2:3 16
CWNyYWZ0IDI6MwAAAAAAAAAAEAAAAA1sb2NhbC5pbnQuc2V0CGNvbnN0YW50BAR0aWVyDmdsb2JhbC5p
bnQuZ2V0CGNvbnN0YW50BA5jcmFmdF90aWVyOjIuMxBsb2NhbC5kb3VibGUuc2V0CGNvbnN0YW50BAVj
b3VudBFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfY291bnQ6Mi4zDmdlbmVyaWMuZ290
b2lmCGNvbnN0YW50AmMAAAAPY29tcGFyaXNvbi5ib29sD2NvbXBhcmlzb24uYm9vbA9jb21wYXJpc29u
LmJvb2wOY29tcGFyaXNvbi5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQB
PAhjb25zdGFudAIBAAAACGNvbnN0YW50BAF8DmNvbXBhcmlzb24uaW50DWxvY2FsLmludC5nZXQIY29u
c3RhbnQEBHRpZXIIY29uc3RhbnQEAT4IY29uc3RhbnQCCgAAAAhjb25zdGFudAQBfBFjb21wYXJpc29u
LmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQBPAhjb25zdGFu
dAMAAAAAAADwPwhjb25zdGFudAQBfA5jb21wYXJpc29uLmludA5nbG9iYWwuaW50LmdldAhjb25zdGFu
dAQMY3JhZnRfc3RhdHVzCGNvbnN0YW50BAE+CGNvbnN0YW50AscAAAATZ2VuZXJpYy5leGVjdXRlc3lu
Ywhjb25zdGFudAQMY3JhZnQgMjozOmluDmdlbmVyaWMuZ290b2lmCGNvbnN0YW50AmMAAAAOY29tcGFy
aXNvbi5pbnQOZ2xvYmFsLmludC5nZXQIY29uc3RhbnQEDGNyYWZ0X3N0YXR1cwhjb25zdGFudAQBPghj
b25zdGFudALHAAAAEGxvY2FsLmRvdWJsZS5zZXQIY29uc3RhbnQEBm1vdG9ycxFhcml0aG1ldGljLmRv
dWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQBKgxkb3VibGUuZmxv
b3IRYXJpdGhtZXRpYy5kb3VibGURYXJpdGhtZXRpYy5kb3VibGUIY29uc3RhbnQDAABOoEepI0IIY29u
c3RhbnQEAS8RYXJpdGhtZXRpYy5kb3VibGUIY29uc3RhbnQDAAAAAAAAJEAIY29uc3RhbnQEA3BvdwNp
MmQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQDbW9kCGNvbnN0YW50AwAAAAAA
ACRAEGxvY2FsLmRvdWJsZS5zZXQIY29uc3RhbnQEBXB1bXBzEWFyaXRobWV0aWMuZG91YmxlEGxvY2Fs
LmRvdWJsZS5nZXQIY29uc3RhbnQEBWNvdW50CGNvbnN0YW50BAEqDGRvdWJsZS5mbG9vchFhcml0aG1l
dGljLmRvdWJsZRFhcml0aG1ldGljLmRvdWJsZQhjb25zdGFudAMAAMbT09UoQghjb25zdGFudAQBLxFh
cml0aG1ldGljLmRvdWJsZQhjb25zdGFudAMAAAAAAAAkQAhjb25zdGFudAQDcG93A2kyZA1sb2NhbC5p
bnQuZ2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BANtb2QIY29uc3RhbnQDAAAAAAAAJEAOZ2xvYmFs
LmludC5zZXQIY29uc3RhbnQEDmNyYWZ0X3RpZXI6My45DWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRp
ZXIRZ2xvYmFsLmRvdWJsZS5zZXQIY29uc3RhbnQED2NyYWZ0X2NvdW50OjMuORFhcml0aG1ldGljLmRv
dWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVwdW1wcwhjb25zdGFudAQBLRFhcml0aG1ldGlj
LmRvdWJsZRFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0YW50
BAEqE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEBHB1bXANbG9jYWwuaW50LmdldAhjb25zdGFu
dAQEdGllchNnZW5lcmljLmV4ZWN1dGVzeW5jCGNvbnN0YW50BAljcmFmdCAzOjkOZ2xvYmFsLmludC5z
ZXQIY29uc3RhbnQEDmNyYWZ0X3RpZXI6My44DWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIRZ2xv
YmFsLmRvdWJsZS5zZXQIY29uc3RhbnQED2NyYWZ0X2NvdW50OjMuOBFhcml0aG1ldGljLmRvdWJsZRBs
b2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAZtb3RvcnMIY29uc3RhbnQEAS0RYXJpdGhtZXRpYy5kb3Vi
bGURZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3RhbnQED2NyYWZ0X2ludmVudG9yeQhjb25zdGFudAQBKhNm
YWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BAVtb3Rvcg1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0
aWVyE2dlbmVyaWMuZXhlY3V0ZXN5bmMIY29uc3RhbnQECWNyYWZ0IDM6OA5nZW5lcmljLmdvdG9pZghj
b25zdGFudAJjAAAADmNvbXBhcmlzb24uaW50Dmdsb2JhbC5pbnQuZ2V0CGNvbnN0YW50BAxjcmFmdF9z
dGF0dXMIY29uc3RhbnQEAT4IY29uc3RhbnQCxwAAABNnZW5lcmljLmV4ZWN1dGVzeW5jCGNvbnN0YW50
BA5jcmFmdCAyOjM6bWlzYw1mYWN0b3J5LmNyYWZ0CGNvbnN0YW50BBBtYWNoaW5lLnJlZmluZXJ5DWxv
Y2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQFY291bnQ=
; Refiner
:global double craft_inventory
:local int tier
:local double count
:local double motors
:local double pumps

tier = global.int.get("craft_tier:2.3")
count = global.double.get("craft_count:2.3")
gotoif(99, tier < 1 | tier > 10 | count < 1.0 | global.int.get("craft_status") > 199)

executesync("craft 2:3:in")
gotoif(99, global.int.get("craft_status") > 199)

;denseplates = count * 4.0
;blocks = count * floor((55500000001.0 / (10.0 ^ i2d(tier))) % 10.0)
;rings = count * floor( (53333322211.0 / (10.0 ^ i2d(tier))) % 10.0)
motors = count * floor((42222211111.0 / (10.0 ^ i2d(tier))) % 10.0)
pumps = count * floor( (53333322211.0 / (10.0 ^ i2d(tier))) % 10.0)

global.int.set("craft_tier:3.9", tier)
global.double.set("craft_count:3.9", pumps - craft_inventory * count("pump", tier))
executesync("craft 3:9")
global.int.set("craft_tier:3.8", tier)
global.double.set("craft_count:3.8", motors - craft_inventory * count("motor", tier))
executesync("craft 3:8")
gotoif(99, global.int.get("craft_status") > 199)

executesync("craft 2:3:misc")
craft("machine.refinery", tier, count)


craft 2:3:in 17
DGNyYWZ0IDI6MzppbgAAAAAAAAAAEQAAAA1sb2NhbC5pbnQuc2V0CGNvbnN0YW50BAR0aWVyDmdsb2Jh
bC5pbnQuZ2V0CGNvbnN0YW50BA5jcmFmdF90aWVyOjIuMxBsb2NhbC5kb3VibGUuc2V0CGNvbnN0YW50
BAVjb3VudBFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfY291bnQ6Mi4zEGxvY2FsLmRv
dWJsZS5zZXQIY29uc3RhbnQEBmluZ290cwhjb25zdGFudAMAAAAAAAAAAA5nbG9iYWwuaW50LnNldAhj
b25zdGFudAQQY3JhZnRfdGllcjppbmdvdA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyEWdsb2Jh
bC5kb3VibGUuc2V0CGNvbnN0YW50BBFjcmFmdF9jb3VudDppbmdvdBFhcml0aG1ldGljLmRvdWJsZRBs
b2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAZpbmdvdHMIY29uc3RhbnQEAS0TZmFjdG9yeS5pdGVtcy5j
b3VudAhjb25zdGFudAQFaW5nb3QNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllchNnZW5lcmljLmV4
ZWN1dGVzeW5jCGNvbnN0YW50BAtjcmFmdCBpbmdvdA5nZW5lcmljLmdvdG9pZghjb25zdGFudAJjAAAA
DmNvbXBhcmlzb24uaW50Dmdsb2JhbC5pbnQuZ2V0CGNvbnN0YW50BAxjcmFmdF9zdGF0dXMIY29uc3Rh
bnQEAT4IY29uc3RhbnQCxwAAAA5nbG9iYWwuaW50LnNldAhjb25zdGFudAQOY3JhZnRfdGllcjoyLjMO
YXJpdGhtZXRpYy5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQBLQhjb25z
dGFudAIBAAAAEWdsb2JhbC5kb3VibGUuc2V0CGNvbnN0YW50BA9jcmFmdF9jb3VudDoyLjMRYXJpdGht
ZXRpYy5kb3VibGUQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQFY291bnQIY29uc3RhbnQEAS0RYXJp
dGhtZXRpYy5kb3VibGURZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3RhbnQED2NyYWZ0X2ludmVudG9yeQhj
b25zdGFudAQBKhNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BBBtYWNoaW5lLnJlZmluZXJ5DmFy
aXRobWV0aWMuaW50DWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEAS0IY29uc3Rh
bnQCAQAAABNnZW5lcmljLmV4ZWN1dGVzeW5jCGNvbnN0YW50BAljcmFmdCAyOjMOZ2VuZXJpYy5nb3Rv
aWYIY29uc3RhbnQCYwAAAA5jb21wYXJpc29uLmludA5nbG9iYWwuaW50LmdldAhjb25zdGFudAQMY3Jh
ZnRfc3RhdHVzCGNvbnN0YW50BAE+CGNvbnN0YW50AscAAAAOZ2xvYmFsLmludC5zZXQIY29uc3RhbnQE
DmNyYWZ0X3RpZXI6Mi4zDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIRZ2xvYmFsLmRvdWJsZS5z
ZXQIY29uc3RhbnQED2NyYWZ0X2NvdW50OjIuMxBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3Vu
dA1sb2NhbC5pbnQuc2V0CGNvbnN0YW50BAhjaGlwdGllcgNkMmkMZG91YmxlLmZsb29yEWFyaXRobWV0
aWMuZG91YmxlEWFyaXRobWV0aWMuZG91YmxlCGNvbnN0YW50AwAAPpfTWClCCGNvbnN0YW50BAEvEWFy
aXRobWV0aWMuZG91YmxlCGNvbnN0YW50AwAAAAAAACRACGNvbnN0YW50BANwb3cDaTJkDWxvY2FsLmlu
dC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEA21vZAhjb25zdGFudAMAAAAAAAAkQA5nbG9iYWwu
aW50LnNldAhjb25zdGFudAQOY3JhZnRfdGllcjozLjENbG9jYWwuaW50LmdldAhjb25zdGFudAQIY2hp
cHRpZXIRZ2xvYmFsLmRvdWJsZS5zZXQIY29uc3RhbnQED2NyYWZ0X2NvdW50OjMuMRFhcml0aG1ldGlj
LmRvdWJsZRFhcml0aG1ldGljLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhj
b25zdGFudAQBKghjb25zdGFudAMAAAAAAAAAQAhjb25zdGFudAQBLRFhcml0aG1ldGljLmRvdWJsZRFn
bG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0YW50BAEqE2ZhY3Rv
cnkuaXRlbXMuY291bnQIY29uc3RhbnQEBGNoaXANbG9jYWwuaW50LmdldAhjb25zdGFudAQIY2hpcHRp
ZXITZ2VuZXJpYy5leGVjdXRlc3luYwhjb25zdGFudAQJY3JhZnQgMzox
:global double craft_inventory
:local int tier
:local double count
:local double ingots
:local int chiptier

tier = global.int.get("craft_tier:2.3")
count = global.double.get("craft_count:2.3")

; Ingots
ingots = 0.0 ; TODO
global.int.set("craft_tier:ingot", tier)
global.double.set("craft_count:ingot", ingots - count("ingot", tier))
;global.int.set("craft_verify:ingot", 1)
executesync("craft ingot")
gotoif(99, global.int.get("craft_status") > 199)

; Lower tier inputs
global.int.set("craft_tier:2.3", tier - 1)
global.double.set("craft_count:2.3", count - craft_inventory * count("machine.refinery", tier - 1))
executesync("craft 2:3")
gotoif(99, global.int.get("craft_status") > 199)

; Restore state for this tier
global.int.set("craft_tier:2.3", tier)
global.double.set("craft_count:2.3", count)

; chips
; chips = count * 2.0
chiptier = d2i(floor((54432222111.0 / (10.0 ^ i2d(tier))) % 10.0))
global.int.set("craft_tier:3.1", chiptier)
global.double.set("craft_count:3.1", count * 2.0 - craft_inventory * count("chip", chiptier))
executesync("craft 3:1")


craft 2:3:misc 18
DmNyYWZ0IDI6MzptaXNjAAAAAAAAAAASAAAADWxvY2FsLmludC5zZXQIY29uc3RhbnQEBHRpZXIOZ2xv
YmFsLmludC5nZXQIY29uc3RhbnQEDmNyYWZ0X3RpZXI6Mi4zEGxvY2FsLmRvdWJsZS5zZXQIY29uc3Rh
bnQEBWNvdW50EWdsb2JhbC5kb3VibGUuZ2V0CGNvbnN0YW50BA9jcmFmdF9jb3VudDoyLjMQbG9jYWwu
ZG91YmxlLnNldAhjb25zdGFudAQGYmxvY2tzEWFyaXRobWV0aWMuZG91YmxlEGxvY2FsLmRvdWJsZS5n
ZXQIY29uc3RhbnQEBWNvdW50CGNvbnN0YW50BAEqDGRvdWJsZS5mbG9vchFhcml0aG1ldGljLmRvdWJs
ZRFhcml0aG1ldGljLmRvdWJsZQhjb25zdGFudAMAAIGDIZcxQghjb25zdGFudAQBLxFhcml0aG1ldGlj
LmRvdWJsZQhjb25zdGFudAMAAAAAAAAkQAhjb25zdGFudAQDcG93A2kyZA1sb2NhbC5pbnQuZ2V0CGNv
bnN0YW50BAR0aWVyCGNvbnN0YW50BANtb2QIY29uc3RhbnQDAAAAAAAAJEAQbG9jYWwuZG91YmxlLnNl
dAhjb25zdGFudAQFcmluZ3MRYXJpdGhtZXRpYy5kb3VibGUQbG9jYWwuZG91YmxlLmdldAhjb25zdGFu
dAQFY291bnQIY29uc3RhbnQEASoMZG91YmxlLmZsb29yEWFyaXRobWV0aWMuZG91YmxlEWFyaXRobWV0
aWMuZG91YmxlCGNvbnN0YW50AwAAxtPT1ShCCGNvbnN0YW50BAEvEWFyaXRobWV0aWMuZG91YmxlCGNv
bnN0YW50AwAAAAAAACRACGNvbnN0YW50BANwb3cDaTJkDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRp
ZXIIY29uc3RhbnQEA21vZAhjb25zdGFudAMAAAAAAAAkQA5nbG9iYWwuaW50LnNldAhjb25zdGFudAQO
Y3JhZnRfdGllcjozLjQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllchFnbG9iYWwuZG91YmxlLnNl
dAhjb25zdGFudAQPY3JhZnRfY291bnQ6My40EWFyaXRobWV0aWMuZG91YmxlEGxvY2FsLmRvdWJsZS5n
ZXQIY29uc3RhbnQEBmJsb2Nrcwhjb25zdGFudAQBLRFhcml0aG1ldGljLmRvdWJsZRFnbG9iYWwuZG91
YmxlLmdldAhjb25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0YW50BAEqE2ZhY3RvcnkuaXRlbXMu
Y291bnQIY29uc3RhbnQEBWJsb2NrDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXITZ2VuZXJpYy5l
eGVjdXRlc3luYwhjb25zdGFudAQJY3JhZnQgMzo0Dmdsb2JhbC5pbnQuc2V0CGNvbnN0YW50BA5jcmFm
dF90aWVyOjMuMw1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyEWdsb2JhbC5kb3VibGUuc2V0CGNv
bnN0YW50BA9jcmFmdF9jb3VudDozLjMRYXJpdGhtZXRpYy5kb3VibGURYXJpdGhtZXRpYy5kb3VibGUQ
bG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQFY291bnQIY29uc3RhbnQEASoIY29uc3RhbnQDAAAAAAAA
EEAIY29uc3RhbnQEAS0RYXJpdGhtZXRpYy5kb3VibGURZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3RhbnQE
D2NyYWZ0X2ludmVudG9yeQhjb25zdGFudAQBKhNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BAtw
bGF0ZS5kZW5zZQ1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyE2dlbmVyaWMuZXhlY3V0ZXN5bmMI
Y29uc3RhbnQECWNyYWZ0IDM6Mw5nZW5lcmljLmdvdG9pZghjb25zdGFudAIOAAAAEWNvbXBhcmlzb24u
ZG91YmxlEGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQEBXJpbmdzCGNvbnN0YW50BAI8PRFhcml0aG1l
dGljLmRvdWJsZRFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0
YW50BAEqEWFyaXRobWV0aWMuZG91YmxlE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEBHJpbmcN
bG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQBKxNmYWN0b3J5Lml0ZW1zLmNvdW50
CGNvbnN0YW50BANyb2QNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllchFnZW5lcmljLndhaXR3aGls
ZRZmYWN0b3J5Lm1hY2hpbmUuYWN0aXZlCGNvbnN0YW50BAZzaGFwZXIPZmFjdG9yeS5wcm9kdWNlCGNv
bnN0YW50BAVpbmdvdA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyC2RvdWJsZS5jZWlsEWFyaXRo
bWV0aWMuZG91YmxlEWFyaXRobWV0aWMuZG91YmxlEGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQEBXJp
bmdzCGNvbnN0YW50BAEtEWFyaXRobWV0aWMuZG91YmxlEWdsb2JhbC5kb3VibGUuZ2V0CGNvbnN0YW50
BA9jcmFmdF9pbnZlbnRvcnkIY29uc3RhbnQEASoRYXJpdGhtZXRpYy5kb3VibGUTZmFjdG9yeS5pdGVt
cy5jb3VudAhjb25zdGFudAQEcmluZw1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50
BAErE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEA3JvZA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50
BAR0aWVyCGNvbnN0YW50BAEvCGNvbnN0YW50AwAAAAAAAABACGNvbnN0YW50BAZzaGFwZXIOZ2VuZXJp
Yy5nb3RvaWYIY29uc3RhbnQCEQAAABFjb21wYXJpc29uLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNv
bnN0YW50BAVyaW5ncwhjb25zdGFudAQCPD0RYXJpdGhtZXRpYy5kb3VibGURZ2xvYmFsLmRvdWJsZS5n
ZXQIY29uc3RhbnQED2NyYWZ0X2ludmVudG9yeQhjb25zdGFudAQBKhNmYWN0b3J5Lml0ZW1zLmNvdW50
CGNvbnN0YW50BARyaW5nDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIRZ2VuZXJpYy53YWl0d2hp
bGUWZmFjdG9yeS5tYWNoaW5lLmFjdGl2ZQhjb25zdGFudAQGc2hhcGVyD2ZhY3RvcnkucHJvZHVjZQhj
b25zdGFudAQDcm9kDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIRYXJpdGhtZXRpYy5kb3VibGUQ
bG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQFcmluZ3MIY29uc3RhbnQEAS0RYXJpdGhtZXRpYy5kb3Vi
bGURZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3RhbnQED2NyYWZ0X2ludmVudG9yeQhjb25zdGFudAQBKhNm
YWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BARyaW5nDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRp
ZXIIY29uc3RhbnQEBnNoYXBlchFnZW5lcmljLndhaXR1bnRpbBFjb21wYXJpc29uLmRvdWJsZRNmYWN0
b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BARyaW5nDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXII
Y29uc3RhbnQEAj49EGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQEBXJpbmdzDGdlbmVyaWMud2FpdAhj
b25zdGFudAMAAAAAAAAAAA==
:global double craft_inventory
:local int tier
:local double count
:local double blocks
:local double rings

tier = global.int.get("craft_tier:2.3")
count = global.double.get("craft_count:2.3")

;denseplates = count * 4.0
blocks = count * floor((75550000001.0 / (10.0 ^ i2d(tier))) % 10.0)
rings = count * floor( (53333322211.0 / (10.0 ^ i2d(tier))) % 10.0)

global.int.set("craft_tier:3.4", tier)
global.double.set("craft_count:3.4", blocks - craft_inventory * count("block", tier))
executesync("craft 3:4")

global.int.set("craft_tier:3.3", tier)
global.double.set("craft_count:3.3", count * 4.0 - craft_inventory * count("plate.dense", tier))
executesync("craft 3:3")

plates: gotoif(rings, rings <= craft_inventory * (count("ring", tier) + count("rod", tier)))
  waitwhile(active("shaper"))
  produce("ingot", tier, ceil((rings - craft_inventory * (count("ring", tier) + count("rod", tier)))/2.0), "shaper")

rings: gotoif(end, rings <= craft_inventory * count("ring", tier))
  waitwhile(active("shaper"))
  produce("rod", tier, rings - craft_inventory * count("ring", tier), "shaper")
  
end: waituntil(count("ring", tier) >= rings)
wait(0.0)

Crusher (4)

(pic)

Name Lines Code
craft 2:4 14
CWNyYWZ0IDI6NAAAAAAAAAAADgAAAA1sb2NhbC5pbnQuc2V0CGNvbnN0YW50BAR0aWVyDmdsb2JhbC5p
bnQuZ2V0CGNvbnN0YW50BA5jcmFmdF90aWVyOjIuNBBsb2NhbC5kb3VibGUuc2V0CGNvbnN0YW50BAVj
b3VudBFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfY291bnQ6Mi40DmdlbmVyaWMuZ290
b2lmCGNvbnN0YW50AmMAAAAPY29tcGFyaXNvbi5ib29sD2NvbXBhcmlzb24uYm9vbA9jb21wYXJpc29u
LmJvb2wOY29tcGFyaXNvbi5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQB
PAhjb25zdGFudAIBAAAACGNvbnN0YW50BAF8DmNvbXBhcmlzb24uaW50DWxvY2FsLmludC5nZXQIY29u
c3RhbnQEBHRpZXIIY29uc3RhbnQEAT4IY29uc3RhbnQCCgAAAAhjb25zdGFudAQBfBFjb21wYXJpc29u
LmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQBPAhjb25zdGFu
dAMAAAAAAADwPwhjb25zdGFudAQBfA5jb21wYXJpc29uLmludA5nbG9iYWwuaW50LmdldAhjb25zdGFu
dAQMY3JhZnRfc3RhdHVzCGNvbnN0YW50BAE+CGNvbnN0YW50AscAAAAQbG9jYWwuZG91YmxlLnNldAhj
b25zdGFudAQGbW90b3JzEWFyaXRobWV0aWMuZG91YmxlEGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQE
BWNvdW50CGNvbnN0YW50BAEqDGRvdWJsZS5mbG9vchFhcml0aG1ldGljLmRvdWJsZRFhcml0aG1ldGlj
LmRvdWJsZQhjb25zdGFudAMAAByjiq8UQghjb25zdGFudAQBLxFhcml0aG1ldGljLmRvdWJsZQhjb25z
dGFudAMAAAAAAAAkQAhjb25zdGFudAQDcG93A2kyZA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVy
CGNvbnN0YW50BANtb2QIY29uc3RhbnQDAAAAAAAAJEAQbG9jYWwuZG91YmxlLnNldAhjb25zdGFudAQL
ZGVuc2VwbGF0ZXMRYXJpdGhtZXRpYy5kb3VibGUQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQFY291
bnQIY29uc3RhbnQEASoMZG91YmxlLmZsb29yEWFyaXRobWV0aWMuZG91YmxlEWFyaXRobWV0aWMuZG91
YmxlCGNvbnN0YW50AwAAJ13NRzdCCGNvbnN0YW50BAEvEWFyaXRobWV0aWMuZG91YmxlCGNvbnN0YW50
AwAAAAAAACRACGNvbnN0YW50BANwb3cDaTJkDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29u
c3RhbnQEA21vZAhjb25zdGFudAMAAAAAAAAkQBNnZW5lcmljLmV4ZWN1dGVzeW5jCGNvbnN0YW50BAxj
cmFmdCAyOjQ6aW4OZ2xvYmFsLmludC5zZXQIY29uc3RhbnQEDmNyYWZ0X3RpZXI6My44DWxvY2FsLmlu
dC5nZXQIY29uc3RhbnQEBHRpZXIRZ2xvYmFsLmRvdWJsZS5zZXQIY29uc3RhbnQED2NyYWZ0X2NvdW50
OjMuOBFhcml0aG1ldGljLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAZtb3RvcnMIY29u
c3RhbnQEAS0RYXJpdGhtZXRpYy5kb3VibGURZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3RhbnQED2NyYWZ0
X2ludmVudG9yeQhjb25zdGFudAQBKhNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BAVtb3Rvcg1s
b2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyE2dlbmVyaWMuZXhlY3V0ZXN5bmMIY29uc3RhbnQECWNy
YWZ0IDM6OA5nbG9iYWwuaW50LnNldAhjb25zdGFudAQOY3JhZnRfdGllcjozLjMNbG9jYWwuaW50Lmdl
dAhjb25zdGFudAQEdGllchFnbG9iYWwuZG91YmxlLnNldAhjb25zdGFudAQPY3JhZnRfY291bnQ6My4z
EWFyaXRobWV0aWMuZG91YmxlEGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQEC2RlbnNlcGxhdGVzCGNv
bnN0YW50BAEtEWFyaXRobWV0aWMuZG91YmxlEWdsb2JhbC5kb3VibGUuZ2V0CGNvbnN0YW50BA9jcmFm
dF9pbnZlbnRvcnkIY29uc3RhbnQEASoTZmFjdG9yeS5pdGVtcy5jb3VudAhjb25zdGFudAQLcGxhdGUu
ZGVuc2UNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllchNnZW5lcmljLmV4ZWN1dGVzeW5jCGNvbnN0
YW50BAljcmFmdCAzOjMOZ2VuZXJpYy5nb3RvaWYIY29uc3RhbnQCYwAAAA5jb21wYXJpc29uLmludA5n
bG9iYWwuaW50LmdldAhjb25zdGFudAQMY3JhZnRfc3RhdHVzCGNvbnN0YW50BAE+CGNvbnN0YW50AscA
AAANZmFjdG9yeS5jcmFmdAhjb25zdGFudAQPbWFjaGluZS5jcnVzaGVyDWxvY2FsLmludC5nZXQIY29u
c3RhbnQEBHRpZXIQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQFY291bnQ=
; Crusher
:global double craft_inventory
:local int tier
:local double count
:local double motors
:local double denseplates

tier = global.int.get("craft_tier:2.4")
count = global.double.get("craft_count:2.4")
gotoif(99, tier < 1 | tier > 10 | count < 1.0 | global.int.get("craft_status") > 199)

motors = count * floor((22211111111.0 / (10.0 ^ i2d(tier))) % 10.0)
denseplates = count * floor((99988888871.0 / (10.0 ^ i2d(tier))) % 10.0)

executesync("craft 2:4:in")

global.int.set("craft_tier:3.8", tier)
global.double.set("craft_count:3.8", motors - craft_inventory * count("motor", tier))
executesync("craft 3:8")
global.int.set("craft_tier:3.3", tier)
global.double.set("craft_count:3.3", denseplates - craft_inventory * count("plate.dense", tier))
executesync("craft 3:3")
gotoif(99, global.int.get("craft_status") > 199)

craft("machine.crusher", tier, count)


craft 2:4:in 18
DGNyYWZ0IDI6NDppbgAAAAAAAAAAEgAAAA1sb2NhbC5pbnQuc2V0CGNvbnN0YW50BAR0aWVyDmdsb2Jh
bC5pbnQuZ2V0CGNvbnN0YW50BA5jcmFmdF90aWVyOjIuNBBsb2NhbC5kb3VibGUuc2V0CGNvbnN0YW50
BAVjb3VudBFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfY291bnQ6Mi40EGxvY2FsLmRv
dWJsZS5zZXQIY29uc3RhbnQEBmluZ290cwhjb25zdGFudAMAAAAAAAAAAA5nbG9iYWwuaW50LnNldAhj
b25zdGFudAQQY3JhZnRfdGllcjppbmdvdA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyEWdsb2Jh
bC5kb3VibGUuc2V0CGNvbnN0YW50BBFjcmFmdF9jb3VudDppbmdvdBFhcml0aG1ldGljLmRvdWJsZRBs
b2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAZpbmdvdHMIY29uc3RhbnQEAS0TZmFjdG9yeS5pdGVtcy5j
b3VudAhjb25zdGFudAQFaW5nb3QNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllchNnZW5lcmljLmV4
ZWN1dGVzeW5jCGNvbnN0YW50BAtjcmFmdCBpbmdvdA5nZW5lcmljLmdvdG9pZghjb25zdGFudAJjAAAA
DmNvbXBhcmlzb24uaW50Dmdsb2JhbC5pbnQuZ2V0CGNvbnN0YW50BAxjcmFmdF9zdGF0dXMIY29uc3Rh
bnQEAT4IY29uc3RhbnQCxwAAAA5nbG9iYWwuaW50LnNldAhjb25zdGFudAQOY3JhZnRfdGllcjoyLjQO
YXJpdGhtZXRpYy5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQBLQhjb25z
dGFudAIBAAAAEWdsb2JhbC5kb3VibGUuc2V0CGNvbnN0YW50BA9jcmFmdF9jb3VudDoyLjQRYXJpdGht
ZXRpYy5kb3VibGUQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQFY291bnQIY29uc3RhbnQEAS0RYXJp
dGhtZXRpYy5kb3VibGURZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3RhbnQED2NyYWZ0X2ludmVudG9yeQhj
b25zdGFudAQBKhNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BA9tYWNoaW5lLmNydXNoZXIOYXJp
dGhtZXRpYy5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQBLQhjb25zdGFu
dAIBAAAAE2dlbmVyaWMuZXhlY3V0ZXN5bmMIY29uc3RhbnQECWNyYWZ0IDI6NA5nZW5lcmljLmdvdG9p
Zghjb25zdGFudAJjAAAADmNvbXBhcmlzb24uaW50Dmdsb2JhbC5pbnQuZ2V0CGNvbnN0YW50BAxjcmFm
dF9zdGF0dXMIY29uc3RhbnQEAT4IY29uc3RhbnQCxwAAAA5nbG9iYWwuaW50LnNldAhjb25zdGFudAQO
Y3JhZnRfdGllcjoyLjQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllchFnbG9iYWwuZG91YmxlLnNl
dAhjb25zdGFudAQPY3JhZnRfY291bnQ6Mi40EGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQEBWNvdW50
EGxvY2FsLmRvdWJsZS5zZXQIY29uc3RhbnQEBWNoaXBzEWFyaXRobWV0aWMuZG91YmxlEGxvY2FsLmRv
dWJsZS5nZXQIY29uc3RhbnQEBWNvdW50CGNvbnN0YW50BAEqDGRvdWJsZS5mbG9vchFhcml0aG1ldGlj
LmRvdWJsZRFhcml0aG1ldGljLmRvdWJsZQhjb25zdGFudAMAAAwKowgfQghjb25zdGFudAQBLxFhcml0
aG1ldGljLmRvdWJsZQhjb25zdGFudAMAAAAAAAAkQAhjb25zdGFudAQDcG93A2kyZA1sb2NhbC5pbnQu
Z2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BANtb2QIY29uc3RhbnQDAAAAAAAAJEANbG9jYWwuaW50
LnNldAhjb25zdGFudAQIY2hpcHRpZXIDZDJpDGRvdWJsZS5mbG9vchFhcml0aG1ldGljLmRvdWJsZRFh
cml0aG1ldGljLmRvdWJsZQhjb25zdGFudAMAAG4Ws5ckQghjb25zdGFudAQBLxFhcml0aG1ldGljLmRv
dWJsZQhjb25zdGFudAMAAAAAAAAkQAhjb25zdGFudAQDcG93A2kyZA1sb2NhbC5pbnQuZ2V0CGNvbnN0
YW50BAR0aWVyCGNvbnN0YW50BANtb2QIY29uc3RhbnQDAAAAAAAAJEAOZ2xvYmFsLmludC5zZXQIY29u
c3RhbnQEDmNyYWZ0X3RpZXI6My4xDWxvY2FsLmludC5nZXQIY29uc3RhbnQECGNoaXB0aWVyEWdsb2Jh
bC5kb3VibGUuc2V0CGNvbnN0YW50BA9jcmFmdF9jb3VudDozLjERYXJpdGhtZXRpYy5kb3VibGUQbG9j
YWwuZG91YmxlLmdldAhjb25zdGFudAQFY2hpcHMIY29uc3RhbnQEAS0RYXJpdGhtZXRpYy5kb3VibGUR
Z2xvYmFsLmRvdWJsZS5nZXQIY29uc3RhbnQED2NyYWZ0X2ludmVudG9yeQhjb25zdGFudAQBKhNmYWN0
b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BARjaGlwDWxvY2FsLmludC5nZXQIY29uc3RhbnQECGNoaXB0
aWVyE2dlbmVyaWMuZXhlY3V0ZXN5bmMIY29uc3RhbnQECWNyYWZ0IDM6MQ==
:global double craft_inventory
:local int tier
:local double count
:local double ingots
:local double chips
:local int chiptier

tier = global.int.get("craft_tier:2.4")
count = global.double.get("craft_count:2.4")

; Ingots
ingots = 0.0 ; TODO
global.int.set("craft_tier:ingot", tier)
global.double.set("craft_count:ingot", ingots - count("ingot", tier))
;global.int.set("craft_verify:ingot", 1)
executesync("craft ingot")
gotoif(99, global.int.get("craft_status") > 199)

; Lower tier inputs
global.int.set("craft_tier:2.4", tier - 1)
global.double.set("craft_count:2.4", count - craft_inventory * count("machine.crusher", tier - 1))
executesync("craft 2:4")
gotoif(99, global.int.get("craft_status") > 199)

; Restore state for this tier
global.int.set("craft_tier:2.4", tier)
global.double.set("craft_count:2.4", count)

; chips
chips = count * floor((33322222211.0 / (10.0 ^ i2d(tier))) % 10.0)
chiptier = d2i(floor((44222221111.0 / (10.0 ^ i2d(tier))) % 10.0))
global.int.set("craft_tier:3.1", chiptier)
global.double.set("craft_count:3.1", chips - craft_inventory * count("chip", chiptier))
executesync("craft 3:1")

Cutter (5)

(pic)

Name Lines Code
craft 2:5 15
CWNyYWZ0IDI6NQAAAAAAAAAADwAAAA1sb2NhbC5pbnQuc2V0CGNvbnN0YW50BAR0aWVyDmdsb2JhbC5p
bnQuZ2V0CGNvbnN0YW50BA5jcmFmdF90aWVyOjIuNRBsb2NhbC5kb3VibGUuc2V0CGNvbnN0YW50BAVj
b3VudBFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfY291bnQ6Mi41DmdlbmVyaWMuZ290
b2lmCGNvbnN0YW50AmMAAAAPY29tcGFyaXNvbi5ib29sD2NvbXBhcmlzb24uYm9vbA9jb21wYXJpc29u
LmJvb2wOY29tcGFyaXNvbi5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQB
PAhjb25zdGFudAIBAAAACGNvbnN0YW50BAF8DmNvbXBhcmlzb24uaW50DWxvY2FsLmludC5nZXQIY29u
c3RhbnQEBHRpZXIIY29uc3RhbnQEAT4IY29uc3RhbnQCCgAAAAhjb25zdGFudAQBfBFjb21wYXJpc29u
LmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQBPAhjb25zdGFu
dAMAAAAAAADwPwhjb25zdGFudAQBfA5jb21wYXJpc29uLmludA5nbG9iYWwuaW50LmdldAhjb25zdGFu
dAQMY3JhZnRfc3RhdHVzCGNvbnN0YW50BAE+CGNvbnN0YW50AscAAAATZ2VuZXJpYy5leGVjdXRlc3lu
Ywhjb25zdGFudAQMY3JhZnQgMjo1OmluDmdsb2JhbC5pbnQuc2V0CGNvbnN0YW50BA5jcmFmdF90aWVy
OjMuNA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyEWdsb2JhbC5kb3VibGUuc2V0CGNvbnN0YW50
BA9jcmFmdF9jb3VudDozLjQRYXJpdGhtZXRpYy5kb3VibGURYXJpdGhtZXRpYy5kb3VibGUQbG9jYWwu
ZG91YmxlLmdldAhjb25zdGFudAQFY291bnQIY29uc3RhbnQEASoMZG91YmxlLmZsb29yEWFyaXRobWV0
aWMuZG91YmxlEWFyaXRobWV0aWMuZG91YmxlCGNvbnN0YW50AwAAAggU/S1CCGNvbnN0YW50BAEvEWFy
aXRobWV0aWMuZG91YmxlCGNvbnN0YW50AwAAAAAAACRACGNvbnN0YW50BANwb3cDaTJkDWxvY2FsLmlu
dC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEA21vZAhjb25zdGFudAMAAAAAAAAkQAhjb25zdGFu
dAQBLRFhcml0aG1ldGljLmRvdWJsZRFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfaW52
ZW50b3J5CGNvbnN0YW50BAEqE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEBWJsb2NrDWxvY2Fs
LmludC5nZXQIY29uc3RhbnQEBHRpZXITZ2VuZXJpYy5leGVjdXRlc3luYwhjb25zdGFudAQJY3JhZnQg
Mzo0Dmdsb2JhbC5pbnQuc2V0CGNvbnN0YW50BA5jcmFmdF90aWVyOjMuMw1sb2NhbC5pbnQuZ2V0CGNv
bnN0YW50BAR0aWVyEWdsb2JhbC5kb3VibGUuc2V0CGNvbnN0YW50BA9jcmFmdF9jb3VudDozLjMRYXJp
dGhtZXRpYy5kb3VibGURYXJpdGhtZXRpYy5kb3VibGUQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQF
Y291bnQIY29uc3RhbnQEASoMZG91YmxlLmZsb29yEWFyaXRobWV0aWMuZG91YmxlEWFyaXRobWV0aWMu
ZG91YmxlCGNvbnN0YW50AwAATFx2txRCCGNvbnN0YW50BAEvEWFyaXRobWV0aWMuZG91YmxlCGNvbnN0
YW50AwAAAAAAACRACGNvbnN0YW50BANwb3cDaTJkDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXII
Y29uc3RhbnQEA21vZAhjb25zdGFudAMAAAAAAAAkQAhjb25zdGFudAQBLRFhcml0aG1ldGljLmRvdWJs
ZRFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0YW50BAEqE2Zh
Y3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEC3BsYXRlLmRlbnNlDWxvY2FsLmludC5nZXQIY29uc3Rh
bnQEBHRpZXITZ2VuZXJpYy5leGVjdXRlc3luYwhjb25zdGFudAQJY3JhZnQgMzozDmdsb2JhbC5pbnQu
c2V0CGNvbnN0YW50BA5jcmFmdF90aWVyOjMuMg1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyEWds
b2JhbC5kb3VibGUuc2V0CGNvbnN0YW50BA9jcmFmdF9jb3VudDozLjIRYXJpdGhtZXRpYy5kb3VibGUR
YXJpdGhtZXRpYy5kb3VibGUQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQFY291bnQIY29uc3RhbnQE
ASoMZG91YmxlLmZsb29yEWFyaXRobWV0aWMuZG91YmxlEWFyaXRobWV0aWMuZG91YmxlCGNvbnN0YW50
AwAAANBYMXVBCGNvbnN0YW50BAEvEWFyaXRobWV0aWMuZG91YmxlCGNvbnN0YW50AwAAAAAAACRACGNv
bnN0YW50BANwb3cDaTJkDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEA21vZAhj
b25zdGFudAMAAAAAAAAkQAhjb25zdGFudAQBLRFhcml0aG1ldGljLmRvdWJsZRFnbG9iYWwuZG91Ymxl
LmdldAhjb25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0YW50BAEqE2ZhY3RvcnkuaXRlbXMuY291
bnQIY29uc3RhbnQEBXBsYXRlDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXITZ2VuZXJpYy5leGVj
dXRlc3luYwhjb25zdGFudAQJY3JhZnQgMzoyDmdlbmVyaWMuZ290b2lmCGNvbnN0YW50AmMAAAAOY29t
cGFyaXNvbi5pbnQOZ2xvYmFsLmludC5nZXQIY29uc3RhbnQEDGNyYWZ0X3N0YXR1cwhjb25zdGFudAQB
Pghjb25zdGFudALHAAAADWZhY3RvcnkuY3JhZnQIY29uc3RhbnQEDm1hY2hpbmUuY3V0dGVyDWxvY2Fs
LmludC5nZXQIY29uc3RhbnQEBHRpZXIQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQFY291bnQ=
; Cutter
:global double craft_inventory
:local int tier
:local double count

tier = global.int.get("craft_tier:2.5")
count = global.double.get("craft_count:2.5")
gotoif(99, tier < 1 | tier > 10 | count < 1.0 | global.int.get("craft_status") > 199)

executesync("craft 2:5:in")

; blocks = count * floor((64400000001.0 / (10.0 ^ i2d(tier))) % 10.0)
global.int.set("craft_tier:3.4", tier)
global.double.set("craft_count:3.4", count * floor((64400000001.0 / (10.0 ^ i2d(tier))) % 10.0) - craft_inventory * count("block", tier))
executesync("craft 3:4")

; denseplates = count * floor((22244333331.0 / (10.0 ^ i2d(tier))) % 10.0)
global.int.set("craft_tier:3.3", tier)
global.double.set("craft_count:3.3", count * floor((22244333331.0 / (10.0 ^ i2d(tier))) % 10.0) - craft_inventory * count("plate.dense", tier))
executesync("craft 3:3")

; plates = count * floor((00022222221.0 / (10.0 ^ i2d(tier))) % 10.0)
global.int.set("craft_tier:3.2", tier)
global.double.set("craft_count:3.2", count * floor((00022222221.0 / (10.0 ^ i2d(tier))) % 10.0) - craft_inventory * count("plate", tier))
executesync("craft 3:2")
gotoif(99, global.int.get("craft_status") > 199)

craft("machine.cutter", tier, count)


craft 2:5:in 17
DGNyYWZ0IDI6NTppbgAAAAAAAAAAEQAAAA1sb2NhbC5pbnQuc2V0CGNvbnN0YW50BAR0aWVyDmdsb2Jh
bC5pbnQuZ2V0CGNvbnN0YW50BA5jcmFmdF90aWVyOjIuNRBsb2NhbC5kb3VibGUuc2V0CGNvbnN0YW50
BAVjb3VudBFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfY291bnQ6Mi41EGxvY2FsLmRv
dWJsZS5zZXQIY29uc3RhbnQEBmluZ290cwhjb25zdGFudAMAAAAAAAAAAA5nbG9iYWwuaW50LnNldAhj
b25zdGFudAQQY3JhZnRfdGllcjppbmdvdA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyEWdsb2Jh
bC5kb3VibGUuc2V0CGNvbnN0YW50BBFjcmFmdF9jb3VudDppbmdvdBFhcml0aG1ldGljLmRvdWJsZRBs
b2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAZpbmdvdHMIY29uc3RhbnQEAS0TZmFjdG9yeS5pdGVtcy5j
b3VudAhjb25zdGFudAQFaW5nb3QNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllchNnZW5lcmljLmV4
ZWN1dGVzeW5jCGNvbnN0YW50BAtjcmFmdCBpbmdvdA5nZW5lcmljLmdvdG9pZghjb25zdGFudAJjAAAA
DmNvbXBhcmlzb24uaW50Dmdsb2JhbC5pbnQuZ2V0CGNvbnN0YW50BAxjcmFmdF9zdGF0dXMIY29uc3Rh
bnQEAT4IY29uc3RhbnQCxwAAAA5nbG9iYWwuaW50LnNldAhjb25zdGFudAQOY3JhZnRfdGllcjoyLjUO
YXJpdGhtZXRpYy5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQBLQhjb25z
dGFudAIBAAAAEWdsb2JhbC5kb3VibGUuc2V0CGNvbnN0YW50BA9jcmFmdF9jb3VudDoyLjURYXJpdGht
ZXRpYy5kb3VibGUQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQFY291bnQIY29uc3RhbnQEAS0RYXJp
dGhtZXRpYy5kb3VibGURZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3RhbnQED2NyYWZ0X2ludmVudG9yeQhj
b25zdGFudAQBKhNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BA5tYWNoaW5lLmN1dHRlcg5hcml0
aG1ldGljLmludA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BAEtCGNvbnN0YW50
AgEAAAATZ2VuZXJpYy5leGVjdXRlc3luYwhjb25zdGFudAQJY3JhZnQgMjo1DmdlbmVyaWMuZ290b2lm
CGNvbnN0YW50AmMAAAAOY29tcGFyaXNvbi5pbnQOZ2xvYmFsLmludC5nZXQIY29uc3RhbnQEDGNyYWZ0
X3N0YXR1cwhjb25zdGFudAQBPghjb25zdGFudALHAAAADmdsb2JhbC5pbnQuc2V0CGNvbnN0YW50BA5j
cmFmdF90aWVyOjIuNQ1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyEWdsb2JhbC5kb3VibGUuc2V0
CGNvbnN0YW50BA9jcmFmdF9jb3VudDoyLjUQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQFY291bnQQ
bG9jYWwuZG91YmxlLnNldAhjb25zdGFudAQGbW90b3JzEWFyaXRobWV0aWMuZG91YmxlEGxvY2FsLmRv
dWJsZS5nZXQIY29uc3RhbnQEBWNvdW50CGNvbnN0YW50BAEqDGRvdWJsZS5mbG9vchFhcml0aG1ldGlj
LmRvdWJsZRFhcml0aG1ldGljLmRvdWJsZQhjb25zdGFudAMAAM+WdJcxQghjb25zdGFudAQBLxFhcml0
aG1ldGljLmRvdWJsZQhjb25zdGFudAMAAAAAAAAkQAhjb25zdGFudAQDcG93A2kyZA1sb2NhbC5pbnQu
Z2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BANtb2QIY29uc3RhbnQDAAAAAAAAJEAOZ2xvYmFsLmlu
dC5zZXQIY29uc3RhbnQEDmNyYWZ0X3RpZXI6My44DWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIR
Z2xvYmFsLmRvdWJsZS5zZXQIY29uc3RhbnQED2NyYWZ0X2NvdW50OjMuOBFhcml0aG1ldGljLmRvdWJs
ZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAZtb3RvcnMIY29uc3RhbnQEAS0RYXJpdGhtZXRpYy5k
b3VibGURZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3RhbnQED2NyYWZ0X2ludmVudG9yeQhjb25zdGFudAQB
KhNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BAVtb3Rvcg1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50
BAR0aWVyE2dlbmVyaWMuZXhlY3V0ZXN5bmMIY29uc3RhbnQECWNyYWZ0IDM6OA==
:global double craft_inventory
:local int tier
:local double count
:local double ingots
:local double chips
:local int chiptier

tier = global.int.get("craft_tier:2.5")
count = global.double.get("craft_count:2.5")

; Ingots
ingots = 0.0 ; TODO
global.int.set("craft_tier:ingot", tier)
global.double.set("craft_count:ingot", ingots - count("ingot", tier))
;global.int.set("craft_verify:ingot", 1)
executesync("craft ingot")
gotoif(99, global.int.get("craft_status") > 199)

; Lower tier inputs
global.int.set("craft_tier:2.5", tier - 1)
global.double.set("craft_count:2.5", count - craft_inventory * count("machine.cutter", tier - 1))
executesync("craft 2:5")
gotoif(99, global.int.get("craft_status") > 199)

; Restore state for this tier
global.int.set("craft_tier:2.5", tier)
global.double.set("craft_count:2.5", count)

:local double motors
motors = count * floor((75555444431.0 / (10.0 ^ i2d(tier))) % 10.0)
global.int.set("craft_tier:3.8", tier)
global.double.set("craft_count:3.8", motors - craft_inventory * count("motor", tier))
executesync("craft 3:8")


craft 2:5:plates 12
EGNyYWZ0IDI6NTpwbGF0ZXMAAAAAAAAAAAwAAAANbG9jYWwuaW50LnNldAhjb25zdGFudAQEdGllcg5n
bG9iYWwuaW50LmdldAhjb25zdGFudAQOY3JhZnRfdGllcjoyLjUQbG9jYWwuZG91YmxlLnNldAhjb25z
dGFudAQFY291bnQRZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3RhbnQED2NyYWZ0X2NvdW50OjIuNQ5nZW5l
cmljLmdvdG9pZghjb25zdGFudAJjAAAAD2NvbXBhcmlzb24uYm9vbA9jb21wYXJpc29uLmJvb2wPY29t
cGFyaXNvbi5ib29sDmNvbXBhcmlzb24uaW50DWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29u
c3RhbnQEATwIY29uc3RhbnQCAQAAAAhjb25zdGFudAQBfA5jb21wYXJpc29uLmludA1sb2NhbC5pbnQu
Z2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BAE+CGNvbnN0YW50AgoAAAAIY29uc3RhbnQEAXwRY29t
cGFyaXNvbi5kb3VibGUQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQFY291bnQIY29uc3RhbnQEATwI
Y29uc3RhbnQDAAAAAAAA8D8IY29uc3RhbnQEAXwOY29tcGFyaXNvbi5pbnQOZ2xvYmFsLmludC5nZXQI
Y29uc3RhbnQEDGNyYWZ0X3N0YXR1cwhjb25zdGFudAQBPghjb25zdGFudALHAAAADmdsb2JhbC5pbnQu
c2V0CGNvbnN0YW50BA5jcmFmdF90aWVyOjMuNA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyEWds
b2JhbC5kb3VibGUuc2V0CGNvbnN0YW50BA9jcmFmdF9jb3VudDozLjQRYXJpdGhtZXRpYy5kb3VibGUR
YXJpdGhtZXRpYy5kb3VibGUQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQFY291bnQIY29uc3RhbnQE
ASoMZG91YmxlLmZsb29yEWFyaXRobWV0aWMuZG91YmxlEWFyaXRobWV0aWMuZG91YmxlCGNvbnN0YW50
AwAAAggU/S1CCGNvbnN0YW50BAEvEWFyaXRobWV0aWMuZG91YmxlCGNvbnN0YW50AwAAAAAAACRACGNv
bnN0YW50BANwb3cDaTJkDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEA21vZAhj
b25zdGFudAMAAAAAAAAkQAhjb25zdGFudAQBLRFhcml0aG1ldGljLmRvdWJsZRFnbG9iYWwuZG91Ymxl
LmdldAhjb25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0YW50BAEqE2ZhY3RvcnkuaXRlbXMuY291
bnQIY29uc3RhbnQEBWJsb2NrDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXITZ2VuZXJpYy5leGVj
dXRlc3luYwhjb25zdGFudAQJY3JhZnQgMzo0Dmdsb2JhbC5pbnQuc2V0CGNvbnN0YW50BA5jcmFmdF90
aWVyOjMuMw1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyEWdsb2JhbC5kb3VibGUuc2V0CGNvbnN0
YW50BA9jcmFmdF9jb3VudDozLjMRYXJpdGhtZXRpYy5kb3VibGURYXJpdGhtZXRpYy5kb3VibGUQbG9j
YWwuZG91YmxlLmdldAhjb25zdGFudAQFY291bnQIY29uc3RhbnQEASoMZG91YmxlLmZsb29yEWFyaXRo
bWV0aWMuZG91YmxlEWFyaXRobWV0aWMuZG91YmxlCGNvbnN0YW50AwAATFx2txRCCGNvbnN0YW50BAEv
EWFyaXRobWV0aWMuZG91YmxlCGNvbnN0YW50AwAAAAAAACRACGNvbnN0YW50BANwb3cDaTJkDWxvY2Fs
LmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEA21vZAhjb25zdGFudAMAAAAAAAAkQAhjb25z
dGFudAQBLRFhcml0aG1ldGljLmRvdWJsZRFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRf
aW52ZW50b3J5CGNvbnN0YW50BAEqE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEC3BsYXRlLmRl
bnNlDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXITZ2VuZXJpYy5leGVjdXRlc3luYwhjb25zdGFu
dAQJY3JhZnQgMzozDmdsb2JhbC5pbnQuc2V0CGNvbnN0YW50BA5jcmFmdF90aWVyOjMuMg1sb2NhbC5p
bnQuZ2V0CGNvbnN0YW50BAR0aWVyEWdsb2JhbC5kb3VibGUuc2V0CGNvbnN0YW50BA9jcmFmdF9jb3Vu
dDozLjIRYXJpdGhtZXRpYy5kb3VibGURYXJpdGhtZXRpYy5kb3VibGUQbG9jYWwuZG91YmxlLmdldAhj
b25zdGFudAQFY291bnQIY29uc3RhbnQEASoMZG91YmxlLmZsb29yEWFyaXRobWV0aWMuZG91YmxlEWFy
aXRobWV0aWMuZG91YmxlCGNvbnN0YW50AwAAANBYMXVBCGNvbnN0YW50BAEvEWFyaXRobWV0aWMuZG91
YmxlCGNvbnN0YW50AwAAAAAAACRACGNvbnN0YW50BANwb3cDaTJkDWxvY2FsLmludC5nZXQIY29uc3Rh
bnQEBHRpZXIIY29uc3RhbnQEA21vZAhjb25zdGFudAMAAAAAAAAkQAhjb25zdGFudAQBLRFhcml0aG1l
dGljLmRvdWJsZRFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0
YW50BAEqE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEBXBsYXRlDWxvY2FsLmludC5nZXQIY29u
c3RhbnQEBHRpZXITZ2VuZXJpYy5leGVjdXRlc3luYwhjb25zdGFudAQJY3JhZnQgMzoy
:global double craft_inventory
:local int tier
:local double count

tier = global.int.get("craft_tier:2.5")
count = global.double.get("craft_count:2.5")
gotoif(99, tier < 1 | tier > 10 | count < 1.0 | global.int.get("craft_status") > 199)

; blocks = count * floor((64400000001.0 / (10.0 ^ i2d(tier))) % 10.0)
global.int.set("craft_tier:3.4", tier)
global.double.set("craft_count:3.4", count * floor((64400000001.0 / (10.0 ^ i2d(tier))) % 10.0) - craft_inventory * count("block", tier))
executesync("craft 3:4")

; denseplates = count * floor((22244333331.0 / (10.0 ^ i2d(tier))) % 10.0)
global.int.set("craft_tier:3.3", tier)
global.double.set("craft_count:3.3", count * floor((22244333331.0 / (10.0 ^ i2d(tier))) % 10.0) - craft_inventory * count("plate.dense", tier))
executesync("craft 3:3")

; plates = count * floor((00022222221.0 / (10.0 ^ i2d(tier))) % 10.0)
global.int.set("craft_tier:3.2", tier)
global.double.set("craft_count:3.2", count * floor((00022222221.0 / (10.0 ^ i2d(tier))) % 10.0) - craft_inventory * count("plate", tier))
executesync("craft 3:2")

Presser (6)

(pic)

Name Lines Code
craft 2:6 17
CWNyYWZ0IDI6NgAAAAAAAAAAEQAAAA1sb2NhbC5pbnQuc2V0CGNvbnN0YW50BAR0aWVyDmdsb2JhbC5p
bnQuZ2V0CGNvbnN0YW50BA5jcmFmdF90aWVyOjIuNhBsb2NhbC5kb3VibGUuc2V0CGNvbnN0YW50BAVj
b3VudBFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfY291bnQ6Mi42DmdlbmVyaWMuZ290
b2lmCGNvbnN0YW50AmMAAAAPY29tcGFyaXNvbi5ib29sD2NvbXBhcmlzb24uYm9vbA9jb21wYXJpc29u
LmJvb2wOY29tcGFyaXNvbi5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQB
PAhjb25zdGFudAIBAAAACGNvbnN0YW50BAF8DmNvbXBhcmlzb24uaW50DWxvY2FsLmludC5nZXQIY29u
c3RhbnQEBHRpZXIIY29uc3RhbnQEAT4IY29uc3RhbnQCCgAAAAhjb25zdGFudAQBfBFjb21wYXJpc29u
LmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQBPAhjb25zdGFu
dAMAAAAAAADwPwhjb25zdGFudAQBfA5jb21wYXJpc29uLmludA5nbG9iYWwuaW50LmdldAhjb25zdGFu
dAQMY3JhZnRfc3RhdHVzCGNvbnN0YW50BAE+CGNvbnN0YW50AscAAAATZ2VuZXJpYy5leGVjdXRlc3lu
Ywhjb25zdGFudAQMY3JhZnQgMjo2OmluDmdsb2JhbC5pbnQuc2V0CGNvbnN0YW50BA5jcmFmdF90aWVy
OjMuNA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyEWdsb2JhbC5kb3VibGUuc2V0CGNvbnN0YW50
BA9jcmFmdF9jb3VudDozLjQRYXJpdGhtZXRpYy5kb3VibGURYXJpdGhtZXRpYy5kb3VibGUQbG9jYWwu
ZG91YmxlLmdldAhjb25zdGFudAQFY291bnQIY29uc3RhbnQEASoMZG91YmxlLmZsb29yEWFyaXRobWV0
aWMuZG91YmxlEWFyaXRobWV0aWMuZG91YmxlCGNvbnN0YW50AwAAgkK43ilCCGNvbnN0YW50BAEvEWFy
aXRobWV0aWMuZG91YmxlCGNvbnN0YW50AwAAAAAAACRACGNvbnN0YW50BANwb3cDaTJkDWxvY2FsLmlu
dC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEA21vZAhjb25zdGFudAMAAAAAAAAkQAhjb25zdGFu
dAQBLRFhcml0aG1ldGljLmRvdWJsZRFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfaW52
ZW50b3J5CGNvbnN0YW50BAEqE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEBWJsb2NrDWxvY2Fs
LmludC5nZXQIY29uc3RhbnQEBHRpZXITZ2VuZXJpYy5leGVjdXRlc3luYwhjb25zdGFudAQJY3JhZnQg
Mzo0Dmdsb2JhbC5pbnQuc2V0CGNvbnN0YW50BA5jcmFmdF90aWVyOjMuMg1sb2NhbC5pbnQuZ2V0CGNv
bnN0YW50BAR0aWVyEWdsb2JhbC5kb3VibGUuc2V0CGNvbnN0YW50BA9jcmFmdF9jb3VudDozLjIRYXJp
dGhtZXRpYy5kb3VibGURYXJpdGhtZXRpYy5kb3VibGUQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQF
Y291bnQIY29uc3RhbnQEASoMZG91YmxlLmZsb29yEWFyaXRobWV0aWMuZG91YmxlEWFyaXRobWV0aWMu
ZG91YmxlCGNvbnN0YW50AwAABYNzSDdCCGNvbnN0YW50BAEvEWFyaXRobWV0aWMuZG91YmxlCGNvbnN0
YW50AwAAAAAAACRACGNvbnN0YW50BANwb3cDaTJkDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXII
Y29uc3RhbnQEA21vZAhjb25zdGFudAMAAAAAAAAkQAhjb25zdGFudAQBLRFhcml0aG1ldGljLmRvdWJs
ZRFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0YW50BAEqE2Zh
Y3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEBXBsYXRlDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRp
ZXITZ2VuZXJpYy5leGVjdXRlc3luYwhjb25zdGFudAQJY3JhZnQgMzoyEGxvY2FsLmRvdWJsZS5zZXQI
Y29uc3RhbnQEBXdpcmVzEWFyaXRobWV0aWMuZG91YmxlEGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQE
BWNvdW50CGNvbnN0YW50BAEqDGRvdWJsZS5mbG9vchFhcml0aG1ldGljLmRvdWJsZRFhcml0aG1ldGlj
LmRvdWJsZQhjb25zdGFudAMAAHxrQgsfQghjb25zdGFudAQBLxFhcml0aG1ldGljLmRvdWJsZQhjb25z
dGFudAMAAAAAAAAkQAhjb25zdGFudAQDcG93A2kyZA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVy
CGNvbnN0YW50BANtb2QIY29uc3RhbnQDAAAAAAAAJEARZ2VuZXJpYy53YWl0d2hpbGUWZmFjdG9yeS5t
YWNoaW5lLmFjdGl2ZQhjb25zdGFudAQIcmVmaW5lcnkPZmFjdG9yeS5wcm9kdWNlCGNvbnN0YW50BAVp
bmdvdA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyC2RvdWJsZS5jZWlsEWFyaXRobWV0aWMuZG91
YmxlEWFyaXRobWV0aWMuZG91YmxlEGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQEBXdpcmVzCGNvbnN0
YW50BAEtEWFyaXRobWV0aWMuZG91YmxlEWdsb2JhbC5kb3VibGUuZ2V0CGNvbnN0YW50BA9jcmFmdF9p
bnZlbnRvcnkIY29uc3RhbnQEASoRYXJpdGhtZXRpYy5kb3VibGUTZmFjdG9yeS5pdGVtcy5jb3VudAhj
b25zdGFudAQFY2FibGUNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQBKxNmYWN0
b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BAR3aXJlDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXII
Y29uc3RhbnQEAS8IY29uc3RhbnQDAAAAAAAAAEAIY29uc3RhbnQECHJlZmluZXJ5EWdlbmVyaWMud2Fp
dHdoaWxlFmZhY3RvcnkubWFjaGluZS5hY3RpdmUIY29uc3RhbnQECHJlZmluZXJ5D2ZhY3RvcnkucHJv
ZHVjZQhjb25zdGFudAQFY2FibGUNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllchFhcml0aG1ldGlj
LmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAV3aXJlcwhjb25zdGFudAQBLRFhcml0aG1l
dGljLmRvdWJsZRFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0
YW50BAEqE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEBHdpcmUNbG9jYWwuaW50LmdldAhjb25z
dGFudAQEdGllcghjb25zdGFudAQIcmVmaW5lcnkRZ2VuZXJpYy53YWl0dW50aWwRY29tcGFyaXNvbi5k
b3VibGUTZmFjdG9yeS5pdGVtcy5jb3VudAhjb25zdGFudAQEd2lyZQ1sb2NhbC5pbnQuZ2V0CGNvbnN0
YW50BAR0aWVyCGNvbnN0YW50BAI+PRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAV3aXJlcw1mYWN0
b3J5LmNyYWZ0CGNvbnN0YW50BA9tYWNoaW5lLnByZXNzZXINbG9jYWwuaW50LmdldAhjb25zdGFudAQE
dGllchBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudA==
; Presser
:global double craft_inventory
:local int tier
:local double count

tier = global.int.get("craft_tier:2.6")
count = global.double.get("craft_count:2.6")
gotoif(99, tier < 1 | tier > 10 | count < 1.0 | global.int.get("craft_status") > 199)

executesync("craft 2:6:in")

; blocks = count * floor((55555400001.0 / (10.0 ^ i2d(tier))) % 10.0)
global.int.set("craft_tier:3.4", tier)
global.double.set("craft_count:3.4", count * floor((55555400001.0 / (10.0 ^ i2d(tier))) % 10.0) - craft_inventory * count("block", tier))
executesync("craft 3:4")

; plates = count * floor((99999777541.0 / (10.0 ^ i2d(tier))) % 10.0)
global.int.set("craft_tier:3.2", tier)
global.double.set("craft_count:3.2", count * floor((99999777541.0 / (10.0 ^ i2d(tier))) % 10.0) - craft_inventory * count("plate", tier))
executesync("craft 3:2")

:local double wires
wires = count * floor((33333222111.0 / (10.0 ^ i2d(tier))) % 10.0)
waitwhile(active("refinery"))
produce("ingot", tier, ceil((wires - craft_inventory * (count("cable", tier) + count("wire", tier))) / 2.0), "refinery")
waitwhile(active("refinery"))
produce("cable", tier, wires - craft_inventory * count("wire", tier), "refinery")

waituntil(count("wire", tier) >= wires)
craft("machine.presser", tier, count)


craft 2:6:in 22
DGNyYWZ0IDI6NjppbgAAAAAAAAAAFgAAAA1sb2NhbC5pbnQuc2V0CGNvbnN0YW50BAR0aWVyDmdsb2Jh
bC5pbnQuZ2V0CGNvbnN0YW50BA5jcmFmdF90aWVyOjIuNhBsb2NhbC5kb3VibGUuc2V0CGNvbnN0YW50
BAVjb3VudBFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfY291bnQ6Mi42EGxvY2FsLmRv
dWJsZS5zZXQIY29uc3RhbnQEBmluZ290cwhjb25zdGFudAMAAAAAAAAAAA5nbG9iYWwuaW50LnNldAhj
b25zdGFudAQQY3JhZnRfdGllcjppbmdvdA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyEWdsb2Jh
bC5kb3VibGUuc2V0CGNvbnN0YW50BBFjcmFmdF9jb3VudDppbmdvdBFhcml0aG1ldGljLmRvdWJsZRBs
b2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAZpbmdvdHMIY29uc3RhbnQEAS0TZmFjdG9yeS5pdGVtcy5j
b3VudAhjb25zdGFudAQFaW5nb3QNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllchNnZW5lcmljLmV4
ZWN1dGVzeW5jCGNvbnN0YW50BAtjcmFmdCBpbmdvdA5nZW5lcmljLmdvdG9pZghjb25zdGFudAJjAAAA
DmNvbXBhcmlzb24uaW50Dmdsb2JhbC5pbnQuZ2V0CGNvbnN0YW50BAxjcmFmdF9zdGF0dXMIY29uc3Rh
bnQEAT4IY29uc3RhbnQCxwAAAA5nbG9iYWwuaW50LnNldAhjb25zdGFudAQOY3JhZnRfdGllcjoyLjYO
YXJpdGhtZXRpYy5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQBLQhjb25z
dGFudAIBAAAAEWdsb2JhbC5kb3VibGUuc2V0CGNvbnN0YW50BA9jcmFmdF9jb3VudDoyLjYRYXJpdGht
ZXRpYy5kb3VibGUQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQFY291bnQIY29uc3RhbnQEAS0RYXJp
dGhtZXRpYy5kb3VibGURZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3RhbnQED2NyYWZ0X2ludmVudG9yeQhj
b25zdGFudAQBKhNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BA9tYWNoaW5lLnByZXNzZXIOYXJp
dGhtZXRpYy5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQBLQhjb25zdGFu
dAIBAAAAE2dlbmVyaWMuZXhlY3V0ZXN5bmMIY29uc3RhbnQECWNyYWZ0IDI6Ng5nZW5lcmljLmdvdG9p
Zghjb25zdGFudAJjAAAADmNvbXBhcmlzb24uaW50Dmdsb2JhbC5pbnQuZ2V0CGNvbnN0YW50BAxjcmFm
dF9zdGF0dXMIY29uc3RhbnQEAT4IY29uc3RhbnQCxwAAAA5nbG9iYWwuaW50LnNldAhjb25zdGFudAQO
Y3JhZnRfdGllcjoyLjYNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllchFnbG9iYWwuZG91YmxlLnNl
dAhjb25zdGFudAQPY3JhZnRfY291bnQ6Mi42EGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQEBWNvdW50
DWxvY2FsLmludC5zZXQIY29uc3RhbnQECGNoaXB0aWVyA2QyaQxkb3VibGUuZmxvb3IRYXJpdGhtZXRp
Yy5kb3VibGURYXJpdGhtZXRpYy5kb3VibGUIY29uc3RhbnQDAABuBdCkJEIIY29uc3RhbnQEAS8RYXJp
dGhtZXRpYy5kb3VibGUIY29uc3RhbnQDAAAAAAAAJEAIY29uc3RhbnQEA3BvdwNpMmQNbG9jYWwuaW50
LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQDbW9kCGNvbnN0YW50AwAAAAAAACRADmdsb2JhbC5p
bnQuc2V0CGNvbnN0YW50BA5jcmFmdF90aWVyOjMuMQ1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAhjaGlw
dGllchFnbG9iYWwuZG91YmxlLnNldAhjb25zdGFudAQPY3JhZnRfY291bnQ6My4xEWFyaXRobWV0aWMu
ZG91YmxlEWFyaXRobWV0aWMuZG91YmxlEGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQEBWNvdW50CGNv
bnN0YW50BAEqCGNvbnN0YW50AwAAAAAAAABACGNvbnN0YW50BAEtEWFyaXRobWV0aWMuZG91YmxlEWds
b2JhbC5kb3VibGUuZ2V0CGNvbnN0YW50BA9jcmFmdF9pbnZlbnRvcnkIY29uc3RhbnQEASoTZmFjdG9y
eS5pdGVtcy5jb3VudAhjb25zdGFudAQEY2hpcA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAhjaGlwdGll
chNnZW5lcmljLmV4ZWN1dGVzeW5jCGNvbnN0YW50BAljcmFmdCAzOjEOZ2VuZXJpYy5nb3RvaWYIY29u
c3RhbnQCYwAAAA9jb21wYXJpc29uLmJvb2wOY29tcGFyaXNvbi5pbnQOZ2xvYmFsLmludC5nZXQIY29u
c3RhbnQEDGNyYWZ0X3N0YXR1cwhjb25zdGFudAQBPghjb25zdGFudALHAAAACGNvbnN0YW50BAF8DmNv
bXBhcmlzb24uaW50DWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEAT4IY29uc3Rh
bnQCAQAAAA1nZW5lcmljLmNsaWNrDnZlYy5mcm9tQ29vcmRzEWFyaXRobWV0aWMuZG91YmxlCGNvbnN0
YW50A7gehetRuO4/CGNvbnN0YW50BAEqA2kyZAxzY3JlZW4ud2lkdGgRYXJpdGhtZXRpYy5kb3VibGUI
Y29uc3RhbnQDXI/C9Shc3z8IY29uc3RhbnQEASoDaTJkDXNjcmVlbi5oZWlnaHQNZ2VuZXJpYy5jbGlj
aw52ZWMuZnJvbUNvb3JkcxFhcml0aG1ldGljLmRvdWJsZQhjb25zdGFudANSuB6F61HoPwhjb25zdGFu
dAQBKgNpMmQMc2NyZWVuLndpZHRoEWFyaXRobWV0aWMuZG91YmxlCGNvbnN0YW50AwAAAAAAAOg/CGNv
bnN0YW50BAEqA2kyZA1zY3JlZW4uaGVpZ2h0DGdlbmVyaWMud2FpdAhjb25zdGFudAMAAAAAAADgPw1n
ZW5lcmljLmNsaWNrDnZlYy5mcm9tQ29vcmRzEWFyaXRobWV0aWMuZG91YmxlCGNvbnN0YW50A1K4HoXr
Ueg/CGNvbnN0YW50BAEqA2kyZAxzY3JlZW4ud2lkdGgRYXJpdGhtZXRpYy5kb3VibGUIY29uc3RhbnQD
AAAAAAAA6D8IY29uc3RhbnQEASoDaTJkDXNjcmVlbi5oZWlnaHQ=
:global double craft_inventory
:local int tier
:local double count
:local double ingots

tier = global.int.get("craft_tier:2.6")
count = global.double.get("craft_count:2.6")

; Ingots
ingots = 0.0 ; TODO
global.int.set("craft_tier:ingot", tier)
global.double.set("craft_count:ingot", ingots - count("ingot", tier))
;global.int.set("craft_verify:ingot", 1)
executesync("craft ingot")
gotoif(99, global.int.get("craft_status") > 199)

; Lower tier inputs
global.int.set("craft_tier:2.6", tier - 1)
global.double.set("craft_count:2.6", count - craft_inventory * count("machine.presser", tier - 1))
executesync("craft 2:6")
gotoif(99, global.int.get("craft_status") > 199)

; Restore state for this tier
global.int.set("craft_tier:2.6", tier)
global.double.set("craft_count:2.6", count)

; chips
;:local double chips
; chips = count * 2.0
:local int chiptier
chiptier = d2i(floor((44332221111.0 / (10.0 ^ i2d(tier))) % 10.0))
global.int.set("craft_tier:3.1", chiptier)
global.double.set("craft_count:3.1", count * 2.0 - craft_inventory * count("chip", chiptier))
executesync("craft 3:1")

gotoif(99, global.int.get("craft_status") > 199 | tier > 1)
; Tier 1 has to buy hammers!
click(vec(0.96 * i2d(width()), 0.49 * i2d(height())))
click(vec(0.76 * i2d(width()), 0.75 * i2d(height())))
wait(0.5)
click(vec(0.76 * i2d(width()), 0.75 * i2d(height())))

Mixer (7)

(pic)

Name Lines Code
craft 2:7 14
CWNyYWZ0IDI6NwAAAAAAAAAADgAAAA1sb2NhbC5pbnQuc2V0CGNvbnN0YW50BAR0aWVyDmdsb2JhbC5p
bnQuZ2V0CGNvbnN0YW50BA5jcmFmdF90aWVyOjIuNxBsb2NhbC5kb3VibGUuc2V0CGNvbnN0YW50BAVj
b3VudBFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfY291bnQ6Mi43DmdlbmVyaWMuZ290
b2lmCGNvbnN0YW50AmMAAAAPY29tcGFyaXNvbi5ib29sD2NvbXBhcmlzb24uYm9vbA9jb21wYXJpc29u
LmJvb2wOY29tcGFyaXNvbi5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQB
PAhjb25zdGFudAIBAAAACGNvbnN0YW50BAF8DmNvbXBhcmlzb24uaW50DWxvY2FsLmludC5nZXQIY29u
c3RhbnQEBHRpZXIIY29uc3RhbnQEAT4IY29uc3RhbnQCCgAAAAhjb25zdGFudAQBfBFjb21wYXJpc29u
LmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQBPAhjb25zdGFu
dAMAAAAAAADwPwhjb25zdGFudAQBfA5jb21wYXJpc29uLmludA5nbG9iYWwuaW50LmdldAhjb25zdGFu
dAQMY3JhZnRfc3RhdHVzCGNvbnN0YW50BAE+CGNvbnN0YW50AscAAAATZ2VuZXJpYy5leGVjdXRlc3lu
Ywhjb25zdGFudAQMY3JhZnQgMjo3OmluDmdsb2JhbC5pbnQuc2V0CGNvbnN0YW50BA5jcmFmdF90aWVy
OjMuMw1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyEWdsb2JhbC5kb3VibGUuc2V0CGNvbnN0YW50
BA9jcmFmdF9jb3VudDozLjMRYXJpdGhtZXRpYy5kb3VibGURYXJpdGhtZXRpYy5kb3VibGUQbG9jYWwu
ZG91YmxlLmdldAhjb25zdGFudAQFY291bnQIY29uc3RhbnQEASoMZG91YmxlLmZsb29yEWFyaXRobWV0
aWMuZG91YmxlEWFyaXRobWV0aWMuZG91YmxlCGNvbnN0YW50AwAApshFCy9CCGNvbnN0YW50BAEvEWFy
aXRobWV0aWMuZG91YmxlCGNvbnN0YW50AwAAAAAAACRACGNvbnN0YW50BANwb3cDaTJkDWxvY2FsLmlu
dC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEA21vZAhjb25zdGFudAMAAAAAAAAkQAhjb25zdGFu
dAQBLRFhcml0aG1ldGljLmRvdWJsZRFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfaW52
ZW50b3J5CGNvbnN0YW50BAEqE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEC3BsYXRlLmRlbnNl
DWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXITZ2VuZXJpYy5leGVjdXRlc3luYwhjb25zdGFudAQJ
Y3JhZnQgMzozDmdsb2JhbC5pbnQuc2V0CGNvbnN0YW50BA5jcmFmdF90aWVyOjMuOQ1sb2NhbC5pbnQu
Z2V0CGNvbnN0YW50BAR0aWVyEWdsb2JhbC5kb3VibGUuc2V0CGNvbnN0YW50BA9jcmFmdF9jb3VudDoz
LjkRYXJpdGhtZXRpYy5kb3VibGURYXJpdGhtZXRpYy5kb3VibGUQbG9jYWwuZG91YmxlLmdldAhjb25z
dGFudAQFY291bnQIY29uc3RhbnQEASoMZG91YmxlLmZsb29yEWFyaXRobWV0aWMuZG91YmxlEWFyaXRo
bWV0aWMuZG91YmxlCGNvbnN0YW50AwAA3FtCCx9CCGNvbnN0YW50BAEvEWFyaXRobWV0aWMuZG91Ymxl
CGNvbnN0YW50AwAAAAAAACRACGNvbnN0YW50BANwb3cDaTJkDWxvY2FsLmludC5nZXQIY29uc3RhbnQE
BHRpZXIIY29uc3RhbnQEA21vZAhjb25zdGFudAMAAAAAAAAkQAhjb25zdGFudAQBLRFhcml0aG1ldGlj
LmRvdWJsZRFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0YW50
BAEqE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEBHB1bXANbG9jYWwuaW50LmdldAhjb25zdGFu
dAQEdGllchNnZW5lcmljLmV4ZWN1dGVzeW5jCGNvbnN0YW50BAljcmFmdCAzOjkOZ2xvYmFsLmludC5z
ZXQIY29uc3RhbnQEDmNyYWZ0X3RpZXI6My44DWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIRZ2xv
YmFsLmRvdWJsZS5zZXQIY29uc3RhbnQED2NyYWZ0X2NvdW50OjMuOBFhcml0aG1ldGljLmRvdWJsZRFh
cml0aG1ldGljLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQB
Kghjb25zdGFudAMAAAAAAAAAQAhjb25zdGFudAQBLRFhcml0aG1ldGljLmRvdWJsZRFnbG9iYWwuZG91
YmxlLmdldAhjb25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0YW50BAEqE2ZhY3RvcnkuaXRlbXMu
Y291bnQIY29uc3RhbnQEBW1vdG9yDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXITZ2VuZXJpYy5l
eGVjdXRlc3luYwhjb25zdGFudAQJY3JhZnQgMzo4DWZhY3RvcnkuY3JhZnQIY29uc3RhbnQEDW1hY2hp
bmUubWl4ZXINbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllchBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0
YW50BAVjb3VudA==
; Mixer
:global double craft_inventory
:local int tier
:local double count

tier = global.int.get("craft_tier:2.7")
count = global.double.get("craft_count:2.7")
gotoif(99, tier < 1 | tier > 10 | count < 1.0 | global.int.get("craft_status") > 199)

executesync("craft 2:7:in")

;denseplates = count * floor((66666554451.0 / (10.0 ^ i2d(tier))) % 10.0)
global.int.set("craft_tier:3.3", tier)
global.double.set("craft_count:3.3", count * floor((66666554451.0 / (10.0 ^ i2d(tier))) % 10.0) - craft_inventory * count("plate.dense", tier))
executesync("craft 3:3")

;pumps = count * floor((33333221111.0 / (10.0 ^ i2d(tier))) % 10.0)
global.int.set("craft_tier:3.9", tier)
global.double.set("craft_count:3.9", count * floor((33333221111.0 / (10.0 ^ i2d(tier))) % 10.0) - craft_inventory * count("pump", tier))
executesync("craft 3:9")

;motors = count * 2
global.int.set("craft_tier:3.8", tier)
global.double.set("craft_count:3.8", count * 2.0 - craft_inventory * count("motor", tier))
executesync("craft 3:8")

craft("machine.mixer", tier, count)


craft 2:7:in 18
DGNyYWZ0IDI6NzppbgAAAAAAAAAAEgAAAA1sb2NhbC5pbnQuc2V0CGNvbnN0YW50BAR0aWVyDmdsb2Jh
bC5pbnQuZ2V0CGNvbnN0YW50BA5jcmFmdF90aWVyOjIuNxBsb2NhbC5kb3VibGUuc2V0CGNvbnN0YW50
BAVjb3VudBFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfY291bnQ6Mi43EGxvY2FsLmRv
dWJsZS5zZXQIY29uc3RhbnQEBmluZ290cwhjb25zdGFudAMAAAAAAAAAAA5nbG9iYWwuaW50LnNldAhj
b25zdGFudAQQY3JhZnRfdGllcjppbmdvdA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyEWdsb2Jh
bC5kb3VibGUuc2V0CGNvbnN0YW50BBFjcmFmdF9jb3VudDppbmdvdBFhcml0aG1ldGljLmRvdWJsZRBs
b2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAZpbmdvdHMIY29uc3RhbnQEAS0TZmFjdG9yeS5pdGVtcy5j
b3VudAhjb25zdGFudAQFaW5nb3QNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllchNnZW5lcmljLmV4
ZWN1dGVzeW5jCGNvbnN0YW50BAtjcmFmdCBpbmdvdA5nZW5lcmljLmdvdG9pZghjb25zdGFudAJjAAAA
DmNvbXBhcmlzb24uaW50Dmdsb2JhbC5pbnQuZ2V0CGNvbnN0YW50BAxjcmFmdF9zdGF0dXMIY29uc3Rh
bnQEAT4IY29uc3RhbnQCxwAAAA5nbG9iYWwuaW50LnNldAhjb25zdGFudAQOY3JhZnRfdGllcjoyLjcO
YXJpdGhtZXRpYy5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQBLQhjb25z
dGFudAIBAAAAEWdsb2JhbC5kb3VibGUuc2V0CGNvbnN0YW50BA9jcmFmdF9jb3VudDoyLjcRYXJpdGht
ZXRpYy5kb3VibGUQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQFY291bnQIY29uc3RhbnQEAS0RYXJp
dGhtZXRpYy5kb3VibGURZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3RhbnQED2NyYWZ0X2ludmVudG9yeQhj
b25zdGFudAQBKhNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BA1tYWNoaW5lLm1peGVyDmFyaXRo
bWV0aWMuaW50DWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEAS0IY29uc3RhbnQC
AQAAABNnZW5lcmljLmV4ZWN1dGVzeW5jCGNvbnN0YW50BAljcmFmdCAyOjcOZ2VuZXJpYy5nb3RvaWYI
Y29uc3RhbnQCYwAAAA5jb21wYXJpc29uLmludA5nbG9iYWwuaW50LmdldAhjb25zdGFudAQMY3JhZnRf
c3RhdHVzCGNvbnN0YW50BAE+CGNvbnN0YW50AscAAAAOZ2xvYmFsLmludC5zZXQIY29uc3RhbnQEDmNy
YWZ0X3RpZXI6Mi43DWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIRZ2xvYmFsLmRvdWJsZS5zZXQI
Y29uc3RhbnQED2NyYWZ0X2NvdW50OjIuNxBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudBBs
b2NhbC5kb3VibGUuc2V0CGNvbnN0YW50BAVjaGlwcxFhcml0aG1ldGljLmRvdWJsZRBsb2NhbC5kb3Vi
bGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQBKgxkb3VibGUuZmxvb3IRYXJpdGhtZXRpYy5k
b3VibGURYXJpdGhtZXRpYy5kb3VibGUIY29uc3RhbnQDAADcW0ILH0IIY29uc3RhbnQEAS8RYXJpdGht
ZXRpYy5kb3VibGUIY29uc3RhbnQDAAAAAAAAJEAIY29uc3RhbnQEA3BvdwNpMmQNbG9jYWwuaW50Lmdl
dAhjb25zdGFudAQEdGllcghjb25zdGFudAQDbW9kCGNvbnN0YW50AwAAAAAAACRADWxvY2FsLmludC5z
ZXQIY29uc3RhbnQECGNoaXB0aWVyA2QyaQxkb3VibGUuZmxvb3IRYXJpdGhtZXRpYy5kb3VibGURYXJp
dGhtZXRpYy5kb3VibGUIY29uc3RhbnQDAABu2J6jJEIIY29uc3RhbnQEAS8RYXJpdGhtZXRpYy5kb3Vi
bGUIY29uc3RhbnQDAAAAAAAAJEAIY29uc3RhbnQEA3BvdwNpMmQNbG9jYWwuaW50LmdldAhjb25zdGFu
dAQEdGllcghjb25zdGFudAQDbW9kCGNvbnN0YW50AwAAAAAAACRADmdsb2JhbC5pbnQuc2V0CGNvbnN0
YW50BA5jcmFmdF90aWVyOjMuMQ1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAhjaGlwdGllchFnbG9iYWwu
ZG91YmxlLnNldAhjb25zdGFudAQPY3JhZnRfY291bnQ6My4xEWFyaXRobWV0aWMuZG91YmxlEGxvY2Fs
LmRvdWJsZS5nZXQIY29uc3RhbnQEBWNoaXBzCGNvbnN0YW50BAEtEWFyaXRobWV0aWMuZG91YmxlEWds
b2JhbC5kb3VibGUuZ2V0CGNvbnN0YW50BA9jcmFmdF9pbnZlbnRvcnkIY29uc3RhbnQEASoTZmFjdG9y
eS5pdGVtcy5jb3VudAhjb25zdGFudAQEY2hpcA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAhjaGlwdGll
chNnZW5lcmljLmV4ZWN1dGVzeW5jCGNvbnN0YW50BAljcmFmdCAzOjE=
:global double craft_inventory
:local int tier
:local double count
:local double ingots

tier = global.int.get("craft_tier:2.7")
count = global.double.get("craft_count:2.7")

; Ingots
ingots = 0.0 ; TODO
global.int.set("craft_tier:ingot", tier)
global.double.set("craft_count:ingot", ingots - count("ingot", tier))
;global.int.set("craft_verify:ingot", 1)
executesync("craft ingot")
gotoif(99, global.int.get("craft_status") > 199)

; Lower tier inputs
global.int.set("craft_tier:2.7", tier - 1)
global.double.set("craft_count:2.7", count - craft_inventory * count("machine.mixer", tier - 1))
executesync("craft 2:7")
gotoif(99, global.int.get("craft_status") > 199)

; Restore state for this tier
global.int.set("craft_tier:2.7", tier)
global.double.set("craft_count:2.7", count)

; chips
:local double chips
chips = count * floor((33333221111.0 / (10.0 ^ i2d(tier))) % 10.0)
:local int chiptier
chiptier = d2i(floor((44322221111.0 / (10.0 ^ i2d(tier))) % 10.0))
global.int.set("craft_tier:3.1", chiptier)
global.double.set("craft_count:3.1", chips - craft_inventory * count("chip", chiptier))
executesync("craft 3:1")

Belt (8)

(pic)

Name Lines Code
craft 2:8 14
CWNyYWZ0IDI6OAAAAAAAAAAADgAAAA1sb2NhbC5pbnQuc2V0CGNvbnN0YW50BAR0aWVyDmdsb2JhbC5p
bnQuZ2V0CGNvbnN0YW50BA5jcmFmdF90aWVyOjIuOBBsb2NhbC5kb3VibGUuc2V0CGNvbnN0YW50BAVj
b3VudBFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfY291bnQ6Mi44DmdlbmVyaWMuZ290
b2lmCGNvbnN0YW50AmMAAAAPY29tcGFyaXNvbi5ib29sD2NvbXBhcmlzb24uYm9vbA9jb21wYXJpc29u
LmJvb2wOY29tcGFyaXNvbi5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQB
PAhjb25zdGFudAIBAAAACGNvbnN0YW50BAF8DmNvbXBhcmlzb24uaW50DWxvY2FsLmludC5nZXQIY29u
c3RhbnQEBHRpZXIIY29uc3RhbnQEAT4IY29uc3RhbnQCCgAAAAhjb25zdGFudAQBfBFjb21wYXJpc29u
LmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQBPAhjb25zdGFu
dAMAAAAAAADwPwhjb25zdGFudAQBfA5jb21wYXJpc29uLmludA5nbG9iYWwuaW50LmdldAhjb25zdGFu
dAQMY3JhZnRfc3RhdHVzCGNvbnN0YW50BAE+CGNvbnN0YW50AscAAAATZ2VuZXJpYy5leGVjdXRlc3lu
Ywhjb25zdGFudAQMY3JhZnQgMjo4OmluDmdsb2JhbC5pbnQuc2V0CGNvbnN0YW50BA5jcmFmdF90aWVy
OjMuNg1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyEWdsb2JhbC5kb3VibGUuc2V0CGNvbnN0YW50
BA9jcmFmdF9jb3VudDozLjYRYXJpdGhtZXRpYy5kb3VibGURYXJpdGhtZXRpYy5kb3VibGUQbG9jYWwu
ZG91YmxlLmdldAhjb25zdGFudAQFY291bnQIY29uc3RhbnQEASoMZG91YmxlLmZsb29yEWFyaXRobWV0
aWMuZG91YmxlEWFyaXRobWV0aWMuZG91YmxlCGNvbnN0YW50AwAAHhmb3ilCCGNvbnN0YW50BAEvEWFy
aXRobWV0aWMuZG91YmxlCGNvbnN0YW50AwAAAAAAACRACGNvbnN0YW50BANwb3cDaTJkDWxvY2FsLmlu
dC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEA21vZAhjb25zdGFudAMAAAAAAAAkQAhjb25zdGFu
dAQBLRFhcml0aG1ldGljLmRvdWJsZRFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfaW52
ZW50b3J5CGNvbnN0YW50BAEqE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQED2NhYmxlLmluc3Vs
YXRlZA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyE2dlbmVyaWMuZXhlY3V0ZXN5bmMIY29uc3Rh
bnQECWNyYWZ0IDM6Ng5nbG9iYWwuaW50LnNldAhjb25zdGFudAQOY3JhZnRfdGllcjozLjgNbG9jYWwu
aW50LmdldAhjb25zdGFudAQEdGllchFnbG9iYWwuZG91YmxlLnNldAhjb25zdGFudAQPY3JhZnRfY291
bnQ6My44EWFyaXRobWV0aWMuZG91YmxlEWFyaXRobWV0aWMuZG91YmxlEGxvY2FsLmRvdWJsZS5nZXQI
Y29uc3RhbnQEBWNvdW50CGNvbnN0YW50BAEqDGRvdWJsZS5mbG9vchFhcml0aG1ldGljLmRvdWJsZRFh
cml0aG1ldGljLmRvdWJsZQhjb25zdGFudAMAAKblDrIkQghjb25zdGFudAQBLxFhcml0aG1ldGljLmRv
dWJsZQhjb25zdGFudAMAAAAAAAAkQAhjb25zdGFudAQDcG93A2kyZA1sb2NhbC5pbnQuZ2V0CGNvbnN0
YW50BAR0aWVyCGNvbnN0YW50BANtb2QIY29uc3RhbnQDAAAAAAAAJEAIY29uc3RhbnQEAS0RYXJpdGht
ZXRpYy5kb3VibGURZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3RhbnQED2NyYWZ0X2ludmVudG9yeQhjb25z
dGFudAQBKhNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BAVtb3Rvcg1sb2NhbC5pbnQuZ2V0CGNv
bnN0YW50BAR0aWVyE2dlbmVyaWMuZXhlY3V0ZXN5bmMIY29uc3RhbnQECWNyYWZ0IDM6OBFnZW5lcmlj
LndhaXR3aGlsZRZmYWN0b3J5Lm1hY2hpbmUuYWN0aXZlCGNvbnN0YW50BAdwcmVzc2VyD2ZhY3Rvcnku
cHJvZHVjZQhjb25zdGFudAQGcnViYmVyDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIRYXJpdGht
ZXRpYy5kb3VibGURYXJpdGhtZXRpYy5kb3VibGUQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQFY291
bnQIY29uc3RhbnQEASoMZG91YmxlLmZsb29yEWFyaXRobWV0aWMuZG91YmxlEWFyaXRobWV0aWMuZG91
YmxlCGNvbnN0YW50AwAAAomN3ilCCGNvbnN0YW50BAEvEWFyaXRobWV0aWMuZG91YmxlCGNvbnN0YW50
AwAAAAAAACRACGNvbnN0YW50BANwb3cDaTJkDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29u
c3RhbnQEA21vZAhjb25zdGFudAMAAAAAAAAkQAhjb25zdGFudAQBLRFhcml0aG1ldGljLmRvdWJsZRFn
bG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0YW50BAEqE2ZhY3Rv
cnkuaXRlbXMuY291bnQIY29uc3RhbnQEDHBsYXRlLnJ1YmJlcg1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50
BAR0aWVyCGNvbnN0YW50BAdwcmVzc2VyEWdlbmVyaWMud2FpdHdoaWxlFmZhY3RvcnkubWFjaGluZS5h
Y3RpdmUIY29uc3RhbnQEB3ByZXNzZXINZmFjdG9yeS5jcmFmdAhjb25zdGFudAQVbWFjaGluZS50cmFu
c3BvcnRiZWx0DWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIQbG9jYWwuZG91YmxlLmdldAhjb25z
dGFudAQFY291bnQ=
; Belt
:global double craft_inventory
:local int tier
:local double count

tier = global.int.get("craft_tier:2.8")
count = global.double.get("craft_count:2.8")
gotoif(99, tier < 1 | tier > 10 | count < 1.0 | global.int.get("craft_status") > 199)

executesync("craft 2:8:in")

;insulatedcable = count * floor((55554444431.0 / (10.0 ^ i2d(tier))) % 10.0)
global.int.set("craft_tier:3.6", tier)
global.double.set("craft_count:3.6", count * floor((55554444431.0 / (10.0 ^ i2d(tier))) % 10.0) - craft_inventory * count("cable.insulated", tier))
executesync("craft 3:6")

;motors = count * floor((44443333331.0 / (10.0 ^ i2d(tier))) % 10.0)
global.int.set("craft_tier:3.8", tier)
global.double.set("craft_count:3.8", count * floor((44443333331.0 / (10.0 ^ i2d(tier))) % 10.0) - craft_inventory * count("motor", tier))
executesync("craft 3:8")

;rubberplate = count * floor((55554000001.0 / (10.0 ^ i2d(tier))) % 10.0)
waitwhile(active("presser"))
produce("rubber", tier, count * floor((55554000001.0 / (10.0 ^ i2d(tier))) % 10.0) - craft_inventory * count("plate.rubber", tier), "presser")
waitwhile(active("presser"))

craft("machine.transportbelt", tier, count)


craft 2:8:in 18
DGNyYWZ0IDI6ODppbgAAAAAAAAAAEgAAAA1sb2NhbC5pbnQuc2V0CGNvbnN0YW50BAR0aWVyDmdsb2Jh
bC5pbnQuZ2V0CGNvbnN0YW50BA5jcmFmdF90aWVyOjIuOBBsb2NhbC5kb3VibGUuc2V0CGNvbnN0YW50
BAVjb3VudBFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfY291bnQ6Mi44EGxvY2FsLmRv
dWJsZS5zZXQIY29uc3RhbnQEBmluZ290cwhjb25zdGFudAMAAAAAAAAAAA5nbG9iYWwuaW50LnNldAhj
b25zdGFudAQQY3JhZnRfdGllcjppbmdvdA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyEWdsb2Jh
bC5kb3VibGUuc2V0CGNvbnN0YW50BBFjcmFmdF9jb3VudDppbmdvdBFhcml0aG1ldGljLmRvdWJsZRBs
b2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAZpbmdvdHMIY29uc3RhbnQEAS0TZmFjdG9yeS5pdGVtcy5j
b3VudAhjb25zdGFudAQFaW5nb3QNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllchNnZW5lcmljLmV4
ZWN1dGVzeW5jCGNvbnN0YW50BAtjcmFmdCBpbmdvdA5nZW5lcmljLmdvdG9pZghjb25zdGFudAJjAAAA
DmNvbXBhcmlzb24uaW50Dmdsb2JhbC5pbnQuZ2V0CGNvbnN0YW50BAxjcmFmdF9zdGF0dXMIY29uc3Rh
bnQEAT4IY29uc3RhbnQCxwAAAA5nbG9iYWwuaW50LnNldAhjb25zdGFudAQOY3JhZnRfdGllcjoyLjgO
YXJpdGhtZXRpYy5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQBLQhjb25z
dGFudAIBAAAAEWdsb2JhbC5kb3VibGUuc2V0CGNvbnN0YW50BA9jcmFmdF9jb3VudDoyLjgRYXJpdGht
ZXRpYy5kb3VibGUQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQFY291bnQIY29uc3RhbnQEAS0RYXJp
dGhtZXRpYy5kb3VibGURZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3RhbnQED2NyYWZ0X2ludmVudG9yeQhj
b25zdGFudAQBKhNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BBVtYWNoaW5lLnRyYW5zcG9ydGJl
bHQOYXJpdGhtZXRpYy5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQBLQhj
b25zdGFudAIBAAAAE2dlbmVyaWMuZXhlY3V0ZXN5bmMIY29uc3RhbnQECWNyYWZ0IDI6OA5nZW5lcmlj
LmdvdG9pZghjb25zdGFudAJjAAAADmNvbXBhcmlzb24uaW50Dmdsb2JhbC5pbnQuZ2V0CGNvbnN0YW50
BAxjcmFmdF9zdGF0dXMIY29uc3RhbnQEAT4IY29uc3RhbnQCxwAAAA5nbG9iYWwuaW50LnNldAhjb25z
dGFudAQOY3JhZnRfdGllcjoyLjgNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllchFnbG9iYWwuZG91
YmxlLnNldAhjb25zdGFudAQPY3JhZnRfY291bnQ6Mi44EGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQE
BWNvdW50EGxvY2FsLmRvdWJsZS5zZXQIY29uc3RhbnQEBWNoaXBzEWFyaXRobWV0aWMuZG91YmxlEGxv
Y2FsLmRvdWJsZS5nZXQIY29uc3RhbnQEBWNvdW50CGNvbnN0YW50BAEqDGRvdWJsZS5mbG9vchFhcml0
aG1ldGljLmRvdWJsZRFhcml0aG1ldGljLmRvdWJsZQhjb25zdGFudAMAAIL2mt4pQghjb25zdGFudAQB
LxFhcml0aG1ldGljLmRvdWJsZQhjb25zdGFudAMAAAAAAAAkQAhjb25zdGFudAQDcG93A2kyZA1sb2Nh
bC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BANtb2QIY29uc3RhbnQDAAAAAAAAJEANbG9j
YWwuaW50LnNldAhjb25zdGFudAQIY2hpcHRpZXIDZDJpDGRvdWJsZS5mbG9vchFhcml0aG1ldGljLmRv
dWJsZRFhcml0aG1ldGljLmRvdWJsZQhjb25zdGFudAMAAKKuz6QkQghjb25zdGFudAQBLxFhcml0aG1l
dGljLmRvdWJsZQhjb25zdGFudAMAAAAAAAAkQAhjb25zdGFudAQDcG93A2kyZA1sb2NhbC5pbnQuZ2V0
CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BANtb2QIY29uc3RhbnQDAAAAAAAAJEAOZ2xvYmFsLmludC5z
ZXQIY29uc3RhbnQEDmNyYWZ0X3RpZXI6My4xDWxvY2FsLmludC5nZXQIY29uc3RhbnQECGNoaXB0aWVy
EWdsb2JhbC5kb3VibGUuc2V0CGNvbnN0YW50BA9jcmFmdF9jb3VudDozLjERYXJpdGhtZXRpYy5kb3Vi
bGUQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQFY2hpcHMIY29uc3RhbnQEAS0RYXJpdGhtZXRpYy5k
b3VibGURZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3RhbnQED2NyYWZ0X2ludmVudG9yeQhjb25zdGFudAQB
KhNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BARjaGlwDWxvY2FsLmludC5nZXQIY29uc3RhbnQE
CGNoaXB0aWVyE2dlbmVyaWMuZXhlY3V0ZXN5bmMIY29uc3RhbnQECWNyYWZ0IDM6MQ==
:global double craft_inventory
:local int tier
:local double count
:local double ingots

tier = global.int.get("craft_tier:2.8")
count = global.double.get("craft_count:2.8")

; Ingots
ingots = 0.0 ; TODO
global.int.set("craft_tier:ingot", tier)
global.double.set("craft_count:ingot", ingots - count("ingot", tier))
;global.int.set("craft_verify:ingot", 1)
executesync("craft ingot")
gotoif(99, global.int.get("craft_status") > 199)

; Lower tier inputs
global.int.set("craft_tier:2.8", tier - 1)
global.double.set("craft_count:2.8", count - craft_inventory * count("machine.transportbelt", tier - 1))
executesync("craft 2:8")
gotoif(99, global.int.get("craft_status") > 199)

; Restore state for this tier
global.int.set("craft_tier:2.8", tier)
global.double.set("craft_count:2.8", count)

; chips
:local double chips
chips = count * floor((55554440001.0 / (10.0 ^ i2d(tier))) % 10.0)
:local int chiptier
chiptier = d2i(floor((44332210001.0 / (10.0 ^ i2d(tier))) % 10.0))
global.int.set("craft_tier:3.1", chiptier)
global.double.set("craft_count:3.1", chips - craft_inventory * count("chip", chiptier))
executesync("craft 3:1")

Shaper (9)

(pic)

Name Lines Code
craft 2:9 15
CWNyYWZ0IDI6OQAAAAAAAAAADwAAAA1sb2NhbC5pbnQuc2V0CGNvbnN0YW50BAR0aWVyDmdsb2JhbC5p
bnQuZ2V0CGNvbnN0YW50BA5jcmFmdF90aWVyOjIuORBsb2NhbC5kb3VibGUuc2V0CGNvbnN0YW50BAVj
b3VudBFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfY291bnQ6Mi45DmdlbmVyaWMuZ290
b2lmCGNvbnN0YW50AmMAAAAPY29tcGFyaXNvbi5ib29sD2NvbXBhcmlzb24uYm9vbA9jb21wYXJpc29u
LmJvb2wOY29tcGFyaXNvbi5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQB
PAhjb25zdGFudAIBAAAACGNvbnN0YW50BAF8DmNvbXBhcmlzb24uaW50DWxvY2FsLmludC5nZXQIY29u
c3RhbnQEBHRpZXIIY29uc3RhbnQEAT4IY29uc3RhbnQCCgAAAAhjb25zdGFudAQBfBFjb21wYXJpc29u
LmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQBPAhjb25zdGFu
dAMAAAAAAADwPwhjb25zdGFudAQBfA5jb21wYXJpc29uLmludA5nbG9iYWwuaW50LmdldAhjb25zdGFu
dAQMY3JhZnRfc3RhdHVzCGNvbnN0YW50BAE+CGNvbnN0YW50AscAAAATZ2VuZXJpYy5leGVjdXRlc3lu
Ywhjb25zdGFudAQMY3JhZnQgMjo5OmluDmdsb2JhbC5pbnQuc2V0CGNvbnN0YW50BA5jcmFmdF90aWVy
OjMuNg1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyEWdsb2JhbC5kb3VibGUuc2V0CGNvbnN0YW50
BA9jcmFmdF9jb3VudDozLjYRYXJpdGhtZXRpYy5kb3VibGURYXJpdGhtZXRpYy5kb3VibGUQbG9jYWwu
ZG91YmxlLmdldAhjb25zdGFudAQFY291bnQIY29uc3RhbnQEASoMZG91YmxlLmZsb29yEWFyaXRobWV0
aWMuZG91YmxlEWFyaXRobWV0aWMuZG91YmxlCGNvbnN0YW50AwAADpNEqSNCCGNvbnN0YW50BAEvEWFy
aXRobWV0aWMuZG91YmxlCGNvbnN0YW50AwAAAAAAACRACGNvbnN0YW50BANwb3cDaTJkDWxvY2FsLmlu
dC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEA21vZAhjb25zdGFudAMAAAAAAAAkQAhjb25zdGFu
dAQBLRFhcml0aG1ldGljLmRvdWJsZRFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfaW52
ZW50b3J5CGNvbnN0YW50BAEqE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQED2NhYmxlLmluc3Vs
YXRlZA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyE2dlbmVyaWMuZXhlY3V0ZXN5bmMIY29uc3Rh
bnQECWNyYWZ0IDM6Ng5nbG9iYWwuaW50LnNldAhjb25zdGFudAQOY3JhZnRfdGllcjozLjgNbG9jYWwu
aW50LmdldAhjb25zdGFudAQEdGllchFnbG9iYWwuZG91YmxlLnNldAhjb25zdGFudAQPY3JhZnRfY291
bnQ6My44EWFyaXRobWV0aWMuZG91YmxlEWFyaXRobWV0aWMuZG91YmxlEGxvY2FsLmRvdWJsZS5nZXQI
Y29uc3RhbnQEBWNvdW50CGNvbnN0YW50BAEqCGNvbnN0YW50AwAAAAAAAABACGNvbnN0YW50BAEtEWFy
aXRobWV0aWMuZG91YmxlEWdsb2JhbC5kb3VibGUuZ2V0CGNvbnN0YW50BA9jcmFmdF9pbnZlbnRvcnkI
Y29uc3RhbnQEASoTZmFjdG9yeS5pdGVtcy5jb3VudAhjb25zdGFudAQFbW90b3INbG9jYWwuaW50Lmdl
dAhjb25zdGFudAQEdGllchNnZW5lcmljLmV4ZWN1dGVzeW5jCGNvbnN0YW50BAljcmFmdCAzOjgOZ2xv
YmFsLmludC5zZXQIY29uc3RhbnQEEGNyYWZ0X3RpZXI6c2NyZXcNbG9jYWwuaW50LmdldAhjb25zdGFu
dAQEdGllchFnbG9iYWwuZG91YmxlLnNldAhjb25zdGFudAQRY3JhZnRfY291bnQ6c2NyZXcRYXJpdGht
ZXRpYy5kb3VibGURYXJpdGhtZXRpYy5kb3VibGUQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQFY291
bnQIY29uc3RhbnQEASoMZG91YmxlLmZsb29yEWFyaXRobWV0aWMuZG91YmxlEWFyaXRobWV0aWMuZG91
YmxlCGNvbnN0YW50AwAADG1CCx9CCGNvbnN0YW50BAEvEWFyaXRobWV0aWMuZG91YmxlCGNvbnN0YW50
AwAAAAAAACRACGNvbnN0YW50BANwb3cDaTJkDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29u
c3RhbnQEA21vZAhjb25zdGFudAMAAAAAAAAkQAhjb25zdGFudAQBLRFhcml0aG1ldGljLmRvdWJsZRFn
bG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0YW50BAEqE2ZhY3Rv
cnkuaXRlbXMuY291bnQIY29uc3RhbnQEBXNjcmV3DWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIT
Z2VuZXJpYy5leGVjdXRlc3luYwhjb25zdGFudAQQY3JhZnQgcGFydDpzY3JldxNnZW5lcmljLmV4ZWN1
dGVzeW5jCGNvbnN0YW50BBBjcmFmdCAyOjk6cGxhdGVzDWZhY3RvcnkuY3JhZnQIY29uc3RhbnQEDm1h
Y2hpbmUuc2hhcGVyDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIQbG9jYWwuZG91YmxlLmdldAhj
b25zdGFudAQFY291bnQ=
; Shaper
:global double craft_inventory
:local int tier
:local double count

tier = global.int.get("craft_tier:2.9")
count = global.double.get("craft_count:2.9")
gotoif(99, tier < 1 | tier > 10 | count < 1.0 | global.int.get("craft_status") > 199)

executesync("craft 2:9:in")

;insulatedcable = count * floor((42222111111.0 / (10.0 ^ i2d(tier))) % 10.0)
global.int.set("craft_tier:3.6", tier)
global.double.set("craft_count:3.6", count * floor((42222111111.0 / (10.0 ^ i2d(tier))) % 10.0) - craft_inventory * count("cable.insulated", tier))
executesync("craft 3:6")

;motors = count * 2.0
global.int.set("craft_tier:3.8", tier)
global.double.set("craft_count:3.8", count * 2.0 - craft_inventory * count("motor", tier))
executesync("craft 3:8")

;screw = count * floor((33333222211.0 / (10.0 ^ i2d(tier))) % 10.0)
global.int.set("craft_tier:screw", tier)
global.double.set("craft_count:screw", count * floor((33333222211.0 / (10.0 ^ i2d(tier))) % 10.0) - craft_inventory * count("screw", tier))
executesync("craft part:screw")

executesync("craft 2:9:plates")

craft("machine.shaper", tier, count)


craft 2:9:in 13
DGNyYWZ0IDI6OTppbgAAAAAAAAAADQAAAA1sb2NhbC5pbnQuc2V0CGNvbnN0YW50BAR0aWVyDmdsb2Jh
bC5pbnQuZ2V0CGNvbnN0YW50BA5jcmFmdF90aWVyOjIuORBsb2NhbC5kb3VibGUuc2V0CGNvbnN0YW50
BAVjb3VudBFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfY291bnQ6Mi45EGxvY2FsLmRv
dWJsZS5zZXQIY29uc3RhbnQEBmluZ290cwhjb25zdGFudAMAAAAAAAAAAA5nbG9iYWwuaW50LnNldAhj
b25zdGFudAQQY3JhZnRfdGllcjppbmdvdA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyEWdsb2Jh
bC5kb3VibGUuc2V0CGNvbnN0YW50BBFjcmFmdF9jb3VudDppbmdvdBFhcml0aG1ldGljLmRvdWJsZRBs
b2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAZpbmdvdHMIY29uc3RhbnQEAS0TZmFjdG9yeS5pdGVtcy5j
b3VudAhjb25zdGFudAQFaW5nb3QNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllchNnZW5lcmljLmV4
ZWN1dGVzeW5jCGNvbnN0YW50BAtjcmFmdCBpbmdvdA5nZW5lcmljLmdvdG9pZghjb25zdGFudAJjAAAA
DmNvbXBhcmlzb24uaW50Dmdsb2JhbC5pbnQuZ2V0CGNvbnN0YW50BAxjcmFmdF9zdGF0dXMIY29uc3Rh
bnQEAT4IY29uc3RhbnQCxwAAAA5nbG9iYWwuaW50LnNldAhjb25zdGFudAQOY3JhZnRfdGllcjoyLjkO
YXJpdGhtZXRpYy5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFudAQBLQhjb25z
dGFudAIBAAAAEWdsb2JhbC5kb3VibGUuc2V0CGNvbnN0YW50BA9jcmFmdF9jb3VudDoyLjkRYXJpdGht
ZXRpYy5kb3VibGUQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQFY291bnQIY29uc3RhbnQEAS0RYXJp
dGhtZXRpYy5kb3VibGURZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3RhbnQED2NyYWZ0X2ludmVudG9yeQhj
b25zdGFudAQBKhNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BA5tYWNoaW5lLnNoYXBlcg5hcml0
aG1ldGljLmludA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BAEtCGNvbnN0YW50
AgEAAAATZ2VuZXJpYy5leGVjdXRlc3luYwhjb25zdGFudAQJY3JhZnQgMjo5DmdlbmVyaWMuZ290b2lm
CGNvbnN0YW50AmMAAAAOY29tcGFyaXNvbi5pbnQOZ2xvYmFsLmludC5nZXQIY29uc3RhbnQEDGNyYWZ0
X3N0YXR1cwhjb25zdGFudAQBPghjb25zdGFudALHAAAADmdsb2JhbC5pbnQuc2V0CGNvbnN0YW50BA5j
cmFmdF90aWVyOjIuOQ1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyEWdsb2JhbC5kb3VibGUuc2V0
CGNvbnN0YW50BA9jcmFmdF9jb3VudDoyLjkQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQFY291bnQ=
:global double craft_inventory
:local int tier
:local double count
:local double ingots

tier = global.int.get("craft_tier:2.9")
count = global.double.get("craft_count:2.9")

; Ingots
ingots = 0.0 ; TODO
global.int.set("craft_tier:ingot", tier)
global.double.set("craft_count:ingot", ingots - count("ingot", tier))
;global.int.set("craft_verify:ingot", 1)
executesync("craft ingot")
gotoif(99, global.int.get("craft_status") > 199)

; Lower tier inputs
global.int.set("craft_tier:2.9", tier - 1)
global.double.set("craft_count:2.9", count - craft_inventory * count("machine.shaper", tier - 1))
executesync("craft 2:9")
gotoif(99, global.int.get("craft_status") > 199)

; Restore state for this tier
global.int.set("craft_tier:2.9", tier)
global.double.set("craft_count:2.9", count)


craft 2:9:plates 18
EGNyYWZ0IDI6OTpwbGF0ZXMAAAAAAAAAABIAAAANbG9jYWwuaW50LnNldAhjb25zdGFudAQEdGllcg5n
bG9iYWwuaW50LmdldAhjb25zdGFudAQOY3JhZnRfdGllcjoyLjkQbG9jYWwuZG91YmxlLnNldAhjb25z
dGFudAQFY291bnQRZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3RhbnQED2NyYWZ0X2NvdW50OjIuORBsb2Nh
bC5kb3VibGUuc2V0CGNvbnN0YW50BAZibG9ja3MRYXJpdGhtZXRpYy5kb3VibGUQbG9jYWwuZG91Ymxl
LmdldAhjb25zdGFudAQFY291bnQIY29uc3RhbnQEASoMZG91YmxlLmZsb29yEWFyaXRobWV0aWMuZG91
YmxlEWFyaXRobWV0aWMuZG91YmxlCGNvbnN0YW50AwAAhsbQ1ShCCGNvbnN0YW50BAEvEWFyaXRobWV0
aWMuZG91YmxlCGNvbnN0YW50AwAAAAAAACRACGNvbnN0YW50BANwb3cDaTJkDWxvY2FsLmludC5nZXQI
Y29uc3RhbnQEBHRpZXIIY29uc3RhbnQEA21vZAhjb25zdGFudAMAAAAAAAAkQA5nbG9iYWwuaW50LnNl
dAhjb25zdGFudAQOY3JhZnRfdGllcjozLjQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllchFnbG9i
YWwuZG91YmxlLnNldAhjb25zdGFudAQPY3JhZnRfY291bnQ6My40EWFyaXRobWV0aWMuZG91YmxlEGxv
Y2FsLmRvdWJsZS5nZXQIY29uc3RhbnQEBmJsb2Nrcwhjb25zdGFudAQBLRFhcml0aG1ldGljLmRvdWJs
ZRFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0YW50BAEqEWFy
aXRobWV0aWMuZG91YmxlE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEBWJsb2NrDWxvY2FsLmlu
dC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEASsRYXJpdGhtZXRpYy5kb3VibGUKZG91YmxlLm1h
eAhjb25zdGFudAMAAAAAAAAAABFhcml0aG1ldGljLmRvdWJsZQNpMmQNbG9jYWwuaW50LmdldAhjb25z
dGFudAQEdGllcghjb25zdGFudAQBLQhjb25zdGFudAMAAAAAAAAiQAhjb25zdGFudAQBKhNmYWN0b3J5
Lml0ZW1zLmNvdW50CGNvbnN0YW50BAtibG9jay5kZW5zZQ1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0
aWVyE2dlbmVyaWMuZXhlY3V0ZXN5bmMIY29uc3RhbnQECWNyYWZ0IDM6NA5nZW5lcmljLmdvdG9pZghj
b25zdGFudAIMAAAADmNvbXBhcmlzb24uaW50DWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29u
c3RhbnQEAj09CGNvbnN0YW50AgoAAAAOZ2xvYmFsLmludC5zZXQIY29uc3RhbnQEDmNyYWZ0X3RpZXI6
My4yDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIRZ2xvYmFsLmRvdWJsZS5zZXQIY29uc3RhbnQE
D2NyYWZ0X2NvdW50OjMuMhFhcml0aG1ldGljLmRvdWJsZRFhcml0aG1ldGljLmRvdWJsZRBsb2NhbC5k
b3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQBKghjb25zdGFudAMAAAAAAAAQQAhjb25z
dGFudAQBLRFhcml0aG1ldGljLmRvdWJsZRFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRf
aW52ZW50b3J5CGNvbnN0YW50BAEqE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEBXBsYXRlDWxv
Y2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXITZ2VuZXJpYy5leGVjdXRlc3luYwhjb25zdGFudAQJY3Jh
ZnQgMzoyDGdlbmVyaWMuZ290bwhjb25zdGFudAJjAAAAEWdlbmVyaWMud2FpdHdoaWxlFmZhY3Rvcnku
bWFjaGluZS5hY3RpdmUIY29uc3RhbnQEBmJvaWxlcg9mYWN0b3J5LnByb2R1Y2UIY29uc3RhbnQEBWJs
b2NrDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQG
YmxvY2tzCGNvbnN0YW50BAZib2lsZXIOZ2xvYmFsLmludC5zZXQIY29uc3RhbnQEDmNyYWZ0X3RpZXI6
My4zDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIRZ2xvYmFsLmRvdWJsZS5zZXQIY29uc3RhbnQE
D2NyYWZ0X2NvdW50OjMuMxFhcml0aG1ldGljLmRvdWJsZRFhcml0aG1ldGljLmRvdWJsZRBsb2NhbC5k
b3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQBKghjb25zdGFudAMAAAAAAAAQQAhjb25z
dGFudAQBLRFhcml0aG1ldGljLmRvdWJsZRFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRf
aW52ZW50b3J5CGNvbnN0YW50BAEqE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEC3BsYXRlLmRl
bnNlDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXITZ2VuZXJpYy5leGVjdXRlc3luYwhjb25zdGFu
dAQJY3JhZnQgMzozEWdlbmVyaWMud2FpdHdoaWxlEWNvbXBhcmlzb24uZG91YmxlE2ZhY3RvcnkuaXRl
bXMuY291bnQIY29uc3RhbnQEC2Jsb2NrLmRlbnNlDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXII
Y29uc3RhbnQEATwQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQGYmxvY2tzDGdlbmVyaWMud2FpdAhj
b25zdGFudAMAAAAAAAAAAA==
:global double craft_inventory
:local int tier
:local double count

tier = global.int.get("craft_tier:2.9")
count = global.double.get("craft_count:2.9")

:local double blocks
blocks = count * floor((53333222211.0 / (10.0 ^ i2d(tier))) % 10.0)
global.int.set("craft_tier:3.4", tier)
global.double.set("craft_count:3.4", blocks - craft_inventory * (count("block", tier) + max(0.0, i2d(tier) - 9.0) * count("block.dense", tier)))
executesync("craft 3:4")

gotoif(t10, tier == 10)

; plates = count * 4.0
global.int.set("craft_tier:3.2", tier)
global.double.set("craft_count:3.2", count * 4.0 - craft_inventory * count("plate", tier))
executesync("craft 3:2")

goto(99)

t10: waitwhile(active("boiler"))
produce("block", tier, blocks, "boiler")

global.int.set("craft_tier:3.3", tier)
global.double.set("craft_count:3.3", count * 4.0 - craft_inventory * count("plate.dense", tier))
executesync("craft 3:3")

waitwhile(count("block.dense", tier) < blocks)
wait(0.0)

Boiler (10)

(pic)

Name Lines Code
craft 2:10 18
CmNyYWZ0IDI6MTAAAAAAAAAAABIAAAANbG9jYWwuaW50LnNldAhjb25zdGFudAQEdGllcg5nbG9iYWwu
aW50LmdldAhjb25zdGFudAQPY3JhZnRfdGllcjoyLjEwEGxvY2FsLmRvdWJsZS5zZXQIY29uc3RhbnQE
BWNvdW50EWdsb2JhbC5kb3VibGUuZ2V0CGNvbnN0YW50BBBjcmFmdF9jb3VudDoyLjEwDmdlbmVyaWMu
Z290b2lmCGNvbnN0YW50AmMAAAAPY29tcGFyaXNvbi5ib29sD2NvbXBhcmlzb24uYm9vbA9jb21wYXJp
c29uLmJvb2wOY29tcGFyaXNvbi5pbnQNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllcghjb25zdGFu
dAQBPAhjb25zdGFudAIBAAAACGNvbnN0YW50BAF8DmNvbXBhcmlzb24uaW50DWxvY2FsLmludC5nZXQI
Y29uc3RhbnQEBHRpZXIIY29uc3RhbnQEAT4IY29uc3RhbnQCCgAAAAhjb25zdGFudAQBfBFjb21wYXJp
c29uLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQBPAhjb25z
dGFudAMAAAAAAADwPwhjb25zdGFudAQBfA5jb21wYXJpc29uLmludA5nbG9iYWwuaW50LmdldAhjb25z
dGFudAQMY3JhZnRfc3RhdHVzCGNvbnN0YW50BAE+CGNvbnN0YW50AscAAAATZ2VuZXJpYy5leGVjdXRl
c3luYwhjb25zdGFudAQNY3JhZnQgMjoxMDppbg5nbG9iYWwuaW50LnNldAhjb25zdGFudAQOY3JhZnRf
dGllcjozLjkNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllchFnbG9iYWwuZG91YmxlLnNldAhjb25z
dGFudAQPY3JhZnRfY291bnQ6My45EWFyaXRobWV0aWMuZG91YmxlEGxvY2FsLmRvdWJsZS5nZXQIY29u
c3RhbnQEBWNvdW50CGNvbnN0YW50BAEtEWFyaXRobWV0aWMuZG91YmxlEWdsb2JhbC5kb3VibGUuZ2V0
CGNvbnN0YW50BA9jcmFmdF9pbnZlbnRvcnkIY29uc3RhbnQEASoTZmFjdG9yeS5pdGVtcy5jb3VudAhj
b25zdGFudAQEcHVtcA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyE2dlbmVyaWMuZXhlY3V0ZXN5
bmMIY29uc3RhbnQECWNyYWZ0IDM6OQ5nbG9iYWwuaW50LnNldAhjb25zdGFudAQOY3JhZnRfdGllcjoz
LjgNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllchFnbG9iYWwuZG91YmxlLnNldAhjb25zdGFudAQP
Y3JhZnRfY291bnQ6My44EWFyaXRobWV0aWMuZG91YmxlEWFyaXRobWV0aWMuZG91YmxlEGxvY2FsLmRv
dWJsZS5nZXQIY29uc3RhbnQEBWNvdW50CGNvbnN0YW50BAEqDGRvdWJsZS5mbG9vchFhcml0aG1ldGlj
LmRvdWJsZRFhcml0aG1ldGljLmRvdWJsZQhjb25zdGFudAMAAG6CfSAkQghjb25zdGFudAQBLxFhcml0
aG1ldGljLmRvdWJsZQhjb25zdGFudAMAAAAAAAAkQAhjb25zdGFudAQDcG93A2kyZA1sb2NhbC5pbnQu
Z2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BANtb2QIY29uc3RhbnQDAAAAAAAAJEAIY29uc3RhbnQE
AS0RYXJpdGhtZXRpYy5kb3VibGURZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3RhbnQED2NyYWZ0X2ludmVu
dG9yeQhjb25zdGFudAQBKhNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BAVtb3Rvcg1sb2NhbC5p
bnQuZ2V0CGNvbnN0YW50BAR0aWVyE2dlbmVyaWMuZXhlY3V0ZXN5bmMIY29uc3RhbnQECWNyYWZ0IDM6
OA5nbG9iYWwuaW50LnNldAhjb25zdGFudAQQY3JhZnRfdGllcjpzY3Jldw1sb2NhbC5pbnQuZ2V0CGNv
bnN0YW50BAR0aWVyEWdsb2JhbC5kb3VibGUuc2V0CGNvbnN0YW50BBFjcmFmdF9jb3VudDpzY3JldxFh
cml0aG1ldGljLmRvdWJsZRFhcml0aG1ldGljLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50
BAVjb3VudAhjb25zdGFudAQBKghjb25zdGFudAMAAAAAAAAAQAhjb25zdGFudAQBLRFhcml0aG1ldGlj
LmRvdWJsZRFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0YW50
BAEqE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEBXNjcmV3DWxvY2FsLmludC5nZXQIY29uc3Rh
bnQEBHRpZXITZ2VuZXJpYy5leGVjdXRlc3luYwhjb25zdGFudAQQY3JhZnQgcGFydDpzY3Jldw5nbG9i
YWwuaW50LnNldAhjb25zdGFudAQPY3JhZnRfdGllcjp3aXJlDWxvY2FsLmludC5nZXQIY29uc3RhbnQE
BHRpZXIRZ2xvYmFsLmRvdWJsZS5zZXQIY29uc3RhbnQEEGNyYWZ0X2NvdW50OndpcmURYXJpdGhtZXRp
Yy5kb3VibGURYXJpdGhtZXRpYy5kb3VibGUQbG9jYWwuZG91YmxlLmdldAhjb25zdGFudAQFY291bnQI
Y29uc3RhbnQEASoMZG91YmxlLmZsb29yEWFyaXRobWV0aWMuZG91YmxlEWFyaXRobWV0aWMuZG91Ymxl
CGNvbnN0YW50AwAA+rUJTSlCCGNvbnN0YW50BAEvEWFyaXRobWV0aWMuZG91YmxlCGNvbnN0YW50AwAA
AAAAACRACGNvbnN0YW50BANwb3cDaTJkDWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3Rh
bnQEA21vZAhjb25zdGFudAMAAAAAAAAkQAhjb25zdGFudAQBLRFhcml0aG1ldGljLmRvdWJsZRFnbG9i
YWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfaW52ZW50b3J5CGNvbnN0YW50BAEqE2ZhY3Rvcnku
aXRlbXMuY291bnQIY29uc3RhbnQEBHdpcmUNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllchNnZW5l
cmljLmV4ZWN1dGVzeW5jCGNvbnN0YW50BA9jcmFmdCBwYXJ0OndpcmUTZ2VuZXJpYy5leGVjdXRlc3lu
Ywhjb25zdGFudAQRY3JhZnQgMjoxMDpwbGF0ZXMNZmFjdG9yeS5jcmFmdAhjb25zdGFudAQObWFjaGlu
ZS5ib2lsZXINbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllchBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0
YW50BAVjb3VudA==
; Boiler
:global double craft_inventory
:local int tier
:local double count

tier = global.int.get("craft_tier:2.10")
count = global.double.get("craft_count:2.10")
gotoif(99, tier < 1 | tier > 10 | count < 1.0 | global.int.get("craft_status") > 199)

executesync("craft 2:10:in")

;pumps = count * 1.0
global.int.set("craft_tier:3.9", tier)
global.double.set("craft_count:3.9", count - craft_inventory * count("pump", tier))
executesync("craft 3:9")

;motors = count * floor((43222221111.0 / (10.0 ^ i2d(tier))) % 10.0)
global.int.set("craft_tier:3.8", tier)
global.double.set("craft_count:3.8", count * floor((43222221111.0 / (10.0 ^ i2d(tier))) % 10.0) - craft_inventory * count("motor", tier))
executesync("craft 3:8")

;screw = count * 2.0
global.int.set("craft_tier:screw", tier)
global.double.set("craft_count:screw", count * 2.0 - craft_inventory * count("screw", tier))
executesync("craft part:screw")

;wires = count * floor((54333332221.0 / (10.0 ^ i2d(tier))) % 10.0)
global.int.set("craft_tier:wire", tier)
global.double.set("craft_count:wire", count * floor((54333332221.0 / (10.0 ^ i2d(tier))) % 10.0) - craft_inventory * count("wire", tier))
executesync("craft part:wire")

executesync("craft 2:10:plates")

craft("machine.boiler", tier, count)


craft 2:10:in 13
DWNyYWZ0IDI6MTA6aW4AAAAAAAAAAA0AAAANbG9jYWwuaW50LnNldAhjb25zdGFudAQEdGllcg5nbG9i
YWwuaW50LmdldAhjb25zdGFudAQPY3JhZnRfdGllcjoyLjEwEGxvY2FsLmRvdWJsZS5zZXQIY29uc3Rh
bnQEBWNvdW50EWdsb2JhbC5kb3VibGUuZ2V0CGNvbnN0YW50BBBjcmFmdF9jb3VudDoyLjEwEGxvY2Fs
LmRvdWJsZS5zZXQIY29uc3RhbnQEBmluZ290cwhjb25zdGFudAMAAAAAAAAAAA5nbG9iYWwuaW50LnNl
dAhjb25zdGFudAQQY3JhZnRfdGllcjppbmdvdA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyEWds
b2JhbC5kb3VibGUuc2V0CGNvbnN0YW50BBFjcmFmdF9jb3VudDppbmdvdBFhcml0aG1ldGljLmRvdWJs
ZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAZpbmdvdHMIY29uc3RhbnQEAS0TZmFjdG9yeS5pdGVt
cy5jb3VudAhjb25zdGFudAQFaW5nb3QNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllchNnZW5lcmlj
LmV4ZWN1dGVzeW5jCGNvbnN0YW50BAtjcmFmdCBpbmdvdA5nZW5lcmljLmdvdG9pZghjb25zdGFudAJj
AAAADmNvbXBhcmlzb24uaW50Dmdsb2JhbC5pbnQuZ2V0CGNvbnN0YW50BAxjcmFmdF9zdGF0dXMIY29u
c3RhbnQEAT4IY29uc3RhbnQCxwAAAA5nbG9iYWwuaW50LnNldAhjb25zdGFudAQPY3JhZnRfdGllcjoy
LjEwDmFyaXRobWV0aWMuaW50DWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEAS0I
Y29uc3RhbnQCAQAAABFnbG9iYWwuZG91YmxlLnNldAhjb25zdGFudAQQY3JhZnRfY291bnQ6Mi4xMBFh
cml0aG1ldGljLmRvdWJsZRBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50BAVjb3VudAhjb25zdGFudAQB
LRFhcml0aG1ldGljLmRvdWJsZRFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQPY3JhZnRfaW52ZW50
b3J5CGNvbnN0YW50BAEqE2ZhY3RvcnkuaXRlbXMuY291bnQIY29uc3RhbnQEDm1hY2hpbmUuYm9pbGVy
DmFyaXRobWV0aWMuaW50DWxvY2FsLmludC5nZXQIY29uc3RhbnQEBHRpZXIIY29uc3RhbnQEAS0IY29u
c3RhbnQCAQAAABNnZW5lcmljLmV4ZWN1dGVzeW5jCGNvbnN0YW50BApjcmFmdCAyOjEwDmdlbmVyaWMu
Z290b2lmCGNvbnN0YW50AmMAAAAOY29tcGFyaXNvbi5pbnQOZ2xvYmFsLmludC5nZXQIY29uc3RhbnQE
DGNyYWZ0X3N0YXR1cwhjb25zdGFudAQBPghjb25zdGFudALHAAAADmdsb2JhbC5pbnQuc2V0CGNvbnN0
YW50BA9jcmFmdF90aWVyOjIuMTANbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllchFnbG9iYWwuZG91
YmxlLnNldAhjb25zdGFudAQQY3JhZnRfY291bnQ6Mi4xMBBsb2NhbC5kb3VibGUuZ2V0CGNvbnN0YW50
BAVjb3VudA==
:global double craft_inventory
:local int tier
:local double count
:local double ingots

tier = global.int.get("craft_tier:2.10")
count = global.double.get("craft_count:2.10")

; Ingots
ingots = 0.0 ; TODO
global.int.set("craft_tier:ingot", tier)
global.double.set("craft_count:ingot", ingots - count("ingot", tier))
;global.int.set("craft_verify:ingot", 1)
executesync("craft ingot")
gotoif(99, global.int.get("craft_status") > 199)

; Lower tier inputs
global.int.set("craft_tier:2.10", tier - 1)
global.double.set("craft_count:2.10", count - craft_inventory * count("machine.boiler", tier - 1))
executesync("craft 2:10")
gotoif(99, global.int.get("craft_status") > 199)

; Restore state for this tier
global.int.set("craft_tier:2.10", tier)
global.double.set("craft_count:2.10", count)


craft 2:10:plates 8
EWNyYWZ0IDI6MTA6cGxhdGVzAAAAAAAAAAAIAAAADWxvY2FsLmludC5zZXQIY29uc3RhbnQEBHRpZXIO
Z2xvYmFsLmludC5nZXQIY29uc3RhbnQED2NyYWZ0X3RpZXI6Mi4xMBBsb2NhbC5kb3VibGUuc2V0CGNv
bnN0YW50BAVjb3VudBFnbG9iYWwuZG91YmxlLmdldAhjb25zdGFudAQQY3JhZnRfY291bnQ6Mi4xMA5n
bG9iYWwuaW50LnNldAhjb25zdGFudAQOY3JhZnRfdGllcjozLjQNbG9jYWwuaW50LmdldAhjb25zdGFu
dAQEdGllchFnbG9iYWwuZG91YmxlLnNldAhjb25zdGFudAQPY3JhZnRfY291bnQ6My40EWFyaXRobWV0
aWMuZG91YmxlEWFyaXRobWV0aWMuZG91YmxlEGxvY2FsLmRvdWJsZS5nZXQIY29uc3RhbnQEBWNvdW50
CGNvbnN0YW50BAEqDGRvdWJsZS5mbG9vchFhcml0aG1ldGljLmRvdWJsZQhjb25zdGFudAMAAAAAAADw
Pwhjb25zdGFudAQBKxFhcml0aG1ldGljLmRvdWJsZRFhcml0aG1ldGljLmRvdWJsZQhjb25zdGFudAMA
APdBnf82Qghjb25zdGFudAQBLxFhcml0aG1ldGljLmRvdWJsZQhjb25zdGFudAMAAAAAAAAkQAhjb25z
dGFudAQDcG93A2kyZA1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BANtb2QIY29u
c3RhbnQDAAAAAAAAJEAIY29uc3RhbnQEAS0RYXJpdGhtZXRpYy5kb3VibGURZ2xvYmFsLmRvdWJsZS5n
ZXQIY29uc3RhbnQED2NyYWZ0X2ludmVudG9yeQhjb25zdGFudAQBKhNmYWN0b3J5Lml0ZW1zLmNvdW50
CGNvbnN0YW50BAVibG9jaw1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyE2dlbmVyaWMuZXhlY3V0
ZXN5bmMIY29uc3RhbnQECWNyYWZ0IDM6NA5nbG9iYWwuaW50LnNldAhjb25zdGFudAQOY3JhZnRfdGll
cjozLjMNbG9jYWwuaW50LmdldAhjb25zdGFudAQEdGllchFnbG9iYWwuZG91YmxlLnNldAhjb25zdGFu
dAQPY3JhZnRfY291bnQ6My4zEWFyaXRobWV0aWMuZG91YmxlEWFyaXRobWV0aWMuZG91YmxlEGxvY2Fs
LmRvdWJsZS5nZXQIY29uc3RhbnQEBWNvdW50CGNvbnN0YW50BAEqDGRvdWJsZS5mbG9vchFhcml0aG1l
dGljLmRvdWJsZRFhcml0aG1ldGljLmRvdWJsZQhjb25zdGFudAMAAPq1CU0pQghjb25zdGFudAQBLxFh
cml0aG1ldGljLmRvdWJsZQhjb25zdGFudAMAAAAAAAAkQAhjb25zdGFudAQDcG93A2kyZA1sb2NhbC5p
bnQuZ2V0CGNvbnN0YW50BAR0aWVyCGNvbnN0YW50BANtb2QIY29uc3RhbnQDAAAAAAAAJEAIY29uc3Rh
bnQEAS0RYXJpdGhtZXRpYy5kb3VibGURZ2xvYmFsLmRvdWJsZS5nZXQIY29uc3RhbnQED2NyYWZ0X2lu
dmVudG9yeQhjb25zdGFudAQBKhNmYWN0b3J5Lml0ZW1zLmNvdW50CGNvbnN0YW50BAtwbGF0ZS5kZW5z
ZQ1sb2NhbC5pbnQuZ2V0CGNvbnN0YW50BAR0aWVyE2dlbmVyaWMuZXhlY3V0ZXN5bmMIY29uc3RhbnQE
CWNyYWZ0IDM6Mw==
:global double craft_inventory
:local int tier
:local double count

tier = global.int.get("craft_tier:2.10")
count = global.double.get("craft_count:2.10")

; blocks = count * floor(1.0 + (98777776631.0 / (10.0 ^ i2d(tier))) % 10.0)
global.int.set("craft_tier:3.4", tier)
global.double.set("craft_count:3.4", count * floor(1.0 + (98777776631.0 / (10.0 ^ i2d(tier))) % 10.0) - craft_inventory * count("block", tier))
executesync("craft 3:4")

; denseplates = count * floor((54333332221.0 / (10.0 ^ i2d(tier))) % 10.0)
global.int.set("craft_tier:3.3", tier)
global.double.set("craft_count:3.3", count * floor((54333332221.0 / (10.0 ^ i2d(tier))) % 10.0) - craft_inventory * count("plate.dense", tier))
executesync("craft 3:3")

Producer scripts

TODO

Changelog

2020-01-22: (v0.0.1)

  • General and part scripts nominally complete
  • Some machines prototyped