From 4346bc530267ff9cd90e3fbd6c0237f34b07b679 Mon Sep 17 00:00:00 2001 From: Rachel Powers <508861+Ryex@users.noreply.github.com> Date: Sun, 19 May 2024 21:44:15 -0700 Subject: [PATCH] refactor(vm): pull generated data into new crate pregenerate prefab templates -> locked behind crate feature --- Cargo.lock | 315 +- Cargo.toml | 8 +- data/database.json | 2 +- ic10emu/Cargo.toml | 19 +- ic10emu/src/grammar.rs | 62 +- ic10emu/src/interpreter/instructions.rs | 2 +- ic10emu/src/network.rs | 55 - ic10emu/src/vm.rs | 31 +- ic10emu/src/vm/enums.rs | 3 - ic10emu/src/vm/enums/prefabs.rs | 10124 ---- ic10emu/src/vm/enums/script_enums.rs | 2287 - ic10emu/src/vm/instructions/enums.rs | 2249 +- ic10emu/src/vm/instructions/operands.rs | 31 +- ic10emu/src/vm/instructions/traits.rs | 3079 +- ic10emu/src/vm/object.rs | 18 +- ic10emu/src/vm/object/errors.rs | 2 +- ic10emu/src/vm/object/generic/structs.rs | 12 +- ic10emu/src/vm/object/generic/traits.rs | 23 +- ic10emu/src/vm/object/stationpedia.rs | 7 +- .../stationpedia/structs/circuit_holder.rs | 13 +- .../structs/integrated_circuit.rs | 8 +- ic10emu/src/vm/object/templates.rs | 317 +- ic10emu/src/vm/object/traits.rs | 8 +- ic10emu_wasm/Cargo.toml | 14 +- ic10lsp_wasm/Cargo.toml | 8 +- rust-analyzer.json | 4 +- stationeers_data/Cargo.toml | 16 + stationeers_data/src/database/prefab_map.rs | 43567 ++++++++++++++++ .../src}/enums/basic_enums.rs | 1390 +- stationeers_data/src/enums/prefabs.rs | 7686 +++ stationeers_data/src/enums/script_enums.rs | 2091 + stationeers_data/src/lib.rs | 108 + stationeers_data/src/templates.rs | 237 + xtask/Cargo.toml | 17 +- xtask/src/generate.rs | 87 +- xtask/src/generate/database.rs | 354 +- xtask/src/generate/enums.rs | 428 +- xtask/src/generate/instructions.rs | 233 +- xtask/src/main.rs | 21 +- xtask/src/stationpedia.rs | 4 +- 40 files changed, 59148 insertions(+), 15792 deletions(-) delete mode 100644 ic10emu/src/vm/enums.rs delete mode 100644 ic10emu/src/vm/enums/prefabs.rs delete mode 100644 ic10emu/src/vm/enums/script_enums.rs create mode 100644 stationeers_data/Cargo.toml create mode 100644 stationeers_data/src/database/prefab_map.rs rename {ic10emu/src/vm => stationeers_data/src}/enums/basic_enums.rs (56%) create mode 100644 stationeers_data/src/enums/prefabs.rs create mode 100644 stationeers_data/src/enums/script_enums.rs create mode 100644 stationeers_data/src/lib.rs create mode 100644 stationeers_data/src/templates.rs diff --git a/Cargo.lock b/Cargo.lock index 8a204c4..aa20a30 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -119,7 +119,7 @@ checksum = "a507401cad91ec6a857ed5513a2073c82a9b9048762b885bb98655b306964681" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.64", ] [[package]] @@ -130,14 +130,14 @@ checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.64", ] [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "backtrace" @@ -196,9 +196,9 @@ checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" [[package]] name = "bumpalo" -version = "3.15.4" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ff69b9dd49fd426c69a0db9fc04dd934cdb6645ff000864d98f7e2af8830eaa" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "bytes" @@ -228,9 +228,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.90" +version = "1.0.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5" +checksum = "099a5357d84c4c61eb35fc8eafa9a79a902c2f76911e5747ced4e032edd8d9b4" [[package]] name = "cexpr" @@ -249,15 +249,15 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.37" +version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a0d04d43504c61aa6c7531f1871dd0d418d91130162063b789da00fd7057a5e" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" dependencies = [ "android-tzdata", "iana-time-zone", "num-traits", "serde", - "windows-targets 0.52.4", + "windows-targets 0.52.5", ] [[package]] @@ -302,7 +302,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.64", ] [[package]] @@ -396,7 +396,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.10.0", - "syn 2.0.57", + "syn 2.0.64", ] [[package]] @@ -407,7 +407,7 @@ checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f" dependencies = [ "darling_core", "quote", - "syn 2.0.57", + "syn 2.0.64", ] [[package]] @@ -417,7 +417,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" dependencies = [ "cfg-if", - "hashbrown 0.14.3", + "hashbrown 0.14.5", "lock_api", "once_cell", "parking_lot_core", @@ -536,7 +536,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.64", ] [[package]] @@ -602,9 +602,9 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "hashbrown" -version = "0.14.3" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "heck" @@ -685,6 +685,7 @@ dependencies = [ "serde_derive", "serde_json", "serde_with", + "stationeers_data", "strum", "strum_macros", "thiserror", @@ -784,15 +785,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" dependencies = [ "equivalent", - "hashbrown 0.14.3", + "hashbrown 0.14.5", "serde", ] [[package]] name = "itertools" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" dependencies = [ "either", ] @@ -837,7 +838,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" dependencies = [ "cfg-if", - "windows-targets 0.52.4", + "windows-targets 0.52.5", ] [[package]] @@ -848,9 +849,9 @@ checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" [[package]] name = "lock_api" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" dependencies = [ "autocfg", "scopeguard", @@ -933,6 +934,39 @@ dependencies = [ "minimal-lexical", ] +[[package]] +name = "num" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" +dependencies = [ + "num-bigint", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c165a9ab64cf766f73521c0dd2cfdff64f488b8f0b3e621face3462d3db536d7" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-complex" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +dependencies = [ + "num-traits", +] + [[package]] name = "num-conv" version = "0.1.0" @@ -940,10 +974,41 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" [[package]] -name = "num-traits" -version = "0.2.18" +name = "num-integer" +version = "0.1.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" +dependencies = [ + "num-bigint", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", ] @@ -1011,9 +1076,9 @@ checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f" [[package]] name = "parking_lot" -version = "0.12.1" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +checksum = "7e4af0ca4f6caed20e900d564c242b8e5d4903fdacf31d3daf527b66fe6f42fb" dependencies = [ "lock_api", "parking_lot_core", @@ -1021,22 +1086,22 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.9" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", "redox_syscall", "smallvec", - "windows-targets 0.48.5", + "windows-targets 0.52.5", ] [[package]] name = "paste" -version = "1.0.14" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "peeking_take_while" @@ -1125,7 +1190,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.64", ] [[package]] @@ -1163,7 +1228,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.64", ] [[package]] @@ -1196,6 +1261,16 @@ version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +[[package]] +name = "prettyplease" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" +dependencies = [ + "proc-macro2", + "syn 2.0.64", +] + [[package]] name = "proc-macro-hack" version = "0.5.20+deprecated" @@ -1204,18 +1279,18 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "1.0.79" +version = "1.0.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" +checksum = "8ad3d49ab951a01fbaafe34f2ec74122942fe18a3f9814c3268f1bb72042131b" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.35" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] @@ -1252,11 +1327,11 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.4.1" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.5.0", ] [[package]] @@ -1290,9 +1365,9 @@ checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" [[package]] name = "rustc-demangle" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc-hash" @@ -1321,9 +1396,9 @@ checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" [[package]] name = "ryu" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "scopeguard" @@ -1333,9 +1408,9 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "serde" -version = "1.0.201" +version = "1.0.202" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "780f1cebed1629e4753a1a38a3c72d30b97ec044f0aef68cb26650a3c5cf363c" +checksum = "226b61a0d411b2ba5ff6d7f73a476ac4f8bb900373459cd00fab8512828ba395" dependencies = [ "serde_derive", ] @@ -1364,13 +1439,13 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.201" +version = "1.0.202" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5e405930b9796f1c00bee880d03fc7e0bb4b9a11afc776885ffe84320da2865" +checksum = "6048858004bcff69094cd972ed40a32500f153bd3be9f716b2eed2e8217c4838" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.64", ] [[package]] @@ -1381,7 +1456,7 @@ checksum = "e578a843d40b4189a4d66bba51d7684f57da5bd7c304c64e14bd63efbef49509" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.64", ] [[package]] @@ -1422,7 +1497,7 @@ checksum = "0b2e6b945e9d3df726b65d6ee24060aff8e3533d431f677a9695db04eff9dfdb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.64", ] [[package]] @@ -1452,7 +1527,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.64", ] [[package]] @@ -1472,9 +1547,9 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook-registry" -version = "1.4.1" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" dependencies = [ "libc", ] @@ -1502,14 +1577,25 @@ checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "socket2" -version = "0.5.6" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" dependencies = [ "libc", "windows-sys 0.52.0", ] +[[package]] +name = "stationeers_data" +version = "0.2.3" +dependencies = [ + "num-integer", + "phf 0.11.2", + "serde", + "serde_derive", + "strum", +] + [[package]] name = "strsim" version = "0.10.0" @@ -1542,7 +1628,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.57", + "syn 2.0.64", ] [[package]] @@ -1558,9 +1644,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.57" +version = "2.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11a6ae1e52eb25aab8f3fb9fca13be982a373b8f1157ca14b897a825ba4a2d35" +checksum = "7ad3dee41f36859875573074334c200d1add8e4a87bb37113ebd31d926b7b11f" dependencies = [ "proc-macro2", "quote", @@ -1575,22 +1661,22 @@ checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" [[package]] name = "thiserror" -version = "1.0.58" +version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" +checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.58" +version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" +checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.64", ] [[package]] @@ -1605,9 +1691,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.34" +version = "0.3.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" dependencies = [ "deranged", "itoa", @@ -1629,9 +1715,9 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.17" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ba3a3ef41e6672a2f0f001392bb5dcd3ff0a9992d618ca761a11c3121547774" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" dependencies = [ "num-conv", "time-core", @@ -1679,7 +1765,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.64", ] [[package]] @@ -1748,7 +1834,7 @@ checksum = "84fd902d4e0b9a4b27f2f440108dc034e1758628a9b702f8ec61ad66355422fa" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.64", ] [[package]] @@ -1776,7 +1862,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.64", ] [[package]] @@ -1872,7 +1958,17 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.57", + "syn 2.0.64", +] + +[[package]] +name = "uneval" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63cc5d2fd8648d7e2be86098f60c9ece7045cc710b3c1e226910e2f37d11dc73" +dependencies = [ + "serde", + "thiserror", ] [[package]] @@ -1953,7 +2049,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.64", "wasm-bindgen-shared", ] @@ -1988,7 +2084,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.64", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -2040,7 +2136,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.52.4", + "windows-targets 0.52.5", ] [[package]] @@ -2058,7 +2154,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.4", + "windows-targets 0.52.5", ] [[package]] @@ -2078,17 +2174,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" +checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" dependencies = [ - "windows_aarch64_gnullvm 0.52.4", - "windows_aarch64_msvc 0.52.4", - "windows_i686_gnu 0.52.4", - "windows_i686_msvc 0.52.4", - "windows_x86_64_gnu 0.52.4", - "windows_x86_64_gnullvm 0.52.4", - "windows_x86_64_msvc 0.52.4", + "windows_aarch64_gnullvm 0.52.5", + "windows_aarch64_msvc 0.52.5", + "windows_i686_gnu 0.52.5", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.5", + "windows_x86_64_gnu 0.52.5", + "windows_x86_64_gnullvm 0.52.5", + "windows_x86_64_msvc 0.52.5", ] [[package]] @@ -2099,9 +2196,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" +checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" [[package]] name = "windows_aarch64_msvc" @@ -2111,9 +2208,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" +checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" [[package]] name = "windows_i686_gnu" @@ -2123,9 +2220,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" +checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" [[package]] name = "windows_i686_msvc" @@ -2135,9 +2238,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" +checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" [[package]] name = "windows_x86_64_gnu" @@ -2147,9 +2250,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" +checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" [[package]] name = "windows_x86_64_gnullvm" @@ -2159,9 +2262,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" +checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" [[package]] name = "windows_x86_64_msvc" @@ -2171,9 +2274,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" +checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" [[package]] name = "xtask" @@ -2183,8 +2286,13 @@ dependencies = [ "color-eyre", "convert_case", "indexmap 2.2.6", + "num", + "num-integer", "onig", "phf_codegen", + "prettyplease", + "proc-macro2", + "quote", "regex", "serde", "serde_derive", @@ -2192,7 +2300,10 @@ dependencies = [ "serde_json", "serde_path_to_error", "serde_with", + "stationeers_data", + "syn 2.0.64", "textwrap", "thiserror", "tracing", + "uneval", ] diff --git a/Cargo.toml b/Cargo.toml index fdc3b4c..ba3a694 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,11 @@ [workspace] -members = ["ic10lsp_wasm", "ic10emu_wasm", "ic10emu", "xtask"] +members = [ + "ic10lsp_wasm", + "stationeers_data", + "ic10emu", + "ic10emu_wasm", + "xtask", +] resolver = "2" [workspace.package] diff --git a/data/database.json b/data/database.json index 43ee24c..681d84b 100644 --- a/data/database.json +++ b/data/database.json @@ -1 +1 @@ -{"prefabs":{"AccessCardBlack":{"prefab":{"prefabName":"AccessCardBlack","prefabHash":-1330388999,"desc":"","name":"Access Card (Black)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"AccessCard","sortingClass":"Default"}},"AccessCardBlue":{"prefab":{"prefabName":"AccessCardBlue","prefabHash":-1411327657,"desc":"","name":"Access Card (Blue)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"AccessCard","sortingClass":"Default"}},"AccessCardBrown":{"prefab":{"prefabName":"AccessCardBrown","prefabHash":1412428165,"desc":"","name":"Access Card (Brown)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"AccessCard","sortingClass":"Default"}},"AccessCardGray":{"prefab":{"prefabName":"AccessCardGray","prefabHash":-1339479035,"desc":"","name":"Access Card (Gray)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"AccessCard","sortingClass":"Default"}},"AccessCardGreen":{"prefab":{"prefabName":"AccessCardGreen","prefabHash":-374567952,"desc":"","name":"Access Card (Green)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"AccessCard","sortingClass":"Default"}},"AccessCardKhaki":{"prefab":{"prefabName":"AccessCardKhaki","prefabHash":337035771,"desc":"","name":"Access Card (Khaki)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"AccessCard","sortingClass":"Default"}},"AccessCardOrange":{"prefab":{"prefabName":"AccessCardOrange","prefabHash":-332896929,"desc":"","name":"Access Card (Orange)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"AccessCard","sortingClass":"Default"}},"AccessCardPink":{"prefab":{"prefabName":"AccessCardPink","prefabHash":431317557,"desc":"","name":"Access Card (Pink)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"AccessCard","sortingClass":"Default"}},"AccessCardPurple":{"prefab":{"prefabName":"AccessCardPurple","prefabHash":459843265,"desc":"","name":"Access Card (Purple)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"AccessCard","sortingClass":"Default"}},"AccessCardRed":{"prefab":{"prefabName":"AccessCardRed","prefabHash":-1713748313,"desc":"","name":"Access Card (Red)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"AccessCard","sortingClass":"Default"}},"AccessCardWhite":{"prefab":{"prefabName":"AccessCardWhite","prefabHash":2079959157,"desc":"","name":"Access Card (White)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"AccessCard","sortingClass":"Default"}},"AccessCardYellow":{"prefab":{"prefabName":"AccessCardYellow","prefabHash":568932536,"desc":"","name":"Access Card (Yellow)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"AccessCard","sortingClass":"Default"}},"ApplianceChemistryStation":{"prefab":{"prefabName":"ApplianceChemistryStation","prefabHash":1365789392,"desc":"","name":"Chemistry Station"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Appliance","sortingClass":"Appliances"},"slots":[{"name":"Output","typ":"None"}]},"ApplianceDeskLampLeft":{"prefab":{"prefabName":"ApplianceDeskLampLeft","prefabHash":-1683849799,"desc":"","name":"Appliance Desk Lamp Left"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Appliance","sortingClass":"Appliances"}},"ApplianceDeskLampRight":{"prefab":{"prefabName":"ApplianceDeskLampRight","prefabHash":1174360780,"desc":"","name":"Appliance Desk Lamp Right"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Appliance","sortingClass":"Appliances"}},"ApplianceMicrowave":{"prefab":{"prefabName":"ApplianceMicrowave","prefabHash":-1136173965,"desc":"While countless 'better' ways of cooking Food have been invented in the last few hundred years, few are as durable or easy to fabricate as the OK-Zoomer microwave. Licensed from Xigo, the plans are based on a classic model from the mid-21st century, giving it a charmingly retro feel. But don't worry, it oscillates Water molecules more than adequately. \nJust bolt it to a Powered Bench using a Wrench to power it, follow the recipe, and you're cooking.","name":"Microwave"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Appliance","sortingClass":"Appliances"},"slots":[{"name":"Output","typ":"None"}]},"AppliancePackagingMachine":{"prefab":{"prefabName":"AppliancePackagingMachine","prefabHash":-749191906,"desc":"The Xigo Cannifier requires Empty Can and cooked food to create long-lasting, easily stored sustenance. Note that the Cannifier must be bolted to a Powered Bench for power, and only accepts cooked food and tin cans.\n\nOPERATION\n\n1. Add the correct ingredients to the device via the hopper in the TOP.\n\n2. Close the device using the dropdown handle.\n\n3. Activate the device.\n\n4. Remove canned goods from the outlet in the FRONT.\n\nNote: the Cannifier will flash an error on its activation switch if you attempt to activate it before closing it.\n\n\n ","name":"Basic Packaging Machine"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Appliance","sortingClass":"Appliances"},"slots":[{"name":"Export","typ":"None"}]},"AppliancePaintMixer":{"prefab":{"prefabName":"AppliancePaintMixer","prefabHash":-1339716113,"desc":"","name":"Paint Mixer"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Appliance","sortingClass":"Appliances"},"slots":[{"name":"Output","typ":"Bottle"}]},"AppliancePlantGeneticAnalyzer":{"prefab":{"prefabName":"AppliancePlantGeneticAnalyzer","prefabHash":-1303038067,"desc":"The Genetic Analyzer can be used to process samples from the Plant Sampler. Once processed, the genetic information of the sampled plant can be viewed by clicking on the search button.\n\nIndividual Gene Value Widgets: \nMost gene values will appear as a sliding bar between a minimum value on the left and a maximum value on the right. The actual value of the gene is in the middle of the bar, in orange.\n\nMultiple Gene Value Widgets: \nFor temperature and pressure ranges, four genes appear on the same widget. The orange values underneath the bar are the minimum and maximum thresholds for growth. Outside of this range, the plant will stop growing and eventually die. The blue values underneath the bar are the minimum and maximum thresholds for ideal growth. Inside of this range, the plant will grow at maximum speed. The white values above the bar are the minimum and maximum achievable values for the growth threshold.","name":"Plant Genetic Analyzer"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Appliance","sortingClass":"Appliances"},"slots":[{"name":"Input","typ":"Tool"}]},"AppliancePlantGeneticSplicer":{"prefab":{"prefabName":"AppliancePlantGeneticSplicer","prefabHash":-1094868323,"desc":"The Genetic Splicer can be used to copy a single gene from one 'source' plant to another 'target' plant of the same type. After copying, the source plant will be destroyed.\n \nTo begin splicing, place a plant or seed bag in the left slot (source) and place another plant or seed bag of the same type in the right slot (target). You can select a gene using the arrow buttons. Close the sliding door and press the green activate button. Once splicing has begun, the device will be locked until the process has finished (which will take approximately twenty minutes). If you want to cancel splicing you can power off the bench or detach the appliance as a last resort.","name":"Plant Genetic Splicer"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Appliance","sortingClass":"Appliances"},"slots":[{"name":"Source Plant","typ":"Plant"},{"name":"Target Plant","typ":"Plant"}]},"AppliancePlantGeneticStabilizer":{"prefab":{"prefabName":"AppliancePlantGeneticStabilizer","prefabHash":871432335,"desc":"The Genetic Stabilizer can be used to manipulate gene stability on a specific Plants or Seeds. It has two modes Stabilize and Destabilize.\nStabilize: Increases all genes stability by 50%.\nDestabilize: Decreases all gene stability by 10% other than a chosen gene which will received decreased stability by 50%.\n ","name":"Plant Genetic Stabilizer"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Appliance","sortingClass":"Appliances"},"slots":[{"name":"Plant","typ":"Plant"}]},"ApplianceReagentProcessor":{"prefab":{"prefabName":"ApplianceReagentProcessor","prefabHash":1260918085,"desc":"Sitting somewhere between a high powered juicer and an alchemist's alembic, the Xigo reagent processor turns certain raw materials and food items into cooking and crafting ingredients. Indispensible in any space kitchen, just bolt it to the bench, and you're ready to go.","name":"Reagent Processor"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Appliance","sortingClass":"Appliances"},"slots":[{"name":"Input","typ":"None"},{"name":"Output","typ":"None"}]},"ApplianceSeedTray":{"prefab":{"prefabName":"ApplianceSeedTray","prefabHash":142831994,"desc":"The seed tray can hold up to twelve plants or seeds and can be used to facilitate fast experimentation and testing of plant genetics.","name":"Appliance Seed Tray"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Appliance","sortingClass":"Appliances"},"slots":[{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"}]},"ApplianceTabletDock":{"prefab":{"prefabName":"ApplianceTabletDock","prefabHash":1853941363,"desc":"","name":"Tablet Dock"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Appliance","sortingClass":"Appliances"},"slots":[{"name":"","typ":"Tool"}]},"AutolathePrinterMod":{"prefab":{"prefabName":"AutolathePrinterMod","prefabHash":221058307,"desc":"Apply to an Autolathe with a Welding Torch or Arc Welder to upgrade for increased processing speed and more recipe options.","name":"Autolathe Printer Mod"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Default"}},"Battery_Wireless_cell":{"prefab":{"prefabName":"Battery_Wireless_cell","prefabHash":-462415758,"desc":"0.Empty\n1.Critical\n2.VeryLow\n3.Low\n4.Medium\n5.High\n6.Full","name":"Battery Wireless Cell"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Battery","sortingClass":"Default"},"logic":{"logicSlotTypes":{},"logicTypes":{"Mode":"ReadWrite","ReferenceId":"Read"},"modes":{"0":"Empty","1":"Critical","2":"VeryLow","3":"Low","4":"Medium","5":"High","6":"Full"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[]},"Battery_Wireless_cell_Big":{"prefab":{"prefabName":"Battery_Wireless_cell_Big","prefabHash":-41519077,"desc":"0.Empty\n1.Critical\n2.VeryLow\n3.Low\n4.Medium\n5.High\n6.Full","name":"Battery Wireless Cell (Big)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Battery","sortingClass":"Default"},"logic":{"logicSlotTypes":{},"logicTypes":{"Mode":"ReadWrite","ReferenceId":"Read"},"modes":{"0":"Empty","1":"Critical","2":"VeryLow","3":"Low","4":"Medium","5":"High","6":"Full"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[]},"CardboardBox":{"prefab":{"prefabName":"CardboardBox","prefabHash":-1976947556,"desc":"","name":"Cardboard Box"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Storage"},"slots":[{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"}]},"CartridgeAccessController":{"prefab":{"prefabName":"CartridgeAccessController","prefabHash":-1634532552,"desc":"","name":"Cartridge (Access Controller)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Cartridge","sortingClass":"Default"}},"CartridgeAtmosAnalyser":{"prefab":{"prefabName":"CartridgeAtmosAnalyser","prefabHash":-1550278665,"desc":"The Lorenz atmos analyzer is a multi-functional mass-spectrometer designed by ExMin for use with the OreCore Handheld Tablet. It displays the pressure, concentration and molar quantity of gas in rooms, tanks, or pipe networks.","name":"Atmos Analyzer"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Cartridge","sortingClass":"Default"}},"CartridgeConfiguration":{"prefab":{"prefabName":"CartridgeConfiguration","prefabHash":-932136011,"desc":"","name":"Configuration"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Cartridge","sortingClass":"Default"}},"CartridgeElectronicReader":{"prefab":{"prefabName":"CartridgeElectronicReader","prefabHash":-1462180176,"desc":"","name":"eReader"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Cartridge","sortingClass":"Default"}},"CartridgeGPS":{"prefab":{"prefabName":"CartridgeGPS","prefabHash":-1957063345,"desc":"","name":"GPS"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Cartridge","sortingClass":"Default"}},"CartridgeGuide":{"prefab":{"prefabName":"CartridgeGuide","prefabHash":872720793,"desc":"","name":"Guide"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Cartridge","sortingClass":"Default"}},"CartridgeMedicalAnalyser":{"prefab":{"prefabName":"CartridgeMedicalAnalyser","prefabHash":-1116110181,"desc":"When added to the OreCore Handheld Tablet, Asura's's ReadyMed medical analyzer reveals the health, or otherwise, of users various organs. Due to a design flaw, older models were notorious for producing quasar-like levels of x-ray radiation. Recent advances in shielding have more than halved the risk to users.","name":"Medical Analyzer"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Cartridge","sortingClass":"Default"}},"CartridgeNetworkAnalyser":{"prefab":{"prefabName":"CartridgeNetworkAnalyser","prefabHash":1606989119,"desc":"A minor masterpiece of micro-electronic engineering, the network analyzer displays the current, voltage and wattage of a cable network, as well as any devices connected to it. Based on a widely-copied Sinotai design, it's used in conjunction with the OreCore Handheld Tablet.","name":"Network Analyzer"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Cartridge","sortingClass":"Default"}},"CartridgeOreScanner":{"prefab":{"prefabName":"CartridgeOreScanner","prefabHash":-1768732546,"desc":"When inserted into a Handheld Tablet the scanner will display minerals hidden underground on the tablet.","name":"Ore Scanner"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Cartridge","sortingClass":"Default"}},"CartridgeOreScannerColor":{"prefab":{"prefabName":"CartridgeOreScannerColor","prefabHash":1738236580,"desc":"When inserted into a Handheld Tablet the scanner will display minerals hidden underground in different colors on the tablet.","name":"Ore Scanner (Color)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Cartridge","sortingClass":"Default"}},"CartridgePlantAnalyser":{"prefab":{"prefabName":"CartridgePlantAnalyser","prefabHash":1101328282,"desc":"","name":"Cartridge Plant Analyser"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Cartridge","sortingClass":"Default"}},"CartridgeTracker":{"prefab":{"prefabName":"CartridgeTracker","prefabHash":81488783,"desc":"","name":"Tracker"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Cartridge","sortingClass":"Default"}},"CircuitboardAdvAirlockControl":{"prefab":{"prefabName":"CircuitboardAdvAirlockControl","prefabHash":1633663176,"desc":"","name":"Advanced Airlock"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Circuitboard","sortingClass":"Default"}},"CircuitboardAirControl":{"prefab":{"prefabName":"CircuitboardAirControl","prefabHash":1618019559,"desc":"When added to a Console, air control circuit boards allow you to program an Active Vent. As with small dogs and 83% of people, air control circuits have only three modes: Pressure, Draft and Offline. Pressure mode maintains a 100kPa atmosphere, switching the active vent between inward and outward flow until target pressure is achieved. Draft mode allows you to pair active vents to circulate air. Offline mode deactivates the vent. ","name":"Air Control"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Circuitboard","sortingClass":"Default"}},"CircuitboardAirlockControl":{"prefab":{"prefabName":"CircuitboardAirlockControl","prefabHash":912176135,"desc":"Rumored to have been first sketched on a Norsec toilet wall by a disgruntled engineer, the Exgress airlock control circuit board’s versatility and ease of fabrication has made it the Stationeers control system of choice for Airlock cycling protocols. \n\nTo enter setup mode, insert the board into a Console along with a data disk. In this mode, you can see all data-accessible objects currently connected to the Console. Doors, lights, gas sensors and slave consoles can be selected (highlighted green), and will be controlled once the data disk is removed.","name":"Airlock"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Circuitboard","sortingClass":"Default"}},"CircuitboardCameraDisplay":{"prefab":{"prefabName":"CircuitboardCameraDisplay","prefabHash":-412104504,"desc":"Surveillance is sometimes necessary when building bases in highly hostile environments. The camera display circuit board allows wary Stationeers to turn a Console into a security display when connected to a Camera.","name":"Camera Display"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Circuitboard","sortingClass":"Default"}},"CircuitboardDoorControl":{"prefab":{"prefabName":"CircuitboardDoorControl","prefabHash":855694771,"desc":"A basic tool of Stationeer base construction, this circuit board provides a way to open and close a Composite Door, Blast Door or Glass Door remotely, when connected to a Console. This system can be further linked to Motion Sensor to create automatic doors.","name":"Door Control"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Circuitboard","sortingClass":"Default"}},"CircuitboardGasDisplay":{"prefab":{"prefabName":"CircuitboardGasDisplay","prefabHash":-82343730,"desc":"Information is power. Place this circuitboard into a Console to create a display that shows gas pressure or temperature of any connected tank, storage cannister, Kit (Pipe Analyzer) or Kit (Gas Sensor).","name":"Gas Display"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Circuitboard","sortingClass":"Default"}},"CircuitboardGraphDisplay":{"prefab":{"prefabName":"CircuitboardGraphDisplay","prefabHash":1344368806,"desc":"","name":"Graph Display"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Circuitboard","sortingClass":"Default"}},"CircuitboardHashDisplay":{"prefab":{"prefabName":"CircuitboardHashDisplay","prefabHash":1633074601,"desc":"","name":"Hash Display"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Circuitboard","sortingClass":"Default"}},"CircuitboardModeControl":{"prefab":{"prefabName":"CircuitboardModeControl","prefabHash":-1134148135,"desc":"Can't decide which mode you love most? This circuit board allows you to switch any connected device between operation modes.","name":"Mode Control"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Circuitboard","sortingClass":"Default"}},"CircuitboardPowerControl":{"prefab":{"prefabName":"CircuitboardPowerControl","prefabHash":-1923778429,"desc":"Under distant suns and demanding environments, Stationeer systems need to balance reliability, resilience and versatility. The power control board allows remote enabling and disabling of selected devices, disconnecting manual operation. \n \nThe circuit board has two modes: 'Link' switches all devices on or off; 'Toggle' switches each device to their alternate state. ","name":"Power Control"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Circuitboard","sortingClass":"Default"}},"CircuitboardShipDisplay":{"prefab":{"prefabName":"CircuitboardShipDisplay","prefabHash":-2044446819,"desc":"When the original Stationeer Handbook collapsed under its own weight into a singularity, certain information was irretrievably lost. Amongst this mysterious corpus of knowledge is the exact purpose of the ship display board.","name":"Ship Display"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Circuitboard","sortingClass":"Default"}},"CircuitboardSolarControl":{"prefab":{"prefabName":"CircuitboardSolarControl","prefabHash":2020180320,"desc":"Adding a solar control board to a Console lets you manually control the horizontal and vertical angles of any connected Solar Panel.","name":"Solar Control"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Circuitboard","sortingClass":"Default"}},"CompositeRollCover":{"prefab":{"prefabName":"CompositeRollCover","prefabHash":1228794916,"desc":"0.Operate\n1.Logic","name":"Composite Roll Cover"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Idle":"Read","Lock":"ReadWrite","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"modes":{"0":"Operate","1":"Logic"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":true,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"CrateMkII":{"prefab":{"prefabName":"CrateMkII","prefabHash":8709219,"desc":"A more heavily reinforced version of the iconic Dynamic Crate, the Crate Mk II is resistant to incredibly high pressures and temperatures. Short of disposing of it in a black hole, the Mk II is about as safe as luggage gets.","name":"Crate Mk II"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Storage"},"slots":[{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"}]},"DecayedFood":{"prefab":{"prefabName":"DecayedFood","prefabHash":1531087544,"desc":"When your food decays, it turns into this. ODA scientists have attempted to determine the exact constituents of this substance, but it remains evasive and mysterious. Suffice to say, eating it is a bad idea. Research has determined, however, that The exact speed of decay varies individually by:\n\n- TEMPERATURE - Refrigeration will slow decay, but many foods will be damaged by exposure to extreme low pressure, as well as extreme heat. The optimum temperature is 0 kelvin (-272 C).\n\n- FOOD TYPE - Each food type has its own decay properties. Tomato Soup lasts a lot longer than a Tomato, for instance.\n\n- PRESSURE - Food decays faster when the pressure drops below 1 atmosphere (101kPa). Decay happens exponentially more quickly as the atmosphere approaches a perfect vacuum. There is no effect from higher pressures. \n\n- ATMOSPHERE - Different gases can slow and accelerate the decay process. The process will take account of respective gas ratios in mixed atmospheres in calculating the decay modifier. The following rates apply across all foods:\n\n> Oxygen x 1.3\n> Nitrogen x 0.6\n> Carbon Dioxide x 0.8\n> Volatiles x 1\n> Pollutant x 3\n> Nitrous Oxide x 1.5\n> Steam x 2\n> Vacuum (see PRESSURE above)\n\n","name":"Decayed Food"},"item":{"consumable":false,"ingredient":false,"maxQuantity":25,"slotClass":"None","sortingClass":"Default"}},"DeviceLfoVolume":{"prefab":{"prefabName":"DeviceLfoVolume","prefabHash":-1844430312,"desc":"The low frequency oscillator (or LFO) makes everything sound dark, twisted and crunchy by altering the shape of the waves output by a Logic Step Sequencer.\n \nTo set up an LFO:\n\n1. Place the LFO unit\n2. Set the LFO output to a Passive Speaker\n2. Set a sequencers' output to LFO - so the sequencer's signal runs through the LFO to a speaker.\n3. Place a Stop Watch or use an existing one, then use a Logic Writer to write it to the LFO.\n4. Use another logic writer to write the BPM to the LFO.\n5. You are ready. This is the future. You're in space. Make it sound cool.\n\nFor more info, check out the music page.","name":"Low frequency oscillator"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Activate":"ReadWrite","Bpm":"ReadWrite","Error":"Read","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Time":"ReadWrite"},"modes":{"0":"Whole Note","1":"Half Note","2":"Quarter Note","3":"Eighth Note","4":"Sixteenth Note"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"Input"},{"typ":"Power","role":"Input"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":true,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"DeviceStepUnit":{"prefab":{"prefabName":"DeviceStepUnit","prefabHash":1762696475,"desc":"0.C-2\n1.C#-2\n2.D-2\n3.D#-2\n4.E-2\n5.F-2\n6.F#-2\n7.G-2\n8.G#-2\n9.A-2\n10.A#-2\n11.B-2\n12.C-1\n13.C#-1\n14.D-1\n15.D#-1\n16.E-1\n17.F-1\n18.F#-1\n19.G-1\n20.G#-1\n21.A-1\n22.A#-1\n23.B-1\n24.C0\n25.C#0\n26.D0\n27.D#0\n28.E0\n29.F0\n30.F#0\n31.G0\n32.G#0\n33.A0\n34.A#0\n35.B0\n36.C1\n37.C#1\n38.D1\n39.D#1\n40.E1\n41.F1\n42.F#1\n43.G1\n44.G#1\n45.A1\n46.A#1\n47.B1\n48.C2\n49.C#2\n50.D2\n51.D#2\n52.E2\n53.F2\n54.F#2\n55.G2\n56.G#2\n57.A2\n58.A#2\n59.B2\n60.C3\n61.C#3\n62.D3\n63.D#3\n64.E3\n65.F3\n66.F#3\n67.G3\n68.G#3\n69.A3\n70.A#3\n71.B3\n72.C4\n73.C#4\n74.D4\n75.D#4\n76.E4\n77.F4\n78.F#4\n79.G4\n80.G#4\n81.A4\n82.A#4\n83.B4\n84.C5\n85.C#5\n86.D5\n87.D#5\n88.E5\n89.F5\n90.F#5\n91.G5 \n92.G#5\n93.A5\n94.A#5\n95.B5\n96.C6\n97.C#6\n98.D6\n99.D#6\n100.E6\n101.F6\n102.F#6\n103.G6\n104.G#6\n105.A6\n106.A#6\n107.B6\n108.C7\n109.C#7\n110.D7\n111.D#7\n112.E7\n113.F7\n114.F#7\n115.G7\n116.G#7\n117.A7\n118.A#7\n119.B7\n120.C8\n121.C#8\n122.D8\n123.D#8\n124.E8\n125.F8\n126.F#8\n127.G8","name":"Device Step Unit"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Activate":"ReadWrite","Error":"Read","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Volume":"ReadWrite"},"modes":{"0":"C-2","1":"C#-2","2":"D-2","3":"D#-2","4":"E-2","5":"F-2","6":"F#-2","7":"G-2","8":"G#-2","9":"A-2","10":"A#-2","11":"B-2","12":"C-1","13":"C#-1","14":"D-1","15":"D#-1","16":"E-1","17":"F-1","18":"F#-1","19":"G-1","20":"G#-1","21":"A-1","22":"A#-1","23":"B-1","24":"C0","25":"C#0","26":"D0","27":"D#0","28":"E0","29":"F0","30":"F#0","31":"G0","32":"G#0","33":"A0","34":"A#0","35":"B0","36":"C1","37":"C#1","38":"D1","39":"D#1","40":"E1","41":"F1","42":"F#1","43":"G1","44":"G#1","45":"A1","46":"A#1","47":"B1","48":"C2","49":"C#2","50":"D2","51":"D#2","52":"E2","53":"F2","54":"F#2","55":"G2","56":"G#2","57":"A2","58":"A#2","59":"B2","60":"C3","61":"C#3","62":"D3","63":"D#3","64":"E3","65":"F3","66":"F#3","67":"G3","68":"G#3","69":"A3","70":"A#3","71":"B3","72":"C4","73":"C#4","74":"D4","75":"D#4","76":"E4","77":"F4","78":"F#4","79":"G4","80":"G#4","81":"A4","82":"A#4","83":"B4","84":"C5","85":"C#5","86":"D5","87":"D#5","88":"E5","89":"F5","90":"F#5","91":"G5 ","92":"G#5","93":"A5","94":"A#5","95":"B5","96":"C6","97":"C#6","98":"D6","99":"D#6","100":"E6","101":"F6","102":"F#6","103":"G6","104":"G#6","105":"A6","106":"A#6","107":"B6","108":"C7","109":"C#7","110":"D7","111":"D#7","112":"E7","113":"F7","114":"F#7","115":"G7","116":"G#7","117":"A7","118":"A#7","119":"B7","120":"C8","121":"C#8","122":"D8","123":"D#8","124":"E8","125":"F8","126":"F#8","127":"G8"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"Input"},{"typ":"Power","role":"Input"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":true,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"DynamicAirConditioner":{"prefab":{"prefabName":"DynamicAirConditioner","prefabHash":519913639,"desc":"The Sinotai-designed Huxi portable air conditioner cools by drawing heat from the atmosphere and storing it, or adding heat to the atmosphere from its internal tank. With a max internal pressure of 8106kPa, its capacity is relatively limited, physics being clear on this subject. To extend its temperature storage ability, bolt the Huxi to a Tank Connector, then connect it to a pipe network supplying hot or cold gases.","name":"Portable Air Conditioner"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Atmospherics"},"slots":[{"name":"Battery","typ":"Battery"}]},"DynamicCrate":{"prefab":{"prefabName":"DynamicCrate","prefabHash":1941079206,"desc":"The humble dynamic crate has become a symbol of Stationeer invention and independence. With twelve slots and handles at either end for ease of carriage, it's both standard issue and critical kit for cadets and Commanders alike.","name":"Dynamic Crate"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Storage"},"slots":[{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"}]},"DynamicGPR":{"prefab":{"prefabName":"DynamicGPR","prefabHash":-2085885850,"desc":"","name":""},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Tools"},"logic":{"logicSlotTypes":{"0":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"}},"logicTypes":{"Activate":"ReadWrite","On":"ReadWrite","Power":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"DynamicGasCanisterAir":{"prefab":{"prefabName":"DynamicGasCanisterAir","prefabHash":-1713611165,"desc":"Portable gas tanks do one thing: store gas. But there's lots you can do with them. To refill the tank, bolt it to a Kit (Tank Connector), then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or bad things happen. Once it's full, you can refill a Canister (Oxygen) by attaching it to the tank's striped section. Or you could vent the tank's variable flow rate valve into a room and create an atmosphere. They also attach to rovers and rockets. Alternatively, kick it over and practice barrel rolling. The possibilities are endless.","name":"Portable Gas Tank (Air)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Atmospherics"},"slots":[{"name":"Gas Canister","typ":"None"}]},"DynamicGasCanisterCarbonDioxide":{"prefab":{"prefabName":"DynamicGasCanisterCarbonDioxide","prefabHash":-322413931,"desc":"Portable gas tanks do one thing: store gas. To refill the tank, bolt it to a Kit (Tank Connector), then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or ... boom. Once it's full, you can refill a Canister (CO2) by attaching it to the tank's striped section. Or you could vent the tank's variable flow rate valve into a room and create an atmosphere ... of sorts.","name":"Portable Gas Tank (CO2)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Default"},"slots":[{"name":"Gas Canister","typ":"None"}]},"DynamicGasCanisterEmpty":{"prefab":{"prefabName":"DynamicGasCanisterEmpty","prefabHash":-1741267161,"desc":"Portable gas tanks store gas. To refill one, bolt it to a Kit (Tank Connector), then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or bad things happen. Once it's full, you can refill a Canister by attaching it to the tank's striped section. Or you could vent the tank's variable flow rate valve into a room and create an atmosphere.","name":"Portable Gas Tank"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Default"},"slots":[{"name":"Gas Canister","typ":"None"}]},"DynamicGasCanisterFuel":{"prefab":{"prefabName":"DynamicGasCanisterFuel","prefabHash":-817051527,"desc":"Portable tanks store gas. They're good at it. If you need to refill a tank, bolt it to a Kit (Tank Connector), then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or things get messy. You can refill a Canister (Fuel) by attaching it to the tank's striped section. Or you could use a Wrench to attach it to a rover or rocket for later. It's really up to you.","name":"Portable Gas Tank (Fuel)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Default"},"slots":[{"name":"Gas Canister","typ":"None"}]},"DynamicGasCanisterNitrogen":{"prefab":{"prefabName":"DynamicGasCanisterNitrogen","prefabHash":121951301,"desc":"Portable tanks store gas. If you need to refill a tank, bolt it to a Kit (Tank Connector) using a Wrench, then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or you'll end up with Nitrogen in places you weren't expecting. You can refill a Canister (Nitrogen) by attaching it to the tank's striped section. Or you could use a Wrench to attach it to a rover or rocket for later.","name":"Portable Gas Tank (Nitrogen)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Default"},"slots":[{"name":"Gas Canister","typ":"None"}]},"DynamicGasCanisterNitrousOxide":{"prefab":{"prefabName":"DynamicGasCanisterNitrousOxide","prefabHash":30727200,"desc":"","name":"Portable Gas Tank (Nitrous Oxide)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Default"},"slots":[{"name":"Gas Canister","typ":"None"}]},"DynamicGasCanisterOxygen":{"prefab":{"prefabName":"DynamicGasCanisterOxygen","prefabHash":1360925836,"desc":"Portable tanks store gas. If you need to refill a tank, bolt it to a Kit (Tank Connector) using a Wrench, then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or you'll be picking tank shards out of your face. You can refill a Canister (Oxygen) by attaching it to the tank's striped section. Or you could vent it into a sealed room to create an atmosphere. Or even paint it pink, call it Steve and fill that sad space in your heart.","name":"Portable Gas Tank (Oxygen)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Default"},"slots":[{"name":"Gas Canister","typ":"None"}]},"DynamicGasCanisterPollutants":{"prefab":{"prefabName":"DynamicGasCanisterPollutants","prefabHash":396065382,"desc":"","name":"Portable Gas Tank (Pollutants)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Default"},"slots":[{"name":"Gas Canister","typ":"None"}]},"DynamicGasCanisterRocketFuel":{"prefab":{"prefabName":"DynamicGasCanisterRocketFuel","prefabHash":-8883951,"desc":"","name":"Dynamic Gas Canister Rocket Fuel"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Default"},"slots":[{"name":"Gas Canister","typ":"None"}]},"DynamicGasCanisterVolatiles":{"prefab":{"prefabName":"DynamicGasCanisterVolatiles","prefabHash":108086870,"desc":"Portable tanks store gas. To refill one, bolt it to a Kit (Tank Connector) using a Wrench, then connect it to a pipe network. Don't fill it above 10 MPa, unless you're the sort who loves complicated, flammable emergencies. You can refill a Canister (Volatiles) by attaching it to the tank's striped section. Or you could use a Wrench to attach to a rocket and show it around the Solar System.","name":"Portable Gas Tank (Volatiles)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Default"},"slots":[{"name":"Gas Canister","typ":"None"}]},"DynamicGasCanisterWater":{"prefab":{"prefabName":"DynamicGasCanisterWater","prefabHash":197293625,"desc":"This portable tank stores liquid, and liquid only. You just have to fill it up. To do this, bolt one to a Kit (Tank Connector) using a Wrench, then connect it to Liquid Pipe (Straight) to supply liquid to a network. \nTry to keep pressure under 10 MPa, or you'll end up wet, hurt and sorry, without any of the fun.\nYou can refill a Liquid Canister (Water) by attaching it to the tank's striped section. Or you could use a Wrench to attach it to a rocket and take it somewhere distant and dry, then feel good about yourself.","name":"Portable Liquid Tank (Water)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Atmospherics"},"slots":[{"name":"Gas Canister","typ":"LiquidCanister"}]},"DynamicGasTankAdvanced":{"prefab":{"prefabName":"DynamicGasTankAdvanced","prefabHash":-386375420,"desc":"0.Mode0\n1.Mode1","name":"Gas Tank Mk II"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Default"},"slots":[{"name":"Gas Canister","typ":"None"}]},"DynamicGasTankAdvancedOxygen":{"prefab":{"prefabName":"DynamicGasTankAdvancedOxygen","prefabHash":-1264455519,"desc":"0.Mode0\n1.Mode1","name":"Portable Gas Tank Mk II (Oxygen)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Atmospherics"},"slots":[{"name":"Gas Canister","typ":"None"}]},"DynamicGenerator":{"prefab":{"prefabName":"DynamicGenerator","prefabHash":-82087220,"desc":"Every Stationeer's best friend, the portable generator gets you up and running, fast. Fill it with a Canister (Fuel) to power up and charge a Battery Cell (Small), or attach it to a Power Connector to link it into your electrical network. It's pressure driven, so functions more efficiently at lower temperatures, and REALLY efficiently if supercooled. Perfecting your fuel mix also makes a big difference.","name":"Portable Generator"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Atmospherics"},"slots":[{"name":"Gas Canister","typ":"GasCanister"},{"name":"Battery","typ":"Battery"}]},"DynamicHydroponics":{"prefab":{"prefabName":"DynamicHydroponics","prefabHash":587726607,"desc":"","name":"Portable Hydroponics"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Atmospherics"},"slots":[{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Liquid Canister","typ":"LiquidCanister"},{"name":"Liquid Canister","typ":"Plant"},{"name":"Liquid Canister","typ":"Plant"},{"name":"Liquid Canister","typ":"Plant"},{"name":"Liquid Canister","typ":"Plant"}]},"DynamicLight":{"prefab":{"prefabName":"DynamicLight","prefabHash":-21970188,"desc":"Philippe Starck might not applaud, but this battery-powered light source undarkens the corners when illumination's lacking. Powered by any battery, it's a 'no-frills' Xigo design that can be cheaply fabricated with the minimum of fuss. Unless you like fuss. In which case, fuss all you like.","name":"Portable Light"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Tools"},"logic":{"logicSlotTypes":{"0":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"}},"logicTypes":{"Lock":"ReadWrite","On":"ReadWrite","Open":"ReadWrite","Power":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"DynamicLiquidCanisterEmpty":{"prefab":{"prefabName":"DynamicLiquidCanisterEmpty","prefabHash":-1939209112,"desc":"This portable tank stores liquid, and liquid only. You can bolt one to a Kit (Liquid Tank Connector) using a Wrench, then connect it to a pipe network to refill it. You can refill a Liquid Canister (Water) by attaching it to the tank's striped section. Or you could use a Wrench to attach it to a rocket and take it somewhere distant and dry, then feel good about yourself.","name":"Portable Liquid Tank"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Atmospherics"},"slots":[{"name":"Liquid Canister","typ":"LiquidCanister"}]},"DynamicMKIILiquidCanisterEmpty":{"prefab":{"prefabName":"DynamicMKIILiquidCanisterEmpty","prefabHash":2130739600,"desc":"An empty, insulated liquid Gas Canister.","name":"Portable Liquid Tank Mk II"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Atmospherics"},"slots":[{"name":"Liquid Canister","typ":"LiquidCanister"}]},"DynamicMKIILiquidCanisterWater":{"prefab":{"prefabName":"DynamicMKIILiquidCanisterWater","prefabHash":-319510386,"desc":"An insulated version of the Portable Liquid Tank Mk II (Water), for storing liquids without them gaining or losing temperature.","name":"Portable Liquid Tank Mk II (Water)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Atmospherics"},"slots":[{"name":"Liquid Canister","typ":"LiquidCanister"}]},"DynamicScrubber":{"prefab":{"prefabName":"DynamicScrubber","prefabHash":755048589,"desc":"A portable scrubber does just what it sounds like: removes specific substances from the air. For instance, attaching a Filter (Carbon Dioxide) will pull Carbon Dioxide from the surrounding atmosphere. Note that the scrubber has room for one battery and two filters, which will double its operating speed. Neat. When it reaches an internal pressure of 8106kPA, an error signal will flash on the switch, indicating it needs to be emptied. Either vent it directly, or attach it to a pipe network via a Kit (Tank Connector) and a Wrench.","name":"Portable Air Scrubber"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Atmospherics"},"slots":[{"name":"Battery","typ":"Battery"},{"name":"Gas Filter","typ":"GasFilter"},{"name":"Gas Filter","typ":"GasFilter"}]},"DynamicSkeleton":{"prefab":{"prefabName":"DynamicSkeleton","prefabHash":106953348,"desc":"","name":"Skeleton"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Default"}},"ElectronicPrinterMod":{"prefab":{"prefabName":"ElectronicPrinterMod","prefabHash":-311170652,"desc":"Apply to an Electronics Printer with a Welding Torch or Arc Welder to upgrade for increased processing speed and more recipe options.","name":"Electronic Printer Mod"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Default"}},"ElevatorCarrage":{"prefab":{"prefabName":"ElevatorCarrage","prefabHash":-110788403,"desc":"","name":"Elevator"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Default"}},"EntityChick":{"prefab":{"prefabName":"EntityChick","prefabHash":1730165908,"desc":"Once a chick is hatched, it gets hungry. It will eat soybeans, corn, and wheat, and lay eggs. Some will be fertilized, producing further chickens. Some will not.","name":"Entity Chick"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Default"},"slots":[{"name":"Brain","typ":"Organ"}]},"EntityChickenBrown":{"prefab":{"prefabName":"EntityChickenBrown","prefabHash":334097180,"desc":"Like so many of its brethren, this is a chicken. A brown one. It will eat soybeans, corn, and wheat, and lay eggs. Some will be fertilized, producing further chickens. Some will not.","name":"Entity Chicken Brown"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Default"},"slots":[{"name":"Brain","typ":"Organ"}]},"EntityChickenWhite":{"prefab":{"prefabName":"EntityChickenWhite","prefabHash":1010807532,"desc":"It's a chicken, as white as moondust. It will eat soybeans, corn, and wheat, and lay eggs. Some will be fertilized, producing further chickens. Some will not.","name":"Entity Chicken White"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Default"},"slots":[{"name":"Brain","typ":"Organ"}]},"EntityRoosterBlack":{"prefab":{"prefabName":"EntityRoosterBlack","prefabHash":966959649,"desc":"This is a rooster. It is black. There is dignity in this.","name":"Entity Rooster Black"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Default"},"slots":[{"name":"Brain","typ":"Organ"}]},"EntityRoosterBrown":{"prefab":{"prefabName":"EntityRoosterBrown","prefabHash":-583103395,"desc":"The common brown rooster. Don't let it hear you say that.","name":"Entity Rooster Brown"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Default"},"slots":[{"name":"Brain","typ":"Organ"}]},"Fertilizer":{"prefab":{"prefabName":"Fertilizer","prefabHash":1517856652,"desc":"Fertilizer alters plant growth processes, and is created by the basic composter and the Advanced Composter using organic matter.\nFertilizer's affects depend on its ingredients:\n\n- Food increases PLANT YIELD up to two times\n- Decayed Food increases plant GROWTH SPEED up to two times\n- Biomass increases the NUMBER OF GROWTH CYCLES the fertilizer lasts for\n\nThe effect of these ingredients depends on their respective proportions in the composter when processing is activated. ","name":"Fertilizer"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"Plant","sortingClass":"Default"}},"FireArmSMG":{"prefab":{"prefabName":"FireArmSMG","prefabHash":-86315541,"desc":"0.Single\n1.Auto","name":"Fire Arm SMG"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Tools"},"slots":[{"name":"","typ":"Magazine"}]},"Flag_ODA_10m":{"prefab":{"prefabName":"Flag_ODA_10m","prefabHash":1845441951,"desc":"","name":"Flag (ODA 10m)"},"structure":{"smallGrid":true}},"Flag_ODA_4m":{"prefab":{"prefabName":"Flag_ODA_4m","prefabHash":1159126354,"desc":"","name":"Flag (ODA 4m)"},"structure":{"smallGrid":true}},"Flag_ODA_6m":{"prefab":{"prefabName":"Flag_ODA_6m","prefabHash":1998634960,"desc":"","name":"Flag (ODA 6m)"},"structure":{"smallGrid":true}},"Flag_ODA_8m":{"prefab":{"prefabName":"Flag_ODA_8m","prefabHash":-375156130,"desc":"","name":"Flag (ODA 8m)"},"structure":{"smallGrid":true}},"FlareGun":{"prefab":{"prefabName":"FlareGun","prefabHash":118685786,"desc":"","name":"Flare Gun"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Tool","sortingClass":"Tools"},"slots":[{"name":"Magazine","typ":"Flare"},{"name":"","typ":"Blocked"}]},"H2Combustor":{"prefab":{"prefabName":"H2Combustor","prefabHash":1840108251,"desc":"Adapted slightly from its original Recurso design, the Volatiles Combustor does exactly what its name suggests - it burns a mixture of volatiles and Oxygen to create water. Extremely useful in hot or arid environments, users need to be aware that the combustor outputs considerable waste heat. The device is also less than perfectly efficient, resulting in the autoignition of volatiles in the chamber, and the production of waste gases which must be dealt with.","name":"H2 Combustor"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{}},"logicTypes":{"Activate":"ReadWrite","Combustion":"Read","CombustionInput":"Read","CombustionOutput":"Read","Error":"Read","Lock":"ReadWrite","Maximum":"Read","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","Pressure":"Read","PressureInput":"Read","PressureOutput":"Read","Ratio":"Read","RatioCarbonDioxide":"Read","RatioCarbonDioxideInput":"Read","RatioCarbonDioxideOutput":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidCarbonDioxideInput":"Read","RatioLiquidCarbonDioxideOutput":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrogenInput":"Read","RatioLiquidNitrogenOutput":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidNitrousOxideInput":"Read","RatioLiquidNitrousOxideOutput":"Read","RatioLiquidOxygen":"Read","RatioLiquidOxygenInput":"Read","RatioLiquidOxygenOutput":"Read","RatioLiquidPollutant":"Read","RatioLiquidPollutantInput":"Read","RatioLiquidPollutantOutput":"Read","RatioLiquidVolatiles":"Read","RatioLiquidVolatilesInput":"Read","RatioLiquidVolatilesOutput":"Read","RatioNitrogen":"Read","RatioNitrogenInput":"Read","RatioNitrogenOutput":"Read","RatioNitrousOxide":"Read","RatioNitrousOxideInput":"Read","RatioNitrousOxideOutput":"Read","RatioOxygen":"Read","RatioOxygenInput":"Read","RatioOxygenOutput":"Read","RatioPollutant":"Read","RatioPollutantInput":"Read","RatioPollutantOutput":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioSteamInput":"Read","RatioSteamOutput":"Read","RatioVolatiles":"Read","RatioVolatilesInput":"Read","RatioVolatilesOutput":"Read","RatioWater":"Read","RatioWaterInput":"Read","RatioWaterOutput":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite","Temperature":"Read","TemperatureInput":"Read","TemperatureOutput":"Read","TotalMoles":"Read","TotalMolesInput":"Read","TotalMolesOutput":"Read"},"modes":{"0":"Idle","1":"Active"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":true},"slots":[{"name":"Programmable Chip","typ":"ProgrammableChip"}],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Pipe","role":"Input"},{"typ":"Pipe","role":"Output"},{"typ":"Power","role":"None"}],"devicePinsLength":2,"hasActivateState":true,"hasAtmosphere":true,"hasColorState":false,"hasLockState":true,"hasModeState":true,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"Handgun":{"prefab":{"prefabName":"Handgun","prefabHash":247238062,"desc":"","name":"Handgun"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Tools"},"slots":[{"name":"Magazine","typ":"Magazine"}]},"HandgunMagazine":{"prefab":{"prefabName":"HandgunMagazine","prefabHash":1254383185,"desc":"","name":"Handgun Magazine"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Magazine","sortingClass":"Default"}},"HumanSkull":{"prefab":{"prefabName":"HumanSkull","prefabHash":-857713709,"desc":"","name":"Human Skull"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Default"}},"ImGuiCircuitboardAirlockControl":{"prefab":{"prefabName":"ImGuiCircuitboardAirlockControl","prefabHash":-73796547,"desc":"","name":"Airlock (Experimental)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Circuitboard","sortingClass":"Default"}},"ItemActiveVent":{"prefab":{"prefabName":"ItemActiveVent","prefabHash":-842048328,"desc":"When constructed, this kit places an Active Vent on any support structure.","name":"Kit (Active Vent)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemAdhesiveInsulation":{"prefab":{"prefabName":"ItemAdhesiveInsulation","prefabHash":1871048978,"desc":"","name":"Adhesive Insulation"},"item":{"consumable":false,"ingredient":false,"maxQuantity":20,"slotClass":"Tool","sortingClass":"Tools"}},"ItemAdvancedTablet":{"prefab":{"prefabName":"ItemAdvancedTablet","prefabHash":1722785341,"desc":"The advanced Xigo Padi 2 tablet is an improved version of the basic Handheld Tablet, boasting two cartridge slots. The Padi 2 accepts Atmos Analyzer, Tracker, Medical Analyzer, Ore Scanner, eReader, and various other cartridges.\n\t \n\t With a Integrated Circuit (IC10) in the Programmable Chip, you can access variable slots on the carrying human using the device numbers (d0, d1, etc...), so long as the item can be access via logic, such as the Hardsuit.Connects to Logic Transmitter","name":"Advanced Tablet"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Tool","sortingClass":"Tools"},"logic":{"logicSlotTypes":{"0":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"1":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"2":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"3":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"}},"logicTypes":{"Error":"Read","Mode":"ReadWrite","On":"ReadWrite","Power":"Read","ReferenceId":"Read","SoundAlert":"ReadWrite","Volume":"ReadWrite"},"modes":{"0":"Mode0","1":"Mode1"},"transmissionReceiver":false,"wirelessLogic":true,"circuitHolder":true},"slots":[{"name":"Battery","typ":"Battery"},{"name":"Cartridge","typ":"Cartridge"},{"name":"Cartridge1","typ":"Cartridge"},{"name":"Programmable Chip","typ":"ProgrammableChip"}]},"ItemAlienMushroom":{"prefab":{"prefabName":"ItemAlienMushroom","prefabHash":176446172,"desc":"","name":"Alien Mushroom"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"Plant","sortingClass":"Default"}},"ItemAmmoBox":{"prefab":{"prefabName":"ItemAmmoBox","prefabHash":-9559091,"desc":"","name":"Ammo Box"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Default"}},"ItemAngleGrinder":{"prefab":{"prefabName":"ItemAngleGrinder","prefabHash":201215010,"desc":"Angles-be-gone with the trusty angle grinder.","name":"Angle Grinder"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Tool","sortingClass":"Tools"},"logic":{"logicSlotTypes":{"0":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"}},"logicTypes":{"Activate":"ReadWrite","Power":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"ItemArcWelder":{"prefab":{"prefabName":"ItemArcWelder","prefabHash":1385062886,"desc":"","name":"Arc Welder"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Tool","sortingClass":"Tools"},"logic":{"logicSlotTypes":{"0":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"}},"logicTypes":{"Activate":"ReadWrite","Power":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"ItemAreaPowerControl":{"prefab":{"prefabName":"ItemAreaPowerControl","prefabHash":1757673317,"desc":"This kit places a Area Power Control (APC) on any support structure. The APC kit has two options, selecting which direction you would like the APC power to flow.","name":"Kit (Power Controller)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemAstroloyIngot":{"prefab":{"prefabName":"ItemAstroloyIngot","prefabHash":412924554,"desc":"Due to the original Stationeer manual collapsing into a singularity, Astroloy recipes have been warped by spacetime contortions. The correct Astroloy recipe, as memorialized for all time in a series of charming plastic icons, is 1.0 Copper, 1.0 Cobalt, and 2.0 Steel.","name":"Ingot (Astroloy)"},"item":{"consumable":true,"ingredient":true,"maxQuantity":500,"reagents":{"Astroloy":1.0},"slotClass":"Ingot","sortingClass":"Resources"}},"ItemAstroloySheets":{"prefab":{"prefabName":"ItemAstroloySheets","prefabHash":-1662476145,"desc":"","name":"Astroloy Sheets"},"item":{"consumable":false,"ingredient":false,"maxQuantity":50,"slotClass":"None","sortingClass":"Resources"}},"ItemAuthoringTool":{"prefab":{"prefabName":"ItemAuthoringTool","prefabHash":789015045,"desc":"","name":"Authoring Tool"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Tool","sortingClass":"Tools"}},"ItemAuthoringToolRocketNetwork":{"prefab":{"prefabName":"ItemAuthoringToolRocketNetwork","prefabHash":-1731627004,"desc":"","name":""},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Tool","sortingClass":"Tools"}},"ItemBasketBall":{"prefab":{"prefabName":"ItemBasketBall","prefabHash":-1262580790,"desc":"","name":"Basket Ball"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Default"}},"ItemBatteryCell":{"prefab":{"prefabName":"ItemBatteryCell","prefabHash":700133157,"desc":"Harnessing a design pioneered in the early 21st century, the small battery cell is the Stationeer's basic unit of portable electrical power. While it lacks the charge of a Battery Cell (Large) or Battery Cell (Nuclear), it has the humble advantage of being fabricated from basic resources.\n\nPOWER OUTPUT\nThe small cell stores up to 36000 watts of power.","name":"Battery Cell (Small)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Battery","sortingClass":"Default"},"logic":{"logicSlotTypes":{},"logicTypes":{"Mode":"ReadWrite","ReferenceId":"Read"},"modes":{"0":"Empty","1":"Critical","2":"VeryLow","3":"Low","4":"Medium","5":"High","6":"Full"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[]},"ItemBatteryCellLarge":{"prefab":{"prefabName":"ItemBatteryCellLarge","prefabHash":-459827268,"desc":"First mass-produced by Xigo in 2155 on the basis of a unattributed prototype, the classic silicon anode solid-state design extends its optimum temperature range.\n\nPOWER OUTPUT\nThe large power cell can discharge 288kW of power. \n","name":"Battery Cell (Large)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Battery","sortingClass":"Default"},"logic":{"logicSlotTypes":{},"logicTypes":{"Mode":"ReadWrite","ReferenceId":"Read"},"modes":{"0":"Empty","1":"Critical","2":"VeryLow","3":"Low","4":"Medium","5":"High","6":"Full"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[]},"ItemBatteryCellNuclear":{"prefab":{"prefabName":"ItemBatteryCellNuclear","prefabHash":544617306,"desc":"Illegal on Earth since the Chengdu Event, Norsec nuclear power cells found a new and drastically less safety-conscious market offworld.\n\nPOWER OUTPUT\nPushing the power-weight balance to its limits, the 'nuke' has a 2.3 megawatt charge (2304000W), reflecting its reliance on exotic superalloys.","name":"Battery Cell (Nuclear)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Battery","sortingClass":"Default"},"logic":{"logicSlotTypes":{},"logicTypes":{"Mode":"ReadWrite","ReferenceId":"Read"},"modes":{"0":"Empty","1":"Critical","2":"VeryLow","3":"Low","4":"Medium","5":"High","6":"Full"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[]},"ItemBatteryCharger":{"prefab":{"prefabName":"ItemBatteryCharger","prefabHash":-1866880307,"desc":"This kit produces a 5-slot Kit (Battery Charger).","name":"Kit (Battery Charger)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemBatteryChargerSmall":{"prefab":{"prefabName":"ItemBatteryChargerSmall","prefabHash":1008295833,"desc":"","name":"Battery Charger Small"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Default"}},"ItemBeacon":{"prefab":{"prefabName":"ItemBeacon","prefabHash":-869869491,"desc":"","name":"Tracking Beacon"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Tools"},"logic":{"logicSlotTypes":{"0":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"}},"logicTypes":{"Error":"Read","On":"ReadWrite","Power":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"ItemBiomass":{"prefab":{"prefabName":"ItemBiomass","prefabHash":-831480639,"desc":"Diced organic material that is returned when food and organic matter is passed through the Recycler and Centrifuge. Can be burned in a Furnace into Charcoal for use in the Generator (Solid Fuel).","name":"Biomass"},"item":{"consumable":false,"ingredient":true,"maxQuantity":100,"reagents":{"Biomass":1.0},"slotClass":"Ore","sortingClass":"Resources"}},"ItemBreadLoaf":{"prefab":{"prefabName":"ItemBreadLoaf","prefabHash":893514943,"desc":"","name":"Bread Loaf"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Food"}},"ItemCableAnalyser":{"prefab":{"prefabName":"ItemCableAnalyser","prefabHash":-1792787349,"desc":"","name":"Kit (Cable Analyzer)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemCableCoil":{"prefab":{"prefabName":"ItemCableCoil","prefabHash":-466050668,"desc":"Bodily metaphors are tired and anthropocentric, but it was Frida Stuppen, the first ODA Administrator, who said, 'Let the cabling be as the nerve and the vessel, transmitting power and data alike through systems we forge among the stars.' Later commentators suggested that she was simply putting a romantic gloss on a piece of dubious economy. Whatever the case, standard cabling is where any Stationeer's network begins. \nNormal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy).","name":"Cable Coil"},"item":{"consumable":false,"ingredient":false,"maxQuantity":50,"slotClass":"Tool","sortingClass":"Resources"}},"ItemCableCoilHeavy":{"prefab":{"prefabName":"ItemCableCoilHeavy","prefabHash":2060134443,"desc":"Use heavy cable coil for power systems with large draws. Unlike , which can only safely conduct 5kW, heavy cables can transmit up to 100kW.","name":"Cable Coil (Heavy)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":50,"slotClass":"Tool","sortingClass":"Resources"}},"ItemCableFuse":{"prefab":{"prefabName":"ItemCableFuse","prefabHash":195442047,"desc":"","name":"Kit (Cable Fuses)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Resources"}},"ItemCannedCondensedMilk":{"prefab":{"prefabName":"ItemCannedCondensedMilk","prefabHash":-2104175091,"desc":"Made in an Advanced Packaging Machine or Basic Packaging Machine, using Condensed Milk and an Empty Can, canned condensed milk is fairly high in nutrition, and does not decay.","name":"Canned Condensed Milk"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Food"}},"ItemCannedEdamame":{"prefab":{"prefabName":"ItemCannedEdamame","prefabHash":-999714082,"desc":"Made in an Advanced Packaging Machine or Basic Packaging Machine, using Cooked Soybean and an Empty Can, canned edamame beans are fairly high in nutrition, and do not decay.","name":"Canned Edamame"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Food"}},"ItemCannedMushroom":{"prefab":{"prefabName":"ItemCannedMushroom","prefabHash":-1344601965,"desc":"Made in an Advanced Packaging Machine or Basic Packaging Machine, using Cooked Mushroom and a Empty Can, delicious mushroom soup is fairly high in nutrition, and does not decay.","name":"Canned Mushroom"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Food"}},"ItemCannedPowderedEggs":{"prefab":{"prefabName":"ItemCannedPowderedEggs","prefabHash":1161510063,"desc":"Made in an Advanced Packaging Machine or Basic Packaging Machine, using Powdered Eggs and an Empty Can, canned powdered eggs are an exciting, dynamic food that's fairly high in nutrition, and does not decay.","name":"Canned Powdered Eggs"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Food"}},"ItemCannedRicePudding":{"prefab":{"prefabName":"ItemCannedRicePudding","prefabHash":-1185552595,"desc":"Made in an Advanced Packaging Machine or Basic Packaging Machine, using Cooked Rice and an Empty Can, canned rice pudding is a sweet treat, fairly high in nutrition, and does not decay.","name":"Canned Rice Pudding"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Food"}},"ItemCerealBar":{"prefab":{"prefabName":"ItemCerealBar","prefabHash":791746840,"desc":"Sustains, without decay. If only all our relationships were so well balanced.","name":"Cereal Bar"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Food"}},"ItemCharcoal":{"prefab":{"prefabName":"ItemCharcoal","prefabHash":252561409,"desc":"Charcoal is a lightweight, black carbon residue produced by heating Biomass in a Arc Furnace. It contains less energy potential than Ore (Coal), but can be used as a basic fuel source. Charcoal can also be substituted for coal in alloy recipes.","name":"Charcoal"},"item":{"consumable":false,"ingredient":true,"maxQuantity":200,"reagents":{"Carbon":1.0},"slotClass":"Ore","sortingClass":"Ores"}},"ItemChemLightBlue":{"prefab":{"prefabName":"ItemChemLightBlue","prefabHash":-772542081,"desc":"A safe and slightly rave-some source of blue light. Snap to activate.","name":"Chem Light (Blue)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Default"}},"ItemChemLightGreen":{"prefab":{"prefabName":"ItemChemLightGreen","prefabHash":-597479390,"desc":"Enliven the dreariest, airless rock with this glowy green light. Snap to activate.","name":"Chem Light (Green)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Default"}},"ItemChemLightRed":{"prefab":{"prefabName":"ItemChemLightRed","prefabHash":-525810132,"desc":"A red glowstick. Snap to activate. Then reach for the lasers.","name":"Chem Light (Red)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Default"}},"ItemChemLightWhite":{"prefab":{"prefabName":"ItemChemLightWhite","prefabHash":1312166823,"desc":"Snap the glowstick to activate a pale radiance that keeps the darkness at bay.","name":"Chem Light (White)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Default"}},"ItemChemLightYellow":{"prefab":{"prefabName":"ItemChemLightYellow","prefabHash":1224819963,"desc":"Dispel the darkness with this yellow glowstick.","name":"Chem Light (Yellow)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Default"}},"ItemChocolateBar":{"prefab":{"prefabName":"ItemChocolateBar","prefabHash":234601764,"desc":"","name":"Chocolate Bar"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Food"}},"ItemChocolateCake":{"prefab":{"prefabName":"ItemChocolateCake","prefabHash":-261575861,"desc":"","name":"Chocolate Cake"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Food"}},"ItemChocolateCerealBar":{"prefab":{"prefabName":"ItemChocolateCerealBar","prefabHash":860793245,"desc":"","name":"Chocolate Cereal Bar"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Food"}},"ItemCoalOre":{"prefab":{"prefabName":"ItemCoalOre","prefabHash":1724793494,"desc":"Humanity wouldn't have got to space without humble, combustible coal. Burn it in a , smelt it in the Furnace to create alloys, or use it in the Reagent Processor to make Spray Paint (Black).","name":"Ore (Coal)"},"item":{"consumable":false,"ingredient":true,"maxQuantity":50,"reagents":{"Hydrocarbon":1.0},"slotClass":"Ore","sortingClass":"Ores"}},"ItemCobaltOre":{"prefab":{"prefabName":"ItemCobaltOre","prefabHash":-983091249,"desc":"Cobalt is a chemical element with the symbol \"Co\" and is typically found in only small deposits. Cobalt is a rare substance, but used create the Heal Pill and several alloys.","name":"Ore (Cobalt)"},"item":{"consumable":false,"ingredient":true,"maxQuantity":50,"reagents":{"Cobalt":1.0},"slotClass":"Ore","sortingClass":"Ores"}},"ItemCocoaPowder":{"prefab":{"prefabName":"ItemCocoaPowder","prefabHash":457286516,"desc":"","name":"Cocoa Powder"},"item":{"consumable":true,"ingredient":true,"maxQuantity":20,"reagents":{"Cocoa":1.0},"slotClass":"None","sortingClass":"Resources"}},"ItemCocoaTree":{"prefab":{"prefabName":"ItemCocoaTree","prefabHash":680051921,"desc":"","name":"Cocoa"},"item":{"consumable":false,"ingredient":true,"maxQuantity":20,"reagents":{"Cocoa":1.0},"slotClass":"Plant","sortingClass":"Resources"}},"ItemCoffeeMug":{"prefab":{"prefabName":"ItemCoffeeMug","prefabHash":1800622698,"desc":"","name":"Coffee Mug"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Default"}},"ItemConstantanIngot":{"prefab":{"prefabName":"ItemConstantanIngot","prefabHash":1058547521,"desc":"","name":"Ingot (Constantan)"},"item":{"consumable":true,"ingredient":true,"maxQuantity":500,"reagents":{"Constantan":1.0},"slotClass":"Ingot","sortingClass":"Resources"}},"ItemCookedCondensedMilk":{"prefab":{"prefabName":"ItemCookedCondensedMilk","prefabHash":1715917521,"desc":"A high-nutrient cooked food, which can be canned.","name":"Condensed Milk"},"item":{"consumable":false,"ingredient":true,"maxQuantity":10,"reagents":{"Milk":100.0},"slotClass":"None","sortingClass":"Food"}},"ItemCookedCorn":{"prefab":{"prefabName":"ItemCookedCorn","prefabHash":1344773148,"desc":"A high-nutrient cooked food, which can be canned.","name":"Cooked Corn"},"item":{"consumable":false,"ingredient":true,"maxQuantity":10,"reagents":{"Corn":1.0},"slotClass":"None","sortingClass":"Food"}},"ItemCookedMushroom":{"prefab":{"prefabName":"ItemCookedMushroom","prefabHash":-1076892658,"desc":"A high-nutrient cooked food, which can be canned.","name":"Cooked Mushroom"},"item":{"consumable":false,"ingredient":true,"maxQuantity":10,"reagents":{"Mushroom":1.0},"slotClass":"None","sortingClass":"Food"}},"ItemCookedPowderedEggs":{"prefab":{"prefabName":"ItemCookedPowderedEggs","prefabHash":-1712264413,"desc":"A high-nutrient cooked food, which can be canned.","name":"Powdered Eggs"},"item":{"consumable":false,"ingredient":true,"maxQuantity":10,"reagents":{"Egg":1.0},"slotClass":"None","sortingClass":"Food"}},"ItemCookedPumpkin":{"prefab":{"prefabName":"ItemCookedPumpkin","prefabHash":1849281546,"desc":"A high-nutrient cooked food, which can be canned.","name":"Cooked Pumpkin"},"item":{"consumable":false,"ingredient":true,"maxQuantity":10,"reagents":{"Pumpkin":1.0},"slotClass":"None","sortingClass":"Food"}},"ItemCookedRice":{"prefab":{"prefabName":"ItemCookedRice","prefabHash":2013539020,"desc":"A high-nutrient cooked food, which can be canned.","name":"Cooked Rice"},"item":{"consumable":false,"ingredient":true,"maxQuantity":10,"reagents":{"Rice":1.0},"slotClass":"None","sortingClass":"Food"}},"ItemCookedSoybean":{"prefab":{"prefabName":"ItemCookedSoybean","prefabHash":1353449022,"desc":"A high-nutrient cooked food, which can be canned.","name":"Cooked Soybean"},"item":{"consumable":false,"ingredient":true,"maxQuantity":10,"reagents":{"Soy":5.0},"slotClass":"None","sortingClass":"Food"}},"ItemCookedTomato":{"prefab":{"prefabName":"ItemCookedTomato","prefabHash":-709086714,"desc":"A high-nutrient cooked food, which can be canned.","name":"Cooked Tomato"},"item":{"consumable":false,"ingredient":true,"maxQuantity":10,"reagents":{"Tomato":1.0},"slotClass":"None","sortingClass":"Food"}},"ItemCopperIngot":{"prefab":{"prefabName":"ItemCopperIngot","prefabHash":-404336834,"desc":"Copper ingots are created by smelting Ore (Copper) in the Furnace and Arc Furnace, and used to create a variety of items.","name":"Ingot (Copper)"},"item":{"consumable":true,"ingredient":true,"maxQuantity":500,"reagents":{"Copper":1.0},"slotClass":"Ingot","sortingClass":"Resources"}},"ItemCopperOre":{"prefab":{"prefabName":"ItemCopperOre","prefabHash":-707307845,"desc":"Copper is a chemical element with the symbol \"Cu\". This common and highly conductive material is found on most astronomical bodies and is used in a variety of manufacturing processes including electronic components, alloys, and wires.","name":"Ore (Copper)"},"item":{"consumable":false,"ingredient":true,"maxQuantity":50,"reagents":{"Copper":1.0},"slotClass":"Ore","sortingClass":"Ores"}},"ItemCorn":{"prefab":{"prefabName":"ItemCorn","prefabHash":258339687,"desc":"A long growth time staple crop. Its low requirement for darkness allows for accelerated growing if provided with extra light.","name":"Corn"},"item":{"consumable":false,"ingredient":true,"maxQuantity":20,"reagents":{"Corn":1.0},"slotClass":"Plant","sortingClass":"Resources"}},"ItemCornSoup":{"prefab":{"prefabName":"ItemCornSoup","prefabHash":545034114,"desc":"Made using Cooked Corn and an Empty Can in a Basic Packaging Machine or Advanced Packaging Machine. Faily high in nutrition, canned food does not decay.","name":"Corn Soup"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Food"}},"ItemCreditCard":{"prefab":{"prefabName":"ItemCreditCard","prefabHash":-1756772618,"desc":"","name":"Credit Card"},"item":{"consumable":false,"ingredient":false,"maxQuantity":100000,"slotClass":"CreditCard","sortingClass":"Tools"}},"ItemCropHay":{"prefab":{"prefabName":"ItemCropHay","prefabHash":215486157,"desc":"","name":"Hay"},"item":{"consumable":false,"ingredient":false,"maxQuantity":100,"slotClass":"None","sortingClass":"Default"}},"ItemCrowbar":{"prefab":{"prefabName":"ItemCrowbar","prefabHash":856108234,"desc":"Recurso's entry-level crowbar is useful in a variety of everyday Stationeer settings, from opening Area Power Controls and unpowered Airlocks, to splatting pan-dimensional headcrabs, should the need arise.","name":"Crowbar"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Tool","sortingClass":"Tools"}},"ItemDataDisk":{"prefab":{"prefabName":"ItemDataDisk","prefabHash":1005843700,"desc":"","name":"Data Disk"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"DataDisk","sortingClass":"Default"}},"ItemDirtCanister":{"prefab":{"prefabName":"ItemDirtCanister","prefabHash":902565329,"desc":"A container the will fill with Dirt when using a Mining Drill when placed inside a Mining Belt. You can then use this Dirt Canister with the Terrain Manipulator to adjust the terrain to suit your needs.","name":"Dirt Canister"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Ore","sortingClass":"Default"}},"ItemDirtyOre":{"prefab":{"prefabName":"ItemDirtyOre","prefabHash":-1234745580,"desc":"Ore mined from bedrock via the Deep Miner which then can be used in the Centrifuge, or Combustion Centrifuge. Once processed, it produces ore in a ratio similar to the average found on the planet's surface. ","name":"Dirty Ore"},"item":{"consumable":false,"ingredient":false,"maxQuantity":50,"slotClass":"None","sortingClass":"Ores"}},"ItemDisposableBatteryCharger":{"prefab":{"prefabName":"ItemDisposableBatteryCharger","prefabHash":-2124435700,"desc":"Consumable battery the recharges your suit battery. If used on a HEM-Droid it will recharge the HEM-Droids internal battery.","name":"Disposable Battery Charger"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Default"}},"ItemDrill":{"prefab":{"prefabName":"ItemDrill","prefabHash":2009673399,"desc":"The ExMin Off-whirled Hand Drill has been a companion to Stationeers for decades. Essential for assembling and deconstructing various items and structures, regardless of gravity, pressure or temperature.","name":"Hand Drill"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Tool","sortingClass":"Tools"},"logic":{"logicSlotTypes":{"0":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"}},"logicTypes":{"Activate":"ReadWrite","Power":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"ItemDuctTape":{"prefab":{"prefabName":"ItemDuctTape","prefabHash":-1943134693,"desc":"In the distant past, one of Earth's great champions taught a generation of 'Fix-It People' that duct tape was the answer to any problem. Stationeers have demonstrated that this is truth holds strong, so long as the problem is a damaged Eva Suit, Jetpack Basic, Space Helmet, or even a Solar Panel.\nTo use on yourself: put duct tape in your active hand, hold RIGHT MOUSE BUTTON to automatically repair damage.","name":"Duct Tape"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Tool","sortingClass":"Tools"}},"ItemDynamicAirCon":{"prefab":{"prefabName":"ItemDynamicAirCon","prefabHash":1072914031,"desc":"","name":"Kit (Portable Air Conditioner)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemDynamicScrubber":{"prefab":{"prefabName":"ItemDynamicScrubber","prefabHash":-971920158,"desc":"","name":"Kit (Portable Scrubber)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemEggCarton":{"prefab":{"prefabName":"ItemEggCarton","prefabHash":-524289310,"desc":"Within, eggs reside in mysterious, marmoreal silence.","name":"Egg Carton"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Storage"},"slots":[{"name":"","typ":"Egg"},{"name":"","typ":"Egg"},{"name":"","typ":"Egg"},{"name":"","typ":"Egg"},{"name":"","typ":"Egg"},{"name":"","typ":"Egg"}]},"ItemElectronicParts":{"prefab":{"prefabName":"ItemElectronicParts","prefabHash":731250882,"desc":"","name":"Electronic Parts"},"item":{"consumable":false,"ingredient":false,"maxQuantity":20,"slotClass":"None","sortingClass":"Resources"}},"ItemElectrumIngot":{"prefab":{"prefabName":"ItemElectrumIngot","prefabHash":502280180,"desc":"","name":"Ingot (Electrum)"},"item":{"consumable":true,"ingredient":true,"maxQuantity":500,"reagents":{"Electrum":1.0},"slotClass":"Ingot","sortingClass":"Resources"}},"ItemEmergencyAngleGrinder":{"prefab":{"prefabName":"ItemEmergencyAngleGrinder","prefabHash":-351438780,"desc":"","name":"Emergency Angle Grinder"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Tool","sortingClass":"Tools"},"logic":{"logicSlotTypes":{"0":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"}},"logicTypes":{"Activate":"ReadWrite","Power":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"ItemEmergencyArcWelder":{"prefab":{"prefabName":"ItemEmergencyArcWelder","prefabHash":-1056029600,"desc":"","name":"Emergency Arc Welder"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Tool","sortingClass":"Tools"},"logic":{"logicSlotTypes":{"0":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"}},"logicTypes":{"Activate":"ReadWrite","Power":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"ItemEmergencyCrowbar":{"prefab":{"prefabName":"ItemEmergencyCrowbar","prefabHash":976699731,"desc":"","name":"Emergency Crowbar"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Tool","sortingClass":"Tools"}},"ItemEmergencyDrill":{"prefab":{"prefabName":"ItemEmergencyDrill","prefabHash":-2052458905,"desc":"","name":"Emergency Drill"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Tool","sortingClass":"Tools"},"logic":{"logicSlotTypes":{"0":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"}},"logicTypes":{"Activate":"ReadWrite","Power":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"ItemEmergencyEvaSuit":{"prefab":{"prefabName":"ItemEmergencyEvaSuit","prefabHash":1791306431,"desc":"","name":"Emergency Eva Suit"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Suit","sortingClass":"Clothing"},"slots":[{"name":"Air Tank","typ":"GasCanister"},{"name":"Waste Tank","typ":"GasCanister"},{"name":"Life Support","typ":"Battery"},{"name":"Filter","typ":"GasFilter"},{"name":"Filter","typ":"GasFilter"},{"name":"Filter","typ":"GasFilter"}]},"ItemEmergencyPickaxe":{"prefab":{"prefabName":"ItemEmergencyPickaxe","prefabHash":-1061510408,"desc":"","name":"Emergency Pickaxe"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Tool","sortingClass":"Tools"}},"ItemEmergencyScrewdriver":{"prefab":{"prefabName":"ItemEmergencyScrewdriver","prefabHash":266099983,"desc":"","name":"Emergency Screwdriver"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Tool","sortingClass":"Tools"}},"ItemEmergencySpaceHelmet":{"prefab":{"prefabName":"ItemEmergencySpaceHelmet","prefabHash":205916793,"desc":"","name":"Emergency Space Helmet"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Helmet","sortingClass":"Clothing"},"logic":{"logicSlotTypes":{},"logicTypes":{"Combustion":"Read","Flush":"Write","Lock":"ReadWrite","On":"ReadWrite","Open":"ReadWrite","Power":"Read","Pressure":"Read","RatioCarbonDioxide":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioVolatiles":"Read","RatioWater":"Read","ReferenceId":"Read","SoundAlert":"ReadWrite","Temperature":"Read","TotalMoles":"Read","Volume":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[]},"ItemEmergencyToolBelt":{"prefab":{"prefabName":"ItemEmergencyToolBelt","prefabHash":1661941301,"desc":"","name":"Emergency Tool Belt"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Belt","sortingClass":"Clothing"},"slots":[{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"}]},"ItemEmergencyWireCutters":{"prefab":{"prefabName":"ItemEmergencyWireCutters","prefabHash":2102803952,"desc":"","name":"Emergency Wire Cutters"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Tool","sortingClass":"Tools"}},"ItemEmergencyWrench":{"prefab":{"prefabName":"ItemEmergencyWrench","prefabHash":162553030,"desc":"","name":"Emergency Wrench"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Tool","sortingClass":"Tools"}},"ItemEmptyCan":{"prefab":{"prefabName":"ItemEmptyCan","prefabHash":1013818348,"desc":"Used for making soups when combined with food in the Basic Packaging Machine or Advanced Packaging Machine. Fairly high in nutrition, canned food does not decay.","name":"Empty Can"},"item":{"consumable":false,"ingredient":true,"maxQuantity":10,"reagents":{"Steel":1.0},"slotClass":"None","sortingClass":"Default"}},"ItemEvaSuit":{"prefab":{"prefabName":"ItemEvaSuit","prefabHash":1677018918,"desc":"The EVA suit is the basic suit Stationeers need to survive in the inhospitable environment of space. For more information on EVA suits, consult the EVA suit guide.","name":"Eva Suit"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Suit","sortingClass":"Clothing"},"slots":[{"name":"Air Tank","typ":"GasCanister"},{"name":"Waste Tank","typ":"GasCanister"},{"name":"Life Support","typ":"Battery"},{"name":"Filter","typ":"GasFilter"},{"name":"Filter","typ":"GasFilter"},{"name":"Filter","typ":"GasFilter"}]},"ItemExplosive":{"prefab":{"prefabName":"ItemExplosive","prefabHash":235361649,"desc":"","name":"Remote Explosive"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Default"}},"ItemFern":{"prefab":{"prefabName":"ItemFern","prefabHash":892110467,"desc":"There was a time, when Stationeers had to make Fenoxitone Powder using the Reagent Processor. Recent advances in technology allow you to use equivalent quantities of fern directly in recipes.","name":"Fern"},"item":{"consumable":false,"ingredient":true,"maxQuantity":100,"reagents":{"Fenoxitone":1.0},"slotClass":"Plant","sortingClass":"Resources"}},"ItemFertilizedEgg":{"prefab":{"prefabName":"ItemFertilizedEgg","prefabHash":-383972371,"desc":"To hatch it requires an incubation temperature of between 35 and 45 degrees Celsius and will hatch into a Chick. If the egg is exposed to tepratures below 10 degrees it will no longer be viable.","name":"Egg"},"item":{"consumable":false,"ingredient":true,"maxQuantity":1,"reagents":{"Egg":1.0},"slotClass":"Egg","sortingClass":"Resources"}},"ItemFilterFern":{"prefab":{"prefabName":"ItemFilterFern","prefabHash":266654416,"desc":"A fern adapted by Agrizeroto process a much greater volume of Carbon Dioxide into Oxygen than an average plant.","name":"Darga Fern"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"Plant","sortingClass":"Resources"}},"ItemFlagSmall":{"prefab":{"prefabName":"ItemFlagSmall","prefabHash":2011191088,"desc":"","name":"Kit (Small Flag)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemFlashingLight":{"prefab":{"prefabName":"ItemFlashingLight","prefabHash":-2107840748,"desc":"","name":"Kit (Flashing Light)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemFlashlight":{"prefab":{"prefabName":"ItemFlashlight","prefabHash":-838472102,"desc":"A flashlight with a narrow and wide beam options.","name":"Flashlight"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Tool","sortingClass":"Tools"},"logic":{"logicSlotTypes":{"0":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"}},"logicTypes":{"Mode":"ReadWrite","On":"ReadWrite","Power":"Read","ReferenceId":"Read"},"modes":{"0":"Low Power","1":"High Power"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"ItemFlour":{"prefab":{"prefabName":"ItemFlour","prefabHash":-665995854,"desc":"Pulverized Wheat, a key ingredient in many foods created by the Microwave and the Kit (Automated Oven).","name":"Flour"},"item":{"consumable":true,"ingredient":true,"maxQuantity":500,"reagents":{"Flour":50.0},"slotClass":"None","sortingClass":"Resources"}},"ItemFlowerBlue":{"prefab":{"prefabName":"ItemFlowerBlue","prefabHash":-1573623434,"desc":"","name":"Flower (Blue)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":100,"slotClass":"Plant","sortingClass":"Resources"}},"ItemFlowerGreen":{"prefab":{"prefabName":"ItemFlowerGreen","prefabHash":-1513337058,"desc":"","name":"Flower (Green)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":100,"slotClass":"Plant","sortingClass":"Resources"}},"ItemFlowerOrange":{"prefab":{"prefabName":"ItemFlowerOrange","prefabHash":-1411986716,"desc":"","name":"Flower (Orange)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":100,"slotClass":"Plant","sortingClass":"Resources"}},"ItemFlowerRed":{"prefab":{"prefabName":"ItemFlowerRed","prefabHash":-81376085,"desc":"","name":"Flower (Red)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":100,"slotClass":"Plant","sortingClass":"Resources"}},"ItemFlowerYellow":{"prefab":{"prefabName":"ItemFlowerYellow","prefabHash":1712822019,"desc":"","name":"Flower (Yellow)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":100,"slotClass":"Plant","sortingClass":"Resources"}},"ItemFrenchFries":{"prefab":{"prefabName":"ItemFrenchFries","prefabHash":-57608687,"desc":"Because space would suck without 'em.","name":"Canned French Fries"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Food"}},"ItemFries":{"prefab":{"prefabName":"ItemFries","prefabHash":1371786091,"desc":"","name":"French Fries"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Food"}},"ItemGasCanisterCarbonDioxide":{"prefab":{"prefabName":"ItemGasCanisterCarbonDioxide","prefabHash":-767685874,"desc":"","name":"Canister (CO2)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"GasCanister","sortingClass":"Atmospherics"}},"ItemGasCanisterEmpty":{"prefab":{"prefabName":"ItemGasCanisterEmpty","prefabHash":42280099,"desc":"","name":"Canister"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"GasCanister","sortingClass":"Atmospherics"}},"ItemGasCanisterFuel":{"prefab":{"prefabName":"ItemGasCanisterFuel","prefabHash":-1014695176,"desc":"","name":"Canister (Fuel)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"GasCanister","sortingClass":"Atmospherics"}},"ItemGasCanisterNitrogen":{"prefab":{"prefabName":"ItemGasCanisterNitrogen","prefabHash":2145068424,"desc":"","name":"Canister (Nitrogen)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"GasCanister","sortingClass":"Atmospherics"}},"ItemGasCanisterNitrousOxide":{"prefab":{"prefabName":"ItemGasCanisterNitrousOxide","prefabHash":-1712153401,"desc":"","name":"Gas Canister (Sleeping)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"GasCanister","sortingClass":"Atmospherics"}},"ItemGasCanisterOxygen":{"prefab":{"prefabName":"ItemGasCanisterOxygen","prefabHash":-1152261938,"desc":"","name":"Canister (Oxygen)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"GasCanister","sortingClass":"Atmospherics"}},"ItemGasCanisterPollutants":{"prefab":{"prefabName":"ItemGasCanisterPollutants","prefabHash":-1552586384,"desc":"","name":"Canister (Pollutants)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"GasCanister","sortingClass":"Atmospherics"}},"ItemGasCanisterSmart":{"prefab":{"prefabName":"ItemGasCanisterSmart","prefabHash":-668314371,"desc":"0.Mode0\n1.Mode1","name":"Gas Canister (Smart)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"GasCanister","sortingClass":"Atmospherics"}},"ItemGasCanisterVolatiles":{"prefab":{"prefabName":"ItemGasCanisterVolatiles","prefabHash":-472094806,"desc":"","name":"Canister (Volatiles)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"GasCanister","sortingClass":"Atmospherics"}},"ItemGasCanisterWater":{"prefab":{"prefabName":"ItemGasCanisterWater","prefabHash":-1854861891,"desc":"","name":"Liquid Canister (Water)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"LiquidCanister","sortingClass":"Atmospherics"}},"ItemGasFilterCarbonDioxide":{"prefab":{"prefabName":"ItemGasFilterCarbonDioxide","prefabHash":1635000764,"desc":"Given humanity's obsession with exhaling Carbon Dioxide, all Stationeers are issued two basic Sinotai Carbon Dioxide Gas Filter as part of their standard deployment kit (SDK). These filters allow passage of Carbon Dioxide into the suit's waste Canister, but are also critical components of the Portable Air Scrubber and the Filtration. The Medium Filter (Carbon Dioxide) and Heavy Filter (Carbon Dioxide) are also available.","name":"Filter (Carbon Dioxide)"},"item":{"consumable":false,"filterType":"CarbonDioxide","ingredient":false,"maxQuantity":100,"slotClass":"GasFilter","sortingClass":"Resources"}},"ItemGasFilterCarbonDioxideInfinite":{"prefab":{"prefabName":"ItemGasFilterCarbonDioxideInfinite","prefabHash":-185568964,"desc":"A filter that selectively targets Carbon Dioxide. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle.","name":"Catalytic Filter (Carbon Dioxide)"},"item":{"consumable":false,"filterType":"CarbonDioxide","ingredient":false,"maxQuantity":100,"slotClass":"GasFilter","sortingClass":"Resources"}},"ItemGasFilterCarbonDioxideL":{"prefab":{"prefabName":"ItemGasFilterCarbonDioxideL","prefabHash":1876847024,"desc":"","name":"Heavy Filter (Carbon Dioxide)"},"item":{"consumable":false,"filterType":"CarbonDioxide","ingredient":false,"maxQuantity":100,"slotClass":"GasFilter","sortingClass":"Resources"}},"ItemGasFilterCarbonDioxideM":{"prefab":{"prefabName":"ItemGasFilterCarbonDioxideM","prefabHash":416897318,"desc":"","name":"Medium Filter (Carbon Dioxide)"},"item":{"consumable":false,"filterType":"CarbonDioxide","ingredient":false,"maxQuantity":100,"slotClass":"GasFilter","sortingClass":"Resources"}},"ItemGasFilterNitrogen":{"prefab":{"prefabName":"ItemGasFilterNitrogen","prefabHash":632853248,"desc":"Filters are used to capture various gases, which can be disposed of or used elsewhere. Nitrogen is a byproduct of smelting various ores, notably Ice (Nitrice), which may be combined with Oxygen to make a breathable - and considerably less flammable - atmosphere.","name":"Filter (Nitrogen)"},"item":{"consumable":false,"filterType":"Nitrogen","ingredient":false,"maxQuantity":100,"slotClass":"GasFilter","sortingClass":"Resources"}},"ItemGasFilterNitrogenInfinite":{"prefab":{"prefabName":"ItemGasFilterNitrogenInfinite","prefabHash":152751131,"desc":"A filter that selectively targets Nitrogen. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle.","name":"Catalytic Filter (Nitrogen)"},"item":{"consumable":false,"filterType":"Nitrogen","ingredient":false,"maxQuantity":100,"slotClass":"GasFilter","sortingClass":"Resources"}},"ItemGasFilterNitrogenL":{"prefab":{"prefabName":"ItemGasFilterNitrogenL","prefabHash":-1387439451,"desc":"","name":"Heavy Filter (Nitrogen)"},"item":{"consumable":false,"filterType":"Nitrogen","ingredient":false,"maxQuantity":100,"slotClass":"GasFilter","sortingClass":"Resources"}},"ItemGasFilterNitrogenM":{"prefab":{"prefabName":"ItemGasFilterNitrogenM","prefabHash":-632657357,"desc":"","name":"Medium Filter (Nitrogen)"},"item":{"consumable":false,"filterType":"Nitrogen","ingredient":false,"maxQuantity":100,"slotClass":"GasFilter","sortingClass":"Resources"}},"ItemGasFilterNitrousOxide":{"prefab":{"prefabName":"ItemGasFilterNitrousOxide","prefabHash":-1247674305,"desc":"","name":"Filter (Nitrous Oxide)"},"item":{"consumable":false,"filterType":"NitrousOxide","ingredient":false,"maxQuantity":100,"slotClass":"GasFilter","sortingClass":"Resources"}},"ItemGasFilterNitrousOxideInfinite":{"prefab":{"prefabName":"ItemGasFilterNitrousOxideInfinite","prefabHash":-123934842,"desc":"A filter that selectively targets Nitrous Oxide. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle.","name":"Catalytic Filter (Nitrous Oxide)"},"item":{"consumable":false,"filterType":"NitrousOxide","ingredient":false,"maxQuantity":100,"slotClass":"GasFilter","sortingClass":"Resources"}},"ItemGasFilterNitrousOxideL":{"prefab":{"prefabName":"ItemGasFilterNitrousOxideL","prefabHash":465267979,"desc":"","name":"Heavy Filter (Nitrous Oxide)"},"item":{"consumable":false,"filterType":"NitrousOxide","ingredient":false,"maxQuantity":100,"slotClass":"GasFilter","sortingClass":"Resources"}},"ItemGasFilterNitrousOxideM":{"prefab":{"prefabName":"ItemGasFilterNitrousOxideM","prefabHash":1824284061,"desc":"","name":"Medium Filter (Nitrous Oxide)"},"item":{"consumable":false,"filterType":"NitrousOxide","ingredient":false,"maxQuantity":100,"slotClass":"GasFilter","sortingClass":"Resources"}},"ItemGasFilterOxygen":{"prefab":{"prefabName":"ItemGasFilterOxygen","prefabHash":-721824748,"desc":"Sinotai have cornered the market in filter design. Their trademarked templates are simple to print and highly efficient at capturing various gases, which can be disposed of or used elsewhere. Oxygen is a common byproduct of smelting various ores, but must be filtered of such impurities as Nitrogen using this filter and various devices, such as the Kit (Portable Scrubber).","name":"Filter (Oxygen)"},"item":{"consumable":false,"filterType":"Oxygen","ingredient":false,"maxQuantity":100,"slotClass":"GasFilter","sortingClass":"Resources"}},"ItemGasFilterOxygenInfinite":{"prefab":{"prefabName":"ItemGasFilterOxygenInfinite","prefabHash":-1055451111,"desc":"A filter that selectively targets Oxygen. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle.","name":"Catalytic Filter (Oxygen)"},"item":{"consumable":false,"filterType":"Oxygen","ingredient":false,"maxQuantity":100,"slotClass":"GasFilter","sortingClass":"Resources"}},"ItemGasFilterOxygenL":{"prefab":{"prefabName":"ItemGasFilterOxygenL","prefabHash":-1217998945,"desc":"","name":"Heavy Filter (Oxygen)"},"item":{"consumable":false,"filterType":"Oxygen","ingredient":false,"maxQuantity":100,"slotClass":"GasFilter","sortingClass":"Resources"}},"ItemGasFilterOxygenM":{"prefab":{"prefabName":"ItemGasFilterOxygenM","prefabHash":-1067319543,"desc":"","name":"Medium Filter (Oxygen)"},"item":{"consumable":false,"filterType":"Oxygen","ingredient":false,"maxQuantity":100,"slotClass":"GasFilter","sortingClass":"Resources"}},"ItemGasFilterPollutants":{"prefab":{"prefabName":"ItemGasFilterPollutants","prefabHash":1915566057,"desc":"Filters are used to capture various gases, such as waste emissions from a Furnace or Arc Furnace. Adding Sinotai-designed Pollutant filters to a Kit (Portable Scrubber) allows you to isolate this gas, then add it to a pipe network and employ its excellent coolant properties in a Wall Cooler. Try not to inhale.","name":"Filter (Pollutant)"},"item":{"consumable":false,"filterType":"Pollutant","ingredient":false,"maxQuantity":100,"slotClass":"GasFilter","sortingClass":"Resources"}},"ItemGasFilterPollutantsInfinite":{"prefab":{"prefabName":"ItemGasFilterPollutantsInfinite","prefabHash":-503738105,"desc":"A filter that selectively targets Pollutants. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle.","name":"Catalytic Filter (Pollutants)"},"item":{"consumable":false,"filterType":"Pollutant","ingredient":false,"maxQuantity":100,"slotClass":"GasFilter","sortingClass":"Resources"}},"ItemGasFilterPollutantsL":{"prefab":{"prefabName":"ItemGasFilterPollutantsL","prefabHash":1959564765,"desc":"","name":"Heavy Filter (Pollutants)"},"item":{"consumable":false,"filterType":"Pollutant","ingredient":false,"maxQuantity":100,"slotClass":"GasFilter","sortingClass":"Resources"}},"ItemGasFilterPollutantsM":{"prefab":{"prefabName":"ItemGasFilterPollutantsM","prefabHash":63677771,"desc":"","name":"Medium Filter (Pollutants)"},"item":{"consumable":false,"filterType":"Pollutant","ingredient":false,"maxQuantity":100,"slotClass":"GasFilter","sortingClass":"Resources"}},"ItemGasFilterVolatiles":{"prefab":{"prefabName":"ItemGasFilterVolatiles","prefabHash":15011598,"desc":"Filters are used to capture various gases, which can be disposed of or used elsewhere. Volatiles are created by exposing Ice (Volatiles) to heat. The product can then be collected and combined with Oxygen to create fuel, or used within a Furnace to smelt ores and create alloys.","name":"Filter (Volatiles)"},"item":{"consumable":false,"filterType":"Volatiles","ingredient":false,"maxQuantity":100,"slotClass":"GasFilter","sortingClass":"Resources"}},"ItemGasFilterVolatilesInfinite":{"prefab":{"prefabName":"ItemGasFilterVolatilesInfinite","prefabHash":-1916176068,"desc":"A filter that selectively targets Volatiles. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle.","name":"Catalytic Filter (Volatiles)"},"item":{"consumable":false,"filterType":"Volatiles","ingredient":false,"maxQuantity":100,"slotClass":"GasFilter","sortingClass":"Resources"}},"ItemGasFilterVolatilesL":{"prefab":{"prefabName":"ItemGasFilterVolatilesL","prefabHash":1255156286,"desc":"","name":"Heavy Filter (Volatiles)"},"item":{"consumable":false,"filterType":"Volatiles","ingredient":false,"maxQuantity":100,"slotClass":"GasFilter","sortingClass":"Resources"}},"ItemGasFilterVolatilesM":{"prefab":{"prefabName":"ItemGasFilterVolatilesM","prefabHash":1037507240,"desc":"","name":"Medium Filter (Volatiles)"},"item":{"consumable":false,"filterType":"Volatiles","ingredient":false,"maxQuantity":100,"slotClass":"GasFilter","sortingClass":"Resources"}},"ItemGasFilterWater":{"prefab":{"prefabName":"ItemGasFilterWater","prefabHash":-1993197973,"desc":"Sinotai filters are used to capture various gases, which can be disposed of, or used elsewhere. Water can be collected by filtering smelted Ice (Water)","name":"Filter (Water)"},"item":{"consumable":false,"filterType":"Steam","ingredient":false,"maxQuantity":100,"slotClass":"GasFilter","sortingClass":"Resources"}},"ItemGasFilterWaterInfinite":{"prefab":{"prefabName":"ItemGasFilterWaterInfinite","prefabHash":-1678456554,"desc":"A filter that selectively targets Water. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle.","name":"Catalytic Filter (Water)"},"item":{"consumable":false,"filterType":"Steam","ingredient":false,"maxQuantity":100,"slotClass":"GasFilter","sortingClass":"Resources"}},"ItemGasFilterWaterL":{"prefab":{"prefabName":"ItemGasFilterWaterL","prefabHash":2004969680,"desc":"","name":"Heavy Filter (Water)"},"item":{"consumable":false,"filterType":"Steam","ingredient":false,"maxQuantity":100,"slotClass":"GasFilter","sortingClass":"Resources"}},"ItemGasFilterWaterM":{"prefab":{"prefabName":"ItemGasFilterWaterM","prefabHash":8804422,"desc":"","name":"Medium Filter (Water)"},"item":{"consumable":false,"filterType":"Steam","ingredient":false,"maxQuantity":100,"slotClass":"GasFilter","sortingClass":"Resources"}},"ItemGasSensor":{"prefab":{"prefabName":"ItemGasSensor","prefabHash":1717593480,"desc":"","name":"Kit (Gas Sensor)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemGasTankStorage":{"prefab":{"prefabName":"ItemGasTankStorage","prefabHash":-2113012215,"desc":"This kit produces a Kit (Canister Storage) for refilling a Canister.","name":"Kit (Canister Storage)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemGlassSheets":{"prefab":{"prefabName":"ItemGlassSheets","prefabHash":1588896491,"desc":"A fundamental construction component, glass sheets are created from Silicon. Fabricated on the Autolathe, they are used to make {THING:StructureSolarPanel;Solar Panels}, and many other structures.","name":"Glass Sheets"},"item":{"consumable":false,"ingredient":false,"maxQuantity":50,"slotClass":"None","sortingClass":"Resources"}},"ItemGlasses":{"prefab":{"prefabName":"ItemGlasses","prefabHash":-1068925231,"desc":"","name":"Glasses"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Glasses","sortingClass":"Clothing"}},"ItemGoldIngot":{"prefab":{"prefabName":"ItemGoldIngot","prefabHash":226410516,"desc":"There is an enduring paradox at the heart of the Stationeers project: An initiative conceived as 'cut-price space exploration' uses Gold as a fundamental ingredient in fabricating so much of its equipment and materiel. ","name":"Ingot (Gold)"},"item":{"consumable":true,"ingredient":true,"maxQuantity":500,"reagents":{"Gold":1.0},"slotClass":"Ingot","sortingClass":"Resources"}},"ItemGoldOre":{"prefab":{"prefabName":"ItemGoldOre","prefabHash":-1348105509,"desc":"Surprisingly common throughout the Solar System, Gold is thought to originate in the heart of supernovas, gathering as dust in the early stages of solar formation, then incorporating into the slowly accreting planetary bodies. Now a prized element in Stationeer construction, Gold is valued not for its beauty, but its reliability: inert, durable, conductive and highly stable, gold's strength is that it does nothing.","name":"Ore (Gold)"},"item":{"consumable":false,"ingredient":true,"maxQuantity":50,"reagents":{"Gold":1.0},"slotClass":"Ore","sortingClass":"Ores"}},"ItemGrenade":{"prefab":{"prefabName":"ItemGrenade","prefabHash":1544275894,"desc":"Invented by the Romans, who threw Greek Fire at their enemies in ceramic jars, the word 'grenade' is derived from the Old French word for 'pomegranate', as many modern grenades resemble this round, many-seeded fruit. Also like many grenades before it, this one goes boom and breaks stuff.","name":"Hand Grenade"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Default"}},"ItemHEMDroidRepairKit":{"prefab":{"prefabName":"ItemHEMDroidRepairKit","prefabHash":470636008,"desc":"Repairs damaged HEM-Droids to full health.","name":"HEMDroid Repair Kit"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Food"}},"ItemHardBackpack":{"prefab":{"prefabName":"ItemHardBackpack","prefabHash":374891127,"desc":"This backpack can be useful when you are working inside and don't need to fly around.","name":"Hardsuit Backpack"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Back","sortingClass":"Clothing"},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"1":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"2":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"3":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"4":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"5":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"6":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"7":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"8":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"9":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"10":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"11":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"}},"logicTypes":{"ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"}]},"ItemHardJetpack":{"prefab":{"prefabName":"ItemHardJetpack","prefabHash":-412551656,"desc":"The Norsec jetpack isn't 'technically' a jetpack at all, it's a gas thruster. It can be powered by any gas, so long as the internal pressure of the canister is higher than the ambient external pressure. If the external pressure is greater, the spacepack will not function. Adjusting the thrust value alters your rate of acceleration, while activating the stablizer causes the spacepack to hover when a given height is reached.\nThe hardsuit jetpack is capable of much higher speeds than the Jetpack Basic - up to 15m/s. Indispensable for building, mining and general movement, it has fourteen storage slots.\nUSE: 'J' to activate; 'space' to fly up; 'left ctrl' to descend; and 'WASD' to move.","name":"Hardsuit Jetpack"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Back","sortingClass":"Clothing"},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Pressure":"Read","Quantity":"Read","ReferenceId":"Read","Temperature":"Read"},"1":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"2":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"3":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"4":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"5":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"6":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"7":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"8":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"9":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"10":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"11":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"12":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"13":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"14":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"}},"logicTypes":{"Activate":"ReadWrite","On":"ReadWrite","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Propellant","typ":"GasCanister"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"}]},"ItemHardMiningBackPack":{"prefab":{"prefabName":"ItemHardMiningBackPack","prefabHash":900366130,"desc":"","name":"Hard Mining Backpack"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Back","sortingClass":"Clothing"},"slots":[{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"}]},"ItemHardSuit":{"prefab":{"prefabName":"ItemHardSuit","prefabHash":-1758310454,"desc":"Connects to Logic Transmitter","name":"Hardsuit"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Suit","sortingClass":"Clothing"},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Pressure":"Read","Quantity":"Read","ReferenceId":"Read","Temperature":"Read"},"1":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Pressure":"Read","Quantity":"Read","ReferenceId":"Read","Temperature":"Read"},"2":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"3":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"4":{"Class":"Read","Damage":"Read","FilterType":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"5":{"Class":"Read","Damage":"Read","FilterType":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"6":{"Class":"Read","Damage":"Read","FilterType":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"7":{"Class":"Read","Damage":"Read","FilterType":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"}},"logicTypes":{"Activate":"ReadWrite","AirRelease":"ReadWrite","Combustion":"Read","EntityState":"Read","Error":"ReadWrite","Filtration":"ReadWrite","ForwardX":"Read","ForwardY":"Read","ForwardZ":"Read","Lock":"ReadWrite","On":"ReadWrite","Orientation":"Read","PositionX":"Read","PositionY":"Read","PositionZ":"Read","Power":"Read","Pressure":"Read","PressureExternal":"Read","PressureSetting":"ReadWrite","RatioCarbonDioxide":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioVolatiles":"Read","RatioWater":"Read","ReferenceId":"Read","Setting":"ReadWrite","SoundAlert":"ReadWrite","Temperature":"Read","TemperatureExternal":"Read","TemperatureSetting":"ReadWrite","TotalMoles":"Read","VelocityMagnitude":"Read","VelocityRelativeX":"Read","VelocityRelativeY":"Read","VelocityRelativeZ":"Read","VelocityX":"Read","VelocityY":"Read","VelocityZ":"Read","Volume":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":true,"circuitHolder":true},"slots":[{"name":"Air Tank","typ":"GasCanister"},{"name":"Waste Tank","typ":"GasCanister"},{"name":"Life Support","typ":"Battery"},{"name":"Programmable Chip","typ":"ProgrammableChip"},{"name":"Filter","typ":"GasFilter"},{"name":"Filter","typ":"GasFilter"},{"name":"Filter","typ":"GasFilter"},{"name":"Filter","typ":"GasFilter"}],"memory":{"memoryAccess":"ReadWrite","memorySize":0}},"ItemHardsuitHelmet":{"prefab":{"prefabName":"ItemHardsuitHelmet","prefabHash":-84573099,"desc":"The Hardsuit Helmet is similar to the Space Helmet, but can withstand higher temperatures and pressures. It's perfect for enduring harsh environments like Venus and Vulcan.","name":"Hardsuit Helmet"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Helmet","sortingClass":"Clothing"},"logic":{"logicSlotTypes":{},"logicTypes":{"Combustion":"Read","Flush":"Write","Lock":"ReadWrite","On":"ReadWrite","Open":"ReadWrite","Power":"Read","Pressure":"Read","RatioCarbonDioxide":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioVolatiles":"Read","RatioWater":"Read","ReferenceId":"Read","SoundAlert":"ReadWrite","Temperature":"Read","TotalMoles":"Read","Volume":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[]},"ItemHastelloyIngot":{"prefab":{"prefabName":"ItemHastelloyIngot","prefabHash":1579842814,"desc":"","name":"Ingot (Hastelloy)"},"item":{"consumable":true,"ingredient":true,"maxQuantity":500,"reagents":{"Hastelloy":1.0},"slotClass":"Ingot","sortingClass":"Resources"}},"ItemHat":{"prefab":{"prefabName":"ItemHat","prefabHash":299189339,"desc":"As the name suggests, this is a hat.","name":"Hat"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Helmet","sortingClass":"Clothing"}},"ItemHighVolumeGasCanisterEmpty":{"prefab":{"prefabName":"ItemHighVolumeGasCanisterEmpty","prefabHash":998653377,"desc":"","name":"High Volume Gas Canister"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"GasCanister","sortingClass":"Atmospherics"}},"ItemHorticultureBelt":{"prefab":{"prefabName":"ItemHorticultureBelt","prefabHash":-1117581553,"desc":"","name":"Horticulture Belt"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Belt","sortingClass":"Clothing"},"slots":[{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"}]},"ItemHydroponicTray":{"prefab":{"prefabName":"ItemHydroponicTray","prefabHash":-1193543727,"desc":"This kits creates a Hydroponics Tray for growing various plants.","name":"Kit (Hydroponic Tray)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemIce":{"prefab":{"prefabName":"ItemIce","prefabHash":1217489948,"desc":"Water ice can be found on most planets in the Solar System, though not all worlds visited by Stationeers possess this resource. Highly sensitive to temperature, ice will begin to melt as soon as it is mined, unless kept in the Mining Belt. When melting, ice produces a mixture of Steam and Nitrogen gas.","name":"Ice (Water)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":50,"slotClass":"Ore","sortingClass":"Ices"}},"ItemIgniter":{"prefab":{"prefabName":"ItemIgniter","prefabHash":890106742,"desc":"This kit creates an Kit (Igniter) unit.","name":"Kit (Igniter)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemInconelIngot":{"prefab":{"prefabName":"ItemInconelIngot","prefabHash":-787796599,"desc":"","name":"Ingot (Inconel)"},"item":{"consumable":true,"ingredient":true,"maxQuantity":500,"reagents":{"Inconel":1.0},"slotClass":"Ingot","sortingClass":"Resources"}},"ItemInsulation":{"prefab":{"prefabName":"ItemInsulation","prefabHash":897176943,"desc":"Mysterious in the extreme, the function of this item is lost to the ages.","name":"Insulation"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Resources"}},"ItemIntegratedCircuit10":{"prefab":{"prefabName":"ItemIntegratedCircuit10","prefabHash":-744098481,"desc":"","name":"Integrated Circuit (IC10)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"ProgrammableChip","sortingClass":"Default"},"logic":{"logicSlotTypes":{},"logicTypes":{"LineNumber":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"memory":{"memoryAccess":"ReadWrite","memorySize":512}},"ItemInvarIngot":{"prefab":{"prefabName":"ItemInvarIngot","prefabHash":-297990285,"desc":"","name":"Ingot (Invar)"},"item":{"consumable":true,"ingredient":true,"maxQuantity":500,"reagents":{"Invar":1.0},"slotClass":"Ingot","sortingClass":"Resources"}},"ItemIronFrames":{"prefab":{"prefabName":"ItemIronFrames","prefabHash":1225836666,"desc":"","name":"Iron Frames"},"item":{"consumable":false,"ingredient":false,"maxQuantity":30,"slotClass":"None","sortingClass":"Kits"}},"ItemIronIngot":{"prefab":{"prefabName":"ItemIronIngot","prefabHash":-1301215609,"desc":"The most basic unit of construction available to Stationeer-kind, iron ingots are created by smelting Ore (Iron) in the Furnace and Arc Furnace, and used to create a variety of items.","name":"Ingot (Iron)"},"item":{"consumable":true,"ingredient":true,"maxQuantity":500,"reagents":{"Iron":1.0},"slotClass":"Ingot","sortingClass":"Resources"}},"ItemIronOre":{"prefab":{"prefabName":"ItemIronOre","prefabHash":1758427767,"desc":"Abundant throughout the Solar System, iron is the ore most commonly used by Stationeers constructing offworld bases. It can be smelted into both Ingot (Iron)s and Ingot (Steel)s.","name":"Ore (Iron)"},"item":{"consumable":false,"ingredient":true,"maxQuantity":50,"reagents":{"Iron":1.0},"slotClass":"Ore","sortingClass":"Ores"}},"ItemIronSheets":{"prefab":{"prefabName":"ItemIronSheets","prefabHash":-487378546,"desc":"","name":"Iron Sheets"},"item":{"consumable":false,"ingredient":false,"maxQuantity":50,"slotClass":"None","sortingClass":"Resources"}},"ItemJetpackBasic":{"prefab":{"prefabName":"ItemJetpackBasic","prefabHash":1969189000,"desc":"The basic CHAC jetpack isn't 'technically' a jetpack, it's a gas thruster. It can be powered by any gas, so long as the internal pressure of the canister is higher than the ambient external pressure. If the external pressure is greater, the spacepack will not function.\nIndispensable for building, mining and general movement, it has ten storage slots and lets Stationeers fly at 3m/s, compared to the more powerful Hardsuit Jetpack. Adjusting the thrust value alters your rate of acceleration, while activating the stabilizer causes the spacepack to hover when a given height is reached.\nUSE: 'J' to activate; 'space' to fly up; 'left ctrl' to descend; and 'WASD' to move.","name":"Jetpack Basic"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Back","sortingClass":"Clothing"},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Pressure":"Read","Quantity":"Read","ReferenceId":"Read","Temperature":"Read"},"1":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"2":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"3":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"4":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"5":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"6":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"7":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"8":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"9":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"}},"logicTypes":{"Activate":"ReadWrite","On":"ReadWrite","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Propellant","typ":"GasCanister"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"}]},"ItemKitAIMeE":{"prefab":{"prefabName":"ItemKitAIMeE","prefabHash":496830914,"desc":"","name":"Kit (AIMeE)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitAccessBridge":{"prefab":{"prefabName":"ItemKitAccessBridge","prefabHash":513258369,"desc":"","name":"Kit (Access Bridge)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemKitAdvancedComposter":{"prefab":{"prefabName":"ItemKitAdvancedComposter","prefabHash":-1431998347,"desc":"","name":"Kit (Advanced Composter)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitAdvancedFurnace":{"prefab":{"prefabName":"ItemKitAdvancedFurnace","prefabHash":-616758353,"desc":"","name":"Kit (Advanced Furnace)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitAdvancedPackagingMachine":{"prefab":{"prefabName":"ItemKitAdvancedPackagingMachine","prefabHash":-598545233,"desc":"","name":"Kit (Advanced Packaging Machine)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitAirlock":{"prefab":{"prefabName":"ItemKitAirlock","prefabHash":964043875,"desc":"","name":"Kit (Airlock)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemKitAirlockGate":{"prefab":{"prefabName":"ItemKitAirlockGate","prefabHash":682546947,"desc":"","name":"Kit (Hangar Door)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemKitArcFurnace":{"prefab":{"prefabName":"ItemKitArcFurnace","prefabHash":-98995857,"desc":"","name":"Kit (Arc Furnace)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitAtmospherics":{"prefab":{"prefabName":"ItemKitAtmospherics","prefabHash":1222286371,"desc":"","name":"Kit (Atmospherics)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitAutoMinerSmall":{"prefab":{"prefabName":"ItemKitAutoMinerSmall","prefabHash":1668815415,"desc":"","name":"Kit (Autominer Small)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitAutolathe":{"prefab":{"prefabName":"ItemKitAutolathe","prefabHash":-1753893214,"desc":"","name":"Kit (Autolathe)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitAutomatedOven":{"prefab":{"prefabName":"ItemKitAutomatedOven","prefabHash":-1931958659,"desc":"","name":"Kit (Automated Oven)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitBasket":{"prefab":{"prefabName":"ItemKitBasket","prefabHash":148305004,"desc":"","name":"Kit (Basket)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitBattery":{"prefab":{"prefabName":"ItemKitBattery","prefabHash":1406656973,"desc":"","name":"Kit (Battery)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitBatteryLarge":{"prefab":{"prefabName":"ItemKitBatteryLarge","prefabHash":-21225041,"desc":"","name":"Kit (Battery Large)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitBeacon":{"prefab":{"prefabName":"ItemKitBeacon","prefabHash":249073136,"desc":"","name":"Kit (Beacon)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitBeds":{"prefab":{"prefabName":"ItemKitBeds","prefabHash":-1241256797,"desc":"","name":"Kit (Beds)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitBlastDoor":{"prefab":{"prefabName":"ItemKitBlastDoor","prefabHash":-1755116240,"desc":"","name":"Kit (Blast Door)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitCentrifuge":{"prefab":{"prefabName":"ItemKitCentrifuge","prefabHash":578182956,"desc":"","name":"Kit (Centrifuge)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitChairs":{"prefab":{"prefabName":"ItemKitChairs","prefabHash":-1394008073,"desc":"","name":"Kit (Chairs)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitChute":{"prefab":{"prefabName":"ItemKitChute","prefabHash":1025254665,"desc":"","name":"Kit (Basic Chutes)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitChuteUmbilical":{"prefab":{"prefabName":"ItemKitChuteUmbilical","prefabHash":-876560854,"desc":"","name":"Kit (Chute Umbilical)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitCompositeCladding":{"prefab":{"prefabName":"ItemKitCompositeCladding","prefabHash":-1470820996,"desc":"","name":"Kit (Cladding)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitCompositeFloorGrating":{"prefab":{"prefabName":"ItemKitCompositeFloorGrating","prefabHash":1182412869,"desc":"","name":"Kit (Floor Grating)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitComputer":{"prefab":{"prefabName":"ItemKitComputer","prefabHash":1990225489,"desc":"","name":"Kit (Computer)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemKitConsole":{"prefab":{"prefabName":"ItemKitConsole","prefabHash":-1241851179,"desc":"","name":"Kit (Consoles)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemKitCrate":{"prefab":{"prefabName":"ItemKitCrate","prefabHash":429365598,"desc":"","name":"Kit (Crate)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemKitCrateMkII":{"prefab":{"prefabName":"ItemKitCrateMkII","prefabHash":-1585956426,"desc":"","name":"Kit (Crate Mk II)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitCrateMount":{"prefab":{"prefabName":"ItemKitCrateMount","prefabHash":-551612946,"desc":"","name":"Kit (Container Mount)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitCryoTube":{"prefab":{"prefabName":"ItemKitCryoTube","prefabHash":-545234195,"desc":"","name":"Kit (Cryo Tube)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitDeepMiner":{"prefab":{"prefabName":"ItemKitDeepMiner","prefabHash":-1935075707,"desc":"","name":"Kit (Deep Miner)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitDockingPort":{"prefab":{"prefabName":"ItemKitDockingPort","prefabHash":77421200,"desc":"","name":"Kit (Docking Port)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemKitDoor":{"prefab":{"prefabName":"ItemKitDoor","prefabHash":168615924,"desc":"","name":"Kit (Door)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemKitDrinkingFountain":{"prefab":{"prefabName":"ItemKitDrinkingFountain","prefabHash":-1743663875,"desc":"","name":"Kit (Drinking Fountain)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemKitDynamicCanister":{"prefab":{"prefabName":"ItemKitDynamicCanister","prefabHash":-1061945368,"desc":"","name":"Kit (Portable Gas Tank)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemKitDynamicGasTankAdvanced":{"prefab":{"prefabName":"ItemKitDynamicGasTankAdvanced","prefabHash":1533501495,"desc":"","name":"Kit (Portable Gas Tank Mk II)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Default"}},"ItemKitDynamicGenerator":{"prefab":{"prefabName":"ItemKitDynamicGenerator","prefabHash":-732720413,"desc":"","name":"Kit (Portable Generator)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitDynamicHydroponics":{"prefab":{"prefabName":"ItemKitDynamicHydroponics","prefabHash":-1861154222,"desc":"","name":"Kit (Portable Hydroponics)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemKitDynamicLiquidCanister":{"prefab":{"prefabName":"ItemKitDynamicLiquidCanister","prefabHash":375541286,"desc":"","name":"Kit (Portable Liquid Tank)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemKitDynamicMKIILiquidCanister":{"prefab":{"prefabName":"ItemKitDynamicMKIILiquidCanister","prefabHash":-638019974,"desc":"","name":"Kit (Portable Liquid Tank Mk II)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemKitElectricUmbilical":{"prefab":{"prefabName":"ItemKitElectricUmbilical","prefabHash":1603046970,"desc":"","name":"Kit (Power Umbilical)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitElectronicsPrinter":{"prefab":{"prefabName":"ItemKitElectronicsPrinter","prefabHash":-1181922382,"desc":"","name":"Kit (Electronics Printer)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitElevator":{"prefab":{"prefabName":"ItemKitElevator","prefabHash":-945806652,"desc":"","name":"Kit (Elevator)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemKitEngineLarge":{"prefab":{"prefabName":"ItemKitEngineLarge","prefabHash":755302726,"desc":"","name":"Kit (Engine Large)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitEngineMedium":{"prefab":{"prefabName":"ItemKitEngineMedium","prefabHash":1969312177,"desc":"","name":"Kit (Engine Medium)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemKitEngineSmall":{"prefab":{"prefabName":"ItemKitEngineSmall","prefabHash":19645163,"desc":"","name":"Kit (Engine Small)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitEvaporationChamber":{"prefab":{"prefabName":"ItemKitEvaporationChamber","prefabHash":1587787610,"desc":"","name":"Kit (Phase Change Device)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitFlagODA":{"prefab":{"prefabName":"ItemKitFlagODA","prefabHash":1701764190,"desc":"","name":"Kit (ODA Flag)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Default"}},"ItemKitFridgeBig":{"prefab":{"prefabName":"ItemKitFridgeBig","prefabHash":-1168199498,"desc":"","name":"Kit (Fridge Large)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitFridgeSmall":{"prefab":{"prefabName":"ItemKitFridgeSmall","prefabHash":1661226524,"desc":"","name":"Kit (Fridge Small)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitFurnace":{"prefab":{"prefabName":"ItemKitFurnace","prefabHash":-806743925,"desc":"","name":"Kit (Furnace)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitFurniture":{"prefab":{"prefabName":"ItemKitFurniture","prefabHash":1162905029,"desc":"","name":"Kit (Furniture)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitFuselage":{"prefab":{"prefabName":"ItemKitFuselage","prefabHash":-366262681,"desc":"","name":"Kit (Fuselage)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitGasGenerator":{"prefab":{"prefabName":"ItemKitGasGenerator","prefabHash":377745425,"desc":"","name":"Kit (Gas Fuel Generator)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitGasUmbilical":{"prefab":{"prefabName":"ItemKitGasUmbilical","prefabHash":-1867280568,"desc":"","name":"Kit (Gas Umbilical)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitGovernedGasRocketEngine":{"prefab":{"prefabName":"ItemKitGovernedGasRocketEngine","prefabHash":206848766,"desc":"","name":"Kit (Pumped Gas Rocket Engine)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitGroundTelescope":{"prefab":{"prefabName":"ItemKitGroundTelescope","prefabHash":-2140672772,"desc":"","name":"Kit (Telescope)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitGrowLight":{"prefab":{"prefabName":"ItemKitGrowLight","prefabHash":341030083,"desc":"","name":"Kit (Grow Light)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitHarvie":{"prefab":{"prefabName":"ItemKitHarvie","prefabHash":-1022693454,"desc":"","name":"Kit (Harvie)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitHeatExchanger":{"prefab":{"prefabName":"ItemKitHeatExchanger","prefabHash":-1710540039,"desc":"","name":"Kit Heat Exchanger"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitHorizontalAutoMiner":{"prefab":{"prefabName":"ItemKitHorizontalAutoMiner","prefabHash":844391171,"desc":"","name":"Kit (OGRE)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitHydraulicPipeBender":{"prefab":{"prefabName":"ItemKitHydraulicPipeBender","prefabHash":-2098556089,"desc":"","name":"Kit (Hydraulic Pipe Bender)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitHydroponicAutomated":{"prefab":{"prefabName":"ItemKitHydroponicAutomated","prefabHash":-927931558,"desc":"","name":"Kit (Automated Hydroponics)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemKitHydroponicStation":{"prefab":{"prefabName":"ItemKitHydroponicStation","prefabHash":2057179799,"desc":"","name":"Kit (Hydroponic Station)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemKitIceCrusher":{"prefab":{"prefabName":"ItemKitIceCrusher","prefabHash":288111533,"desc":"","name":"Kit (Ice Crusher)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemKitInsulatedLiquidPipe":{"prefab":{"prefabName":"ItemKitInsulatedLiquidPipe","prefabHash":2067655311,"desc":"","name":"Kit (Insulated Liquid Pipe)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":20,"slotClass":"None","sortingClass":"Kits"}},"ItemKitInsulatedPipe":{"prefab":{"prefabName":"ItemKitInsulatedPipe","prefabHash":452636699,"desc":"","name":"Kit (Insulated Pipe)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":20,"slotClass":"None","sortingClass":"Kits"}},"ItemKitInsulatedPipeUtility":{"prefab":{"prefabName":"ItemKitInsulatedPipeUtility","prefabHash":-27284803,"desc":"","name":"Kit (Insulated Pipe Utility Gas)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitInsulatedPipeUtilityLiquid":{"prefab":{"prefabName":"ItemKitInsulatedPipeUtilityLiquid","prefabHash":-1831558953,"desc":"","name":"Kit (Insulated Pipe Utility Liquid)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitInteriorDoors":{"prefab":{"prefabName":"ItemKitInteriorDoors","prefabHash":1935945891,"desc":"","name":"Kit (Interior Doors)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemKitLadder":{"prefab":{"prefabName":"ItemKitLadder","prefabHash":489494578,"desc":"","name":"Kit (Ladder)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitLandingPadAtmos":{"prefab":{"prefabName":"ItemKitLandingPadAtmos","prefabHash":1817007843,"desc":"","name":"Kit (Landing Pad Atmospherics)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitLandingPadBasic":{"prefab":{"prefabName":"ItemKitLandingPadBasic","prefabHash":293581318,"desc":"","name":"Kit (Landing Pad Basic)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitLandingPadWaypoint":{"prefab":{"prefabName":"ItemKitLandingPadWaypoint","prefabHash":-1267511065,"desc":"","name":"Kit (Landing Pad Runway)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitLargeDirectHeatExchanger":{"prefab":{"prefabName":"ItemKitLargeDirectHeatExchanger","prefabHash":450164077,"desc":"","name":"Kit (Large Direct Heat Exchanger)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitLargeExtendableRadiator":{"prefab":{"prefabName":"ItemKitLargeExtendableRadiator","prefabHash":847430620,"desc":"","name":"Kit (Large Extendable Radiator)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemKitLargeSatelliteDish":{"prefab":{"prefabName":"ItemKitLargeSatelliteDish","prefabHash":-2039971217,"desc":"","name":"Kit (Large Satellite Dish)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitLaunchMount":{"prefab":{"prefabName":"ItemKitLaunchMount","prefabHash":-1854167549,"desc":"","name":"Kit (Launch Mount)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitLaunchTower":{"prefab":{"prefabName":"ItemKitLaunchTower","prefabHash":-174523552,"desc":"","name":"Kit (Rocket Launch Tower)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemKitLiquidRegulator":{"prefab":{"prefabName":"ItemKitLiquidRegulator","prefabHash":1951126161,"desc":"","name":"Kit (Liquid Regulator)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemKitLiquidTank":{"prefab":{"prefabName":"ItemKitLiquidTank","prefabHash":-799849305,"desc":"","name":"Kit (Liquid Tank)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemKitLiquidTankInsulated":{"prefab":{"prefabName":"ItemKitLiquidTankInsulated","prefabHash":617773453,"desc":"","name":"Kit (Insulated Liquid Tank)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemKitLiquidTurboVolumePump":{"prefab":{"prefabName":"ItemKitLiquidTurboVolumePump","prefabHash":-1805020897,"desc":"","name":"Kit (Turbo Volume Pump - Liquid)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitLiquidUmbilical":{"prefab":{"prefabName":"ItemKitLiquidUmbilical","prefabHash":1571996765,"desc":"","name":"Kit (Liquid Umbilical)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitLocker":{"prefab":{"prefabName":"ItemKitLocker","prefabHash":882301399,"desc":"","name":"Kit (Locker)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemKitLogicCircuit":{"prefab":{"prefabName":"ItemKitLogicCircuit","prefabHash":1512322581,"desc":"","name":"Kit (IC Housing)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemKitLogicInputOutput":{"prefab":{"prefabName":"ItemKitLogicInputOutput","prefabHash":1997293610,"desc":"","name":"Kit (Logic I/O)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitLogicMemory":{"prefab":{"prefabName":"ItemKitLogicMemory","prefabHash":-2098214189,"desc":"","name":"Kit (Logic Memory)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitLogicProcessor":{"prefab":{"prefabName":"ItemKitLogicProcessor","prefabHash":220644373,"desc":"","name":"Kit (Logic Processor)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitLogicSwitch":{"prefab":{"prefabName":"ItemKitLogicSwitch","prefabHash":124499454,"desc":"","name":"Kit (Logic Switch)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitLogicTransmitter":{"prefab":{"prefabName":"ItemKitLogicTransmitter","prefabHash":1005397063,"desc":"","name":"Kit (Logic Transmitter)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemKitMotherShipCore":{"prefab":{"prefabName":"ItemKitMotherShipCore","prefabHash":-344968335,"desc":"","name":"Kit (Mothership)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitMusicMachines":{"prefab":{"prefabName":"ItemKitMusicMachines","prefabHash":-2038889137,"desc":"","name":"Kit (Music Machines)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitPassiveLargeRadiatorGas":{"prefab":{"prefabName":"ItemKitPassiveLargeRadiatorGas","prefabHash":-1752768283,"desc":"","name":"Kit (Medium Radiator)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Default"}},"ItemKitPassiveLargeRadiatorLiquid":{"prefab":{"prefabName":"ItemKitPassiveLargeRadiatorLiquid","prefabHash":1453961898,"desc":"","name":"Kit (Medium Radiator Liquid)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemKitPassthroughHeatExchanger":{"prefab":{"prefabName":"ItemKitPassthroughHeatExchanger","prefabHash":636112787,"desc":"","name":"Kit (CounterFlow Heat Exchanger)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitPictureFrame":{"prefab":{"prefabName":"ItemKitPictureFrame","prefabHash":-2062364768,"desc":"","name":"Kit Picture Frame"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitPipe":{"prefab":{"prefabName":"ItemKitPipe","prefabHash":-1619793705,"desc":"","name":"Kit (Pipe)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":20,"slotClass":"None","sortingClass":"Kits"}},"ItemKitPipeLiquid":{"prefab":{"prefabName":"ItemKitPipeLiquid","prefabHash":-1166461357,"desc":"","name":"Kit (Liquid Pipe)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":20,"slotClass":"None","sortingClass":"Kits"}},"ItemKitPipeOrgan":{"prefab":{"prefabName":"ItemKitPipeOrgan","prefabHash":-827125300,"desc":"","name":"Kit (Pipe Organ)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitPipeRadiator":{"prefab":{"prefabName":"ItemKitPipeRadiator","prefabHash":920411066,"desc":"","name":"Kit (Pipe Radiator)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Default"}},"ItemKitPipeRadiatorLiquid":{"prefab":{"prefabName":"ItemKitPipeRadiatorLiquid","prefabHash":-1697302609,"desc":"","name":"Kit (Pipe Radiator Liquid)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Default"}},"ItemKitPipeUtility":{"prefab":{"prefabName":"ItemKitPipeUtility","prefabHash":1934508338,"desc":"","name":"Kit (Pipe Utility Gas)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitPipeUtilityLiquid":{"prefab":{"prefabName":"ItemKitPipeUtilityLiquid","prefabHash":595478589,"desc":"","name":"Kit (Pipe Utility Liquid)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitPlanter":{"prefab":{"prefabName":"ItemKitPlanter","prefabHash":119096484,"desc":"","name":"Kit (Planter)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitPortablesConnector":{"prefab":{"prefabName":"ItemKitPortablesConnector","prefabHash":1041148999,"desc":"","name":"Kit (Portables Connector)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemKitPowerTransmitter":{"prefab":{"prefabName":"ItemKitPowerTransmitter","prefabHash":291368213,"desc":"","name":"Kit (Power Transmitter)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitPowerTransmitterOmni":{"prefab":{"prefabName":"ItemKitPowerTransmitterOmni","prefabHash":-831211676,"desc":"","name":"Kit (Power Transmitter Omni)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitPoweredVent":{"prefab":{"prefabName":"ItemKitPoweredVent","prefabHash":2015439334,"desc":"","name":"Kit (Powered Vent)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemKitPressureFedGasEngine":{"prefab":{"prefabName":"ItemKitPressureFedGasEngine","prefabHash":-121514007,"desc":"","name":"Kit (Pressure Fed Gas Engine)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitPressureFedLiquidEngine":{"prefab":{"prefabName":"ItemKitPressureFedLiquidEngine","prefabHash":-99091572,"desc":"","name":"Kit (Pressure Fed Liquid Engine)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitPressurePlate":{"prefab":{"prefabName":"ItemKitPressurePlate","prefabHash":123504691,"desc":"","name":"Kit (Trigger Plate)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemKitPumpedLiquidEngine":{"prefab":{"prefabName":"ItemKitPumpedLiquidEngine","prefabHash":1921918951,"desc":"","name":"Kit (Pumped Liquid Engine)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitRailing":{"prefab":{"prefabName":"ItemKitRailing","prefabHash":750176282,"desc":"","name":"Kit (Railing)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitRecycler":{"prefab":{"prefabName":"ItemKitRecycler","prefabHash":849148192,"desc":"","name":"Kit (Recycler)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitRegulator":{"prefab":{"prefabName":"ItemKitRegulator","prefabHash":1181371795,"desc":"","name":"Kit (Pressure Regulator)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemKitReinforcedWindows":{"prefab":{"prefabName":"ItemKitReinforcedWindows","prefabHash":1459985302,"desc":"","name":"Kit (Reinforced Windows)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitResearchMachine":{"prefab":{"prefabName":"ItemKitResearchMachine","prefabHash":724776762,"desc":"","name":"Kit Research Machine"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Default"}},"ItemKitRespawnPointWallMounted":{"prefab":{"prefabName":"ItemKitRespawnPointWallMounted","prefabHash":1574688481,"desc":"","name":"Kit (Respawn)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitRocketAvionics":{"prefab":{"prefabName":"ItemKitRocketAvionics","prefabHash":1396305045,"desc":"","name":"Kit (Avionics)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitRocketBattery":{"prefab":{"prefabName":"ItemKitRocketBattery","prefabHash":-314072139,"desc":"","name":"Kit (Rocket Battery)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemKitRocketCargoStorage":{"prefab":{"prefabName":"ItemKitRocketCargoStorage","prefabHash":479850239,"desc":"","name":"Kit (Rocket Cargo Storage)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemKitRocketCelestialTracker":{"prefab":{"prefabName":"ItemKitRocketCelestialTracker","prefabHash":-303008602,"desc":"","name":"Kit (Rocket Celestial Tracker)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitRocketCircuitHousing":{"prefab":{"prefabName":"ItemKitRocketCircuitHousing","prefabHash":721251202,"desc":"","name":"Kit (Rocket Circuit Housing)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitRocketDatalink":{"prefab":{"prefabName":"ItemKitRocketDatalink","prefabHash":-1256996603,"desc":"","name":"Kit (Rocket Datalink)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitRocketGasFuelTank":{"prefab":{"prefabName":"ItemKitRocketGasFuelTank","prefabHash":-1629347579,"desc":"","name":"Kit (Rocket Gas Fuel Tank)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemKitRocketLiquidFuelTank":{"prefab":{"prefabName":"ItemKitRocketLiquidFuelTank","prefabHash":2032027950,"desc":"","name":"Kit (Rocket Liquid Fuel Tank)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemKitRocketManufactory":{"prefab":{"prefabName":"ItemKitRocketManufactory","prefabHash":-636127860,"desc":"","name":"Kit (Rocket Manufactory)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitRocketMiner":{"prefab":{"prefabName":"ItemKitRocketMiner","prefabHash":-867969909,"desc":"","name":"Kit (Rocket Miner)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitRocketScanner":{"prefab":{"prefabName":"ItemKitRocketScanner","prefabHash":1753647154,"desc":"","name":"Kit (Rocket Scanner)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitRocketTransformerSmall":{"prefab":{"prefabName":"ItemKitRocketTransformerSmall","prefabHash":-932335800,"desc":"","name":"Kit (Transformer Small (Rocket))"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemKitRoverFrame":{"prefab":{"prefabName":"ItemKitRoverFrame","prefabHash":1827215803,"desc":"","name":"Kit (Rover Frame)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitRoverMKI":{"prefab":{"prefabName":"ItemKitRoverMKI","prefabHash":197243872,"desc":"","name":"Kit (Rover Mk I)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitSDBHopper":{"prefab":{"prefabName":"ItemKitSDBHopper","prefabHash":323957548,"desc":"","name":"Kit (SDB Hopper)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitSatelliteDish":{"prefab":{"prefabName":"ItemKitSatelliteDish","prefabHash":178422810,"desc":"","name":"Kit (Medium Satellite Dish)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitSecurityPrinter":{"prefab":{"prefabName":"ItemKitSecurityPrinter","prefabHash":578078533,"desc":"","name":"Kit (Security Printer)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitSensor":{"prefab":{"prefabName":"ItemKitSensor","prefabHash":-1776897113,"desc":"","name":"Kit (Sensors)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemKitShower":{"prefab":{"prefabName":"ItemKitShower","prefabHash":735858725,"desc":"","name":"Kit (Shower)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemKitSign":{"prefab":{"prefabName":"ItemKitSign","prefabHash":529996327,"desc":"","name":"Kit (Sign)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitSleeper":{"prefab":{"prefabName":"ItemKitSleeper","prefabHash":326752036,"desc":"","name":"Kit (Sleeper)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemKitSmallDirectHeatExchanger":{"prefab":{"prefabName":"ItemKitSmallDirectHeatExchanger","prefabHash":-1332682164,"desc":"","name":"Kit (Small Direct Heat Exchanger)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Default"}},"ItemKitSmallSatelliteDish":{"prefab":{"prefabName":"ItemKitSmallSatelliteDish","prefabHash":1960952220,"desc":"","name":"Kit (Small Satellite Dish)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitSolarPanel":{"prefab":{"prefabName":"ItemKitSolarPanel","prefabHash":-1924492105,"desc":"","name":"Kit (Solar Panel)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemKitSolarPanelBasic":{"prefab":{"prefabName":"ItemKitSolarPanelBasic","prefabHash":844961456,"desc":"","name":"Kit (Solar Panel Basic)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Default"}},"ItemKitSolarPanelBasicReinforced":{"prefab":{"prefabName":"ItemKitSolarPanelBasicReinforced","prefabHash":-528695432,"desc":"","name":"Kit (Solar Panel Basic Heavy)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Default"}},"ItemKitSolarPanelReinforced":{"prefab":{"prefabName":"ItemKitSolarPanelReinforced","prefabHash":-364868685,"desc":"","name":"Kit (Solar Panel Heavy)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemKitSolidGenerator":{"prefab":{"prefabName":"ItemKitSolidGenerator","prefabHash":1293995736,"desc":"","name":"Kit (Solid Generator)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitSorter":{"prefab":{"prefabName":"ItemKitSorter","prefabHash":969522478,"desc":"","name":"Kit (Sorter)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitSpeaker":{"prefab":{"prefabName":"ItemKitSpeaker","prefabHash":-126038526,"desc":"","name":"Kit (Speaker)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemKitStacker":{"prefab":{"prefabName":"ItemKitStacker","prefabHash":1013244511,"desc":"","name":"Kit (Stacker)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitStairs":{"prefab":{"prefabName":"ItemKitStairs","prefabHash":170878959,"desc":"","name":"Kit (Stairs)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitStairwell":{"prefab":{"prefabName":"ItemKitStairwell","prefabHash":-1868555784,"desc":"","name":"Kit (Stairwell)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitStandardChute":{"prefab":{"prefabName":"ItemKitStandardChute","prefabHash":2133035682,"desc":"","name":"Kit (Powered Chutes)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitStirlingEngine":{"prefab":{"prefabName":"ItemKitStirlingEngine","prefabHash":-1821571150,"desc":"","name":"Kit (Stirling Engine)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitSuitStorage":{"prefab":{"prefabName":"ItemKitSuitStorage","prefabHash":1088892825,"desc":"","name":"Kit (Suit Storage)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemKitTables":{"prefab":{"prefabName":"ItemKitTables","prefabHash":-1361598922,"desc":"","name":"Kit (Tables)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitTank":{"prefab":{"prefabName":"ItemKitTank","prefabHash":771439840,"desc":"","name":"Kit (Tank)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemKitTankInsulated":{"prefab":{"prefabName":"ItemKitTankInsulated","prefabHash":1021053608,"desc":"","name":"Kit (Tank Insulated)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Default"}},"ItemKitToolManufactory":{"prefab":{"prefabName":"ItemKitToolManufactory","prefabHash":529137748,"desc":"","name":"Kit (Tool Manufactory)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitTransformer":{"prefab":{"prefabName":"ItemKitTransformer","prefabHash":-453039435,"desc":"","name":"Kit (Transformer Large)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitTransformerSmall":{"prefab":{"prefabName":"ItemKitTransformerSmall","prefabHash":665194284,"desc":"","name":"Kit (Transformer Small)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemKitTurbineGenerator":{"prefab":{"prefabName":"ItemKitTurbineGenerator","prefabHash":-1590715731,"desc":"","name":"Kit (Turbine Generator)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemKitTurboVolumePump":{"prefab":{"prefabName":"ItemKitTurboVolumePump","prefabHash":-1248429712,"desc":"","name":"Kit (Turbo Volume Pump - Gas)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Default"}},"ItemKitUprightWindTurbine":{"prefab":{"prefabName":"ItemKitUprightWindTurbine","prefabHash":-1798044015,"desc":"","name":"Kit (Upright Wind Turbine)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Default"}},"ItemKitVendingMachine":{"prefab":{"prefabName":"ItemKitVendingMachine","prefabHash":-2038384332,"desc":"","name":"Kit (Vending Machine)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitVendingMachineRefrigerated":{"prefab":{"prefabName":"ItemKitVendingMachineRefrigerated","prefabHash":-1867508561,"desc":"","name":"Kit (Vending Machine Refrigerated)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitWall":{"prefab":{"prefabName":"ItemKitWall","prefabHash":-1826855889,"desc":"","name":"Kit (Wall)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":30,"slotClass":"None","sortingClass":"Kits"}},"ItemKitWallArch":{"prefab":{"prefabName":"ItemKitWallArch","prefabHash":1625214531,"desc":"","name":"Kit (Arched Wall)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":30,"slotClass":"None","sortingClass":"Kits"}},"ItemKitWallFlat":{"prefab":{"prefabName":"ItemKitWallFlat","prefabHash":-846838195,"desc":"","name":"Kit (Flat Wall)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":30,"slotClass":"None","sortingClass":"Kits"}},"ItemKitWallGeometry":{"prefab":{"prefabName":"ItemKitWallGeometry","prefabHash":-784733231,"desc":"","name":"Kit (Geometric Wall)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":30,"slotClass":"None","sortingClass":"Kits"}},"ItemKitWallIron":{"prefab":{"prefabName":"ItemKitWallIron","prefabHash":-524546923,"desc":"","name":"Kit (Iron Wall)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":30,"slotClass":"None","sortingClass":"Kits"}},"ItemKitWallPadded":{"prefab":{"prefabName":"ItemKitWallPadded","prefabHash":-821868990,"desc":"","name":"Kit (Padded Wall)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":30,"slotClass":"None","sortingClass":"Kits"}},"ItemKitWaterBottleFiller":{"prefab":{"prefabName":"ItemKitWaterBottleFiller","prefabHash":159886536,"desc":"","name":"Kit (Water Bottle Filler)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitWaterPurifier":{"prefab":{"prefabName":"ItemKitWaterPurifier","prefabHash":611181283,"desc":"","name":"Kit (Water Purifier)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemKitWeatherStation":{"prefab":{"prefabName":"ItemKitWeatherStation","prefabHash":337505889,"desc":"","name":"Kit (Weather Station)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Default"}},"ItemKitWindTurbine":{"prefab":{"prefabName":"ItemKitWindTurbine","prefabHash":-868916503,"desc":"","name":"Kit (Wind Turbine)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemKitWindowShutter":{"prefab":{"prefabName":"ItemKitWindowShutter","prefabHash":1779979754,"desc":"","name":"Kit (Window Shutter)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemLabeller":{"prefab":{"prefabName":"ItemLabeller","prefabHash":-743968726,"desc":"A labeller lets you set names and values on a variety of devices and structures, including Console and Logic.","name":"Labeller"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Tool","sortingClass":"Tools"},"logic":{"logicSlotTypes":{"0":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"}},"logicTypes":{"Error":"Read","On":"ReadWrite","Power":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"ItemLaptop":{"prefab":{"prefabName":"ItemLaptop","prefabHash":141535121,"desc":"The Laptop functions as a portable IC editor. To operate the Laptop it must be powered with a battery, have a IC Editor Motherboard in the motherboard slot, and an Integrated Circuit (IC10) in the Programmable Chip Slot.\n\nYou must place the laptop down to interact with the onsreen UI.\n \nConnects to Logic Transmitter","name":"Laptop"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Tool","sortingClass":"Tools"},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"1":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"2":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"}},"logicTypes":{"Error":"Read","On":"ReadWrite","PositionX":"Read","PositionY":"Read","PositionZ":"Read","Power":"Read","PressureExternal":"Read","ReferenceId":"Read","TemperatureExternal":"Read"},"transmissionReceiver":false,"wirelessLogic":true,"circuitHolder":true},"slots":[{"name":"Programmable Chip","typ":"ProgrammableChip"},{"name":"Battery","typ":"Battery"},{"name":"Motherboard","typ":"Motherboard"}]},"ItemLeadIngot":{"prefab":{"prefabName":"ItemLeadIngot","prefabHash":2134647745,"desc":"","name":"Ingot (Lead)"},"item":{"consumable":true,"ingredient":true,"maxQuantity":500,"reagents":{"Lead":1.0},"slotClass":"Ingot","sortingClass":"Resources"}},"ItemLeadOre":{"prefab":{"prefabName":"ItemLeadOre","prefabHash":-190236170,"desc":"Lead is a chemical element with the symbol \"Pb\". It is a dense, heavy metal with a low melting point. Lead is a used to make a variety of things such as alloys like Ingot (Solder) and munitions.","name":"Ore (Lead)"},"item":{"consumable":false,"ingredient":true,"maxQuantity":50,"reagents":{"Lead":1.0},"slotClass":"Ore","sortingClass":"Ores"}},"ItemLightSword":{"prefab":{"prefabName":"ItemLightSword","prefabHash":1949076595,"desc":"A charming, if useless, pseudo-weapon. (Creative only.)","name":"Light Sword"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Default"}},"ItemLiquidCanisterEmpty":{"prefab":{"prefabName":"ItemLiquidCanisterEmpty","prefabHash":-185207387,"desc":"","name":"Liquid Canister"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"LiquidCanister","sortingClass":"Atmospherics"}},"ItemLiquidCanisterSmart":{"prefab":{"prefabName":"ItemLiquidCanisterSmart","prefabHash":777684475,"desc":"0.Mode0\n1.Mode1","name":"Liquid Canister (Smart)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"LiquidCanister","sortingClass":"Atmospherics"}},"ItemLiquidDrain":{"prefab":{"prefabName":"ItemLiquidDrain","prefabHash":2036225202,"desc":"","name":"Kit (Liquid Drain)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemLiquidPipeAnalyzer":{"prefab":{"prefabName":"ItemLiquidPipeAnalyzer","prefabHash":226055671,"desc":"","name":"Kit (Liquid Pipe Analyzer)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemLiquidPipeHeater":{"prefab":{"prefabName":"ItemLiquidPipeHeater","prefabHash":-248475032,"desc":"Creates a Pipe Heater (Liquid).","name":"Pipe Heater Kit (Liquid)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Default"}},"ItemLiquidPipeValve":{"prefab":{"prefabName":"ItemLiquidPipeValve","prefabHash":-2126113312,"desc":"This kit creates a Liquid Valve.","name":"Kit (Liquid Pipe Valve)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Default"}},"ItemLiquidPipeVolumePump":{"prefab":{"prefabName":"ItemLiquidPipeVolumePump","prefabHash":-2106280569,"desc":"","name":"Kit (Liquid Volume Pump)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemLiquidTankStorage":{"prefab":{"prefabName":"ItemLiquidTankStorage","prefabHash":2037427578,"desc":"This kit produces a Kit (Liquid Canister Storage) for refilling a Liquid Canister.","name":"Kit (Liquid Canister Storage)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemMKIIAngleGrinder":{"prefab":{"prefabName":"ItemMKIIAngleGrinder","prefabHash":240174650,"desc":"Angles-be-gone with the trusty angle grinder. The MK II is more resistant to temperature and pressure.","name":"Mk II Angle Grinder"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Tool","sortingClass":"Tools"},"logic":{"logicSlotTypes":{"0":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"}},"logicTypes":{"Activate":"ReadWrite","Power":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"ItemMKIIArcWelder":{"prefab":{"prefabName":"ItemMKIIArcWelder","prefabHash":-2061979347,"desc":"","name":"Mk II Arc Welder"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Tool","sortingClass":"Tools"},"logic":{"logicSlotTypes":{"0":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"}},"logicTypes":{"Activate":"ReadWrite","Power":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"ItemMKIICrowbar":{"prefab":{"prefabName":"ItemMKIICrowbar","prefabHash":1440775434,"desc":"Recurso's entry-level crowbar is useful in a variety of everyday Stationeer settings, from opening Area Power Controls and unpowered Airlocks, to splatting pan-dimensional headcrabs, should the need arise. The MK II is more resistant to temperature and pressure.","name":"Mk II Crowbar"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Tool","sortingClass":"Tools"}},"ItemMKIIDrill":{"prefab":{"prefabName":"ItemMKIIDrill","prefabHash":324791548,"desc":"The ExMin Off-whirled Hand Drill has been a companion to Stationeers for decades. Essential for assembling and deconstructing various items and structures, regardless of gravity, pressure or temperature.","name":"Mk II Drill"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Tool","sortingClass":"Tools"},"logic":{"logicSlotTypes":{"0":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"}},"logicTypes":{"Activate":"ReadWrite","Power":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"ItemMKIIDuctTape":{"prefab":{"prefabName":"ItemMKIIDuctTape","prefabHash":388774906,"desc":"In the distant past, one of Earth's great champions taught a generation of 'Fix-It People' that duct tape was the answer to any problem. Stationeers have demonstrated that this is truth holds strong, so long as the problem is a damaged Eva Suit, Jetpack Basic, Space Helmet, or even a Solar Panel.\nTo use on yourself: put duct tape in your active hand, hold RIGHT MOUSE BUTTON to automatically repair damage.","name":"Mk II Duct Tape"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Tool","sortingClass":"Tools"}},"ItemMKIIMiningDrill":{"prefab":{"prefabName":"ItemMKIIMiningDrill","prefabHash":-1875271296,"desc":"The handheld 'Topo' tri-cone rotary mining drill was made for one thing: quick digging. Modeled on a classic Recurso zero-g design, it functions equally well in vacuum and atmosphere, with cemented carbide bits to increase resilience and bearing life, and reduce spalling. As Jenk Murtons once said, 'The Topo don't stopo.' The MK II is more resistant to temperature and pressure.","name":"Mk II Mining Drill"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Tool","sortingClass":"Tools"},"logic":{"logicSlotTypes":{"0":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"}},"logicTypes":{"Activate":"ReadWrite","Error":"Read","Mode":"ReadWrite","On":"ReadWrite","Power":"Read","ReferenceId":"Read"},"modes":{"0":"Default","1":"Flatten"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"ItemMKIIScrewdriver":{"prefab":{"prefabName":"ItemMKIIScrewdriver","prefabHash":-2015613246,"desc":"This standard issue frictional adherence adjustor is a top of the line, bi-rotational model with a columnated uni-grip. It's definitely not just a screwdriver. Use it for construction and deconstruction of certain kits, and setting values on logic units. The MK II is more resistant to temperature and pressure.","name":"Mk II Screwdriver"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Tool","sortingClass":"Tools"}},"ItemMKIIWireCutters":{"prefab":{"prefabName":"ItemMKIIWireCutters","prefabHash":-178893251,"desc":"Wirecutters allow you to deconstruct various structures, as well as cross-lay cables when held in your non-active hand, and defuse explosives as needed. Wirecutters are stored in the Tool Belt, along with other essential tools.","name":"Mk II Wire Cutters"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Tool","sortingClass":"Tools"}},"ItemMKIIWrench":{"prefab":{"prefabName":"ItemMKIIWrench","prefabHash":1862001680,"desc":"One of humanity's enduring contributions to the cosmos, the wrench represents the essence of our species. A simple, effective and spiritually barren tool, use it to build and deconstruct a variety of structures The MK II is more resistant to temperature and pressure.","name":"Mk II Wrench"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Tool","sortingClass":"Tools"}},"ItemMarineBodyArmor":{"prefab":{"prefabName":"ItemMarineBodyArmor","prefabHash":1399098998,"desc":"","name":"Marine Armor"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Suit","sortingClass":"Clothing"},"slots":[{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"}]},"ItemMarineHelmet":{"prefab":{"prefabName":"ItemMarineHelmet","prefabHash":1073631646,"desc":"","name":"Marine Helmet"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Helmet","sortingClass":"Clothing"},"slots":[{"name":"Battery","typ":"Battery"}]},"ItemMilk":{"prefab":{"prefabName":"ItemMilk","prefabHash":1327248310,"desc":"Full disclosure, it's not actually 'milk', but an Agrizero-invented synthesis of 5ml Soy Oil and 5g Fern, delicately blended in the Chemistry Station. Surprisingly filling, it can be used as an ingredient to cook other food in the Microwave or Automated Oven. Think, Muffin.","name":"Milk"},"item":{"consumable":true,"ingredient":true,"maxQuantity":100,"reagents":{"Milk":1.0},"slotClass":"None","sortingClass":"Resources"}},"ItemMiningBackPack":{"prefab":{"prefabName":"ItemMiningBackPack","prefabHash":-1650383245,"desc":"","name":"Mining Backpack"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Back","sortingClass":"Clothing"},"slots":[{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"}]},"ItemMiningBelt":{"prefab":{"prefabName":"ItemMiningBelt","prefabHash":-676435305,"desc":"Originally developed by Recurso Espaciais for asteroid mining, the Stationeer's mining belt has room for two tools and eight ore stacks. While wearing the belt, ore is automatically stored there when mined. Volatile and temperature-dependent remain stable in the environmentally controlled unit.","name":"Mining Belt"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Belt","sortingClass":"Clothing"},"slots":[{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"}]},"ItemMiningBeltMKII":{"prefab":{"prefabName":"ItemMiningBeltMKII","prefabHash":1470787934,"desc":"A larger and more capacious mining belt, the Mk II is similar to the Mining Belt, but has 13 slots instead of the basic 8, to increase the length of your mining trips. It also has space for two tools. ","name":"Mining Belt MK II"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Belt","sortingClass":"Clothing"},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"1":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"2":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"3":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"4":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"5":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"6":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"7":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"8":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"9":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"10":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"11":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"12":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"13":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"14":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"}},"logicTypes":{"ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"}]},"ItemMiningCharge":{"prefab":{"prefabName":"ItemMiningCharge","prefabHash":15829510,"desc":"A low cost, high yield explosive with a 10 second timer.","name":"Mining Charge"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Default"}},"ItemMiningDrill":{"prefab":{"prefabName":"ItemMiningDrill","prefabHash":1055173191,"desc":"The handheld 'Topo' tri-cone rotary mining drill was made for one thing: quick digging. Modeled on a classic Recurso zero-g design, it functions equally well in vacuum and atmosphere, with cemented carbide bits to increase resilience and bearing life, and reduce spalling. As Jenk Murtons once said, 'The Topo don't stopo.'","name":"Mining Drill"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Tool","sortingClass":"Tools"},"logic":{"logicSlotTypes":{"0":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"}},"logicTypes":{"Activate":"ReadWrite","Error":"Read","Mode":"ReadWrite","On":"ReadWrite","Power":"Read","ReferenceId":"Read"},"modes":{"0":"Default","1":"Flatten"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"ItemMiningDrillHeavy":{"prefab":{"prefabName":"ItemMiningDrillHeavy","prefabHash":-1663349918,"desc":"Sometimes mining trips require something a little bigger to bring home the goods. This scaled up version of the Recurso 'Topo' design Mining Drill can literally move mountains. The heavy mining drill will remove more ground and mine ore more quickly than the standard mining drill. The heavy mining drill is also resilient to temperature and pressure. So no matter what planet or extreme weather conditions may be present, the Recurso heavy mining drill will get the job done.","name":"Mining Drill (Heavy)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Tool","sortingClass":"Tools"},"logic":{"logicSlotTypes":{"0":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"}},"logicTypes":{"Activate":"ReadWrite","Error":"Read","Mode":"ReadWrite","On":"ReadWrite","Power":"Read","ReferenceId":"Read"},"modes":{"0":"Default","1":"Flatten"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"ItemMiningDrillPneumatic":{"prefab":{"prefabName":"ItemMiningDrillPneumatic","prefabHash":1258187304,"desc":"0.Default\n1.Flatten","name":"Pneumatic Mining Drill"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Tool","sortingClass":"Tools"},"slots":[{"name":"Gas Canister","typ":"GasCanister"}]},"ItemMkIIToolbelt":{"prefab":{"prefabName":"ItemMkIIToolbelt","prefabHash":1467558064,"desc":"A large, ten-slot tool belt with two extra generic slots for carrying whatever takes your fancy.","name":"Tool Belt MK II"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Belt","sortingClass":"Clothing"},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"1":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"2":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"3":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"4":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"5":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"6":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"7":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"8":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"9":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"10":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"11":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"}},"logicTypes":{"ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"","typ":"None"},{"name":"","typ":"None"}]},"ItemMuffin":{"prefab":{"prefabName":"ItemMuffin","prefabHash":-1864982322,"desc":"A delicious, semi-healthful snack, nothing comforts a Stationeer 800 million kilometers from home like a hand-made muffin.","name":"Muffin"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Food"}},"ItemMushroom":{"prefab":{"prefabName":"ItemMushroom","prefabHash":2044798572,"desc":"A tasty food item. Unlike normal plants, it consumes Oxygen and outputs Carbon Dioxide. Mushrooms will only mature at a moderate rate in darkness, and prolonged light will kill it.","name":"Mushroom"},"item":{"consumable":false,"ingredient":true,"maxQuantity":20,"reagents":{"Mushroom":1.0},"slotClass":"Plant","sortingClass":"Resources"}},"ItemNVG":{"prefab":{"prefabName":"ItemNVG","prefabHash":982514123,"desc":"","name":"Night Vision Goggles"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Glasses","sortingClass":"Clothing"},"logic":{"logicSlotTypes":{"0":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"}},"logicTypes":{"Lock":"ReadWrite","On":"ReadWrite","Power":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"ItemNickelIngot":{"prefab":{"prefabName":"ItemNickelIngot","prefabHash":-1406385572,"desc":"","name":"Ingot (Nickel)"},"item":{"consumable":true,"ingredient":true,"maxQuantity":500,"reagents":{"Nickel":1.0},"slotClass":"Ingot","sortingClass":"Resources"}},"ItemNickelOre":{"prefab":{"prefabName":"ItemNickelOre","prefabHash":1830218956,"desc":"Nickel is a chemical element with the symbol \"Ni\" and is a rare metal commonly used as a plating to prevent corrosion. Sought after by many Stationeers, Nickel is also commonly used to create several alloys.","name":"Ore (Nickel)"},"item":{"consumable":false,"ingredient":true,"maxQuantity":50,"reagents":{"Nickel":1.0},"slotClass":"Ore","sortingClass":"Ores"}},"ItemNitrice":{"prefab":{"prefabName":"ItemNitrice","prefabHash":-1499471529,"desc":"Nitrice is the nickname given to solid Nitrogen Ice, and found on many planets and moons in the Solar System. Given the inert nature of the Nitrogen it produces, the ice is useful when making breathable atmospheres with low flammability.\n\nHighly sensitive to temperature, nitrice will begin to melt as soon as it is mined, unless the temperature is below zero, or it is stored in the Mining Belt, Mining Belt MK II or devices like the Ice Crusher or Fridge Small.","name":"Ice (Nitrice)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":50,"slotClass":"Ore","sortingClass":"Ices"}},"ItemOxite":{"prefab":{"prefabName":"ItemOxite","prefabHash":-1805394113,"desc":"Oxite ice is largely composed of frozen Oxygen, and found on many planets in the Solar System. Highly valuable and sought after, not all planets a Stationeer visits will have some. \n\nHighly sensitive to temperature, oxite will begin to melt as soon as it is mined, unless the temperature is below zero, or it is stored in the Mining Belt, Mining Belt MK II or devices like the Ice Crusher or Fridge Small. When melting, oxite produces a mixture of Oxygen and Nitrogen.","name":"Ice (Oxite)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":50,"slotClass":"Ore","sortingClass":"Ices"}},"ItemPassiveVent":{"prefab":{"prefabName":"ItemPassiveVent","prefabHash":238631271,"desc":"This kit creates a Passive Vent among other variants.","name":"Passive Vent"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemPassiveVentInsulated":{"prefab":{"prefabName":"ItemPassiveVentInsulated","prefabHash":-1397583760,"desc":"","name":"Kit (Insulated Passive Vent)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemPeaceLily":{"prefab":{"prefabName":"ItemPeaceLily","prefabHash":2042955224,"desc":"A fetching lily with greater resistance to cold temperatures.","name":"Peace Lily"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"Plant","sortingClass":"Resources"}},"ItemPickaxe":{"prefab":{"prefabName":"ItemPickaxe","prefabHash":-913649823,"desc":"When the sun sets and the Mining Drill runs dead, its batteries drained and your Solar Panel cold and lifeless, the Autolathe empty, the way forward unclear, one thing holds back the endless night of defeat: the trusty pickaxe.","name":"Pickaxe"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Tool","sortingClass":"Tools"}},"ItemPillHeal":{"prefab":{"prefabName":"ItemPillHeal","prefabHash":1118069417,"desc":"Three centuries of pharmaceutical technology compressed into one small, easy to ingest pill: the Heal Pill, aka the Proton Pill, aka Mr Happy contains active enzymes, therapeutic proteins, modified microbial strains, and mammalian cell line analogues in a single-dose boost of high purity, efficacy, and potency that potentiates a swift parasympathetic immune response.","name":"Pill (Medical)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Food"}},"ItemPillStun":{"prefab":{"prefabName":"ItemPillStun","prefabHash":418958601,"desc":"Through rarely publicized, the existence of this pill is an open secret. For use when all else has failed, the Sayonara Suppository immobilizes and rapidly ends the average Stationeer. The delivery mode ensures that if a Stationeer chooses to take this pill, they really have to want it.","name":"Pill (Paralysis)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Food"}},"ItemPipeAnalyizer":{"prefab":{"prefabName":"ItemPipeAnalyizer","prefabHash":-767597887,"desc":"This kit creates a Pipe Analyzer.","name":"Kit (Pipe Analyzer)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemPipeCowl":{"prefab":{"prefabName":"ItemPipeCowl","prefabHash":-38898376,"desc":"This creates a Pipe Cowl that can be placed on the end of pipes to expose them to the world atmospheres.","name":"Pipe Cowl"},"item":{"consumable":false,"ingredient":false,"maxQuantity":20,"slotClass":"None","sortingClass":"Kits"}},"ItemPipeDigitalValve":{"prefab":{"prefabName":"ItemPipeDigitalValve","prefabHash":-1532448832,"desc":"This kit creates a Digital Valve.","name":"Kit (Digital Valve)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemPipeGasMixer":{"prefab":{"prefabName":"ItemPipeGasMixer","prefabHash":-1134459463,"desc":"This kit creates a Gas Mixer.","name":"Kit (Gas Mixer)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemPipeHeater":{"prefab":{"prefabName":"ItemPipeHeater","prefabHash":-1751627006,"desc":"Creates a Pipe Heater (Gas).","name":"Pipe Heater Kit (Gas)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Default"}},"ItemPipeIgniter":{"prefab":{"prefabName":"ItemPipeIgniter","prefabHash":1366030599,"desc":"","name":"Kit (Pipe Igniter)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemPipeLabel":{"prefab":{"prefabName":"ItemPipeLabel","prefabHash":391769637,"desc":"This kit creates a Pipe Label.","name":"Kit (Pipe Label)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":20,"slotClass":"None","sortingClass":"Kits"}},"ItemPipeLiquidRadiator":{"prefab":{"prefabName":"ItemPipeLiquidRadiator","prefabHash":-906521320,"desc":"This kit creates a Liquid Pipe Convection Radiator.","name":"Kit (Liquid Radiator)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemPipeMeter":{"prefab":{"prefabName":"ItemPipeMeter","prefabHash":1207939683,"desc":"This kit creates a Pipe Meter.","name":"Kit (Pipe Meter)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemPipeRadiator":{"prefab":{"prefabName":"ItemPipeRadiator","prefabHash":-1796655088,"desc":"This kit creates a Pipe Convection Radiator.","name":"Kit (Radiator)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemPipeValve":{"prefab":{"prefabName":"ItemPipeValve","prefabHash":799323450,"desc":"This kit creates a Valve.","name":"Kit (Pipe Valve)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Default"}},"ItemPipeVolumePump":{"prefab":{"prefabName":"ItemPipeVolumePump","prefabHash":-1766301997,"desc":"This kit creates a Volume Pump.","name":"Kit (Volume Pump)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemPlainCake":{"prefab":{"prefabName":"ItemPlainCake","prefabHash":-1108244510,"desc":"","name":"Cake"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Food"}},"ItemPlantEndothermic_Creative":{"prefab":{"prefabName":"ItemPlantEndothermic_Creative","prefabHash":-1159179557,"desc":"","name":"Endothermic Plant Creative"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"Plant","sortingClass":"Resources"}},"ItemPlantEndothermic_Genepool1":{"prefab":{"prefabName":"ItemPlantEndothermic_Genepool1","prefabHash":851290561,"desc":"Agrizero's Winterspawn atmospheric bio-processor is a recent addition to their catalog of genespliced environmental decorations. Using ambient heat to split Water into Volatiles and Oxygen, the Winterspawn cools its surroundings, when supplied with sufficient Nitrogen. The alpha variant has a peak cooling and electrolysis capacity of 90Watts and is most efficient operating in air temperatures of 0 to 40 Degrees Celsius.","name":"Winterspawn (Alpha variant)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"Plant","sortingClass":"Resources"}},"ItemPlantEndothermic_Genepool2":{"prefab":{"prefabName":"ItemPlantEndothermic_Genepool2","prefabHash":-1414203269,"desc":"Agrizero's Winterspawn atmospheric bio-processor is a recent addition to their catalog of genespliced environmental decorations. Using ambient heat to split Water into Volatiles and Oxygen, the Winterspawn cools its surroundings when supplied with sufficient Nitrogen. The beta variant has a peak cooling and electrolysis capacity of 150Watts and is most efficient operating in air temperatures of 14 to 24 Degrees Celsius.","name":"Winterspawn (Beta variant)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"Plant","sortingClass":"Resources"}},"ItemPlantSampler":{"prefab":{"prefabName":"ItemPlantSampler","prefabHash":173023800,"desc":"The Plant Sampler allows you to take a gene sample of a growing plant. The sampler can then be placed in the Plant Genetic Analyzer to attain and interpret the results.","name":"Plant Sampler"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Tool","sortingClass":"Tools"},"logic":{"logicSlotTypes":{"0":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"}},"logicTypes":{"Activate":"ReadWrite","Mode":"ReadWrite","On":"ReadWrite","Power":"Read","ReferenceId":"Read"},"modes":{"0":"Mode0","1":"Mode1"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"ItemPlantSwitchGrass":{"prefab":{"prefabName":"ItemPlantSwitchGrass","prefabHash":-532672323,"desc":"","name":"Switch Grass"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"Plant","sortingClass":"Default"}},"ItemPlantThermogenic_Creative":{"prefab":{"prefabName":"ItemPlantThermogenic_Creative","prefabHash":-1208890208,"desc":"","name":"Thermogenic Plant Creative"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"Plant","sortingClass":"Resources"}},"ItemPlantThermogenic_Genepool1":{"prefab":{"prefabName":"ItemPlantThermogenic_Genepool1","prefabHash":-177792789,"desc":"The Agrizero's-created Hades Flower is the result of as dubious experiment to combine the allure of tropical plants with the comfort and homeliness of a heat pump. The plant breathes a 1:3 mix of Volatiles and Oxygen, and exhales heated Pollutant.","name":"Hades Flower (Alpha strain)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"Plant","sortingClass":"Resources"}},"ItemPlantThermogenic_Genepool2":{"prefab":{"prefabName":"ItemPlantThermogenic_Genepool2","prefabHash":1819167057,"desc":"The Agrizero's-created Hades Flower is the result of as dubious experiment to combine the allure of tropical plants with the comfort and homeliness of a heat pump. The plant breathes a 1:3 mix of Volatiles and Oxygen, and exhales heated Pollutant. The beta strain is notably more efficient than the earlier, more experimental alpha variant.","name":"Hades Flower (Beta strain)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"Plant","sortingClass":"Resources"}},"ItemPlasticSheets":{"prefab":{"prefabName":"ItemPlasticSheets","prefabHash":662053345,"desc":"","name":"Plastic Sheets"},"item":{"consumable":false,"ingredient":false,"maxQuantity":50,"slotClass":"None","sortingClass":"Resources"}},"ItemPotato":{"prefab":{"prefabName":"ItemPotato","prefabHash":1929046963,"desc":" Potatoes are a simple, fast growing crop that can keep Stationeers alive in emergencies.","name":"Potato"},"item":{"consumable":false,"ingredient":true,"maxQuantity":20,"reagents":{"Potato":1.0},"slotClass":"Plant","sortingClass":"Resources"}},"ItemPotatoBaked":{"prefab":{"prefabName":"ItemPotatoBaked","prefabHash":-2111886401,"desc":"","name":"Baked Potato"},"item":{"consumable":true,"ingredient":true,"maxQuantity":1,"reagents":{"Potato":1.0},"slotClass":"None","sortingClass":"Food"}},"ItemPowerConnector":{"prefab":{"prefabName":"ItemPowerConnector","prefabHash":839924019,"desc":"This kit creates a Power Connector.","name":"Kit (Power Connector)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemPumpkin":{"prefab":{"prefabName":"ItemPumpkin","prefabHash":1277828144,"desc":"Pumpkins are a perennial plant, with both a long growth time, and a long time between harvests. Its low requirement for darkness allows for accelerated growing if provided with extra light.","name":"Pumpkin"},"item":{"consumable":false,"ingredient":true,"maxQuantity":20,"reagents":{"Pumpkin":1.0},"slotClass":"Plant","sortingClass":"Resources"}},"ItemPumpkinPie":{"prefab":{"prefabName":"ItemPumpkinPie","prefabHash":62768076,"desc":"","name":"Pumpkin Pie"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Food"}},"ItemPumpkinSoup":{"prefab":{"prefabName":"ItemPumpkinSoup","prefabHash":1277979876,"desc":"Made using Cooked Pumpkin and an Empty Can in a Basic Packaging Machine or Advanced Packaging Machine. Fairly high in nutrition, canned food does not decay","name":"Pumpkin Soup"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Food"}},"ItemPureIce":{"prefab":{"prefabName":"ItemPureIce","prefabHash":-1616308158,"desc":"A frozen chunk of pure Water","name":"Pure Ice Water"},"item":{"consumable":false,"ingredient":false,"maxQuantity":50,"slotClass":"Ore","sortingClass":"Ices"}},"ItemPureIceCarbonDioxide":{"prefab":{"prefabName":"ItemPureIceCarbonDioxide","prefabHash":-1251009404,"desc":"A frozen chunk of pure Carbon Dioxide","name":"Pure Ice Carbon Dioxide"},"item":{"consumable":false,"ingredient":false,"maxQuantity":50,"slotClass":"Ore","sortingClass":"Ices"}},"ItemPureIceHydrogen":{"prefab":{"prefabName":"ItemPureIceHydrogen","prefabHash":944530361,"desc":"A frozen chunk of pure Hydrogen","name":"Pure Ice Hydrogen"},"item":{"consumable":false,"ingredient":false,"maxQuantity":50,"slotClass":"Ore","sortingClass":"Ices"}},"ItemPureIceLiquidCarbonDioxide":{"prefab":{"prefabName":"ItemPureIceLiquidCarbonDioxide","prefabHash":-1715945725,"desc":"A frozen chunk of pure Liquid Carbon Dioxide","name":"Pure Ice Liquid Carbon Dioxide"},"item":{"consumable":false,"ingredient":false,"maxQuantity":50,"slotClass":"Ore","sortingClass":"Ices"}},"ItemPureIceLiquidHydrogen":{"prefab":{"prefabName":"ItemPureIceLiquidHydrogen","prefabHash":-1044933269,"desc":"A frozen chunk of pure Liquid Hydrogen","name":"Pure Ice Liquid Hydrogen"},"item":{"consumable":false,"ingredient":false,"maxQuantity":50,"slotClass":"Ore","sortingClass":"Ices"}},"ItemPureIceLiquidNitrogen":{"prefab":{"prefabName":"ItemPureIceLiquidNitrogen","prefabHash":1674576569,"desc":"A frozen chunk of pure Liquid Nitrogen","name":"Pure Ice Liquid Nitrogen"},"item":{"consumable":false,"ingredient":false,"maxQuantity":50,"slotClass":"Ore","sortingClass":"Ices"}},"ItemPureIceLiquidNitrous":{"prefab":{"prefabName":"ItemPureIceLiquidNitrous","prefabHash":1428477399,"desc":"A frozen chunk of pure Liquid Nitrous Oxide","name":"Pure Ice Liquid Nitrous"},"item":{"consumable":false,"ingredient":false,"maxQuantity":50,"slotClass":"Ore","sortingClass":"Ices"}},"ItemPureIceLiquidOxygen":{"prefab":{"prefabName":"ItemPureIceLiquidOxygen","prefabHash":541621589,"desc":"A frozen chunk of pure Liquid Oxygen","name":"Pure Ice Liquid Oxygen"},"item":{"consumable":false,"ingredient":false,"maxQuantity":50,"slotClass":"Ore","sortingClass":"Ices"}},"ItemPureIceLiquidPollutant":{"prefab":{"prefabName":"ItemPureIceLiquidPollutant","prefabHash":-1748926678,"desc":"A frozen chunk of pure Liquid Pollutant","name":"Pure Ice Liquid Pollutant"},"item":{"consumable":false,"ingredient":false,"maxQuantity":50,"slotClass":"Ore","sortingClass":"Ices"}},"ItemPureIceLiquidVolatiles":{"prefab":{"prefabName":"ItemPureIceLiquidVolatiles","prefabHash":-1306628937,"desc":"A frozen chunk of pure Liquid Volatiles","name":"Pure Ice Liquid Volatiles"},"item":{"consumable":false,"ingredient":false,"maxQuantity":50,"slotClass":"Ore","sortingClass":"Ices"}},"ItemPureIceNitrogen":{"prefab":{"prefabName":"ItemPureIceNitrogen","prefabHash":-1708395413,"desc":"A frozen chunk of pure Nitrogen","name":"Pure Ice Nitrogen"},"item":{"consumable":false,"ingredient":false,"maxQuantity":50,"slotClass":"Ore","sortingClass":"Ices"}},"ItemPureIceNitrous":{"prefab":{"prefabName":"ItemPureIceNitrous","prefabHash":386754635,"desc":"A frozen chunk of pure Nitrous Oxide","name":"Pure Ice NitrousOxide"},"item":{"consumable":false,"ingredient":false,"maxQuantity":50,"slotClass":"Ore","sortingClass":"Ices"}},"ItemPureIceOxygen":{"prefab":{"prefabName":"ItemPureIceOxygen","prefabHash":-1150448260,"desc":"A frozen chunk of pure Oxygen","name":"Pure Ice Oxygen"},"item":{"consumable":false,"ingredient":false,"maxQuantity":50,"slotClass":"Ore","sortingClass":"Ices"}},"ItemPureIcePollutant":{"prefab":{"prefabName":"ItemPureIcePollutant","prefabHash":-1755356,"desc":"A frozen chunk of pure Pollutant","name":"Pure Ice Pollutant"},"item":{"consumable":false,"ingredient":false,"maxQuantity":50,"slotClass":"Ore","sortingClass":"Ices"}},"ItemPureIcePollutedWater":{"prefab":{"prefabName":"ItemPureIcePollutedWater","prefabHash":-2073202179,"desc":"A frozen chunk of Polluted Water","name":"Pure Ice Polluted Water"},"item":{"consumable":false,"ingredient":false,"maxQuantity":50,"slotClass":"Ore","sortingClass":"Ices"}},"ItemPureIceSteam":{"prefab":{"prefabName":"ItemPureIceSteam","prefabHash":-874791066,"desc":"A frozen chunk of pure Steam","name":"Pure Ice Steam"},"item":{"consumable":false,"ingredient":false,"maxQuantity":50,"slotClass":"Ore","sortingClass":"Ices"}},"ItemPureIceVolatiles":{"prefab":{"prefabName":"ItemPureIceVolatiles","prefabHash":-633723719,"desc":"A frozen chunk of pure Volatiles","name":"Pure Ice Volatiles"},"item":{"consumable":false,"ingredient":false,"maxQuantity":50,"slotClass":"Ore","sortingClass":"Ices"}},"ItemRTG":{"prefab":{"prefabName":"ItemRTG","prefabHash":495305053,"desc":"This kit creates that miracle of modern science, a Kit (Creative RTG).","name":"Kit (Creative RTG)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemRTGSurvival":{"prefab":{"prefabName":"ItemRTGSurvival","prefabHash":1817645803,"desc":"This kit creates a Kit (RTG).","name":"Kit (RTG)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"ItemReagentMix":{"prefab":{"prefabName":"ItemReagentMix","prefabHash":-1641500434,"desc":"Reagent mix is pure potential. A slurry of undifferentiated ores, it is output by the Recycler and can be fed into the Centrifuge to separate and recover the individual materials. Reagent mix is also output by the Furnace when the current contents are ejected without smelting a specific ingot.","name":"Reagent Mix"},"item":{"consumable":false,"ingredient":false,"maxQuantity":50,"slotClass":"Ore","sortingClass":"Ores"}},"ItemRemoteDetonator":{"prefab":{"prefabName":"ItemRemoteDetonator","prefabHash":678483886,"desc":"","name":"Remote Detonator"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Tool","sortingClass":"Tools"},"logic":{"logicSlotTypes":{"0":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"}},"logicTypes":{"Error":"Read","On":"ReadWrite","Power":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"ItemReusableFireExtinguisher":{"prefab":{"prefabName":"ItemReusableFireExtinguisher","prefabHash":-1773192190,"desc":"Requires a canister filled with any inert liquid to opperate.","name":"Fire Extinguisher (Reusable)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Tool","sortingClass":"Tools"},"slots":[{"name":"Liquid Canister","typ":"LiquidCanister"}]},"ItemRice":{"prefab":{"prefabName":"ItemRice","prefabHash":658916791,"desc":"Rice grows at a moderate rate as long as its supplied with plenty of water. Being more dependant on water, rice plants can easily die during periods of drought.","name":"Rice"},"item":{"consumable":false,"ingredient":true,"maxQuantity":50,"reagents":{"Rice":1.0},"slotClass":"Plant","sortingClass":"Resources"}},"ItemRoadFlare":{"prefab":{"prefabName":"ItemRoadFlare","prefabHash":871811564,"desc":"Designed to burn anywhere in the Solar System, the EZC magnesium fusee supplies its own oxygen to fuel combustion, and dispel the eternal night of space.","name":"Road Flare"},"item":{"consumable":false,"ingredient":false,"maxQuantity":20,"slotClass":"Flare","sortingClass":"Default"}},"ItemRocketMiningDrillHead":{"prefab":{"prefabName":"ItemRocketMiningDrillHead","prefabHash":2109945337,"desc":"Replaceable drill head for Rocket Miner","name":"Mining-Drill Head (Basic)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":100,"slotClass":"DrillHead","sortingClass":"Default"}},"ItemRocketMiningDrillHeadDurable":{"prefab":{"prefabName":"ItemRocketMiningDrillHeadDurable","prefabHash":1530764483,"desc":"","name":"Mining-Drill Head (Durable)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":100,"slotClass":"DrillHead","sortingClass":"Default"}},"ItemRocketMiningDrillHeadHighSpeedIce":{"prefab":{"prefabName":"ItemRocketMiningDrillHeadHighSpeedIce","prefabHash":653461728,"desc":"","name":"Mining-Drill Head (High Speed Ice)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":100,"slotClass":"DrillHead","sortingClass":"Default"}},"ItemRocketMiningDrillHeadHighSpeedMineral":{"prefab":{"prefabName":"ItemRocketMiningDrillHeadHighSpeedMineral","prefabHash":1440678625,"desc":"","name":"Mining-Drill Head (High Speed Mineral)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":100,"slotClass":"DrillHead","sortingClass":"Default"}},"ItemRocketMiningDrillHeadIce":{"prefab":{"prefabName":"ItemRocketMiningDrillHeadIce","prefabHash":-380904592,"desc":"","name":"Mining-Drill Head (Ice)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":100,"slotClass":"DrillHead","sortingClass":"Default"}},"ItemRocketMiningDrillHeadLongTerm":{"prefab":{"prefabName":"ItemRocketMiningDrillHeadLongTerm","prefabHash":-684020753,"desc":"","name":"Mining-Drill Head (Long Term)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":100,"slotClass":"DrillHead","sortingClass":"Default"}},"ItemRocketMiningDrillHeadMineral":{"prefab":{"prefabName":"ItemRocketMiningDrillHeadMineral","prefabHash":1083675581,"desc":"","name":"Mining-Drill Head (Mineral)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":100,"slotClass":"DrillHead","sortingClass":"Default"}},"ItemRocketScanningHead":{"prefab":{"prefabName":"ItemRocketScanningHead","prefabHash":-1198702771,"desc":"","name":"Rocket Scanner Head"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"ScanningHead","sortingClass":"Default"}},"ItemScanner":{"prefab":{"prefabName":"ItemScanner","prefabHash":1661270830,"desc":"A mysterious piece of technology, rumored to have Zrillian origins.","name":"Handheld Scanner"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Default"}},"ItemScrewdriver":{"prefab":{"prefabName":"ItemScrewdriver","prefabHash":687940869,"desc":"This standard issue frictional adherence adjustor is a top of the line, bi-rotational model with a columnated uni-grip. It's definitely not just a screwdriver. Use it for construction and deconstruction of certain kits, and setting values on logic units.","name":"Screwdriver"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Tool","sortingClass":"Tools"}},"ItemSecurityCamera":{"prefab":{"prefabName":"ItemSecurityCamera","prefabHash":-1981101032,"desc":"Security cameras can be paired with a Motion Sensor, then connected to a Console fitted with a Camera Display for that 'always watched' feeling.","name":"Security Camera"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Default"}},"ItemSensorLenses":{"prefab":{"prefabName":"ItemSensorLenses","prefabHash":-1176140051,"desc":"These Norsec glasses might not be the most fashionable thing, but when a Sensor Processing Unit (Ore Scanner) is inserted, Stationeers can use these handy glasses to x-ray the ground and find ores that are hidden beneath the surface.","name":"Sensor Lenses"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Glasses","sortingClass":"Clothing"},"logic":{"logicSlotTypes":{"0":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"1":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"}},"logicTypes":{"On":"ReadWrite","Power":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Battery","typ":"Battery"},{"name":"Sensor Processing Unit","typ":"SensorProcessingUnit"}]},"ItemSensorProcessingUnitCelestialScanner":{"prefab":{"prefabName":"ItemSensorProcessingUnitCelestialScanner","prefabHash":-1154200014,"desc":"","name":"Sensor Processing Unit (Celestial Scanner)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"SensorProcessingUnit","sortingClass":"Default"}},"ItemSensorProcessingUnitMesonScanner":{"prefab":{"prefabName":"ItemSensorProcessingUnitMesonScanner","prefabHash":-1730464583,"desc":"The T-Ray Scanner Sensor Processing Unit can be inserted into the Sensor Lenses to show an overlay of pipes and cables. This can be useful when building behind walls or other structures.","name":"Sensor Processing Unit (T-Ray Scanner)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"SensorProcessingUnit","sortingClass":"Default"}},"ItemSensorProcessingUnitOreScanner":{"prefab":{"prefabName":"ItemSensorProcessingUnitOreScanner","prefabHash":-1219128491,"desc":"The Sensor Processing unit can be inserted into Sensor Lenses to reveal underground minerals in a HUD.","name":"Sensor Processing Unit (Ore Scanner)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"SensorProcessingUnit","sortingClass":"Default"}},"ItemSiliconIngot":{"prefab":{"prefabName":"ItemSiliconIngot","prefabHash":-290196476,"desc":"","name":"Ingot (Silicon)"},"item":{"consumable":true,"ingredient":true,"maxQuantity":500,"reagents":{"Silicon":1.0},"slotClass":"Ingot","sortingClass":"Resources"}},"ItemSiliconOre":{"prefab":{"prefabName":"ItemSiliconOre","prefabHash":1103972403,"desc":"Silicon is a chemical element with the symbol \"Si\" and is one of the most useful elements to Stationeers. Readily available throughout the universe, silicon is used in a range of alloys, glass, plastics and various electronic components a Stationeer may need to complete their mission.","name":"Ore (Silicon)"},"item":{"consumable":false,"ingredient":true,"maxQuantity":50,"reagents":{"Silicon":1.0},"slotClass":"Ore","sortingClass":"Ores"}},"ItemSilverIngot":{"prefab":{"prefabName":"ItemSilverIngot","prefabHash":-929742000,"desc":"","name":"Ingot (Silver)"},"item":{"consumable":true,"ingredient":true,"maxQuantity":500,"reagents":{"Silver":1.0},"slotClass":"Ingot","sortingClass":"Resources"}},"ItemSilverOre":{"prefab":{"prefabName":"ItemSilverOre","prefabHash":-916518678,"desc":"Silver is a chemical element with the symbol \"Ag\". Valued by many Stationeers for its attractive luster and sheen, it is also used in a variety of electronics components and alloys.","name":"Ore (Silver)"},"item":{"consumable":false,"ingredient":true,"maxQuantity":50,"reagents":{"Silver":1.0},"slotClass":"Ore","sortingClass":"Ores"}},"ItemSolderIngot":{"prefab":{"prefabName":"ItemSolderIngot","prefabHash":-82508479,"desc":"","name":"Ingot (Solder)"},"item":{"consumable":true,"ingredient":true,"maxQuantity":500,"reagents":{"Solder":1.0},"slotClass":"Ingot","sortingClass":"Resources"}},"ItemSolidFuel":{"prefab":{"prefabName":"ItemSolidFuel","prefabHash":-365253871,"desc":"","name":"Solid Fuel (Hydrocarbon)"},"item":{"consumable":true,"ingredient":true,"maxQuantity":500,"reagents":{"Hydrocarbon":1.0},"slotClass":"Ore","sortingClass":"Resources"}},"ItemSoundCartridgeBass":{"prefab":{"prefabName":"ItemSoundCartridgeBass","prefabHash":-1883441704,"desc":"","name":"Sound Cartridge Bass"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"SoundCartridge","sortingClass":"Default"}},"ItemSoundCartridgeDrums":{"prefab":{"prefabName":"ItemSoundCartridgeDrums","prefabHash":-1901500508,"desc":"","name":"Sound Cartridge Drums"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"SoundCartridge","sortingClass":"Default"}},"ItemSoundCartridgeLeads":{"prefab":{"prefabName":"ItemSoundCartridgeLeads","prefabHash":-1174735962,"desc":"","name":"Sound Cartridge Leads"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"SoundCartridge","sortingClass":"Default"}},"ItemSoundCartridgeSynth":{"prefab":{"prefabName":"ItemSoundCartridgeSynth","prefabHash":-1971419310,"desc":"","name":"Sound Cartridge Synth"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"SoundCartridge","sortingClass":"Default"}},"ItemSoyOil":{"prefab":{"prefabName":"ItemSoyOil","prefabHash":1387403148,"desc":"","name":"Soy Oil"},"item":{"consumable":true,"ingredient":true,"maxQuantity":100,"reagents":{"Oil":1.0},"slotClass":"None","sortingClass":"Resources"}},"ItemSoybean":{"prefab":{"prefabName":"ItemSoybean","prefabHash":1924673028,"desc":" Soybeans grow at a moderate rate, but require atmospheric Nitrogen to grow. Its main use is to create Soy Oil","name":"Soybean"},"item":{"consumable":false,"ingredient":true,"maxQuantity":100,"reagents":{"Soy":1.0},"slotClass":"Plant","sortingClass":"Resources"}},"ItemSpaceCleaner":{"prefab":{"prefabName":"ItemSpaceCleaner","prefabHash":-1737666461,"desc":"There was a time when humanity really wanted to keep space clean. That time has passed.","name":"Space Cleaner"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Default"}},"ItemSpaceHelmet":{"prefab":{"prefabName":"ItemSpaceHelmet","prefabHash":714830451,"desc":"The basic space helmet insulates Stationeers against everything from hard vacuum to weird cooking smells. Providing a pressure-controlled, breathable atmosphere, it comes with a built-in light powered by your Eva Suit Battery Cell (Small).\nIt also incorporates a lock/unlock feature to avoid accidental opening, as well as a flush function to expel and replace the internal atmosphere. If damaged, use Duct Tape to fix it, or paint it any color you like using the Paint Mixer.","name":"Space Helmet"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Helmet","sortingClass":"Clothing"},"logic":{"logicSlotTypes":{},"logicTypes":{"Combustion":"Read","Flush":"Write","Lock":"ReadWrite","On":"ReadWrite","Open":"ReadWrite","Power":"Read","Pressure":"Read","RatioCarbonDioxide":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioVolatiles":"Read","RatioWater":"Read","ReferenceId":"Read","SoundAlert":"ReadWrite","Temperature":"Read","TotalMoles":"Read","Volume":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[]},"ItemSpaceIce":{"prefab":{"prefabName":"ItemSpaceIce","prefabHash":675686937,"desc":"","name":"Space Ice"},"item":{"consumable":false,"ingredient":false,"maxQuantity":100,"slotClass":"Ore","sortingClass":"Ores"}},"ItemSpaceOre":{"prefab":{"prefabName":"ItemSpaceOre","prefabHash":2131916219,"desc":"Ore mined from asteroids via the Rocket Miner which then must be processed in the Centrifuge, or Combustion Centrifuge to produce smeltable ores.","name":"Dirty Ore"},"item":{"consumable":false,"ingredient":false,"maxQuantity":100,"slotClass":"Ore","sortingClass":"Ores"}},"ItemSpacepack":{"prefab":{"prefabName":"ItemSpacepack","prefabHash":-1260618380,"desc":"The basic CHAC spacepack isn't 'technically' a jetpack, it's a gas thruster. It can be powered by any gas, so long as the internal pressure of the canister is higher than the ambient external pressure. If the external pressure is greater, the spacepack will not function.\nIndispensable for building, mining and general movement, it has ten storage slots and lets Stationeers fly at 3m/s, compared to the more powerful Jetpack Basic or Hardsuit Jetpack. Adjusting the thrust value alters your rate of acceleration, while activating the stablizer causes the spacepack to hover when a given height is reached.\nUSE: 'J' to activate; 'space' to fly up; 'left ctrl' to descend; and 'WASD' to move.","name":"Spacepack"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Back","sortingClass":"Clothing"},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Pressure":"Read","Quantity":"Read","ReferenceId":"Read","Temperature":"Read"},"1":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"2":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"3":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"4":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"5":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"6":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"7":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"8":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"9":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"}},"logicTypes":{"Activate":"ReadWrite","On":"ReadWrite","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Propellant","typ":"GasCanister"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"}]},"ItemSprayCanBlack":{"prefab":{"prefabName":"ItemSprayCanBlack","prefabHash":-688107795,"desc":"Go classic, clandestine or just plain Gothic with black paint, which can be applied to most items. Each can has 20 uses.","name":"Spray Paint (Black)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Bottle","sortingClass":"Default"}},"ItemSprayCanBlue":{"prefab":{"prefabName":"ItemSprayCanBlue","prefabHash":-498464883,"desc":"What kind of a color is blue? The kind of of color that says, 'Hey, what about me?'","name":"Spray Paint (Blue)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Bottle","sortingClass":"Default"}},"ItemSprayCanBrown":{"prefab":{"prefabName":"ItemSprayCanBrown","prefabHash":845176977,"desc":"In more artistic Stationeers circles, the absence of brown is often lamented, but seldom changed.","name":"Spray Paint (Brown)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Bottle","sortingClass":"Default"}},"ItemSprayCanGreen":{"prefab":{"prefabName":"ItemSprayCanGreen","prefabHash":-1880941852,"desc":"Green is the color of life, and longing. Paradoxically, it's also the color of envy, and tolerance. It denotes sickness, youth, and wealth. But really, it's just what light does at around 500 billionths of a meter.","name":"Spray Paint (Green)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Bottle","sortingClass":"Default"}},"ItemSprayCanGrey":{"prefab":{"prefabName":"ItemSprayCanGrey","prefabHash":-1645266981,"desc":"Arguably the most popular color in the universe, grey was invented so designers had something to do.","name":"Spray Paint (Grey)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Bottle","sortingClass":"Default"}},"ItemSprayCanKhaki":{"prefab":{"prefabName":"ItemSprayCanKhaki","prefabHash":1918456047,"desc":"Not so much a single color, as a category of boredom, khaki is the pigmentation equivalent of a mild depressive episode.","name":"Spray Paint (Khaki)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Bottle","sortingClass":"Default"}},"ItemSprayCanOrange":{"prefab":{"prefabName":"ItemSprayCanOrange","prefabHash":-158007629,"desc":"Orange is fun, but also suggestive of hazards. Sitting proudly in the middle of the visual spectrum, it has nothing to prove.","name":"Spray Paint (Orange)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Bottle","sortingClass":"Default"}},"ItemSprayCanPink":{"prefab":{"prefabName":"ItemSprayCanPink","prefabHash":1344257263,"desc":"With the invention of enduring chemical dyes, the 20th century bestowed associations with innocence and tenderness upon this pale tint of red. Yet classically, it was the color of seduction and eroticism. Things change.","name":"Spray Paint (Pink)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Bottle","sortingClass":"Default"}},"ItemSprayCanPurple":{"prefab":{"prefabName":"ItemSprayCanPurple","prefabHash":30686509,"desc":"Purple is a curious color. You need to be careful with purple. It can be very good, or go horribly, horribly wrong.","name":"Spray Paint (Purple)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Bottle","sortingClass":"Default"}},"ItemSprayCanRed":{"prefab":{"prefabName":"ItemSprayCanRed","prefabHash":1514393921,"desc":"The king of colors, red is perhaps the defining tone of the universe. Linked to blood, royalty, fire and damnation, it is the chromatic expression of power.","name":"Spray Paint (Red)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Bottle","sortingClass":"Default"}},"ItemSprayCanWhite":{"prefab":{"prefabName":"ItemSprayCanWhite","prefabHash":498481505,"desc":"White looks clean, sharp and nice. But Stationeering can be a dirty job. White tends to scuff.","name":"Spray Paint (White)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Bottle","sortingClass":"Default"}},"ItemSprayCanYellow":{"prefab":{"prefabName":"ItemSprayCanYellow","prefabHash":995468116,"desc":"A caricature of light itself, yellow lacks the self-confidence of red, or the swagger of purple. It's less fun than orange, but less emotionally limp than khaki. It's hard to know when yellow is appropriate, but it persists as a primary color regardless. Suggesting that yellow gonna yellow, no matter what anyone thinks.","name":"Spray Paint (Yellow)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Bottle","sortingClass":"Default"}},"ItemSprayGun":{"prefab":{"prefabName":"ItemSprayGun","prefabHash":1289723966,"desc":"Use with Spray cans in the Spray Can to paint structures, cables and pipes. Much more efficient and faster than doing it with individual spray cans.","name":"Spray Gun"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Tool","sortingClass":"Tools"},"slots":[{"name":"Spray Can","typ":"Bottle"}]},"ItemSteelFrames":{"prefab":{"prefabName":"ItemSteelFrames","prefabHash":-1448105779,"desc":"An advanced and stronger version of Iron Frames, steel frames are placed by right-clicking. To complete construction, use Steel Sheets and a Welding Torch in your active hand.","name":"Steel Frames"},"item":{"consumable":false,"ingredient":false,"maxQuantity":30,"slotClass":"None","sortingClass":"Kits"}},"ItemSteelIngot":{"prefab":{"prefabName":"ItemSteelIngot","prefabHash":-654790771,"desc":"Steel ingots are a metal alloy, crafted in a Furnace by smelting Ore (Iron) and Ore (Coal) at a ratio of 3:1.\nIt may not be elegant, but Ice (Oxite) and Ice (Volatiles) can be combined at a ratio of 1:2 in a furnace to create the necessary gas mixture for smelting.","name":"Ingot (Steel)"},"item":{"consumable":true,"ingredient":true,"maxQuantity":500,"reagents":{"Steel":1.0},"slotClass":"Ingot","sortingClass":"Resources"}},"ItemSteelSheets":{"prefab":{"prefabName":"ItemSteelSheets","prefabHash":38555961,"desc":"An advanced building material, Ingot (Steel) sheets are used when constructing a Steel Frame and several other wall types.","name":"Steel Sheets"},"item":{"consumable":false,"ingredient":false,"maxQuantity":50,"slotClass":"None","sortingClass":"Resources"}},"ItemStelliteGlassSheets":{"prefab":{"prefabName":"ItemStelliteGlassSheets","prefabHash":-2038663432,"desc":"A stronger glass substitute.","name":"Stellite Glass Sheets"},"item":{"consumable":false,"ingredient":false,"maxQuantity":50,"slotClass":"None","sortingClass":"Resources"}},"ItemStelliteIngot":{"prefab":{"prefabName":"ItemStelliteIngot","prefabHash":-1897868623,"desc":"","name":"Ingot (Stellite)"},"item":{"consumable":true,"ingredient":true,"maxQuantity":500,"reagents":{"Stellite":1.0},"slotClass":"Ingot","sortingClass":"Resources"}},"ItemSugar":{"prefab":{"prefabName":"ItemSugar","prefabHash":2111910840,"desc":"","name":"Sugar"},"item":{"consumable":true,"ingredient":true,"maxQuantity":500,"reagents":{"Sugar":10.0},"slotClass":"None","sortingClass":"Resources"}},"ItemSugarCane":{"prefab":{"prefabName":"ItemSugarCane","prefabHash":-1335056202,"desc":"","name":"Sugarcane"},"item":{"consumable":false,"ingredient":true,"maxQuantity":100,"reagents":{"Sugar":1.0},"slotClass":"Plant","sortingClass":"Resources"}},"ItemSuitModCryogenicUpgrade":{"prefab":{"prefabName":"ItemSuitModCryogenicUpgrade","prefabHash":-1274308304,"desc":"Enables suits with basic cooling functionality to work with cryogenic liquid.","name":"Cryogenic Suit Upgrade"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"SuitMod","sortingClass":"Default"}},"ItemTablet":{"prefab":{"prefabName":"ItemTablet","prefabHash":-229808600,"desc":"The Xigo handheld 'Padi' tablet is an all-purpose data platform, provided as standard issue to all Stationeers. A dynamic multi-tool that accepts a range of cartridges, the Padi becomes an Atmos Analyzer or Tracker, Medical Analyzer, Ore Scanner, eReader, and various other functions.","name":"Handheld Tablet"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Tool","sortingClass":"Tools"},"logic":{"logicSlotTypes":{"0":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"1":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"}},"logicTypes":{"Error":"Read","On":"ReadWrite","Power":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Battery","typ":"Battery"},{"name":"Cartridge","typ":"Cartridge"}]},"ItemTerrainManipulator":{"prefab":{"prefabName":"ItemTerrainManipulator","prefabHash":111280987,"desc":"0.Mode0\n1.Mode1","name":"Terrain Manipulator"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Tool","sortingClass":"Default"},"logic":{"logicSlotTypes":{"0":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"1":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"}},"logicTypes":{"Activate":"ReadWrite","Error":"Read","Mode":"ReadWrite","On":"ReadWrite","Power":"Read","ReferenceId":"Read"},"modes":{"0":"Mode0","1":"Mode1"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Battery","typ":"Battery"},{"name":"Dirt Canister","typ":"Ore"}]},"ItemTomato":{"prefab":{"prefabName":"ItemTomato","prefabHash":-998592080,"desc":"Tomato plants are perennial, and will produce multiple harvests without needing to be replanted. Once the plant is mature, it will fruit at a moderate pace.","name":"Tomato"},"item":{"consumable":false,"ingredient":true,"maxQuantity":20,"reagents":{"Tomato":1.0},"slotClass":"Plant","sortingClass":"Resources"}},"ItemTomatoSoup":{"prefab":{"prefabName":"ItemTomatoSoup","prefabHash":688734890,"desc":"Made using Cooked Tomatos and an Empty Can in a Basic Packaging Machine or Advanced Packaging Machine.","name":"Tomato Soup"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Food"}},"ItemToolBelt":{"prefab":{"prefabName":"ItemToolBelt","prefabHash":-355127880,"desc":"If there's one piece of equipment that embodies Stationeer life above all else, it's the humble toolbelt (Editor's note: a recent ODA survey of iconic Stationeer equipment also rated the smoking, toxic ruins of an over-pressurized Furnace lying amid the charred remains of your latest base very highly).\nDesigned to meet the most strict-ish ODA safety standards, the toolbelt's eight slots hold one thing: tools, and Cable Coil. Not to be confused with the Mining Belt.","name":"Tool Belt"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Belt","sortingClass":"Clothing"},"slots":[{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"}]},"ItemTropicalPlant":{"prefab":{"prefabName":"ItemTropicalPlant","prefabHash":-800947386,"desc":"An anthurium, evolved in the jungles of South America, which will tolerate higher temperatures than most plants.","name":"Tropical Lily"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"Plant","sortingClass":"Resources"}},"ItemUraniumOre":{"prefab":{"prefabName":"ItemUraniumOre","prefabHash":-1516581844,"desc":"In 1934, Enrico Fermi noticed that bombarding uranium with neutrons produced a burst of beta rays, and a new material. This process was named 'nuclear fission', and resulted in cheap energy, the Cold War, and countless thousand deaths. While reasonably common throughout the Solar System, Stationeers are wary of the material.","name":"Ore (Uranium)"},"item":{"consumable":false,"ingredient":true,"maxQuantity":50,"reagents":{"Uranium":1.0},"slotClass":"Ore","sortingClass":"Ores"}},"ItemVolatiles":{"prefab":{"prefabName":"ItemVolatiles","prefabHash":1253102035,"desc":"An extremely reactive ice with numerous hydrocarbons trapped inside. For simplicity's sake, these are often displayed as H2 by devices like the Atmos Analyzer.\n \nVolatiles combust in a 2:1 ratio with Oxygen, creating Carbon Dioxide and pollutants. However when catalysed via devices such as the H2 Combustor in the presence of Oxygen, they produce\n Steam and heat with a modicum of Carbon Dioxide and Pollutant due to the autoignition of the volatiles in the chamber. Along with Oxygen, volatiles gas is also the major component of fuel for such devices as the Welding Torch.\n","name":"Ice (Volatiles)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":50,"slotClass":"Ore","sortingClass":"Ices"}},"ItemWallCooler":{"prefab":{"prefabName":"ItemWallCooler","prefabHash":-1567752627,"desc":"This kit creates a Wall Cooler.","name":"Kit (Wall Cooler)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemWallHeater":{"prefab":{"prefabName":"ItemWallHeater","prefabHash":1880134612,"desc":"This kit creates a Kit (Wall Heater).","name":"Kit (Wall Heater)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemWallLight":{"prefab":{"prefabName":"ItemWallLight","prefabHash":1108423476,"desc":"This kit creates any one of ten Kit (Lights) variants.","name":"Kit (Lights)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"ItemWaspaloyIngot":{"prefab":{"prefabName":"ItemWaspaloyIngot","prefabHash":156348098,"desc":"","name":"Ingot (Waspaloy)"},"item":{"consumable":true,"ingredient":true,"maxQuantity":500,"reagents":{"Waspaloy":1.0},"slotClass":"Ingot","sortingClass":"Resources"}},"ItemWaterBottle":{"prefab":{"prefabName":"ItemWaterBottle","prefabHash":107741229,"desc":"Delicious and pure H20, refined from local sources as varied as Venusian ice and trans-Solar comets. Empty bottles can be refilled using the Water Bottle Filler.","name":"Water Bottle"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"LiquidBottle","sortingClass":"Default"}},"ItemWaterPipeDigitalValve":{"prefab":{"prefabName":"ItemWaterPipeDigitalValve","prefabHash":309693520,"desc":"","name":"Kit (Liquid Digital Valve)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemWaterPipeMeter":{"prefab":{"prefabName":"ItemWaterPipeMeter","prefabHash":-90898877,"desc":"","name":"Kit (Liquid Pipe Meter)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemWaterWallCooler":{"prefab":{"prefabName":"ItemWaterWallCooler","prefabHash":-1721846327,"desc":"","name":"Kit (Liquid Wall Cooler)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5,"slotClass":"None","sortingClass":"Kits"}},"ItemWearLamp":{"prefab":{"prefabName":"ItemWearLamp","prefabHash":-598730959,"desc":"","name":"Headlamp"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Helmet","sortingClass":"Clothing"},"logic":{"logicSlotTypes":{"0":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"}},"logicTypes":{"On":"ReadWrite","Power":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"ItemWeldingTorch":{"prefab":{"prefabName":"ItemWeldingTorch","prefabHash":-2066892079,"desc":"Stored in the standard issue Stationeers Tool Belt, the Arlite welding torch is used to construct a range of essential structures.\nAn upgraded version of the classic 'Zairo' model first manufactured by ExMin for modular space habitat assembly, the Arlite is powered by a single Canister (Fuel) and designed to function equally well in deep space and deep gravity wells.","name":"Welding Torch"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Tool","sortingClass":"Tools"},"slots":[{"name":"Gas Canister","typ":"GasCanister"}]},"ItemWheat":{"prefab":{"prefabName":"ItemWheat","prefabHash":-1057658015,"desc":"A classical symbol of growth and new life, wheat takes a moderate time to grow. Its main use is to create flour using the Reagent Processor.","name":"Wheat"},"item":{"consumable":false,"ingredient":true,"maxQuantity":100,"reagents":{"Carbon":1.0},"slotClass":"Plant","sortingClass":"Default"}},"ItemWireCutters":{"prefab":{"prefabName":"ItemWireCutters","prefabHash":1535854074,"desc":"Wirecutters allow you to deconstruct various structures, as well as cross-lay cables when held in your non-active hand, and defuse explosives as needed. Wirecutters are stored in the Tool Belt, along with other essential tools.","name":"Wire Cutters"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Tool","sortingClass":"Tools"}},"ItemWirelessBatteryCellExtraLarge":{"prefab":{"prefabName":"ItemWirelessBatteryCellExtraLarge","prefabHash":-504717121,"desc":"0.Empty\n1.Critical\n2.VeryLow\n3.Low\n4.Medium\n5.High\n6.Full","name":"Wireless Battery Cell Extra Large"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Battery","sortingClass":"Default"},"logic":{"logicSlotTypes":{},"logicTypes":{"Mode":"ReadWrite","ReferenceId":"Read"},"modes":{"0":"Empty","1":"Critical","2":"VeryLow","3":"Low","4":"Medium","5":"High","6":"Full"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[]},"ItemWreckageAirConditioner1":{"prefab":{"prefabName":"ItemWreckageAirConditioner1","prefabHash":-1826023284,"desc":"","name":"Wreckage Air Conditioner"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"Wreckage","sortingClass":"Default"}},"ItemWreckageAirConditioner2":{"prefab":{"prefabName":"ItemWreckageAirConditioner2","prefabHash":169888054,"desc":"","name":"Wreckage Air Conditioner"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"Wreckage","sortingClass":"Default"}},"ItemWreckageHydroponicsTray1":{"prefab":{"prefabName":"ItemWreckageHydroponicsTray1","prefabHash":-310178617,"desc":"","name":"Wreckage Hydroponics Tray"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"Wreckage","sortingClass":"Default"}},"ItemWreckageLargeExtendableRadiator01":{"prefab":{"prefabName":"ItemWreckageLargeExtendableRadiator01","prefabHash":-997763,"desc":"","name":"Wreckage Large Extendable Radiator"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"Wreckage","sortingClass":"Default"}},"ItemWreckageStructureRTG1":{"prefab":{"prefabName":"ItemWreckageStructureRTG1","prefabHash":391453348,"desc":"","name":"Wreckage Structure RTG"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"Wreckage","sortingClass":"Default"}},"ItemWreckageStructureWeatherStation001":{"prefab":{"prefabName":"ItemWreckageStructureWeatherStation001","prefabHash":-834664349,"desc":"","name":"Wreckage Structure Weather Station"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"Wreckage","sortingClass":"Default"}},"ItemWreckageStructureWeatherStation002":{"prefab":{"prefabName":"ItemWreckageStructureWeatherStation002","prefabHash":1464424921,"desc":"","name":"Wreckage Structure Weather Station"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"Wreckage","sortingClass":"Default"}},"ItemWreckageStructureWeatherStation003":{"prefab":{"prefabName":"ItemWreckageStructureWeatherStation003","prefabHash":542009679,"desc":"","name":"Wreckage Structure Weather Station"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"Wreckage","sortingClass":"Default"}},"ItemWreckageStructureWeatherStation004":{"prefab":{"prefabName":"ItemWreckageStructureWeatherStation004","prefabHash":-1104478996,"desc":"","name":"Wreckage Structure Weather Station"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"Wreckage","sortingClass":"Default"}},"ItemWreckageStructureWeatherStation005":{"prefab":{"prefabName":"ItemWreckageStructureWeatherStation005","prefabHash":-919745414,"desc":"","name":"Wreckage Structure Weather Station"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"Wreckage","sortingClass":"Default"}},"ItemWreckageStructureWeatherStation006":{"prefab":{"prefabName":"ItemWreckageStructureWeatherStation006","prefabHash":1344576960,"desc":"","name":"Wreckage Structure Weather Station"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"Wreckage","sortingClass":"Default"}},"ItemWreckageStructureWeatherStation007":{"prefab":{"prefabName":"ItemWreckageStructureWeatherStation007","prefabHash":656649558,"desc":"","name":"Wreckage Structure Weather Station"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"Wreckage","sortingClass":"Default"}},"ItemWreckageStructureWeatherStation008":{"prefab":{"prefabName":"ItemWreckageStructureWeatherStation008","prefabHash":-1214467897,"desc":"","name":"Wreckage Structure Weather Station"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"Wreckage","sortingClass":"Default"}},"ItemWreckageTurbineGenerator1":{"prefab":{"prefabName":"ItemWreckageTurbineGenerator1","prefabHash":-1662394403,"desc":"","name":"Wreckage Turbine Generator"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"Wreckage","sortingClass":"Default"}},"ItemWreckageTurbineGenerator2":{"prefab":{"prefabName":"ItemWreckageTurbineGenerator2","prefabHash":98602599,"desc":"","name":"Wreckage Turbine Generator"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"Wreckage","sortingClass":"Default"}},"ItemWreckageTurbineGenerator3":{"prefab":{"prefabName":"ItemWreckageTurbineGenerator3","prefabHash":1927790321,"desc":"","name":"Wreckage Turbine Generator"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"Wreckage","sortingClass":"Default"}},"ItemWreckageWallCooler1":{"prefab":{"prefabName":"ItemWreckageWallCooler1","prefabHash":-1682930158,"desc":"","name":"Wreckage Wall Cooler"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"Wreckage","sortingClass":"Default"}},"ItemWreckageWallCooler2":{"prefab":{"prefabName":"ItemWreckageWallCooler2","prefabHash":45733800,"desc":"","name":"Wreckage Wall Cooler"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"Wreckage","sortingClass":"Default"}},"ItemWrench":{"prefab":{"prefabName":"ItemWrench","prefabHash":-1886261558,"desc":"One of humanity's enduring contributions to the cosmos, the wrench represents the essence of our species. A simple, effective and spiritually barren tool, use it to build and deconstruct a variety of structures","name":"Wrench"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Tool","sortingClass":"Tools"}},"KitSDBSilo":{"prefab":{"prefabName":"KitSDBSilo","prefabHash":1932952652,"desc":"This kit creates a SDB Silo.","name":"Kit (SDB Silo)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"None","sortingClass":"Kits"}},"KitStructureCombustionCentrifuge":{"prefab":{"prefabName":"KitStructureCombustionCentrifuge","prefabHash":231903234,"desc":"","name":"Kit (Combustion Centrifuge)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Kits"}},"KitchenTableShort":{"prefab":{"prefabName":"KitchenTableShort","prefabHash":-1427415566,"desc":"","name":"Kitchen Table (Short)"},"structure":{"smallGrid":true}},"KitchenTableSimpleShort":{"prefab":{"prefabName":"KitchenTableSimpleShort","prefabHash":-78099334,"desc":"","name":"Kitchen Table (Simple Short)"},"structure":{"smallGrid":true}},"KitchenTableSimpleTall":{"prefab":{"prefabName":"KitchenTableSimpleTall","prefabHash":-1068629349,"desc":"","name":"Kitchen Table (Simple Tall)"},"structure":{"smallGrid":true}},"KitchenTableTall":{"prefab":{"prefabName":"KitchenTableTall","prefabHash":-1386237782,"desc":"","name":"Kitchen Table (Tall)"},"structure":{"smallGrid":true}},"Lander":{"prefab":{"prefabName":"Lander","prefabHash":1605130615,"desc":"","name":"Lander"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Default"},"slots":[{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"Entity","typ":"Entity"}]},"Landingpad_2x2CenterPiece01":{"prefab":{"prefabName":"Landingpad_2x2CenterPiece01","prefabHash":-1295222317,"desc":"Recommended for larger traders. This allows for the creation of 4x4 and 6x6 landing areas with symetrical doors","name":"Landingpad 2x2 Center Piece"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[]},"Landingpad_BlankPiece":{"prefab":{"prefabName":"Landingpad_BlankPiece","prefabHash":912453390,"desc":"","name":"Landingpad"},"structure":{"smallGrid":true}},"Landingpad_CenterPiece01":{"prefab":{"prefabName":"Landingpad_CenterPiece01","prefabHash":1070143159,"desc":"The target point where the trader shuttle will land. Requires a clear view of the sky.","name":"Landingpad Center"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{},"modes":{"0":"None","1":"NoContact","2":"Moving","3":"Holding","4":"Landed"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[]},"Landingpad_CrossPiece":{"prefab":{"prefabName":"Landingpad_CrossPiece","prefabHash":1101296153,"desc":"Extends the size of the landing pad area. A basic trader shuttle requires a 3x3 clear landing area.","name":"Landingpad Cross"},"structure":{"smallGrid":true}},"Landingpad_DataConnectionPiece":{"prefab":{"prefabName":"Landingpad_DataConnectionPiece","prefabHash":-2066405918,"desc":"Provides power to the landing pad. The data port must be connected to the data port of a computer with a communications motherboard for a trader to be called in to land.","name":"Landingpad Data And Power"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Activate":"ReadWrite","Combustion":"Read","ContactTypeId":"Read","Error":"Read","Mode":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Pressure":"Read","RatioCarbonDioxide":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioVolatiles":"Read","RatioWater":"Read","ReferenceId":"Read","RequiredPower":"Read","Temperature":"Read","TotalMoles":"Read","Vertical":"ReadWrite"},"modes":{"0":"None","1":"NoContact","2":"Moving","3":"Holding","4":"Landed"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"},{"typ":"LandingPad","role":"Input"},{"typ":"LandingPad","role":"Input"},{"typ":"LandingPad","role":"Input"}],"hasActivateState":true,"hasAtmosphere":true,"hasColorState":false,"hasLockState":false,"hasModeState":true,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"Landingpad_DiagonalPiece01":{"prefab":{"prefabName":"Landingpad_DiagonalPiece01","prefabHash":977899131,"desc":"Extends the size of the landing pad area. A basic trader shuttle requires a 3x3 clear landing area.","name":"Landingpad Diagonal"},"structure":{"smallGrid":true}},"Landingpad_GasConnectorInwardPiece":{"prefab":{"prefabName":"Landingpad_GasConnectorInwardPiece","prefabHash":817945707,"desc":"","name":"Landingpad Gas Input"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Combustion":"Read","Error":"Read","Maximum":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Pressure":"Read","Ratio":"Read","RatioCarbonDioxide":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioVolatiles":"Read","RatioWater":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite","Temperature":"Read","TotalMoles":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"LandingPad","role":"Input"},{"typ":"LandingPad","role":"Input"},{"typ":"LandingPad","role":"Input"},{"typ":"Data","role":"None"},{"typ":"Pipe","role":"Input"}],"hasActivateState":false,"hasAtmosphere":true,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"Landingpad_GasConnectorOutwardPiece":{"prefab":{"prefabName":"Landingpad_GasConnectorOutwardPiece","prefabHash":-1100218307,"desc":"Pumps gas purchased from a trader out of the landing pad. You can increase the landing pad's gas storage capacity by adding more Landingpad Gas Storage to the landing pad.","name":"Landingpad Gas Output"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Combustion":"Read","Error":"Read","Maximum":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Pressure":"Read","Ratio":"Read","RatioCarbonDioxide":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioVolatiles":"Read","RatioWater":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite","Temperature":"Read","TotalMoles":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"LandingPad","role":"Input"},{"typ":"LandingPad","role":"Input"},{"typ":"LandingPad","role":"Input"},{"typ":"Data","role":"None"},{"typ":"Pipe","role":"Output"}],"hasActivateState":false,"hasAtmosphere":true,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"Landingpad_GasCylinderTankPiece":{"prefab":{"prefabName":"Landingpad_GasCylinderTankPiece","prefabHash":170818567,"desc":"Increases the volume of the landing pads gas storage capacity. This volume is used for buying and selling gas to traders.","name":"Landingpad Gas Storage"},"structure":{"smallGrid":true}},"Landingpad_LiquidConnectorInwardPiece":{"prefab":{"prefabName":"Landingpad_LiquidConnectorInwardPiece","prefabHash":-1216167727,"desc":"","name":"Landingpad Liquid Input"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Combustion":"Read","Error":"Read","Maximum":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Pressure":"Read","Ratio":"Read","RatioCarbonDioxide":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioVolatiles":"Read","RatioWater":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite","Temperature":"Read","TotalMoles":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"LandingPad","role":"Input"},{"typ":"LandingPad","role":"Input"},{"typ":"LandingPad","role":"Input"},{"typ":"Data","role":"None"},{"typ":"PipeLiquid","role":"Input"}],"hasActivateState":false,"hasAtmosphere":true,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"Landingpad_LiquidConnectorOutwardPiece":{"prefab":{"prefabName":"Landingpad_LiquidConnectorOutwardPiece","prefabHash":-1788929869,"desc":"Pumps liquid purchased from a trader out of the landing pad. You can increase the landing pad's liquid storage capacity by adding more Landingpad Gas Storage to the landing pad.","name":"Landingpad Liquid Output"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Combustion":"Read","Error":"Read","Maximum":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Pressure":"Read","Ratio":"Read","RatioCarbonDioxide":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioVolatiles":"Read","RatioWater":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite","Temperature":"Read","TotalMoles":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"LandingPad","role":"Input"},{"typ":"LandingPad","role":"Input"},{"typ":"LandingPad","role":"Input"},{"typ":"Data","role":"None"},{"typ":"PipeLiquid","role":"Output"}],"hasActivateState":false,"hasAtmosphere":true,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"Landingpad_StraightPiece01":{"prefab":{"prefabName":"Landingpad_StraightPiece01","prefabHash":-976273247,"desc":"Extends the size of the landing pad area. A basic trader shuttle requires a 3x3 clear landing area.","name":"Landingpad Straight"},"structure":{"smallGrid":true}},"Landingpad_TaxiPieceCorner":{"prefab":{"prefabName":"Landingpad_TaxiPieceCorner","prefabHash":-1872345847,"desc":"","name":"Landingpad Taxi Corner"},"structure":{"smallGrid":true}},"Landingpad_TaxiPieceHold":{"prefab":{"prefabName":"Landingpad_TaxiPieceHold","prefabHash":146051619,"desc":"","name":"Landingpad Taxi Hold"},"structure":{"smallGrid":true}},"Landingpad_TaxiPieceStraight":{"prefab":{"prefabName":"Landingpad_TaxiPieceStraight","prefabHash":-1477941080,"desc":"","name":"Landingpad Taxi Straight"},"structure":{"smallGrid":true}},"Landingpad_ThreshholdPiece":{"prefab":{"prefabName":"Landingpad_ThreshholdPiece","prefabHash":-1514298582,"desc":"","name":"Landingpad Threshhold"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"LandingPad","role":"Input"},{"typ":"LandingPad","role":"Input"},{"typ":"LandingPad","role":"Input"},{"typ":"Data","role":"Input"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"LogicStepSequencer8":{"prefab":{"prefabName":"LogicStepSequencer8","prefabHash":1531272458,"desc":"The ODA does not approve of soundtracks or other distractions.\nAs such, Stationeers have had to create their own musical accompaniment to the demanding labor of building and maintaining off-world infrastructure.\nCentral to this pastime is the step sequencer, which allows Stationeers to sequence short musical patterns or loops. \n\nDIY MUSIC - GETTING STARTED\n\n1: Connect 8 Device Step Units to your step sequencer via the data port on the left hand side.\n\n2: Label each step unit, then assign step units 1 through 8 on the step sequencer using the screwdriver.\n\n3: Select the output speaker (eg Passive Speaker) where the sequencer will play the sounds. This needs to be connected to the logic network on the right hand side of the sequencer.\n\n4: Place a Stop Watch and use a Logic Reader and Logic Writer to write the time to the time variable on the sequencer.\n\n5: Set the BPM on the sequencer using a Dial and a Logic Writer to write to the sequencer's BPM variable. A higher bpm will play the sequence faster. \n\n6: Insert a sound cartridge of your choosing and select which variant of sound you wish to play by pushing the arrow buttons located above and below the sound cartridge slot.\n\n7: Choose the pitch of the sounds to play by setting the dial on each of your 8 step units to the desired note. With drums, each note is a different drum sounds. You can trial your sounds by pushing the activate button on each step unit (with the sequencer inactive).\n\n8: Get freaky with the Low frequency oscillator.\n\n9: Finally, activate the sequencer, Vibeoneer.","name":"Logic Step Sequencer"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"Activate":"ReadWrite","Bpm":"ReadWrite","Error":"Read","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Time":"ReadWrite"},"modes":{"0":"Whole Note","1":"Half Note","2":"Quarter Note","3":"Eighth Note","4":"Sixteenth Note"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Sound Cartridge","typ":"SoundCartridge"}],"device":{"connectionList":[{"typ":"Data","role":"Input"},{"typ":"Data","role":"Input"},{"typ":"Power","role":"Input"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":true,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"Meteorite":{"prefab":{"prefabName":"Meteorite","prefabHash":-99064335,"desc":"","name":"Meteorite"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Default"}},"MonsterEgg":{"prefab":{"prefabName":"MonsterEgg","prefabHash":-1667675295,"desc":"","name":""},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Default"}},"MotherboardComms":{"prefab":{"prefabName":"MotherboardComms","prefabHash":-337075633,"desc":"When placed in a Computer and connected to a Landingpad Data And Power, a Medium Satellite Dish, and a Vending Machine allows Stationeers to trade with suppliers. Adjust the horizontal and vertical attributes of the Medium Satellite Dish either directly or through logic. You need a communications signal of 95% or above to establish reliable communications with a trader. A minimum of a 3x3 clear pad area with a Landingpad Center at the center is required for a trader to land.","name":"Communications Motherboard"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Motherboard","sortingClass":"Default"}},"MotherboardLogic":{"prefab":{"prefabName":"MotherboardLogic","prefabHash":502555944,"desc":"Motherboards are connected to Computers to perform various technical functions.\nThe Norsec-designed K-cops logic motherboard allows Stationeers to set variables and actions on specific logic-controlled items.","name":"Logic Motherboard"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Motherboard","sortingClass":"Default"}},"MotherboardMissionControl":{"prefab":{"prefabName":"MotherboardMissionControl","prefabHash":-127121474,"desc":"","name":""},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Motherboard","sortingClass":"Default"}},"MotherboardProgrammableChip":{"prefab":{"prefabName":"MotherboardProgrammableChip","prefabHash":-161107071,"desc":"When placed in a Computer, the IC Editor allows players to write and edit IC code, which can then be uploaded to a Integrated Circuit (IC10) if housed in an IC Housing.","name":"IC Editor Motherboard"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Motherboard","sortingClass":"Default"}},"MotherboardRockets":{"prefab":{"prefabName":"MotherboardRockets","prefabHash":-806986392,"desc":"","name":"Rocket Control Motherboard"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Motherboard","sortingClass":"Default"}},"MotherboardSorter":{"prefab":{"prefabName":"MotherboardSorter","prefabHash":-1908268220,"desc":"Motherboards are connected to Computers to perform various technical functions.\nThe Norsec-designed K-cops 10-10 sorter motherboard permits Stationeers to control which items a Sorter does, and does not, permit to pass.","name":"Sorter Motherboard"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Motherboard","sortingClass":"Default"}},"MothershipCore":{"prefab":{"prefabName":"MothershipCore","prefabHash":-1930442922,"desc":"A relic of from an earlier era of space ambition, Sinotai's mothership cores formed the central element of a generation's space-going creations. While Sinotai's pivot to smaller, modular craft upset some purists, motherships continue to be built and maintained by dedicated enthusiasts.","name":"Mothership Core"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Default"}},"NpcChick":{"prefab":{"prefabName":"NpcChick","prefabHash":155856647,"desc":"","name":"Chick"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Default"},"slots":[{"name":"Brain","typ":"Organ"},{"name":"Lungs","typ":"Organ"}]},"NpcChicken":{"prefab":{"prefabName":"NpcChicken","prefabHash":399074198,"desc":"","name":"Chicken"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Default"},"slots":[{"name":"Brain","typ":"Organ"},{"name":"Lungs","typ":"Organ"}]},"PassiveSpeaker":{"prefab":{"prefabName":"PassiveSpeaker","prefabHash":248893646,"desc":"","name":"Passive Speaker"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"NameHash":"ReadWrite","PrefabHash":"ReadWrite","ReferenceId":"ReadWrite","SoundAlert":"ReadWrite","Volume":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"Input"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"PipeBenderMod":{"prefab":{"prefabName":"PipeBenderMod","prefabHash":443947415,"desc":"Apply to an Hydraulic Pipe Bender with a Welding Torch or Arc Welder to upgrade for increased processing speed and more recipe options.","name":"Pipe Bender Mod"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Default"}},"PortableComposter":{"prefab":{"prefabName":"PortableComposter","prefabHash":-1958705204,"desc":"A simple composting device, the basic composter creates Fertilizer out of organic matter. It accepts food, Decayed Food or Biomass. It requires a full Liquid Canister and a battery to operate, accelerating the natural composting process.\nWhen processing, it releases nitrogen and volatiles, as well a small amount of heat.\n\nCompost composition\nFertilizer is produced at a 1:3 ratio of fertilizer to ingredients. The fertilizer's effects on plants will vary depending on the respective proportions of its ingredients.\n\n- food increases PLANT YIELD up to two times\n- Decayed Food increases plant GROWTH SPEED up to two times\n- Biomass increases the NUMBER OF GROWTH CYCLES the fertilizer lasts for","name":"Portable Composter"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Default"},"slots":[{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"Battery"},{"name":"Liquid Canister","typ":"LiquidCanister"}]},"PortableSolarPanel":{"prefab":{"prefabName":"PortableSolarPanel","prefabHash":2043318949,"desc":"","name":"Portable Solar Panel"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Tools"},"logic":{"logicSlotTypes":{"0":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"}},"logicTypes":{"Open":"ReadWrite","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"RailingElegant01":{"prefab":{"prefabName":"RailingElegant01","prefabHash":399661231,"desc":"","name":"Railing Elegant (Type 1)"},"structure":{"smallGrid":false}},"RailingElegant02":{"prefab":{"prefabName":"RailingElegant02","prefabHash":-1898247915,"desc":"","name":"Railing Elegant (Type 2)"},"structure":{"smallGrid":false}},"RailingIndustrial02":{"prefab":{"prefabName":"RailingIndustrial02","prefabHash":-2072792175,"desc":"","name":"Railing Industrial (Type 2)"},"structure":{"smallGrid":false}},"ReagentColorBlue":{"prefab":{"prefabName":"ReagentColorBlue","prefabHash":980054869,"desc":"","name":"Color Dye (Blue)"},"item":{"consumable":true,"ingredient":true,"maxQuantity":100,"reagents":{"ColorBlue":10.0},"slotClass":"None","sortingClass":"Resources"}},"ReagentColorGreen":{"prefab":{"prefabName":"ReagentColorGreen","prefabHash":120807542,"desc":"","name":"Color Dye (Green)"},"item":{"consumable":true,"ingredient":true,"maxQuantity":100,"reagents":{"ColorGreen":10.0},"slotClass":"None","sortingClass":"Resources"}},"ReagentColorOrange":{"prefab":{"prefabName":"ReagentColorOrange","prefabHash":-400696159,"desc":"","name":"Color Dye (Orange)"},"item":{"consumable":true,"ingredient":true,"maxQuantity":100,"reagents":{"ColorOrange":10.0},"slotClass":"None","sortingClass":"Resources"}},"ReagentColorRed":{"prefab":{"prefabName":"ReagentColorRed","prefabHash":1998377961,"desc":"","name":"Color Dye (Red)"},"item":{"consumable":true,"ingredient":true,"maxQuantity":100,"reagents":{"ColorRed":10.0},"slotClass":"None","sortingClass":"Resources"}},"ReagentColorYellow":{"prefab":{"prefabName":"ReagentColorYellow","prefabHash":635208006,"desc":"","name":"Color Dye (Yellow)"},"item":{"consumable":true,"ingredient":true,"maxQuantity":100,"reagents":{"ColorYellow":10.0},"slotClass":"None","sortingClass":"Resources"}},"RespawnPoint":{"prefab":{"prefabName":"RespawnPoint","prefabHash":-788672929,"desc":"Place a respawn point to set a player entry point to your base when loading in, or returning from the dead.","name":"Respawn Point"},"structure":{"smallGrid":true}},"RespawnPointWallMounted":{"prefab":{"prefabName":"RespawnPointWallMounted","prefabHash":-491247370,"desc":"","name":"Respawn Point (Mounted)"},"structure":{"smallGrid":true}},"Robot":{"prefab":{"prefabName":"Robot","prefabHash":434786784,"desc":"Designed by - presumably drunk - Norsec roboticists, AIMeE (or Automated Independent Mechanical Entity) can be a Stationeer's best friend, or tiresome nemesis, or both several times in the same day. \n \nIntended to unearth and retrieve ores automatically, the unit requires basic programming knowledge to operate, and IC Editor Motherboard.\n\nAIMEe has 7 modes:\n\nRobotMode.None = 0 = Do nothing\nRobotMode.None = 1 = Follow nearest player\nRobotMode.None = 2 = Move to target in straight line\nRobotMode.None = 3 = Wander around looking for ores in 15 co-ords radius\nRobotMode.None = 4 = Unload in chute input or chute bin within 3 meters / 1.5 large grids\nRobotMode.None = 5 = Path(find) to target\nRobotMode.None = 6 = Automatic assigned state, shows when storage slots are fullConnects to Logic Transmitter","name":"AIMeE Bot"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Default"},"logic":{"logicSlotTypes":{"0":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"1":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"2":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"3":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"4":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"5":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"6":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"7":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"8":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"9":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"}},"logicTypes":{"Error":"Read","ForwardX":"Read","ForwardY":"Read","ForwardZ":"Read","MineablesInQueue":"Read","MineablesInVicinity":"Read","Mode":"ReadWrite","On":"ReadWrite","Orientation":"Read","PositionX":"Read","PositionY":"Read","PositionZ":"Read","Power":"Read","PressureExternal":"Read","ReferenceId":"Read","TargetX":"Write","TargetY":"Write","TargetZ":"Write","TemperatureExternal":"Read","VelocityMagnitude":"Read","VelocityRelativeX":"Read","VelocityRelativeY":"Read","VelocityRelativeZ":"Read","VelocityX":"Read","VelocityY":"Read","VelocityZ":"Read"},"modes":{"0":"None","1":"Follow","2":"MoveToTarget","3":"Roam","4":"Unload","5":"PathToTarget","6":"StorageFull"},"transmissionReceiver":false,"wirelessLogic":true,"circuitHolder":true},"slots":[{"name":"Battery","typ":"Battery"},{"name":"Programmable Chip","typ":"ProgrammableChip"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"}]},"RoverCargo":{"prefab":{"prefabName":"RoverCargo","prefabHash":350726273,"desc":"Connects to Logic Transmitter","name":"Rover (Cargo)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Default"},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"1":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"2":{"Class":"Read","Damage":"Read","FilterType":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"3":{"Class":"Read","Damage":"Read","FilterType":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"4":{"Class":"Read","Damage":"Read","FilterType":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"5":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Pressure":"Read","Quantity":"Read","ReferenceId":"Read","Temperature":"Read"},"6":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Pressure":"Read","Quantity":"Read","ReferenceId":"Read","Temperature":"Read"},"7":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Pressure":"Read","Quantity":"Read","ReferenceId":"Read","Temperature":"Read"},"8":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Pressure":"Read","Quantity":"Read","ReferenceId":"Read","Temperature":"Read"},"9":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"10":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"11":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"12":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"13":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"14":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"15":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"}},"logicTypes":{"Combustion":"Read","On":"ReadWrite","Power":"Read","Pressure":"Read","RatioCarbonDioxide":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioVolatiles":"Read","RatioWater":"Read","ReferenceId":"Read","Temperature":"Read","TotalMoles":"Read"},"transmissionReceiver":false,"wirelessLogic":true,"circuitHolder":false},"slots":[{"name":"Entity","typ":"Entity"},{"name":"Entity","typ":"Entity"},{"name":"Gas Filter","typ":"GasFilter"},{"name":"Gas Filter","typ":"GasFilter"},{"name":"Gas Filter","typ":"GasFilter"},{"name":"Gas Canister","typ":"GasCanister"},{"name":"Gas Canister","typ":"GasCanister"},{"name":"Gas Canister","typ":"GasCanister"},{"name":"Gas Canister","typ":"GasCanister"},{"name":"Battery","typ":"Battery"},{"name":"Battery","typ":"Battery"},{"name":"Battery","typ":"Battery"},{"name":"Container Slot","typ":"None"},{"name":"Container Slot","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"}]},"Rover_MkI":{"prefab":{"prefabName":"Rover_MkI","prefabHash":-2049946335,"desc":"A distant cousin of the jeep, the Mk I {Sinotai electric rover is one of the most simple and durable light vehicles in the known universe. Able to carry two passengers and cargo such as the Portable Gas Tank (Air) or , it is powered by up to three batteries, accepting everything including Battery Cell (Nuclear).\nA quad-array of hub-mounted electric engines propels the reinforced aluminium frame over most terrain and modest obstacles. While the Mk I is designed for stability in low-horizontality circumstances, if it rolls, try using your Crowbar to put it right way up.Connects to Logic Transmitter","name":"Rover MkI"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Default"},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"1":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"2":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"3":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"4":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"5":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"6":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"7":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"8":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"9":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"},"10":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"}},"logicTypes":{"Combustion":"Read","On":"ReadWrite","Power":"Read","Pressure":"Read","RatioCarbonDioxide":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioVolatiles":"Read","RatioWater":"Read","ReferenceId":"Read","Temperature":"Read","TotalMoles":"Read"},"transmissionReceiver":false,"wirelessLogic":true,"circuitHolder":false},"slots":[{"name":"Entity","typ":"Entity"},{"name":"Entity","typ":"Entity"},{"name":"Battery","typ":"Battery"},{"name":"Battery","typ":"Battery"},{"name":"Battery","typ":"Battery"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"}]},"Rover_MkI_build_states":{"prefab":{"prefabName":"Rover_MkI_build_states","prefabHash":861674123,"desc":"","name":"Rover MKI"},"structure":{"smallGrid":false}},"SMGMagazine":{"prefab":{"prefabName":"SMGMagazine","prefabHash":-256607540,"desc":"","name":"SMG Magazine"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Magazine","sortingClass":"Default"}},"SeedBag_Cocoa":{"prefab":{"prefabName":"SeedBag_Cocoa","prefabHash":1139887531,"desc":"","name":"Cocoa Seeds"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"Plant","sortingClass":"Food"}},"SeedBag_Corn":{"prefab":{"prefabName":"SeedBag_Corn","prefabHash":-1290755415,"desc":"Grow a Corn.","name":"Corn Seeds"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"Plant","sortingClass":"Food"}},"SeedBag_Fern":{"prefab":{"prefabName":"SeedBag_Fern","prefabHash":-1990600883,"desc":"Grow a Fern.","name":"Fern Seeds"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"Plant","sortingClass":"Food"}},"SeedBag_Mushroom":{"prefab":{"prefabName":"SeedBag_Mushroom","prefabHash":311593418,"desc":"Grow a Mushroom.","name":"Mushroom Seeds"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"Plant","sortingClass":"Food"}},"SeedBag_Potato":{"prefab":{"prefabName":"SeedBag_Potato","prefabHash":1005571172,"desc":"Grow a Potato.","name":"Potato Seeds"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"Plant","sortingClass":"Food"}},"SeedBag_Pumpkin":{"prefab":{"prefabName":"SeedBag_Pumpkin","prefabHash":1423199840,"desc":"Grow a Pumpkin.","name":"Pumpkin Seeds"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"Plant","sortingClass":"Food"}},"SeedBag_Rice":{"prefab":{"prefabName":"SeedBag_Rice","prefabHash":-1691151239,"desc":"Grow some Rice.","name":"Rice Seeds"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"Plant","sortingClass":"Food"}},"SeedBag_Soybean":{"prefab":{"prefabName":"SeedBag_Soybean","prefabHash":1783004244,"desc":"Grow some Soybean.","name":"Soybean Seeds"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"Plant","sortingClass":"Food"}},"SeedBag_SugarCane":{"prefab":{"prefabName":"SeedBag_SugarCane","prefabHash":-1884103228,"desc":"","name":"Sugarcane Seeds"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"Plant","sortingClass":"Food"}},"SeedBag_Switchgrass":{"prefab":{"prefabName":"SeedBag_Switchgrass","prefabHash":488360169,"desc":"","name":"Switchgrass Seed"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"Plant","sortingClass":"Food"}},"SeedBag_Tomato":{"prefab":{"prefabName":"SeedBag_Tomato","prefabHash":-1922066841,"desc":"Grow a Tomato.","name":"Tomato Seeds"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"Plant","sortingClass":"Food"}},"SeedBag_Wheet":{"prefab":{"prefabName":"SeedBag_Wheet","prefabHash":-654756733,"desc":"Grow some Wheat.","name":"Wheat Seeds"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10,"slotClass":"Plant","sortingClass":"Food"}},"SpaceShuttle":{"prefab":{"prefabName":"SpaceShuttle","prefabHash":-1991297271,"desc":"An antiquated Sinotai transport craft, long since decommissioned.","name":"Space Shuttle"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Default"},"slots":[{"name":"Captain's Seat","typ":"Entity"},{"name":"Passenger Seat Left","typ":"Entity"},{"name":"Passenger Seat Right","typ":"Entity"}]},"StopWatch":{"prefab":{"prefabName":"StopWatch","prefabHash":-1527229051,"desc":"","name":"Stop Watch"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Activate":"ReadWrite","Error":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Time":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"Input"},{"typ":"Power","role":"Input"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureAccessBridge":{"prefab":{"prefabName":"StructureAccessBridge","prefabHash":1298920475,"desc":"Extendable bridge that spans three grids","name":"Access Bridge"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Activate":"ReadWrite","Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureActiveVent":{"prefab":{"prefabName":"StructureActiveVent","prefabHash":-1129453144,"desc":"The active vent is a powered device for maintaining gas pressure by pumping gas into (or out of) a pipe network. The vent has two modes: 'Outward' sets it to pump gas into a space until pressure is reached; 'Inward' sets it to pump gas out until pressure is reached. The pressure parameter can be set on a connected Console. Default pressure is 101kPa for Outward; 0kPa for Inward ...","name":"Active Vent"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"Error":"Read","Lock":"ReadWrite","Maximum":"Read","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","PressureExternal":"ReadWrite","PressureInternal":"ReadWrite","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"modes":{"0":"Outward","1":"Inward"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"","typ":"DataDisk"}],"device":{"connectionList":[{"typ":"PowerAndData","role":"None"},{"typ":"Pipe","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":true,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureAdvancedComposter":{"prefab":{"prefabName":"StructureAdvancedComposter","prefabHash":446212963,"desc":"The advanced composter creates Fertilizer out of organic matter. It accepts food, Decayed Food or Biomass. It requires Water and power to operate, accelerating the natural composting process.\nWhen processing, it releases nitrogen and volatiles, as well a small amount of heat. \n\nCompost composition\nFertilizer is produced at a 1:3 ratio of fertilizer to ingredients. The fertilizer's effects on plants will vary depending on the respective proportions of its ingredients.\n\n- Food increases PLANT YIELD up to two times\n- Decayed Food increases plant GROWTH SPEED up to two times\n- Biomass increases the NUMBER OF GROWTH CYCLES the fertilizer lasts for up to five times\n","name":"Advanced Composter"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{},"1":{}},"logicTypes":{"Activate":"ReadWrite","ClearMemory":"Write","Error":"Read","ExportCount":"Read","ImportCount":"Read","Lock":"ReadWrite","Maximum":"Read","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","Quantity":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"modes":{"0":"Mode0","1":"Mode1"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Import","typ":"None"},{"name":"Export","typ":"None"}],"device":{"connectionList":[{"typ":"Chute","role":"Output"},{"typ":"Data","role":"None"},{"typ":"PipeLiquid","role":"Input"},{"typ":"Power","role":"None"},{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":true,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureAdvancedFurnace":{"prefab":{"prefabName":"StructureAdvancedFurnace","prefabHash":545937711,"desc":"The advanced furnace comes with integrated inlet and outlet pumps for controlling the unit's internal pressure.","name":"Advanced Furnace"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{},"1":{}},"logicTypes":{"Activate":"ReadWrite","ClearMemory":"Write","Combustion":"Read","Error":"Read","ExportCount":"Read","ImportCount":"Read","Lock":"ReadWrite","Maximum":"Read","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","Pressure":"Read","Ratio":"Read","RatioCarbonDioxide":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioVolatiles":"Read","RatioWater":"Read","Reagents":"Read","RecipeHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite","SettingInput":"ReadWrite","SettingOutput":"ReadWrite","Temperature":"Read","TotalMoles":"Read"},"modes":{"0":"Mode0","1":"Mode1"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Import","typ":"None"},{"name":"Export","typ":"None"}],"device":{"connectionList":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"Data","role":"None"},{"typ":"Power","role":"None"},{"typ":"Pipe","role":"Input"},{"typ":"Pipe","role":"Output"},{"typ":"PipeLiquid","role":"Output2"}],"hasActivateState":true,"hasAtmosphere":true,"hasColorState":false,"hasLockState":true,"hasModeState":true,"hasOnOffState":true,"hasOpenState":true,"hasReagents":true}},"StructureAdvancedPackagingMachine":{"prefab":{"prefabName":"StructureAdvancedPackagingMachine","prefabHash":-463037670,"desc":"The Xigo Advanced Cannifier Multi-Plus Pro is an automateable packaging machine that uses Empty Cans and cooked food to create canned sustenance that does not decay. Note that the ACMPP only accepts cooked food and tin cans.","name":"Advanced Packaging Machine"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{},"1":{}},"logicTypes":{"Activate":"ReadWrite","ClearMemory":"Write","CompletionRatio":"Read","Error":"Read","ExportCount":"Read","ImportCount":"Read","Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","Reagents":"Read","RecipeHash":"ReadWrite","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Import","typ":"None"},{"name":"Export","typ":"None"}],"device":{"connectionList":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":true,"hasReagents":true},"memory":{"instructions":{"DeviceSetLock":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |","typ":"PrinterInstruction","value":6},"EjectAllReagents":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |","typ":"PrinterInstruction","value":8},"EjectReagent":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |","typ":"PrinterInstruction","value":7},"ExecuteRecipe":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |","typ":"PrinterInstruction","value":2},"JumpIfNextInvalid":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":4},"JumpToAddress":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":5},"MissingRecipeReagent":{"description":"| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |","typ":"PrinterInstruction","value":9},"StackPointer":{"description":"| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":1},"WaitUntilNextValid":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |","typ":"PrinterInstruction","value":3}},"memoryAccess":"ReadWrite","memorySize":64}},"StructureAirConditioner":{"prefab":{"prefabName":"StructureAirConditioner","prefabHash":-2087593337,"desc":"Built using the Kit (Atmospherics), the ExMin-designed air conditioner is used to raise or lower input gas temperature.\n\t \nThe unit has three pipe connections: input, output, and waste. Gas fed into the input will be heated or cooled to reach the target temperature, while the opposite will happen to gas on the waste network.\n\nMultiple Efficiency Multipliers can effect the amount of energy the Air Conditioner uses, and these can be view on the unit's green Information Panel. As the temperature difference between input and waste increases, the Temperature Differential Efficiency Multiplier will decrease. If input or waste temperature is extremely hot or cold, the Operational Temperature Efficiency will decrease. If the input or waste pipe has approach low pressures, the Pressure Efficiency will decrease.\n\nPipe Convection Radiators may be useful in bringing extreme pipe temperatures back towards normal world temperatures. \n \nFor more information on using the air conditioner, consult the temperature control Guides page.","name":"Air Conditioner"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{}},"logicTypes":{"CombustionInput":"Read","CombustionOutput":"Read","CombustionOutput2":"Read","Error":"Read","Lock":"ReadWrite","Maximum":"Read","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","OperationalTemperatureEfficiency":"Read","Power":"Read","PrefabHash":"Read","PressureEfficiency":"Read","PressureInput":"Read","PressureOutput":"Read","PressureOutput2":"Read","Ratio":"Read","RatioCarbonDioxideInput":"Read","RatioCarbonDioxideOutput":"Read","RatioCarbonDioxideOutput2":"Read","RatioLiquidCarbonDioxideInput":"Read","RatioLiquidCarbonDioxideOutput":"Read","RatioLiquidCarbonDioxideOutput2":"Read","RatioLiquidNitrogenInput":"Read","RatioLiquidNitrogenOutput":"Read","RatioLiquidNitrogenOutput2":"Read","RatioLiquidNitrousOxideInput":"Read","RatioLiquidNitrousOxideOutput":"Read","RatioLiquidNitrousOxideOutput2":"Read","RatioLiquidOxygenInput":"Read","RatioLiquidOxygenOutput":"Read","RatioLiquidOxygenOutput2":"Read","RatioLiquidPollutantInput":"Read","RatioLiquidPollutantOutput":"Read","RatioLiquidPollutantOutput2":"Read","RatioLiquidVolatilesInput":"Read","RatioLiquidVolatilesOutput":"Read","RatioLiquidVolatilesOutput2":"Read","RatioNitrogenInput":"Read","RatioNitrogenOutput":"Read","RatioNitrogenOutput2":"Read","RatioNitrousOxideInput":"Read","RatioNitrousOxideOutput":"Read","RatioNitrousOxideOutput2":"Read","RatioOxygenInput":"Read","RatioOxygenOutput":"Read","RatioOxygenOutput2":"Read","RatioPollutantInput":"Read","RatioPollutantOutput":"Read","RatioPollutantOutput2":"Read","RatioSteamInput":"Read","RatioSteamOutput":"Read","RatioSteamOutput2":"Read","RatioVolatilesInput":"Read","RatioVolatilesOutput":"Read","RatioVolatilesOutput2":"Read","RatioWaterInput":"Read","RatioWaterOutput":"Read","RatioWaterOutput2":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite","TemperatureDifferentialEfficiency":"Read","TemperatureInput":"Read","TemperatureOutput":"Read","TemperatureOutput2":"Read","TotalMolesInput":"Read","TotalMolesOutput":"Read","TotalMolesOutput2":"Read"},"modes":{"0":"Idle","1":"Active"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":true},"slots":[{"name":"Programmable Chip","typ":"ProgrammableChip"}],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Pipe","role":"Input"},{"typ":"Pipe","role":"Output"},{"typ":"Pipe","role":"Waste"},{"typ":"Power","role":"None"}],"devicePinsLength":2,"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":true,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureAirlock":{"prefab":{"prefabName":"StructureAirlock","prefabHash":-2105052344,"desc":"The standard airlock is a powered portal that forms the main component of an airlock chamber. As long as the airlock is not locked, it can be manually opened using a crowbar.","name":"Airlock"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Idle":"Read","Lock":"ReadWrite","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"modes":{"0":"Operate","1":"Logic"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":true,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureAirlockGate":{"prefab":{"prefabName":"StructureAirlockGate","prefabHash":1736080881,"desc":"1 x 1 modular door piece for building hangar doors.","name":"Small Hangar Door"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Idle":"Read","Lock":"ReadWrite","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"modes":{"0":"Operate","1":"Logic"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":true,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureAngledBench":{"prefab":{"prefabName":"StructureAngledBench","prefabHash":1811979158,"desc":"","name":"Bench (Angled)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"NameHash":"Read","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Seat","typ":"Entity"}],"device":{"connectionList":[],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureArcFurnace":{"prefab":{"prefabName":"StructureArcFurnace","prefabHash":-247344692,"desc":"The simplest smelting system available to the average Stationeer, Recurso's arc furnace was forged itself in the depths of the Solar System to help explorational geologists determine the purity of potential asteroidal mining targets.\nCo-opted by the ODA, it now provides Stationeers with a way to produce pure ingots of various resources.\nThe smelting process also releases a range of by product gases, principally Nitrogen, Carbon Dioxide, Volatiles and Oxygen in differing ratios. These can be recaptured from the atmosphere by filtering, but also make the arc furnace a risk in closed environments. \nUnlike the more advanced Furnace, the arc furnace cannot create alloys.","name":"Arc Furnace"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"1":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"Activate":"ReadWrite","ClearMemory":"Write","Error":"Read","ExportCount":"Read","Idle":"Read","ImportCount":"Read","Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Reagents":"Read","RecipeHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Import","typ":"Ore"},{"name":"Export","typ":"Ingot"}],"device":{"connectionList":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":true}},"StructureAreaPowerControl":{"prefab":{"prefabName":"StructureAreaPowerControl","prefabHash":1999523701,"desc":"An Area Power Control (APC) has three main functions: \nIts primary purpose is to regulate power flow, ensuring uninterrupted performance from devices and machinery, especially those with a fluctuating draw. \nAPCs also create sub-networks, as no devices on the far side of an APC are visible on the main network.\nLastly, an APC charges batteries, which can provide backup power to the sub-network in the case of an outage. Note that an APC requires a battery to stabilize power draw. It also has two variants, each allowing power to flow in one direction only.","name":"Area Power Control"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"1":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"Charge":"Read","Error":"Read","Lock":"ReadWrite","Maximum":"Read","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PowerActual":"Read","PowerPotential":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read"},"modes":{"0":"Idle","1":"Discharged","2":"Discharging","3":"Charging","4":"Charged"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Battery","typ":"Battery"},{"name":"Data Disk","typ":"DataDisk"}],"device":{"connectionList":[{"typ":"PowerAndData","role":"Input"},{"typ":"Power","role":"Output"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":true,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureAreaPowerControlReversed":{"prefab":{"prefabName":"StructureAreaPowerControlReversed","prefabHash":-1032513487,"desc":"An Area Power Control (APC) has three main functions. \nIts primary purpose is to regulate power flow, ensuring uninterrupted performance from devices and machinery, especially those with a fluctuating draw. \nAPCs also create sub-networks, as no devices on the far side of an APC are visible on the main network. \nLastly, an APC charges batteries, which can provide backup power to the sub-network in the case of an outage. Note that an APC requires a battery to stabilize power draw. It also has two variants, each allowing power to flow in one direction only.","name":"Area Power Control"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"1":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"Charge":"Read","Error":"Read","Lock":"ReadWrite","Maximum":"Read","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PowerActual":"Read","PowerPotential":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read"},"modes":{"0":"Idle","1":"Discharged","2":"Discharging","3":"Charging","4":"Charged"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Battery","typ":"Battery"},{"name":"Data Disk","typ":"DataDisk"}],"device":{"connectionList":[{"typ":"PowerAndData","role":"Input"},{"typ":"Power","role":"Output"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":true,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureAutoMinerSmall":{"prefab":{"prefabName":"StructureAutoMinerSmall","prefabHash":7274344,"desc":"The Recurso SquareDig autominer is a structure that when built will mine a vertical 2x2 shaft until it hits bedrock. The autominer can be connected to a chute system, and is controllable by a logic network. Note that the autominer outputs more ore than a conventional Mining Drill over the same area.","name":"Autominer (Small)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{},"1":{}},"logicTypes":{"Activate":"ReadWrite","ClearMemory":"Write","Error":"Read","ExportCount":"Read","ImportCount":"Read","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Import","typ":"None"},{"name":"Export","typ":"None"}],"device":{"connectionList":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureAutolathe":{"prefab":{"prefabName":"StructureAutolathe","prefabHash":336213101,"desc":"The foundation of most Stationeer fabrication systems, the ExMin autolathe is a multi-axis molecular compositional system. Its complexity demands considerable time to assemble, but it remains an indispensable creation tool. Upgrade the device using a Autolathe Printer Mod for additional recipes and faster processing speeds.\n\t ","name":"Autolathe"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{},"1":{}},"logicTypes":{"Activate":"ReadWrite","ClearMemory":"Write","CompletionRatio":"Read","Error":"Read","ExportCount":"Read","ImportCount":"Read","Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","Reagents":"Read","RecipeHash":"ReadWrite","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Import","typ":"Ingot"},{"name":"Export","typ":"None"}],"device":{"connectionList":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":true,"hasReagents":true},"memory":{"instructions":{"DeviceSetLock":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |","typ":"PrinterInstruction","value":6},"EjectAllReagents":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |","typ":"PrinterInstruction","value":8},"EjectReagent":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |","typ":"PrinterInstruction","value":7},"ExecuteRecipe":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |","typ":"PrinterInstruction","value":2},"JumpIfNextInvalid":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":4},"JumpToAddress":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":5},"MissingRecipeReagent":{"description":"| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |","typ":"PrinterInstruction","value":9},"StackPointer":{"description":"| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":1},"WaitUntilNextValid":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |","typ":"PrinterInstruction","value":3}},"memoryAccess":"ReadWrite","memorySize":64}},"StructureAutomatedOven":{"prefab":{"prefabName":"StructureAutomatedOven","prefabHash":-1672404896,"desc":"","name":"Automated Oven"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{},"1":{}},"logicTypes":{"Activate":"ReadWrite","ClearMemory":"Write","CompletionRatio":"Read","Error":"Read","ExportCount":"Read","ImportCount":"Read","Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","Reagents":"Read","RecipeHash":"ReadWrite","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Import","typ":"None"},{"name":"Export","typ":"None"}],"device":{"connectionList":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":true,"hasReagents":true},"memory":{"instructions":{"DeviceSetLock":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |","typ":"PrinterInstruction","value":6},"EjectAllReagents":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |","typ":"PrinterInstruction","value":8},"EjectReagent":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |","typ":"PrinterInstruction","value":7},"ExecuteRecipe":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |","typ":"PrinterInstruction","value":2},"JumpIfNextInvalid":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":4},"JumpToAddress":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":5},"MissingRecipeReagent":{"description":"| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |","typ":"PrinterInstruction","value":9},"StackPointer":{"description":"| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":1},"WaitUntilNextValid":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |","typ":"PrinterInstruction","value":3}},"memoryAccess":"ReadWrite","memorySize":64}},"StructureBackLiquidPressureRegulator":{"prefab":{"prefabName":"StructureBackLiquidPressureRegulator","prefabHash":2099900163,"desc":"Regulates the volume ratio of liquid in the input Liquid pipe. This is expressed as percentage where 100 is totally full and 0 is empty.","name":"Liquid Back Volume Regulator"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Error":"Read","Lock":"ReadWrite","Maximum":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PipeLiquid","role":"Input"},{"typ":"PipeLiquid","role":"Output"},{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureBackPressureRegulator":{"prefab":{"prefabName":"StructureBackPressureRegulator","prefabHash":-1149857558,"desc":"Unlike the Pressure Regulator, which closes when the input exceeds a given pressure, the back pressure regulator opens when input pressure reaches a given value.","name":"Back Pressure Regulator"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Error":"Read","Lock":"ReadWrite","Maximum":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Pipe","role":"Input"},{"typ":"Pipe","role":"Output"},{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureBasketHoop":{"prefab":{"prefabName":"StructureBasketHoop","prefabHash":-1613497288,"desc":"","name":"Basket Hoop"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureBattery":{"prefab":{"prefabName":"StructureBattery","prefabHash":-400115994,"desc":"Providing large-scale, reliable power storage, the Sinotai 'Dianzi' station battery is the heart of most Stationeer bases. \nThere are a variety of cautions to the design of electrical systems using batteries, and every experienced Stationeer has a story to tell, hence the Stationeer adage: 'Dianzi cooks, but it also frys.' \nPOWER OUTPUT\nAble to store up to 3600000W of power, there are no practical limits to its throughput, hence it is wise to use Cable Coil (Heavy). Seasoned electrical engineers will also laugh in the face of those who fail to separate out their power generation networks using an Area Power Control and Transformer (Large).","name":"Station Battery"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Charge":"Read","Error":"Read","Lock":"ReadWrite","Maximum":"Read","Mode":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PowerActual":"Read","PowerPotential":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read"},"modes":{"0":"Empty","1":"Critical","2":"VeryLow","3":"Low","4":"Medium","5":"High","6":"Full"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"Input"},{"typ":"Power","role":"Output"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":true,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureBatteryCharger":{"prefab":{"prefabName":"StructureBatteryCharger","prefabHash":1945930022,"desc":"The 5-slot Xigo battery charger fits the Battery Cell (Small), Battery Cell (Large) and Battery Cell (Nuclear), providing up to 500W to any connected cell. Note: the older design means this device has minor power draw (10W) even when not charging.","name":"Battery Cell Charger"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"1":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"2":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"3":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"4":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"Activate":"ReadWrite","Error":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Battery","typ":"Battery"},{"name":"Battery","typ":"Battery"},{"name":"Battery","typ":"Battery"},{"name":"Battery","typ":"Battery"},{"name":"Battery","typ":"Battery"}],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureBatteryChargerSmall":{"prefab":{"prefabName":"StructureBatteryChargerSmall","prefabHash":-761772413,"desc":"","name":"Battery Charger Small"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"1":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"Activate":"ReadWrite","Error":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Battery","typ":"Battery"},{"name":"Battery","typ":"Battery"}],"device":{"connectionList":[{"typ":"Power","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureBatteryLarge":{"prefab":{"prefabName":"StructureBatteryLarge","prefabHash":-1388288459,"desc":"Providing even better large-scale, reliable power storage than the {THING;StructureBattery}, the Sinotai 'Da Dianchi' large station battery is the heart of most Stationeer bases. \nThere are a variety of cautions to the design of electrical systems using batteries, and every experienced Stationeer has a story to tell, hence the Stationeer adage: 'Dianzi cooks, but it also frys.' \nPOWER OUTPUT\nAble to store up to 9000001 watts of power, there are no practical limits to its throughput, hence it is wise to use Cable Coil (Heavy). Seasoned electrical engineers will also laugh in the face of those who fail to separate out their power generation networks using an Area Power Control and Transformer (Large). ","name":"Station Battery (Large)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Charge":"Read","Error":"Read","Lock":"ReadWrite","Maximum":"Read","Mode":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PowerActual":"Read","PowerPotential":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read"},"modes":{"0":"Empty","1":"Critical","2":"VeryLow","3":"Low","4":"Medium","5":"High","6":"Full"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"Input"},{"typ":"Power","role":"Output"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":true,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureBatteryMedium":{"prefab":{"prefabName":"StructureBatteryMedium","prefabHash":-1125305264,"desc":"0.Empty\n1.Critical\n2.VeryLow\n3.Low\n4.Medium\n5.High\n6.Full","name":"Battery (Medium)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Charge":"Read","Maximum":"Read","Mode":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PowerActual":"Read","PowerPotential":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read"},"modes":{"0":"Empty","1":"Critical","2":"VeryLow","3":"Low","4":"Medium","5":"High","6":"Full"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Power","role":"Input"},{"typ":"Power","role":"Output"},{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":true,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureBatterySmall":{"prefab":{"prefabName":"StructureBatterySmall","prefabHash":-2123455080,"desc":"0.Empty\n1.Critical\n2.VeryLow\n3.Low\n4.Medium\n5.High\n6.Full","name":"Auxiliary Rocket Battery "},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Charge":"Read","Maximum":"Read","Mode":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PowerActual":"Read","PowerPotential":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read"},"modes":{"0":"Empty","1":"Critical","2":"VeryLow","3":"Low","4":"Medium","5":"High","6":"Full"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Power","role":"Input"},{"typ":"Power","role":"Output"},{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":true,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureBeacon":{"prefab":{"prefabName":"StructureBeacon","prefabHash":-188177083,"desc":"","name":"Beacon"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Color":"ReadWrite","Error":"Read","Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":true,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureBench":{"prefab":{"prefabName":"StructureBench","prefabHash":-2042448192,"desc":"When it's time to sit, nothing supports you like a bench. This bench is powered, so you can use appliances like the Microwave.","name":"Powered Bench"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","On":"ReadWrite","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"1":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","On":"ReadWrite","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"Error":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Appliance 1","typ":"Appliance"},{"name":"Appliance 2","typ":"Appliance"}],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureBench1":{"prefab":{"prefabName":"StructureBench1","prefabHash":406745009,"desc":"","name":"Bench (Counter Style)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","On":"ReadWrite","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"1":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","On":"ReadWrite","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"Error":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Appliance 1","typ":"Appliance"},{"name":"Appliance 2","typ":"Appliance"}],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureBench2":{"prefab":{"prefabName":"StructureBench2","prefabHash":-2127086069,"desc":"","name":"Bench (High Tech Style)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","On":"ReadWrite","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"1":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","On":"ReadWrite","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"Error":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Appliance 1","typ":"Appliance"},{"name":"Appliance 2","typ":"Appliance"}],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureBench3":{"prefab":{"prefabName":"StructureBench3","prefabHash":-164622691,"desc":"","name":"Bench (Frame Style)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","On":"ReadWrite","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"1":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","On":"ReadWrite","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"Error":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Appliance 1","typ":"Appliance"},{"name":"Appliance 2","typ":"Appliance"}],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureBench4":{"prefab":{"prefabName":"StructureBench4","prefabHash":1750375230,"desc":"","name":"Bench (Workbench Style)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","On":"ReadWrite","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"1":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","On":"ReadWrite","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"Error":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Appliance 1","typ":"Appliance"},{"name":"Appliance 2","typ":"Appliance"}],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureBlastDoor":{"prefab":{"prefabName":"StructureBlastDoor","prefabHash":337416191,"desc":"Airtight and almost undamageable, the original 'Millmar' series of blast door was designed by off-world mining giant Recurso to protect asteroid-mining facilities from nuclear-incident-level explosive decompression.\nShort of a pocket-sized singularity blinking into the local space-time frame, there is effectively no limit to the pressure these blast doors can contain - ideal for constructing airlocks in pressure-sensitive environments.","name":"Blast Door"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Idle":"Read","Lock":"ReadWrite","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"modes":{"0":"Operate","1":"Logic"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":true,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureBlockBed":{"prefab":{"prefabName":"StructureBlockBed","prefabHash":697908419,"desc":"Description coming.","name":"Block Bed"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"Activate":"ReadWrite","Error":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Bed","typ":"Entity"}],"device":{"connectionList":[{"typ":"Power","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureBlocker":{"prefab":{"prefabName":"StructureBlocker","prefabHash":378084505,"desc":"","name":"Blocker"},"structure":{"smallGrid":false}},"StructureCableAnalysizer":{"prefab":{"prefabName":"StructureCableAnalysizer","prefabHash":1036015121,"desc":"","name":"Cable Analyzer"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"NameHash":"Read","PowerActual":"Read","PowerPotential":"Read","PowerRequired":"Read","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureCableCorner":{"prefab":{"prefabName":"StructureCableCorner","prefabHash":-889269388,"desc":"Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of Stationeer life - so essential, the ODA designated it an official 'tool' during the 3rd Decannual Stationeer Solar Conference.\nNormal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy).","name":"Cable (Corner)"},"structure":{"smallGrid":true}},"StructureCableCorner3":{"prefab":{"prefabName":"StructureCableCorner3","prefabHash":980469101,"desc":"Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of Stationeer life - so essential, the ODA designated it an official 'tool' during the 3rd Decannual Stationeer Solar Conference.\nNormal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy).","name":"Cable (3-Way Corner)"},"structure":{"smallGrid":true}},"StructureCableCorner3Burnt":{"prefab":{"prefabName":"StructureCableCorner3Burnt","prefabHash":318437449,"desc":"","name":"Burnt Cable (3-Way Corner)"},"structure":{"smallGrid":true}},"StructureCableCorner3HBurnt":{"prefab":{"prefabName":"StructureCableCorner3HBurnt","prefabHash":2393826,"desc":"","name":""},"structure":{"smallGrid":true}},"StructureCableCorner4":{"prefab":{"prefabName":"StructureCableCorner4","prefabHash":-1542172466,"desc":"","name":"Cable (4-Way Corner)"},"structure":{"smallGrid":true}},"StructureCableCorner4Burnt":{"prefab":{"prefabName":"StructureCableCorner4Burnt","prefabHash":268421361,"desc":"","name":"Burnt Cable (4-Way Corner)"},"structure":{"smallGrid":true}},"StructureCableCorner4HBurnt":{"prefab":{"prefabName":"StructureCableCorner4HBurnt","prefabHash":-981223316,"desc":"","name":"Burnt Heavy Cable (4-Way Corner)"},"structure":{"smallGrid":true}},"StructureCableCornerBurnt":{"prefab":{"prefabName":"StructureCableCornerBurnt","prefabHash":-177220914,"desc":"","name":"Burnt Cable (Corner)"},"structure":{"smallGrid":true}},"StructureCableCornerH":{"prefab":{"prefabName":"StructureCableCornerH","prefabHash":-39359015,"desc":"","name":"Heavy Cable (Corner)"},"structure":{"smallGrid":true}},"StructureCableCornerH3":{"prefab":{"prefabName":"StructureCableCornerH3","prefabHash":-1843379322,"desc":"","name":"Heavy Cable (3-Way Corner)"},"structure":{"smallGrid":true}},"StructureCableCornerH4":{"prefab":{"prefabName":"StructureCableCornerH4","prefabHash":205837861,"desc":"","name":"Heavy Cable (4-Way Corner)"},"structure":{"smallGrid":true}},"StructureCableCornerHBurnt":{"prefab":{"prefabName":"StructureCableCornerHBurnt","prefabHash":1931412811,"desc":"","name":"Burnt Cable (Corner)"},"structure":{"smallGrid":true}},"StructureCableFuse100k":{"prefab":{"prefabName":"StructureCableFuse100k","prefabHash":281380789,"desc":"","name":"Fuse (100kW)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"NameHash":"Read","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureCableFuse1k":{"prefab":{"prefabName":"StructureCableFuse1k","prefabHash":-1103727120,"desc":"","name":"Fuse (1kW)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"NameHash":"Read","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureCableFuse50k":{"prefab":{"prefabName":"StructureCableFuse50k","prefabHash":-349716617,"desc":"","name":"Fuse (50kW)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"NameHash":"Read","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureCableFuse5k":{"prefab":{"prefabName":"StructureCableFuse5k","prefabHash":-631590668,"desc":"","name":"Fuse (5kW)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"NameHash":"Read","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureCableJunction":{"prefab":{"prefabName":"StructureCableJunction","prefabHash":-175342021,"desc":"Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of Stationeer life - so much so, the ODA designated it an official 'tool' during the 3rd Decannual Stationeer Solar Conference.\nNormal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy).","name":"Cable (Junction)"},"structure":{"smallGrid":true}},"StructureCableJunction4":{"prefab":{"prefabName":"StructureCableJunction4","prefabHash":1112047202,"desc":"Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of Stationeer life - so much so, the ODA designated it an official 'tool' during the 3rd Decannual Stationeer Solar Conference.\nNormal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy).","name":"Cable (4-Way Junction)"},"structure":{"smallGrid":true}},"StructureCableJunction4Burnt":{"prefab":{"prefabName":"StructureCableJunction4Burnt","prefabHash":-1756896811,"desc":"","name":"Burnt Cable (4-Way Junction)"},"structure":{"smallGrid":true}},"StructureCableJunction4HBurnt":{"prefab":{"prefabName":"StructureCableJunction4HBurnt","prefabHash":-115809132,"desc":"","name":"Burnt Cable (4-Way Junction)"},"structure":{"smallGrid":true}},"StructureCableJunction5":{"prefab":{"prefabName":"StructureCableJunction5","prefabHash":894390004,"desc":"","name":"Cable (5-Way Junction)"},"structure":{"smallGrid":true}},"StructureCableJunction5Burnt":{"prefab":{"prefabName":"StructureCableJunction5Burnt","prefabHash":1545286256,"desc":"","name":"Burnt Cable (5-Way Junction)"},"structure":{"smallGrid":true}},"StructureCableJunction6":{"prefab":{"prefabName":"StructureCableJunction6","prefabHash":-1404690610,"desc":"Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of Stationeer duty - so much so, the ODA designated it an official 'tool' during the 3rd Decannual Stationeer Solar Conference.\nNormal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy).","name":"Cable (6-Way Junction)"},"structure":{"smallGrid":true}},"StructureCableJunction6Burnt":{"prefab":{"prefabName":"StructureCableJunction6Burnt","prefabHash":-628145954,"desc":"","name":"Burnt Cable (6-Way Junction)"},"structure":{"smallGrid":true}},"StructureCableJunction6HBurnt":{"prefab":{"prefabName":"StructureCableJunction6HBurnt","prefabHash":1854404029,"desc":"","name":"Burnt Cable (6-Way Junction)"},"structure":{"smallGrid":true}},"StructureCableJunctionBurnt":{"prefab":{"prefabName":"StructureCableJunctionBurnt","prefabHash":-1620686196,"desc":"","name":"Burnt Cable (Junction)"},"structure":{"smallGrid":true}},"StructureCableJunctionH":{"prefab":{"prefabName":"StructureCableJunctionH","prefabHash":469451637,"desc":"","name":"Heavy Cable (3-Way Junction)"},"structure":{"smallGrid":true}},"StructureCableJunctionH4":{"prefab":{"prefabName":"StructureCableJunctionH4","prefabHash":-742234680,"desc":"","name":"Heavy Cable (4-Way Junction)"},"structure":{"smallGrid":true}},"StructureCableJunctionH5":{"prefab":{"prefabName":"StructureCableJunctionH5","prefabHash":-1530571426,"desc":"","name":"Heavy Cable (5-Way Junction)"},"structure":{"smallGrid":true}},"StructureCableJunctionH5Burnt":{"prefab":{"prefabName":"StructureCableJunctionH5Burnt","prefabHash":1701593300,"desc":"","name":"Burnt Heavy Cable (5-Way Junction)"},"structure":{"smallGrid":true}},"StructureCableJunctionH6":{"prefab":{"prefabName":"StructureCableJunctionH6","prefabHash":1036780772,"desc":"","name":"Heavy Cable (6-Way Junction)"},"structure":{"smallGrid":true}},"StructureCableJunctionHBurnt":{"prefab":{"prefabName":"StructureCableJunctionHBurnt","prefabHash":-341365649,"desc":"","name":"Burnt Cable (Junction)"},"structure":{"smallGrid":true}},"StructureCableStraight":{"prefab":{"prefabName":"StructureCableStraight","prefabHash":605357050,"desc":"Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of Stationeer life - so much so, the ODA designated it an official 'tool'.\nNormal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy).","name":"Cable (Straight)"},"structure":{"smallGrid":true}},"StructureCableStraightBurnt":{"prefab":{"prefabName":"StructureCableStraightBurnt","prefabHash":-1196981113,"desc":"","name":"Burnt Cable (Straight)"},"structure":{"smallGrid":true}},"StructureCableStraightH":{"prefab":{"prefabName":"StructureCableStraightH","prefabHash":-146200530,"desc":"","name":"Heavy Cable (Straight)"},"structure":{"smallGrid":true}},"StructureCableStraightHBurnt":{"prefab":{"prefabName":"StructureCableStraightHBurnt","prefabHash":2085762089,"desc":"","name":"Burnt Cable (Straight)"},"structure":{"smallGrid":true}},"StructureCamera":{"prefab":{"prefabName":"StructureCamera","prefabHash":-342072665,"desc":"Nothing says 'I care' like a security camera that's been linked a Motion Sensor and a Console fitted with a Camera Display.\nBe there, even when you're not.","name":"Camera"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read"},"modes":{"0":"Mode0","1":"Mode1"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":true,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureCapsuleTankGas":{"prefab":{"prefabName":"StructureCapsuleTankGas","prefabHash":-1385712131,"desc":"","name":"Gas Capsule Tank Small"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Combustion":"Read","Maximum":"Read","NameHash":"Read","PrefabHash":"Read","Pressure":"Read","Ratio":"Read","RatioCarbonDioxide":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioVolatiles":"Read","RatioWater":"Read","ReferenceId":"Read","Setting":"ReadWrite","Temperature":"Read","TotalMoles":"Read","Volume":"Read","VolumeOfLiquid":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Pipe","role":"Input"}],"hasActivateState":false,"hasAtmosphere":true,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureCapsuleTankLiquid":{"prefab":{"prefabName":"StructureCapsuleTankLiquid","prefabHash":1415396263,"desc":"","name":"Liquid Capsule Tank Small"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Combustion":"Read","Maximum":"Read","NameHash":"Read","PrefabHash":"Read","Pressure":"Read","Ratio":"Read","RatioCarbonDioxide":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioVolatiles":"Read","RatioWater":"Read","ReferenceId":"Read","Setting":"ReadWrite","Temperature":"Read","TotalMoles":"Read","Volume":"Read","VolumeOfLiquid":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"PipeLiquid","role":"Input"}],"hasActivateState":false,"hasAtmosphere":true,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureCargoStorageMedium":{"prefab":{"prefabName":"StructureCargoStorageMedium","prefabHash":1151864003,"desc":"","name":"Cargo Storage (Medium)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{},"1":{},"2":{},"3":{},"4":{},"5":{},"6":{},"7":{},"8":{},"9":{},"10":{},"11":{},"12":{},"13":{},"14":{},"15":{},"16":{},"17":{},"18":{},"19":{},"20":{},"21":{},"22":{},"23":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"42":{},"43":{},"44":{},"45":{},"46":{},"47":{},"48":{},"49":{},"50":{},"51":{},"52":{},"53":{},"54":{},"55":{},"56":{},"57":{},"58":{},"59":{},"60":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"67":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"86":{},"87":{},"88":{},"89":{},"90":{},"91":{},"92":{},"93":{},"94":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"101":{}},"logicTypes":{"ClearMemory":"Write","Error":"Read","ExportCount":"Read","ImportCount":"Read","Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","Quantity":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Import","typ":"None"},{"name":"Export","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"}],"device":{"connectionList":[{"typ":"PowerAndData","role":"None"},{"typ":"Chute","role":"Output"},{"typ":"Chute","role":"Input"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureCargoStorageSmall":{"prefab":{"prefabName":"StructureCargoStorageSmall","prefabHash":-1493672123,"desc":"","name":"Cargo Storage (Small)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"1":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"2":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"3":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"4":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"5":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"6":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"7":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"8":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"9":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"10":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"11":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"12":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"13":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"14":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"15":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"16":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"17":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"18":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"19":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"20":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"21":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"22":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"23":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"24":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"25":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"26":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"27":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"28":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"29":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"30":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"31":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"32":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"33":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"34":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"35":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"36":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"37":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"38":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"39":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"40":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"41":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"42":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"43":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"44":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"45":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"46":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"47":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"48":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"49":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"50":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"51":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"ClearMemory":"Write","Error":"Read","ExportCount":"Read","ImportCount":"Read","Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","Quantity":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Import","typ":"None"},{"name":"Export","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"}],"device":{"connectionList":[{"typ":"PowerAndData","role":"None"},{"typ":"Chute","role":"Output"},{"typ":"Chute","role":"Input"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureCentrifuge":{"prefab":{"prefabName":"StructureCentrifuge","prefabHash":690945935,"desc":"If a Recycler or unbalanced Furnace outputs reagent mixture rather than the desired ingots, a centrifuge allows you to reclaim the raw ore. \n It also refines Dirty Ore produced from the Deep Miner and Dirty Ore produced from the Rocket Miner. \n Its bigger brother Combustion Centrifuge can be used to process items significantly faster. Items processed by the centrifuge will be de-gassed. \n If openned while powered on, the centrifuge will enter an errored state and reduce its rpm to 0 and then export any items.","name":"Centrifuge"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{},"1":{}},"logicTypes":{"ClearMemory":"Write","Error":"Read","ExportCount":"Read","ImportCount":"Read","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","Reagents":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Import","typ":"None"},{"name":"Export","typ":"None"}],"device":{"connectionList":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":true,"hasReagents":true}},"StructureChair":{"prefab":{"prefabName":"StructureChair","prefabHash":1167659360,"desc":"One of the universe's many chairs, optimized for bipeds with somewhere between zero and two upper limbs.","name":"Chair"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"NameHash":"Read","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Seat","typ":"Entity"}],"device":{"connectionList":[],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureChairBacklessDouble":{"prefab":{"prefabName":"StructureChairBacklessDouble","prefabHash":1944858936,"desc":"","name":"Chair (Backless Double)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"NameHash":"Read","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Seat","typ":"Entity"}],"device":{"connectionList":[],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureChairBacklessSingle":{"prefab":{"prefabName":"StructureChairBacklessSingle","prefabHash":1672275150,"desc":"","name":"Chair (Backless Single)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"NameHash":"Read","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Seat","typ":"Entity"}],"device":{"connectionList":[],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureChairBoothCornerLeft":{"prefab":{"prefabName":"StructureChairBoothCornerLeft","prefabHash":-367720198,"desc":"","name":"Chair (Booth Corner Left)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"NameHash":"Read","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Seat","typ":"Entity"}],"device":{"connectionList":[],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureChairBoothMiddle":{"prefab":{"prefabName":"StructureChairBoothMiddle","prefabHash":1640720378,"desc":"","name":"Chair (Booth Middle)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"NameHash":"Read","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Seat","typ":"Entity"}],"device":{"connectionList":[],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureChairRectangleDouble":{"prefab":{"prefabName":"StructureChairRectangleDouble","prefabHash":-1152812099,"desc":"","name":"Chair (Rectangle Double)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"NameHash":"Read","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Seat","typ":"Entity"}],"device":{"connectionList":[],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureChairRectangleSingle":{"prefab":{"prefabName":"StructureChairRectangleSingle","prefabHash":-1425428917,"desc":"","name":"Chair (Rectangle Single)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"NameHash":"Read","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Seat","typ":"Entity"}],"device":{"connectionList":[],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureChairThickDouble":{"prefab":{"prefabName":"StructureChairThickDouble","prefabHash":-1245724402,"desc":"","name":"Chair (Thick Double)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"NameHash":"Read","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Seat","typ":"Entity"}],"device":{"connectionList":[],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureChairThickSingle":{"prefab":{"prefabName":"StructureChairThickSingle","prefabHash":-1510009608,"desc":"","name":"Chair (Thick Single)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"NameHash":"Read","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Seat","typ":"Entity"}],"device":{"connectionList":[],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureChuteBin":{"prefab":{"prefabName":"StructureChuteBin","prefabHash":-850484480,"desc":"The Stationeer's goal is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps.\nLike most Recurso-designed systems, chute bins are simple and robust powered items, allowing items to be manually passed into chute networks by pulling a lever. They can also be programmed with logic to operate automatically, although full automation requires the use items such as a SDB Hopper.","name":"Chute Bin"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"Error":"Read","Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Input","typ":"None"}],"device":{"connectionList":[{"typ":"Chute","role":"Output"},{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureChuteCorner":{"prefab":{"prefabName":"StructureChuteCorner","prefabHash":1360330136,"desc":"Chutes act as pipes for items. Use them to connect various import/export equipment together such as the Vending Machine and printers like the Autolathe.\nThe aim for any Stationeer is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps.\nChute corners are fundamental components of chute networks, which allow the transport of items between machines with import/export slots, such as the Furnace and other automatable structures.","name":"Chute (Corner)"},"structure":{"smallGrid":true},"slots":[{"name":"Transport Slot","typ":"None"}]},"StructureChuteDigitalFlipFlopSplitterLeft":{"prefab":{"prefabName":"StructureChuteDigitalFlipFlopSplitterLeft","prefabHash":-810874728,"desc":"The digital flip flop will toggle between two outputs using a specified ratio (n:1). For example, setting the dial to 2 would allow two items to pass through the primary output before flipping to the secondary output.","name":"Chute Digital Flip Flop Splitter Left"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Quantity":"ReadWrite","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite","SettingOutput":"ReadWrite"},"modes":{"0":"Mode0","1":"Mode1"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Transport Slot","typ":"None"}],"device":{"connectionList":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"Chute","role":"Output2"},{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":true,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureChuteDigitalFlipFlopSplitterRight":{"prefab":{"prefabName":"StructureChuteDigitalFlipFlopSplitterRight","prefabHash":163728359,"desc":"The digital flip flop will toggle between two outputs using a specified ratio (n:1). For example, setting the dial to 2 would allow two items to pass through the primary output before flipping to the secondary output.","name":"Chute Digital Flip Flop Splitter Right"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Quantity":"ReadWrite","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite","SettingOutput":"ReadWrite"},"modes":{"0":"Mode0","1":"Mode1"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Transport Slot","typ":"None"}],"device":{"connectionList":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"Chute","role":"Output2"},{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":true,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureChuteDigitalValveLeft":{"prefab":{"prefabName":"StructureChuteDigitalValveLeft","prefabHash":648608238,"desc":"The Digital Chute Valve will stop the flow of materials when set to closed and when set to open, will act like a straight chute. The valve will automatically close after a certain number of items have passed through. This threshold can be set using the dial.","name":"Chute Digital Valve Left"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","Quantity":"ReadWrite","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Transport Slot","typ":"None"}],"device":{"connectionList":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureChuteDigitalValveRight":{"prefab":{"prefabName":"StructureChuteDigitalValveRight","prefabHash":-1337091041,"desc":"The Digital Chute Valve will stop the flow of materials when set to closed and when set to open, will act like a straight chute. The valve will automatically close after a certain number of items have passed through. This threshold can be set using the dial.","name":"Chute Digital Valve Right"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","Quantity":"ReadWrite","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Transport Slot","typ":"None"}],"device":{"connectionList":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureChuteFlipFlopSplitter":{"prefab":{"prefabName":"StructureChuteFlipFlopSplitter","prefabHash":-1446854725,"desc":"A chute that toggles between two outputs","name":"Chute Flip Flop Splitter"},"structure":{"smallGrid":true},"slots":[{"name":"Transport Slot","typ":"None"}]},"StructureChuteInlet":{"prefab":{"prefabName":"StructureChuteInlet","prefabHash":-1469588766,"desc":"The aim for any Stationeer is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps.\nThe chute inlet is an aperture by which items can be introduced to import/export networks. Note that its origins in zero-gravity mining means chute inlets are unpowered and permanently open, rather than interactable, allowing objects to be thrown in. They can be connected to logic systems to monitor throughput.","name":"Chute Inlet"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"ClearMemory":"Write","ImportCount":"Read","Lock":"ReadWrite","NameHash":"Read","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Import","typ":"None"}],"device":{"connectionList":[{"typ":"Chute","role":"Output"},{"typ":"Data","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureChuteJunction":{"prefab":{"prefabName":"StructureChuteJunction","prefabHash":-611232514,"desc":"The aim for any Stationeer is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps.\nChute junctions are fundamental components of chute networks, allowing merging or splitting of these networks. When combined with a programmed Sorter, items can be sent down different paths to various machines with import/export slots.","name":"Chute (Junction)"},"structure":{"smallGrid":true},"slots":[{"name":"Transport Slot","typ":"None"}]},"StructureChuteOutlet":{"prefab":{"prefabName":"StructureChuteOutlet","prefabHash":-1022714809,"desc":"The aim for any Stationeer is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps.\nThe chute outlet is an aperture for exiting items from import/export networks. Note that the outlet's origins in zero-gravity mining means they are permanently open, rather than interactable, but can be connected to logic systems to monitor throughput.","name":"Chute Outlet"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"ClearMemory":"Write","ExportCount":"Read","ImportCount":"Read","Lock":"ReadWrite","NameHash":"Read","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Export","typ":"None"}],"device":{"connectionList":[{"typ":"Chute","role":"Input"},{"typ":"Data","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureChuteOverflow":{"prefab":{"prefabName":"StructureChuteOverflow","prefabHash":225377225,"desc":"The overflow chute will direct materials to its overflow port when the thing connected to its default port is already occupied.","name":"Chute Overflow"},"structure":{"smallGrid":true},"slots":[{"name":"Transport Slot","typ":"None"}]},"StructureChuteStraight":{"prefab":{"prefabName":"StructureChuteStraight","prefabHash":168307007,"desc":"Chutes act as pipes for items. Use them to connect various import/export equipment together such as the Vending Machine and printers like the Autolathe.\nThe aim for any Stationeer is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps.\nChutes are fundamental components of chute networks, which allow the transport of items between any machine or device with an import/export slot.","name":"Chute (Straight)"},"structure":{"smallGrid":true},"slots":[{"name":"Transport Slot","typ":"None"}]},"StructureChuteUmbilicalFemale":{"prefab":{"prefabName":"StructureChuteUmbilicalFemale","prefabHash":-1918892177,"desc":"","name":"Umbilical Socket (Chute)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"NameHash":"Read","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Transport Slot","typ":"None"}],"device":{"connectionList":[{"typ":"Chute","role":"Input"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureChuteUmbilicalFemaleSide":{"prefab":{"prefabName":"StructureChuteUmbilicalFemaleSide","prefabHash":-659093969,"desc":"","name":"Umbilical Socket Angle (Chute)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"NameHash":"Read","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Transport Slot","typ":"None"}],"device":{"connectionList":[{"typ":"Chute","role":"Input"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureChuteUmbilicalMale":{"prefab":{"prefabName":"StructureChuteUmbilicalMale","prefabHash":-958884053,"desc":"0.Left\n1.Center\n2.Right","name":"Umbilical (Chute)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"Error":"Read","Lock":"ReadWrite","Mode":"Read","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"modes":{"0":"Left","1":"Center","2":"Right"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Transport Slot","typ":"None"}],"device":{"connectionList":[{"typ":"Chute","role":"Input"},{"typ":"PowerAndData","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":true,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureChuteValve":{"prefab":{"prefabName":"StructureChuteValve","prefabHash":434875271,"desc":"The Chute Valve will stop the flow of materials when set to closed and when set to open, will act like a straight chute.","name":"Chute Valve"},"structure":{"smallGrid":true},"slots":[{"name":"Transport Slot","typ":"None"}]},"StructureChuteWindow":{"prefab":{"prefabName":"StructureChuteWindow","prefabHash":-607241919,"desc":"Chute's with windows let you see what's passing through your import/export network. But be warned, they are not insulated as other chutes are. Ices will melt.","name":"Chute (Window)"},"structure":{"smallGrid":true},"slots":[{"name":"Transport Slot","typ":"None"}]},"StructureCircuitHousing":{"prefab":{"prefabName":"StructureCircuitHousing","prefabHash":-128473777,"desc":"","name":"IC Housing"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","LineNumber":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"Error":"Read","LineNumber":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":true},"slots":[{"name":"Programmable Chip","typ":"ProgrammableChip"}],"device":{"connectionList":[{"typ":"Data","role":"Input"},{"typ":"Power","role":"None"}],"devicePinsLength":6,"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false},"memory":{"memoryAccess":"ReadWrite","memorySize":0}},"StructureCombustionCentrifuge":{"prefab":{"prefabName":"StructureCombustionCentrifuge","prefabHash":1238905683,"desc":"The Combustion Centrifuge is a gas powered version of the Centrifuge. If a Recycler or unbalanced Furnace outputs reagent mixture rather than the desired ingots, a centrifuge allows you to reclaim the raw ore.\n It also refines Dirty Ore produced from the Deep Miner and Dirty Ore produced from the Rocket Miner. A combustible fuel mix should be supplied to the gas input, and waste gasses should be vented from the output. \n The machine's RPMs must be controlled via the throttle and combustion limiter levers. If the Combustion Centrifuge gains, or loses, RPMs too fast it will experience stress, and eventually grind to a halt. Higher RPMs directly result in faster processing speeds. \n The throttle lever controls the amount of fuel being pulled into the machine, increasing the temperature inside the engine, and leading to an increase in RPM. The limiter lever influences the speed of the combustion, and how much uncombusted gas is in the exhaust. \n Ejecting ore from the Combustion Centrifuge while it is at high RPMs will result in additional stress build up. If turned off while not stressed, the machine will automatically start to brake, and reduce RPMs in a controlled manner.\n\t ","name":"Combustion Centrifuge"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{},"1":{},"2":{}},"logicTypes":{"ClearMemory":"Write","Combustion":"Read","CombustionInput":"Read","CombustionLimiter":"ReadWrite","CombustionOutput":"Read","Error":"Read","ExportCount":"Read","ImportCount":"Read","Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","Pressure":"Read","PressureInput":"Read","PressureOutput":"Read","RatioCarbonDioxide":"Read","RatioCarbonDioxideInput":"Read","RatioCarbonDioxideOutput":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidCarbonDioxideInput":"Read","RatioLiquidCarbonDioxideOutput":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrogenInput":"Read","RatioLiquidNitrogenOutput":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidNitrousOxideInput":"Read","RatioLiquidNitrousOxideOutput":"Read","RatioLiquidOxygen":"Read","RatioLiquidOxygenInput":"Read","RatioLiquidOxygenOutput":"Read","RatioLiquidPollutant":"Read","RatioLiquidPollutantInput":"Read","RatioLiquidPollutantOutput":"Read","RatioLiquidVolatiles":"Read","RatioLiquidVolatilesInput":"Read","RatioLiquidVolatilesOutput":"Read","RatioNitrogen":"Read","RatioNitrogenInput":"Read","RatioNitrogenOutput":"Read","RatioNitrousOxide":"Read","RatioNitrousOxideInput":"Read","RatioNitrousOxideOutput":"Read","RatioOxygen":"Read","RatioOxygenInput":"Read","RatioOxygenOutput":"Read","RatioPollutant":"Read","RatioPollutantInput":"Read","RatioPollutantOutput":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioSteamInput":"Read","RatioSteamOutput":"Read","RatioVolatiles":"Read","RatioVolatilesInput":"Read","RatioVolatilesOutput":"Read","RatioWater":"Read","RatioWaterInput":"Read","RatioWaterOutput":"Read","Reagents":"Read","ReferenceId":"Read","RequiredPower":"Read","Rpm":"Read","Stress":"Read","Temperature":"Read","TemperatureInput":"Read","TemperatureOutput":"Read","Throttle":"ReadWrite","TotalMoles":"Read","TotalMolesInput":"Read","TotalMolesOutput":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":true},"slots":[{"name":"Import","typ":"None"},{"name":"Export","typ":"None"},{"name":"Programmable Chip","typ":"ProgrammableChip"}],"device":{"connectionList":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"Data","role":"None"},{"typ":"Power","role":"None"},{"typ":"Pipe","role":"Input"},{"typ":"Pipe","role":"Output"}],"devicePinsLength":2,"hasActivateState":false,"hasAtmosphere":true,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":true,"hasReagents":true}},"StructureCompositeCladdingAngled":{"prefab":{"prefabName":"StructureCompositeCladdingAngled","prefabHash":-1513030150,"desc":"","name":"Composite Cladding (Angled)"},"structure":{"smallGrid":false}},"StructureCompositeCladdingAngledCorner":{"prefab":{"prefabName":"StructureCompositeCladdingAngledCorner","prefabHash":-69685069,"desc":"","name":"Composite Cladding (Angled Corner)"},"structure":{"smallGrid":false}},"StructureCompositeCladdingAngledCornerInner":{"prefab":{"prefabName":"StructureCompositeCladdingAngledCornerInner","prefabHash":-1841871763,"desc":"","name":"Composite Cladding (Angled Corner Inner)"},"structure":{"smallGrid":false}},"StructureCompositeCladdingAngledCornerInnerLong":{"prefab":{"prefabName":"StructureCompositeCladdingAngledCornerInnerLong","prefabHash":-1417912632,"desc":"","name":"Composite Cladding (Angled Corner Inner Long)"},"structure":{"smallGrid":false}},"StructureCompositeCladdingAngledCornerInnerLongL":{"prefab":{"prefabName":"StructureCompositeCladdingAngledCornerInnerLongL","prefabHash":947705066,"desc":"","name":"Composite Cladding (Angled Corner Inner Long L)"},"structure":{"smallGrid":false}},"StructureCompositeCladdingAngledCornerInnerLongR":{"prefab":{"prefabName":"StructureCompositeCladdingAngledCornerInnerLongR","prefabHash":-1032590967,"desc":"","name":"Composite Cladding (Angled Corner Inner Long R)"},"structure":{"smallGrid":false}},"StructureCompositeCladdingAngledCornerLong":{"prefab":{"prefabName":"StructureCompositeCladdingAngledCornerLong","prefabHash":850558385,"desc":"","name":"Composite Cladding (Long Angled Corner)"},"structure":{"smallGrid":false}},"StructureCompositeCladdingAngledCornerLongR":{"prefab":{"prefabName":"StructureCompositeCladdingAngledCornerLongR","prefabHash":-348918222,"desc":"","name":"Composite Cladding (Long Angled Mirrored Corner)"},"structure":{"smallGrid":false}},"StructureCompositeCladdingAngledLong":{"prefab":{"prefabName":"StructureCompositeCladdingAngledLong","prefabHash":-387546514,"desc":"","name":"Composite Cladding (Long Angled)"},"structure":{"smallGrid":false}},"StructureCompositeCladdingCylindrical":{"prefab":{"prefabName":"StructureCompositeCladdingCylindrical","prefabHash":212919006,"desc":"","name":"Composite Cladding (Cylindrical)"},"structure":{"smallGrid":false}},"StructureCompositeCladdingCylindricalPanel":{"prefab":{"prefabName":"StructureCompositeCladdingCylindricalPanel","prefabHash":1077151132,"desc":"","name":"Composite Cladding (Cylindrical Panel)"},"structure":{"smallGrid":false}},"StructureCompositeCladdingPanel":{"prefab":{"prefabName":"StructureCompositeCladdingPanel","prefabHash":1997436771,"desc":"","name":"Composite Cladding (Panel)"},"structure":{"smallGrid":false}},"StructureCompositeCladdingRounded":{"prefab":{"prefabName":"StructureCompositeCladdingRounded","prefabHash":-259357734,"desc":"","name":"Composite Cladding (Rounded)"},"structure":{"smallGrid":false}},"StructureCompositeCladdingRoundedCorner":{"prefab":{"prefabName":"StructureCompositeCladdingRoundedCorner","prefabHash":1951525046,"desc":"","name":"Composite Cladding (Rounded Corner)"},"structure":{"smallGrid":false}},"StructureCompositeCladdingRoundedCornerInner":{"prefab":{"prefabName":"StructureCompositeCladdingRoundedCornerInner","prefabHash":110184667,"desc":"","name":"Composite Cladding (Rounded Corner Inner)"},"structure":{"smallGrid":false}},"StructureCompositeCladdingSpherical":{"prefab":{"prefabName":"StructureCompositeCladdingSpherical","prefabHash":139107321,"desc":"","name":"Composite Cladding (Spherical)"},"structure":{"smallGrid":false}},"StructureCompositeCladdingSphericalCap":{"prefab":{"prefabName":"StructureCompositeCladdingSphericalCap","prefabHash":534213209,"desc":"","name":"Composite Cladding (Spherical Cap)"},"structure":{"smallGrid":false}},"StructureCompositeCladdingSphericalCorner":{"prefab":{"prefabName":"StructureCompositeCladdingSphericalCorner","prefabHash":1751355139,"desc":"","name":"Composite Cladding (Spherical Corner)"},"structure":{"smallGrid":false}},"StructureCompositeDoor":{"prefab":{"prefabName":"StructureCompositeDoor","prefabHash":-793837322,"desc":"Recurso's composite doors are rated to 300kPa, which is more than sufficient for most purposes they were designed for. However, steep pressure differentials are not your friend.","name":"Composite Door"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Idle":"Read","Lock":"ReadWrite","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"modes":{"0":"Operate","1":"Logic"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":true,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureCompositeFloorGrating":{"prefab":{"prefabName":"StructureCompositeFloorGrating","prefabHash":324868581,"desc":"While aesthetics rank low on the ladder of Stationeer concerns, composite gratings allow the concealment of unsightly cables on floors, walls and ceilings.","name":"Composite Floor Grating"},"structure":{"smallGrid":false}},"StructureCompositeFloorGrating2":{"prefab":{"prefabName":"StructureCompositeFloorGrating2","prefabHash":-895027741,"desc":"","name":"Composite Floor Grating (Type 2)"},"structure":{"smallGrid":false}},"StructureCompositeFloorGrating3":{"prefab":{"prefabName":"StructureCompositeFloorGrating3","prefabHash":-1113471627,"desc":"","name":"Composite Floor Grating (Type 3)"},"structure":{"smallGrid":false}},"StructureCompositeFloorGrating4":{"prefab":{"prefabName":"StructureCompositeFloorGrating4","prefabHash":600133846,"desc":"","name":"Composite Floor Grating (Type 4)"},"structure":{"smallGrid":false}},"StructureCompositeFloorGratingOpen":{"prefab":{"prefabName":"StructureCompositeFloorGratingOpen","prefabHash":2109695912,"desc":"","name":"Composite Floor Grating Open"},"structure":{"smallGrid":false}},"StructureCompositeFloorGratingOpenRotated":{"prefab":{"prefabName":"StructureCompositeFloorGratingOpenRotated","prefabHash":882307910,"desc":"","name":"Composite Floor Grating Open Rotated"},"structure":{"smallGrid":false}},"StructureCompositeWall":{"prefab":{"prefabName":"StructureCompositeWall","prefabHash":1237302061,"desc":"Air-tight and resistant to extreme temperatures, composite walls favor form over function, coming in a range of slightly different, functionally identical varieties.","name":"Composite Wall (Type 1)"},"structure":{"smallGrid":false}},"StructureCompositeWall02":{"prefab":{"prefabName":"StructureCompositeWall02","prefabHash":718343384,"desc":"","name":"Composite Wall (Type 2)"},"structure":{"smallGrid":false}},"StructureCompositeWall03":{"prefab":{"prefabName":"StructureCompositeWall03","prefabHash":1574321230,"desc":"","name":"Composite Wall (Type 3)"},"structure":{"smallGrid":false}},"StructureCompositeWall04":{"prefab":{"prefabName":"StructureCompositeWall04","prefabHash":-1011701267,"desc":"","name":"Composite Wall (Type 4)"},"structure":{"smallGrid":false}},"StructureCompositeWindow":{"prefab":{"prefabName":"StructureCompositeWindow","prefabHash":-2060571986,"desc":"Air-tight and resistant to extreme temperatures, composite walls come in several charming, near identical varieties - reflecting their designer's focus on form over function.","name":"Composite Window"},"structure":{"smallGrid":false}},"StructureCompositeWindowIron":{"prefab":{"prefabName":"StructureCompositeWindowIron","prefabHash":-688284639,"desc":"","name":"Iron Window"},"structure":{"smallGrid":false}},"StructureComputer":{"prefab":{"prefabName":"StructureComputer","prefabHash":-626563514,"desc":"In some ways a relic, the 'Chonk R1' was designed by severely conflicted Norsec technicians, who needed a unit that could operate with a wide range of motherboards, while also enduring the worst a new Cadet could throw at it.\nThe result is a machine described by some as 'the only PC likely to survive our collision with a black hole', while other, less appreciative users regard it as sharing most of its technological DNA with a cheese grater.\nCompatible motherboards:\n- Logic Motherboard\n- Manufacturing Motherboard\n- Sorter Motherboard\n- Communications Motherboard\n- IC Editor Motherboard","name":"Computer"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{},"1":{},"2":{}},"logicTypes":{"Error":"Read","Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Data Disk","typ":"DataDisk"},{"name":"Data Disk","typ":"DataDisk"},{"name":"Motherboard","typ":"Motherboard"}],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureCondensationChamber":{"prefab":{"prefabName":"StructureCondensationChamber","prefabHash":1420719315,"desc":"A device for safely condensing gasses into liquids. Liquids and Gasses will both exist safely inside the device. The Chamber will pressurise using its in-built pressure regulator to the target set by the setting wheel.\n The secondary gas input on the left is a heat-exchanger input and allows for heat exchange between the secondary input pipe and the internal atmosphere of the Condensation Chamber.\n Paired with Evaporation Chamber Stationeers can exploit the phase change properties of gases to build a DIY air conditioner.","name":"Condensation Chamber"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Combustion":"Read","Error":"Read","Lock":"ReadWrite","Maximum":"Read","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","Pressure":"Read","Ratio":"Read","RatioCarbonDioxide":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioVolatiles":"Read","RatioWater":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite","Temperature":"Read","TotalMoles":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Pipe","role":"Input2"},{"typ":"Pipe","role":"Input"},{"typ":"PipeLiquid","role":"Output"},{"typ":"Data","role":"None"},{"typ":"Power","role":"Input"}],"hasActivateState":false,"hasAtmosphere":true,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureCondensationValve":{"prefab":{"prefabName":"StructureCondensationValve","prefabHash":-965741795,"desc":"Allows for the removal of any liquids from a gas pipe into a liquid pipe. Only allows liquids to pass in one direction.","name":"Condensation Valve"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Maximum":"Read","NameHash":"Read","On":"ReadWrite","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PipeLiquid","role":"Output"},{"typ":"Pipe","role":"Input"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureConsole":{"prefab":{"prefabName":"StructureConsole","prefabHash":235638270,"desc":"This Norsec-designed control box manages devices such as the Active Vent, Passive Vent, Gas Sensor and Composite Door, depending on which circuitboard is inserted into the unit. It has a shared data/power port.\nA completed console displays all devices connected to the current power network. Any devices not related to the installed circuitboard will be greyed-out and inoperable. Consoles are locked once a Data Disk is removed.","name":"Console"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{},"1":{}},"logicTypes":{"Error":"Read","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Circuit Board","typ":"Circuitboard"},{"name":"Data Disk","typ":"DataDisk"}],"device":{"connectionList":[{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureConsoleDual":{"prefab":{"prefabName":"StructureConsoleDual","prefabHash":-722284333,"desc":"This Norsec-designed control box manages devices such as the Active Vent, Gas Sensor, Composite Door and others, depending on which circuitboard is inserted into the unit. It has separate data and power ports.\nA completed console displays all devices connected to the current power network. Any devices not related to the installed circuitboard will be greyed-out and inoperable. Consoles are locked once a Data Disk is removed.","name":"Console Dual"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{},"1":{}},"logicTypes":{"Error":"Read","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Circuit Board","typ":"Circuitboard"},{"name":"Data Disk","typ":"DataDisk"}],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureConsoleLED1x2":{"prefab":{"prefabName":"StructureConsoleLED1x2","prefabHash":-53151617,"desc":"0.Default\n1.Percent\n2.Power","name":"LED Display (Medium)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Color":"ReadWrite","Error":"Read","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"modes":{"0":"Default","1":"Percent","2":"Power"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":true,"hasLockState":false,"hasModeState":true,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureConsoleLED1x3":{"prefab":{"prefabName":"StructureConsoleLED1x3","prefabHash":-1949054743,"desc":"0.Default\n1.Percent\n2.Power","name":"LED Display (Large)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Color":"ReadWrite","Error":"Read","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"modes":{"0":"Default","1":"Percent","2":"Power"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":true,"hasLockState":false,"hasModeState":true,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureConsoleLED5":{"prefab":{"prefabName":"StructureConsoleLED5","prefabHash":-815193061,"desc":"0.Default\n1.Percent\n2.Power","name":"LED Display (Small)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Color":"ReadWrite","Error":"Read","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"modes":{"0":"Default","1":"Percent","2":"Power"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":true,"hasLockState":false,"hasModeState":true,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureConsoleMonitor":{"prefab":{"prefabName":"StructureConsoleMonitor","prefabHash":801677497,"desc":"This Norsec-designed control box manages devices such as the Active Vent, Passive Vent, Gas Sensor, Security Camera and Composite Door, depending on which circuitboard is inserted into the unit. It has a shared data/power port, and a charming sloped interface.\nA completed console displays all devices connected to the current power network. Any devices not related to the installed circuitboard will be greyed-out and inoperable. Consoles are locked once a Data Disk is removed.","name":"Console Monitor"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{},"1":{}},"logicTypes":{"Error":"Read","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Circuit Board","typ":"Circuitboard"},{"name":"Data Disk","typ":"DataDisk"}],"device":{"connectionList":[{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureControlChair":{"prefab":{"prefabName":"StructureControlChair","prefabHash":-1961153710,"desc":"Once, these chairs were the heart of space-going behemoths. Now, they're items of nostalgia built only by a handful of Stationeers with a sense of history. In other words, kitsch.","name":"Control Chair"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"Combustion":"Read","Error":"Read","Maximum":"Read","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","PositionX":"Read","PositionY":"Read","PositionZ":"Read","Power":"Read","PrefabHash":"Read","Pressure":"Read","Ratio":"Read","RatioCarbonDioxide":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioVolatiles":"Read","RatioWater":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite","Temperature":"Read","TotalMoles":"Read","VelocityMagnitude":"Read","VelocityRelativeX":"Read","VelocityRelativeY":"Read","VelocityRelativeZ":"Read"},"modes":{"0":"Mode0","1":"Mode1"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Entity","typ":"Entity"}],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":true,"hasColorState":false,"hasLockState":false,"hasModeState":true,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureCornerLocker":{"prefab":{"prefabName":"StructureCornerLocker","prefabHash":-1968255729,"desc":"","name":"Corner Locker"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"1":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"2":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"3":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"4":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"5":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"Lock":"ReadWrite","NameHash":"Read","Open":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"}],"device":{"connectionList":[],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":false,"hasOpenState":true,"hasReagents":false}},"StructureCrateMount":{"prefab":{"prefabName":"StructureCrateMount","prefabHash":-733500083,"desc":"","name":"Container Mount"},"structure":{"smallGrid":true},"slots":[{"name":"Container Slot","typ":"None"}]},"StructureCryoTube":{"prefab":{"prefabName":"StructureCryoTube","prefabHash":1938254586,"desc":"The exact operation of the Longsleep cryotube remains a commercial secret, with Norsec merely licensing the design. Able to regenerate organ damage when supplied with power and an atmosphere, the Longsleep is a minor miracle of modern medical technology.","name":"CryoTube"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"Activate":"ReadWrite","EntityState":"Read","Error":"Read","Lock":"ReadWrite","Maximum":"Read","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","Pressure":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite","Temperature":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Bed","typ":"Entity"}],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Pipe","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureCryoTubeHorizontal":{"prefab":{"prefabName":"StructureCryoTubeHorizontal","prefabHash":1443059329,"desc":"The horizontal variant of the cryo tube. Will heal players and organs as well as revive dead players when provided with an atmosphere of Nitrogen below -150C.","name":"Cryo Tube Horizontal"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{}},"logicTypes":{"Activate":"ReadWrite","EntityState":"Read","Error":"Read","Lock":"ReadWrite","Maximum":"Read","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","Pressure":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite","Temperature":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Player","typ":"Entity"}],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Pipe","role":"Input"},{"typ":"Power","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureCryoTubeVertical":{"prefab":{"prefabName":"StructureCryoTubeVertical","prefabHash":-1381321828,"desc":"The vertical variant of the cryo tube. Will heal players and organs as well as revive dead players when provided with an atmosphere of Nitrogen below -150C.","name":"Cryo Tube Vertical"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{}},"logicTypes":{"Activate":"ReadWrite","EntityState":"Read","Error":"Read","Lock":"ReadWrite","Maximum":"Read","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","Pressure":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite","Temperature":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Player","typ":"Entity"}],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Pipe","role":"Input"},{"typ":"Power","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureDaylightSensor":{"prefab":{"prefabName":"StructureDaylightSensor","prefabHash":1076425094,"desc":"Daylight sensors provide data on whether the current region of your base is in sunlight, and report the exact solar angle. Note that the orientation of the sensor alters the reported solar angle, while Logic systems can be used to offset it.","name":"Daylight Sensor"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Activate":"ReadWrite","Horizontal":"Read","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read","SolarAngle":"Read","SolarIrradiance":"Read","Vertical":"Read"},"modes":{"0":"Default","1":"Horizontal","2":"Vertical"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PowerAndData","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":true,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureDeepMiner":{"prefab":{"prefabName":"StructureDeepMiner","prefabHash":265720906,"desc":"Drills through terrain until it hits bedrock. Once inside bedrock Dirty Ore is produced roughly every 90s","name":"Deep Miner"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{}},"logicTypes":{"ClearMemory":"Write","Error":"Read","ExportCount":"Read","ImportCount":"Read","Maximum":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Export","typ":"None"}],"device":{"connectionList":[{"typ":"Chute","role":"Output"},{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureDigitalValve":{"prefab":{"prefabName":"StructureDigitalValve","prefabHash":-1280984102,"desc":"The digital valve allows Stationeers to create logic-controlled valves and pipe networks.","name":"Digital Valve"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Error":"Read","Lock":"ReadWrite","Maximum":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Pipe","role":"Output"},{"typ":"Pipe","role":"Input"},{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureDiode":{"prefab":{"prefabName":"StructureDiode","prefabHash":1944485013,"desc":"","name":"LED"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Color":"ReadWrite","Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":true,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureDiodeSlide":{"prefab":{"prefabName":"StructureDiodeSlide","prefabHash":576516101,"desc":"","name":"Diode Slide"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureDockPortSide":{"prefab":{"prefabName":"StructureDockPortSide","prefabHash":-137465079,"desc":"","name":"Dock (Port Side)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Idle":"Read","Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Power","role":"None"},{"typ":"Data","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureDrinkingFountain":{"prefab":{"prefabName":"StructureDrinkingFountain","prefabHash":1968371847,"desc":"","name":""},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Error":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PipeLiquid","role":"Input"},{"typ":"PowerAndData","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureElectrolyzer":{"prefab":{"prefabName":"StructureElectrolyzer","prefabHash":-1668992663,"desc":"The Norsec-designed Electrolyzer splits Water into hydrogen and Oxygen. Employing unknown proprietary technology, the device uses water's latent heat as the energy to drive the electrosis process. If there is a downside to this near-miraculous fission, it's that the device is limited by the quantity of power available, which is used to maintain the temperature output. In other words, the machine works best with hot gas.","name":"Electrolyzer"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{}},"logicTypes":{"Activate":"ReadWrite","Combustion":"Read","CombustionInput":"Read","CombustionOutput":"Read","Error":"Read","Lock":"ReadWrite","Maximum":"Read","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","Pressure":"Read","PressureInput":"Read","PressureOutput":"Read","Ratio":"Read","RatioCarbonDioxide":"Read","RatioCarbonDioxideInput":"Read","RatioCarbonDioxideOutput":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidCarbonDioxideInput":"Read","RatioLiquidCarbonDioxideOutput":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrogenInput":"Read","RatioLiquidNitrogenOutput":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidNitrousOxideInput":"Read","RatioLiquidNitrousOxideOutput":"Read","RatioLiquidOxygen":"Read","RatioLiquidOxygenInput":"Read","RatioLiquidOxygenOutput":"Read","RatioLiquidPollutant":"Read","RatioLiquidPollutantInput":"Read","RatioLiquidPollutantOutput":"Read","RatioLiquidVolatiles":"Read","RatioLiquidVolatilesInput":"Read","RatioLiquidVolatilesOutput":"Read","RatioNitrogen":"Read","RatioNitrogenInput":"Read","RatioNitrogenOutput":"Read","RatioNitrousOxide":"Read","RatioNitrousOxideInput":"Read","RatioNitrousOxideOutput":"Read","RatioOxygen":"Read","RatioOxygenInput":"Read","RatioOxygenOutput":"Read","RatioPollutant":"Read","RatioPollutantInput":"Read","RatioPollutantOutput":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioSteamInput":"Read","RatioSteamOutput":"Read","RatioVolatiles":"Read","RatioVolatilesInput":"Read","RatioVolatilesOutput":"Read","RatioWater":"Read","RatioWaterInput":"Read","RatioWaterOutput":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite","Temperature":"Read","TemperatureInput":"Read","TemperatureOutput":"Read","TotalMoles":"Read","TotalMolesInput":"Read","TotalMolesOutput":"Read"},"modes":{"0":"Idle","1":"Active"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":true},"slots":[{"name":"Programmable Chip","typ":"ProgrammableChip"}],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"PipeLiquid","role":"Input"},{"typ":"Pipe","role":"Output"},{"typ":"Power","role":"None"}],"devicePinsLength":2,"hasActivateState":true,"hasAtmosphere":true,"hasColorState":false,"hasLockState":true,"hasModeState":true,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureElectronicsPrinter":{"prefab":{"prefabName":"StructureElectronicsPrinter","prefabHash":1307165496,"desc":"The electronic printer will create any electronic part you need. From circuit boards and electronic devices to solar panels. The choice is yours. Upgrade the device using a Electronic Printer Mod for additional recipes and faster processing speeds.","name":"Electronics Printer"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{},"1":{}},"logicTypes":{"Activate":"ReadWrite","ClearMemory":"Write","CompletionRatio":"Read","Error":"Read","ExportCount":"Read","ImportCount":"Read","Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","Reagents":"Read","RecipeHash":"ReadWrite","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Import","typ":"Ingot"},{"name":"Export","typ":"None"}],"device":{"connectionList":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":true,"hasReagents":true},"memory":{"instructions":{"DeviceSetLock":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |","typ":"PrinterInstruction","value":6},"EjectAllReagents":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |","typ":"PrinterInstruction","value":8},"EjectReagent":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |","typ":"PrinterInstruction","value":7},"ExecuteRecipe":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |","typ":"PrinterInstruction","value":2},"JumpIfNextInvalid":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":4},"JumpToAddress":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":5},"MissingRecipeReagent":{"description":"| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |","typ":"PrinterInstruction","value":9},"StackPointer":{"description":"| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":1},"WaitUntilNextValid":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |","typ":"PrinterInstruction","value":3}},"memoryAccess":"ReadWrite","memorySize":64}},"StructureElevatorLevelFront":{"prefab":{"prefabName":"StructureElevatorLevelFront","prefabHash":-827912235,"desc":"","name":"Elevator Level (Cabled)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Activate":"ReadWrite","ElevatorLevel":"ReadWrite","ElevatorSpeed":"ReadWrite","Error":"Read","Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Elevator","role":"None"},{"typ":"Elevator","role":"None"},{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureElevatorLevelIndustrial":{"prefab":{"prefabName":"StructureElevatorLevelIndustrial","prefabHash":2060648791,"desc":"","name":"Elevator Level"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Activate":"ReadWrite","ElevatorLevel":"ReadWrite","ElevatorSpeed":"ReadWrite","Error":"Read","Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Elevator","role":"None"},{"typ":"Elevator","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureElevatorShaft":{"prefab":{"prefabName":"StructureElevatorShaft","prefabHash":826144419,"desc":"","name":"Elevator Shaft (Cabled)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"ElevatorLevel":"ReadWrite","ElevatorSpeed":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Elevator","role":"None"},{"typ":"Elevator","role":"None"},{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureElevatorShaftIndustrial":{"prefab":{"prefabName":"StructureElevatorShaftIndustrial","prefabHash":1998354978,"desc":"","name":"Elevator Shaft"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"ElevatorLevel":"ReadWrite","ElevatorSpeed":"ReadWrite","NameHash":"Read","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Elevator","role":"None"},{"typ":"Elevator","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureEmergencyButton":{"prefab":{"prefabName":"StructureEmergencyButton","prefabHash":1668452680,"desc":"Description coming.","name":"Important Button"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Activate":"ReadWrite","Error":"Read","Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureEngineMountTypeA1":{"prefab":{"prefabName":"StructureEngineMountTypeA1","prefabHash":2035781224,"desc":"","name":"Engine Mount (Type A1)"},"structure":{"smallGrid":false}},"StructureEvaporationChamber":{"prefab":{"prefabName":"StructureEvaporationChamber","prefabHash":-1429782576,"desc":"A device for safely evaporating liquids into gasses. Liquids and Gasses will both exist safely inside the device. Lowering the pressure target of the in-built back pressure regulator using the setting wheel will change the boiling temperature of liquids inside.\n The secondary gas input on the left is a heat-exchanger input and allows for heat exchange between the secondary input pipe and the internal atmosphere of the Evaporation Chamber. \n Paired with Condensation Chamber Stationeers can exploit the phase change properties of gases to build a DIY air conditioner.","name":"Evaporation Chamber"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Combustion":"Read","Error":"Read","Lock":"ReadWrite","Maximum":"Read","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","Pressure":"Read","Ratio":"Read","RatioCarbonDioxide":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioVolatiles":"Read","RatioWater":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite","Temperature":"Read","TotalMoles":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Pipe","role":"Input2"},{"typ":"Pipe","role":"Output"},{"typ":"PipeLiquid","role":"Input"},{"typ":"Data","role":"None"},{"typ":"Power","role":"Input"}],"hasActivateState":false,"hasAtmosphere":true,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureExpansionValve":{"prefab":{"prefabName":"StructureExpansionValve","prefabHash":195298587,"desc":"Allows for moving liquids from a liquid pipe into a gas pipe. Only allows liquids to pass in one direction. Typically this is done to allow the liquid to evaporate into a gas as part of an airconditioning loop.","name":"Expansion Valve"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Maximum":"Read","NameHash":"Read","On":"ReadWrite","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Pipe","role":"Output"},{"typ":"PipeLiquid","role":"Input"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureFairingTypeA1":{"prefab":{"prefabName":"StructureFairingTypeA1","prefabHash":1622567418,"desc":"","name":"Fairing (Type A1)"},"structure":{"smallGrid":false}},"StructureFairingTypeA2":{"prefab":{"prefabName":"StructureFairingTypeA2","prefabHash":-104908736,"desc":"","name":"Fairing (Type A2)"},"structure":{"smallGrid":false}},"StructureFairingTypeA3":{"prefab":{"prefabName":"StructureFairingTypeA3","prefabHash":-1900541738,"desc":"","name":"Fairing (Type A3)"},"structure":{"smallGrid":false}},"StructureFiltration":{"prefab":{"prefabName":"StructureFiltration","prefabHash":-348054045,"desc":"The Filtration Unit is based on a long-standing ExMin system, itself based on older designs of uncertain provenance. It is available in the Kit (Atmospherics).\nThe device has nonetheless proven indispensable for Stationeer atmospheric systems, as it can filter two gases simultaneously from a single pipe network using a dual filter array. The unit has an input, and a filter output as well as an unfiltered outlet for any residual gases.\n","name":"Filtration"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{},"1":{},"2":{}},"logicTypes":{"CombustionInput":"Read","CombustionOutput":"Read","CombustionOutput2":"Read","Error":"Read","Lock":"ReadWrite","Maximum":"Read","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","PressureInput":"Read","PressureOutput":"Read","PressureOutput2":"Read","Ratio":"Read","RatioCarbonDioxideInput":"Read","RatioCarbonDioxideOutput":"Read","RatioCarbonDioxideOutput2":"Read","RatioLiquidCarbonDioxideInput":"Read","RatioLiquidCarbonDioxideOutput":"Read","RatioLiquidCarbonDioxideOutput2":"Read","RatioLiquidNitrogenInput":"Read","RatioLiquidNitrogenOutput":"Read","RatioLiquidNitrogenOutput2":"Read","RatioLiquidNitrousOxideInput":"Read","RatioLiquidNitrousOxideOutput":"Read","RatioLiquidNitrousOxideOutput2":"Read","RatioLiquidOxygenInput":"Read","RatioLiquidOxygenOutput":"Read","RatioLiquidOxygenOutput2":"Read","RatioLiquidPollutantInput":"Read","RatioLiquidPollutantOutput":"Read","RatioLiquidPollutantOutput2":"Read","RatioLiquidVolatilesInput":"Read","RatioLiquidVolatilesOutput":"Read","RatioLiquidVolatilesOutput2":"Read","RatioNitrogenInput":"Read","RatioNitrogenOutput":"Read","RatioNitrogenOutput2":"Read","RatioNitrousOxideInput":"Read","RatioNitrousOxideOutput":"Read","RatioNitrousOxideOutput2":"Read","RatioOxygenInput":"Read","RatioOxygenOutput":"Read","RatioOxygenOutput2":"Read","RatioPollutantInput":"Read","RatioPollutantOutput":"Read","RatioPollutantOutput2":"Read","RatioSteamInput":"Read","RatioSteamOutput":"Read","RatioSteamOutput2":"Read","RatioVolatilesInput":"Read","RatioVolatilesOutput":"Read","RatioVolatilesOutput2":"Read","RatioWaterInput":"Read","RatioWaterOutput":"Read","RatioWaterOutput2":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite","TemperatureInput":"Read","TemperatureOutput":"Read","TemperatureOutput2":"Read","TotalMolesInput":"Read","TotalMolesOutput":"Read","TotalMolesOutput2":"Read"},"modes":{"0":"Idle","1":"Active"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":true},"slots":[{"name":"Gas Filter","typ":"GasFilter"},{"name":"Gas Filter","typ":"GasFilter"},{"name":"Programmable Chip","typ":"ProgrammableChip"}],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Pipe","role":"Input"},{"typ":"Pipe","role":"Output"},{"typ":"Pipe","role":"Waste"},{"typ":"Power","role":"None"}],"devicePinsLength":2,"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":true,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureFlagSmall":{"prefab":{"prefabName":"StructureFlagSmall","prefabHash":-1529819532,"desc":"","name":"Small Flag"},"structure":{"smallGrid":true}},"StructureFlashingLight":{"prefab":{"prefabName":"StructureFlashingLight","prefabHash":-1535893860,"desc":"Few objects or ideas are as clearly and transparently named as the Flashing Light, although fans of scrupulous accuracy have been known to refer to it by its full, official title: 'Default Yellow Flashing Light'.","name":"Flashing Light"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureFlatBench":{"prefab":{"prefabName":"StructureFlatBench","prefabHash":839890807,"desc":"","name":"Bench (Flat)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"NameHash":"Read","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Seat","typ":"Entity"}],"device":{"connectionList":[],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureFloorDrain":{"prefab":{"prefabName":"StructureFloorDrain","prefabHash":1048813293,"desc":"A passive liquid floor inlet that quickly removes liquids in one direction from the world into the connected pipe network. It will equalise gasses with the world atmosphere also.","name":"Passive Liquid Inlet"},"structure":{"smallGrid":true}},"StructureFrame":{"prefab":{"prefabName":"StructureFrame","prefabHash":1432512808,"desc":"More durable than the Iron Frame, steel frames also have several variations for more complex constructions, such as the Steel Frame (Corner) and Steel Frame (Corner Cut). Like iron frames, they are placed then completed by welding Steel Sheets to the open framework.","name":"Steel Frame"},"structure":{"smallGrid":false}},"StructureFrameCorner":{"prefab":{"prefabName":"StructureFrameCorner","prefabHash":-2112390778,"desc":"More durable than the Iron Frame, steel frames also offer several variations for more complex lattice constructions. \nWith a little patience and maneuvering, the corner frame's Gothic-inspired silhouette allows the creation of ogival arches and even more ambitious architecture, although they are not airtight and cannot be built on.","name":"Steel Frame (Corner)"},"structure":{"smallGrid":false}},"StructureFrameCornerCut":{"prefab":{"prefabName":"StructureFrameCornerCut","prefabHash":271315669,"desc":"0.Mode0\n1.Mode1","name":"Steel Frame (Corner Cut)"},"structure":{"smallGrid":false}},"StructureFrameIron":{"prefab":{"prefabName":"StructureFrameIron","prefabHash":-1240951678,"desc":"","name":"Iron Frame"},"structure":{"smallGrid":false}},"StructureFrameSide":{"prefab":{"prefabName":"StructureFrameSide","prefabHash":-302420053,"desc":"More durable than the Iron Frame, steel frames also provide variations for more ornate constructions.","name":"Steel Frame (Side)"},"structure":{"smallGrid":false}},"StructureFridgeBig":{"prefab":{"prefabName":"StructureFridgeBig","prefabHash":958476921,"desc":"The Xigo Koolaid fridge is a self-cooling storage device with 15 slots that preserves food when powered and turned on. While many users have complained about the placement of the power switch, its place in the pantheon of off-world whiteware is unquestioned.\n \nWith its own permanent internal atmosphere, the Koolaid fridge slows the decay of food by maintaining an optimal internal temperature. Its power usage varies on the external temperature against which it must balance its internal temperature. As such, it must shed heat to operate, so the Koolaid fridge DOES NOT work in a vacuum.\n \nAlso, don't leave the door open, as it will equalize with the current world temperature. And maybe start to beep.\n\nFor more information about food preservation, visit the food decay section of the Stationpedia.","name":"Fridge (Large)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"1":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"2":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"3":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"4":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"5":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"6":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"7":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"8":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"9":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"10":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"11":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"12":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"13":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"14":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"Combustion":"Read","Error":"Read","Maximum":"Read","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","Pressure":"Read","Ratio":"Read","RatioCarbonDioxide":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioVolatiles":"Read","RatioWater":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite","Temperature":"Read","TotalMoles":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"}],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":true,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureFridgeSmall":{"prefab":{"prefabName":"StructureFridgeSmall","prefabHash":751887598,"desc":"Essentially a heavily insulated box that allows users to pipe in any desired atmosphere, the Recurso Minibar fridge was a simple solution to the problem of food decay. It stores a small number of items, at any temperature you can muster.\n \n For more information about food preservation, visit the food decay section of the Stationpedia.","name":"Fridge Small"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"1":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"Combustion":"Read","Maximum":"Read","NameHash":"Read","Open":"ReadWrite","PrefabHash":"Read","Pressure":"Read","Ratio":"Read","RatioCarbonDioxide":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioVolatiles":"Read","RatioWater":"Read","ReferenceId":"Read","Setting":"ReadWrite","Temperature":"Read","TotalMoles":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"","typ":"None"},{"name":"","typ":"None"}],"device":{"connectionList":[{"typ":"Pipe","role":"Input"}],"hasActivateState":false,"hasAtmosphere":true,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":true,"hasReagents":false}},"StructureFurnace":{"prefab":{"prefabName":"StructureFurnace","prefabHash":1947944864,"desc":"The Zhurong furnace employs a high-temperature gas mixture of Oxygen and Volatiles to smelt ingots and a range of alloys as raw materials for fabricators.\nA basic gas mixture can be achieved by adding Ice (Oxite) and Ice (Volatiles) in a 1:2 ratio directly to the furnace, but more complex alloys will require careful management of a dedicated gas mixing network. Exact ingredient ratios must be observed. Likewise, smelting ores at insufficient temperatures will produce reagents, which must be recycled.\nIf liquids are present in the furnace, they will gather there until the furnace is connected to a liquid pipe network.","name":"Furnace"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{},"1":{}},"logicTypes":{"Activate":"ReadWrite","ClearMemory":"Write","Combustion":"Read","ExportCount":"Read","ImportCount":"Read","Lock":"ReadWrite","Maximum":"Read","Mode":"ReadWrite","NameHash":"Read","Open":"ReadWrite","PrefabHash":"Read","Pressure":"Read","Ratio":"Read","RatioCarbonDioxide":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioVolatiles":"Read","RatioWater":"Read","Reagents":"Read","RecipeHash":"Read","ReferenceId":"Read","Setting":"ReadWrite","Temperature":"Read","TotalMoles":"Read"},"modes":{"0":"Mode0","1":"Mode1"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Import","typ":"None"},{"name":"Export","typ":"None"}],"device":{"connectionList":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"Pipe","role":"Input"},{"typ":"Pipe","role":"Output"},{"typ":"PipeLiquid","role":"Output2"},{"typ":"Data","role":"None"}],"hasActivateState":true,"hasAtmosphere":true,"hasColorState":false,"hasLockState":true,"hasModeState":true,"hasOnOffState":false,"hasOpenState":true,"hasReagents":true}},"StructureFuselageTypeA1":{"prefab":{"prefabName":"StructureFuselageTypeA1","prefabHash":1033024712,"desc":"","name":"Fuselage (Type A1)"},"structure":{"smallGrid":false}},"StructureFuselageTypeA2":{"prefab":{"prefabName":"StructureFuselageTypeA2","prefabHash":-1533287054,"desc":"","name":"Fuselage (Type A2)"},"structure":{"smallGrid":false}},"StructureFuselageTypeA4":{"prefab":{"prefabName":"StructureFuselageTypeA4","prefabHash":1308115015,"desc":"","name":"Fuselage (Type A4)"},"structure":{"smallGrid":false}},"StructureFuselageTypeC5":{"prefab":{"prefabName":"StructureFuselageTypeC5","prefabHash":147395155,"desc":"","name":"Fuselage (Type C5)"},"structure":{"smallGrid":false}},"StructureGasGenerator":{"prefab":{"prefabName":"StructureGasGenerator","prefabHash":1165997963,"desc":"","name":"Gas Fuel Generator"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Combustion":"Read","Error":"Read","Maximum":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PowerGeneration":"Read","PrefabHash":"Read","Pressure":"Read","Ratio":"Read","RatioCarbonDioxide":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioVolatiles":"Read","RatioWater":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite","Temperature":"Read","TotalMoles":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Pipe","role":"Input"},{"typ":"Pipe","role":"Output"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":true,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureGasMixer":{"prefab":{"prefabName":"StructureGasMixer","prefabHash":2104106366,"desc":"Indispensable for producing precise atmospheric ratios, this gas mixer blends two gases in proportions ranging anywhere from 0-100%.","name":"Gas Mixer"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Error":"Read","Lock":"ReadWrite","Maximum":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Pipe","role":"Output"},{"typ":"Pipe","role":"Input2"},{"typ":"Pipe","role":"Input"},{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureGasSensor":{"prefab":{"prefabName":"StructureGasSensor","prefabHash":-1252983604,"desc":"Gas sensors are designed to monitor and report basic atmospheric information, including temperature, pressure, and gas ratios. They also make wonderful wedding presents.","name":"Gas Sensor"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Combustion":"Read","NameHash":"Read","PrefabHash":"Read","Pressure":"Read","RatioCarbonDioxide":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioVolatiles":"Read","RatioWater":"Read","ReferenceId":"Read","Temperature":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureGasTankStorage":{"prefab":{"prefabName":"StructureGasTankStorage","prefabHash":1632165346,"desc":"When connected to a pipe network, the tank storage unit allows you to refill a Canister, as well as read various atmospheric data from the Gas Canister.","name":"Gas Tank Storage"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Open":"ReadWrite","PrefabHash":"Read","Pressure":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read","Temperature":"Read","Volume":"Read"}},"logicTypes":{"NameHash":"Read","PrefabHash":"Read","Pressure":"Read","Quantity":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","ReferenceId":"Read","Temperature":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Gas Canister","typ":"GasCanister"}],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Pipe","role":"Input"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureGasUmbilicalFemale":{"prefab":{"prefabName":"StructureGasUmbilicalFemale","prefabHash":-1680477930,"desc":"","name":"Umbilical Socket (Gas)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Maximum":"Read","NameHash":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Pipe","role":"Input"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureGasUmbilicalFemaleSide":{"prefab":{"prefabName":"StructureGasUmbilicalFemaleSide","prefabHash":-648683847,"desc":"","name":"Umbilical Socket Angle (Gas)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Maximum":"Read","NameHash":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Pipe","role":"Input"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureGasUmbilicalMale":{"prefab":{"prefabName":"StructureGasUmbilicalMale","prefabHash":-1814939203,"desc":"0.Left\n1.Center\n2.Right","name":"Umbilical (Gas)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Error":"Read","Lock":"ReadWrite","Maximum":"Read","Mode":"Read","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"modes":{"0":"Left","1":"Center","2":"Right"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Pipe","role":"Input"},{"typ":"PowerAndData","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":true,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureGlassDoor":{"prefab":{"prefabName":"StructureGlassDoor","prefabHash":-324331872,"desc":"0.Operate\n1.Logic","name":"Glass Door"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Idle":"Read","Lock":"ReadWrite","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"modes":{"0":"Operate","1":"Logic"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":true,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureGovernedGasEngine":{"prefab":{"prefabName":"StructureGovernedGasEngine","prefabHash":-214232602,"desc":"The most reliable of all the rocket engines, the Pumped Gas Engine runs on a 2:1 mix of Volatiles to Oxygen gas.","name":"Pumped Gas Engine"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Combustion":"Read","Error":"Read","NameHash":"Read","On":"ReadWrite","PassedMoles":"Read","Power":"Read","PrefabHash":"Read","Pressure":"Read","RatioCarbonDioxide":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioVolatiles":"Read","RatioWater":"Read","ReferenceId":"Read","RequiredPower":"Read","Temperature":"Read","Throttle":"ReadWrite","TotalMoles":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Pipe","role":"Input"},{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":true,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureGroundBasedTelescope":{"prefab":{"prefabName":"StructureGroundBasedTelescope","prefabHash":-619745681,"desc":"A telescope that can be oriented to observe Celestial Bodies. When within full alignment will show orbital information for that celestial object. Atmospheric conditions may disrupt the ability to observe some objects at some times of day. To collect Horizontal and Vertical values you can use a Rocket Celestial Tracker while it is in orbit, or a Daylight Sensor for primary body data.","name":"Telescope"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Activate":"ReadWrite","AlignmentError":"Read","CelestialHash":"Read","CelestialParentHash":"Read","DistanceAu":"Read","DistanceKm":"Read","Eccentricity":"Read","Error":"Read","Horizontal":"ReadWrite","HorizontalRatio":"ReadWrite","Inclination":"Read","Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","OrbitPeriod":"Read","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","SemiMajorAxis":"Read","TrueAnomaly":"Read","Vertical":"ReadWrite","VerticalRatio":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureGrowLight":{"prefab":{"prefabName":"StructureGrowLight","prefabHash":-1758710260,"desc":"Agrizero's leading hydroponic lighting system, the GrowUp UV light supplements sunshine in low light or sun-distant conditions. The unit adds growability over the space of a grid, so requires proximate placement to work. ","name":"Grow Light"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureHarvie":{"prefab":{"prefabName":"StructureHarvie","prefabHash":958056199,"desc":"Use above a Hydroponics Tray or Hydroponics Device to manage the planting and harvest of your crops. It contains a button that will allow you to activate it's modes, or connect it to a logic system to do this for you. The modes indicate current growth status of the plant below. Import is used for planting, and harvested plants are sent to export.","name":"Harvie"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"1":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"2":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"Activate":"ReadWrite","ClearMemory":"Write","Error":"Read","ExportCount":"Read","Harvest":"Write","ImportCount":"Read","Lock":"ReadWrite","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Plant":"Write","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"modes":{"0":"Idle","1":"Happy","2":"UnHappy","3":"Dead"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Import","typ":"Plant"},{"name":"Export","typ":"None"},{"name":"Hand","typ":"None"}],"device":{"connectionList":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"PowerAndData","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":true,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureHeatExchangeLiquidtoGas":{"prefab":{"prefabName":"StructureHeatExchangeLiquidtoGas","prefabHash":944685608,"desc":"The original specs for the N Series Flow-P heat exchanger were rumored to have been scrawled on the back of a burger receipt by a bored Sinotai designer riding up the Brazilian space elevator, but that hasn't stopped it becoming one of the most widely-copied heat exchanger designs in the Solar System.\nThe 'N Flow-P' has four connections, allowing you to pass separate liquid and gas networks into the unit, which then works to equalize temperature across the two separate networks.\nAs the N Flow-P is a passive system, it equalizes pressure across the entire of each individual network, unless connected to devices like a Volume Pump or a Liquid Back Volume Regulator.","name":"Heat Exchanger - Liquid + Gas"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Maximum":"Read","NameHash":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Pipe","role":"Input"},{"typ":"Pipe","role":"Output"},{"typ":"PipeLiquid","role":"Input"},{"typ":"PipeLiquid","role":"Output"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureHeatExchangerGastoGas":{"prefab":{"prefabName":"StructureHeatExchangerGastoGas","prefabHash":21266291,"desc":"The original specs for the N Series Flow-P heat exchanger were rumored to have been scrawled on the back of a burger receipt by a bored Sinotai designer riding up the Brazilian space elevator, but that hasn't stopped it becoming one of the most widely-copied heat exchanger designs in the Solar System.\nThe 'N Flow-P' has four connections, allowing you to pass two gas networks into the unit, which then works to equalize temperature across the two separate networks.\nAs the N Flow-P is a passive system, it equalizes pressure across the entire of each individual network, unless connected to gas management devices like a Volume Pump or a Back Pressure Regulator.","name":"Heat Exchanger - Gas"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Maximum":"Read","NameHash":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Pipe","role":"Input"},{"typ":"Pipe","role":"Input"},{"typ":"Pipe","role":"Output"},{"typ":"Pipe","role":"Output"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureHeatExchangerLiquidtoLiquid":{"prefab":{"prefabName":"StructureHeatExchangerLiquidtoLiquid","prefabHash":-613784254,"desc":"The original specs for the N Series Flow-P heat exchanger were rumored to have been scrawled on the back of a burger receipt by a bored Sinotai designer riding up the Brazilian space elevator, but that hasn't stopped it becoming one of the most widely-copied heat exchanger designs in the Solar System.\nThe 'N Flow-P' has four connections, allowing you to pass two liquid networks into the unit, which then works to equalize temperature across the two separate networks.\nAs the N Flow-P is a passive system, it equalizes pressure across the entire of each individual network, unless connected to liquid management devices like a Liquid Volume Pump or a Liquid Back Volume Regulator.\n","name":"Heat Exchanger - Liquid"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Maximum":"Read","NameHash":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PipeLiquid","role":"Input"},{"typ":"PipeLiquid","role":"Input"},{"typ":"PipeLiquid","role":"Output"},{"typ":"PipeLiquid","role":"Output"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureHorizontalAutoMiner":{"prefab":{"prefabName":"StructureHorizontalAutoMiner","prefabHash":1070427573,"desc":"The Recurso OGRE (Orthogonal Ground Rotating Excavator) is a base structure with attached mining vehicle, which will mine a horizontal shaft up to X meters long. When full, the mining vehicle will return to the base to empty itself, before returning to dig. If it encounters empty space, it will also return to base and await instruction. The unit will return if deactivated.\n \nThe OGRE can be connected to a chute system, and is controllable by a logic network. Note that the OGRE outputs more ore than a conventional Mining Drill over the same area, due to more efficient processing.\n\nMODES\nIdle - 0\nMining - 1\nReturning - 2\nDepostingOre - 3\nFinished - 4\n","name":"OGRE"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{},"1":{}},"logicTypes":{"Activate":"ReadWrite","ClearMemory":"Write","Error":"Read","ExportCount":"Read","ImportCount":"Read","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"modes":{"0":"Mode0","1":"Mode1"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Import","typ":"None"},{"name":"Export","typ":"None"}],"device":{"connectionList":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":true,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureHydraulicPipeBender":{"prefab":{"prefabName":"StructureHydraulicPipeBender","prefabHash":-1888248335,"desc":"A go-to tool for all your atmospheric and plumbing needs, the ExMin Atmoprinter will create everything from pipes, pumps and tanks, to vents and filters, ensuring your survival in any environment. Upgrade the Atmoprinter using a Pipe Bender Mod for additional recipes and faster processing speeds.","name":"Hydraulic Pipe Bender"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{},"1":{}},"logicTypes":{"Activate":"ReadWrite","ClearMemory":"Write","CompletionRatio":"Read","Error":"Read","ExportCount":"Read","ImportCount":"Read","Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","Reagents":"Read","RecipeHash":"ReadWrite","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Import","typ":"Ingot"},{"name":"Export","typ":"None"}],"device":{"connectionList":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":true,"hasReagents":true},"memory":{"instructions":{"DeviceSetLock":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |","typ":"PrinterInstruction","value":6},"EjectAllReagents":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |","typ":"PrinterInstruction","value":8},"EjectReagent":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |","typ":"PrinterInstruction","value":7},"ExecuteRecipe":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |","typ":"PrinterInstruction","value":2},"JumpIfNextInvalid":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":4},"JumpToAddress":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":5},"MissingRecipeReagent":{"description":"| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |","typ":"PrinterInstruction","value":9},"StackPointer":{"description":"| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":1},"WaitUntilNextValid":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |","typ":"PrinterInstruction","value":3}},"memoryAccess":"ReadWrite","memorySize":64}},"StructureHydroponicsStation":{"prefab":{"prefabName":"StructureHydroponicsStation","prefabHash":1441767298,"desc":"","name":"Hydroponics Station"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","Efficiency":"Read","Growth":"Read","Health":"Read","Mature":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"1":{"Class":"Read","Damage":"Read","Efficiency":"Read","Growth":"Read","Health":"Read","Mature":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"2":{"Class":"Read","Damage":"Read","Efficiency":"Read","Growth":"Read","Health":"Read","Mature":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"3":{"Class":"Read","Damage":"Read","Efficiency":"Read","Growth":"Read","Health":"Read","Mature":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"4":{"Class":"Read","Damage":"Read","Efficiency":"Read","Growth":"Read","Health":"Read","Mature":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"5":{"Class":"Read","Damage":"Read","Efficiency":"Read","Growth":"Read","Health":"Read","Mature":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"6":{"Class":"Read","Damage":"Read","Efficiency":"Read","Growth":"Read","Health":"Read","Mature":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"7":{"Class":"Read","Damage":"Read","Efficiency":"Read","Growth":"Read","Health":"Read","Mature":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"Combustion":"Read","Error":"Read","Maximum":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Pressure":"Read","Ratio":"Read","RatioCarbonDioxide":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioVolatiles":"Read","RatioWater":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite","Temperature":"Read","TotalMoles":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"}],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"},{"typ":"PipeLiquid","role":"Input"}],"hasActivateState":false,"hasAtmosphere":true,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureHydroponicsTray":{"prefab":{"prefabName":"StructureHydroponicsTray","prefabHash":1464854517,"desc":"The Agrizero hydroponics tray is the ideal vessel for growing a range of plantlife. It must be supplied with water using a pipe network, and sufficient light to generate photosynthesis. \nIt can be automated using the Harvie.","name":"Hydroponics Tray"},"structure":{"smallGrid":true},"slots":[{"name":"Plant","typ":"Plant"},{"name":"Fertiliser","typ":"Plant"}]},"StructureHydroponicsTrayData":{"prefab":{"prefabName":"StructureHydroponicsTrayData","prefabHash":-1841632400,"desc":"The Agrizero hydroponics device is the ideal vessel for growing a range of plantlife. It must be supplied with Water using a pipe network, and sufficient light to generate photosynthesis. \nIt can be automated using the Harvie. Note that unlike the Hydroponics Tray, these cannot be placed consecutively as they are considered devices rather than pure pipes. They do, however, allow data interrogation for logic systems.","name":"Hydroponics Device"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","Efficiency":"Read","Growth":"Read","Health":"Read","Mature":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","Seeding":"Read","SortingClass":"Read"},"1":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"Combustion":"Read","NameHash":"Read","PrefabHash":"Read","Pressure":"Read","RatioCarbonDioxide":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioVolatiles":"Read","RatioWater":"Read","ReferenceId":"Read","Temperature":"Read","TotalMoles":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Plant","typ":"Plant"},{"name":"Fertiliser","typ":"Plant"}],"device":{"connectionList":[{"typ":"PipeLiquid","role":"None"},{"typ":"PipeLiquid","role":"None"},{"typ":"Data","role":"None"}],"hasActivateState":false,"hasAtmosphere":true,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureIceCrusher":{"prefab":{"prefabName":"StructureIceCrusher","prefabHash":443849486,"desc":"The Recurso KoolAuger converts various ices into their respective gases and liquids.\nA remarkably smart and compact sublimation-melting unit, it produces gas or liquid depending on the ice being processed. The upper outlet is gas, the lower for liquid, and while you can attach any pipe you like to either outlet, it will only function if the correct network is attached. It will also only pass gas or liquid into a network if it is powered and turned on.\nIf the KoolAuger is full, it will not accept any further ice until the gas or liquid contents is drained. In this state, it will flash a yellow error state on the activation switch.","name":"Ice Crusher"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{}},"logicTypes":{"Activate":"ReadWrite","ClearMemory":"Write","Error":"Read","ImportCount":"Read","Lock":"ReadWrite","Maximum":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Import","typ":"Ore"}],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"},{"typ":"Chute","role":"Input"},{"typ":"Pipe","role":"Output"},{"typ":"PipeLiquid","role":"Output2"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureIgniter":{"prefab":{"prefabName":"StructureIgniter","prefabHash":1005491513,"desc":"It gets the party started. Especially if that party is an explosive gas mixture.","name":"Igniter"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"NameHash":"Read","On":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureInLineTankGas1x1":{"prefab":{"prefabName":"StructureInLineTankGas1x1","prefabHash":-1693382705,"desc":"A small expansion tank that increases the volume of a pipe network.","name":"In-Line Tank Small Gas"},"structure":{"smallGrid":true}},"StructureInLineTankGas1x2":{"prefab":{"prefabName":"StructureInLineTankGas1x2","prefabHash":35149429,"desc":"A small expansion tank that increases the volume of a pipe network.","name":"In-Line Tank Gas"},"structure":{"smallGrid":true}},"StructureInLineTankLiquid1x1":{"prefab":{"prefabName":"StructureInLineTankLiquid1x1","prefabHash":543645499,"desc":"A small expansion tank that increases the volume of a pipe network.","name":"In-Line Tank Small Liquid"},"structure":{"smallGrid":true}},"StructureInLineTankLiquid1x2":{"prefab":{"prefabName":"StructureInLineTankLiquid1x2","prefabHash":-1183969663,"desc":"A small expansion tank that increases the volume of a pipe network.","name":"In-Line Tank Liquid"},"structure":{"smallGrid":true}},"StructureInsulatedInLineTankGas1x1":{"prefab":{"prefabName":"StructureInsulatedInLineTankGas1x1","prefabHash":1818267386,"desc":"","name":"Insulated In-Line Tank Small Gas"},"structure":{"smallGrid":true}},"StructureInsulatedInLineTankGas1x2":{"prefab":{"prefabName":"StructureInsulatedInLineTankGas1x2","prefabHash":-177610944,"desc":"","name":"Insulated In-Line Tank Gas"},"structure":{"smallGrid":true}},"StructureInsulatedInLineTankLiquid1x1":{"prefab":{"prefabName":"StructureInsulatedInLineTankLiquid1x1","prefabHash":-813426145,"desc":"","name":"Insulated In-Line Tank Small Liquid"},"structure":{"smallGrid":true}},"StructureInsulatedInLineTankLiquid1x2":{"prefab":{"prefabName":"StructureInsulatedInLineTankLiquid1x2","prefabHash":1452100517,"desc":"","name":"Insulated In-Line Tank Liquid"},"structure":{"smallGrid":true}},"StructureInsulatedPipeCorner":{"prefab":{"prefabName":"StructureInsulatedPipeCorner","prefabHash":-1967711059,"desc":"Insulated pipes greatly reduce heat loss from gases stored in them.","name":"Insulated Pipe (Corner)"},"structure":{"smallGrid":true}},"StructureInsulatedPipeCrossJunction":{"prefab":{"prefabName":"StructureInsulatedPipeCrossJunction","prefabHash":-92778058,"desc":"Insulated pipes greatly reduce heat loss from gases stored in them.","name":"Insulated Pipe (Cross Junction)"},"structure":{"smallGrid":true}},"StructureInsulatedPipeCrossJunction3":{"prefab":{"prefabName":"StructureInsulatedPipeCrossJunction3","prefabHash":1328210035,"desc":"Insulated pipes greatly reduce heat loss from gases stored in them.","name":"Insulated Pipe (3-Way Junction)"},"structure":{"smallGrid":true}},"StructureInsulatedPipeCrossJunction4":{"prefab":{"prefabName":"StructureInsulatedPipeCrossJunction4","prefabHash":-783387184,"desc":"Insulated pipes greatly reduce heat loss from gases stored in them.","name":"Insulated Pipe (4-Way Junction)"},"structure":{"smallGrid":true}},"StructureInsulatedPipeCrossJunction5":{"prefab":{"prefabName":"StructureInsulatedPipeCrossJunction5","prefabHash":-1505147578,"desc":"Insulated pipes greatly reduce heat loss from gases stored in them.","name":"Insulated Pipe (5-Way Junction)"},"structure":{"smallGrid":true}},"StructureInsulatedPipeCrossJunction6":{"prefab":{"prefabName":"StructureInsulatedPipeCrossJunction6","prefabHash":1061164284,"desc":"Insulated pipes greatly reduce heat loss from gases stored in them.","name":"Insulated Pipe (6-Way Junction)"},"structure":{"smallGrid":true}},"StructureInsulatedPipeLiquidCorner":{"prefab":{"prefabName":"StructureInsulatedPipeLiquidCorner","prefabHash":1713710802,"desc":"Liquid piping with very low temperature loss or gain.","name":"Insulated Liquid Pipe (Corner)"},"structure":{"smallGrid":true}},"StructureInsulatedPipeLiquidCrossJunction":{"prefab":{"prefabName":"StructureInsulatedPipeLiquidCrossJunction","prefabHash":1926651727,"desc":"Liquid piping with very low temperature loss or gain.","name":"Insulated Liquid Pipe (3-Way Junction)"},"structure":{"smallGrid":true}},"StructureInsulatedPipeLiquidCrossJunction4":{"prefab":{"prefabName":"StructureInsulatedPipeLiquidCrossJunction4","prefabHash":363303270,"desc":"Liquid piping with very low temperature loss or gain.","name":"Insulated Liquid Pipe (4-Way Junction)"},"structure":{"smallGrid":true}},"StructureInsulatedPipeLiquidCrossJunction5":{"prefab":{"prefabName":"StructureInsulatedPipeLiquidCrossJunction5","prefabHash":1654694384,"desc":"Liquid piping with very low temperature loss or gain.","name":"Insulated Liquid Pipe (5-Way Junction)"},"structure":{"smallGrid":true}},"StructureInsulatedPipeLiquidCrossJunction6":{"prefab":{"prefabName":"StructureInsulatedPipeLiquidCrossJunction6","prefabHash":-72748982,"desc":"Liquid piping with very low temperature loss or gain.","name":"Insulated Liquid Pipe (6-Way Junction)"},"structure":{"smallGrid":true}},"StructureInsulatedPipeLiquidStraight":{"prefab":{"prefabName":"StructureInsulatedPipeLiquidStraight","prefabHash":295678685,"desc":"Liquid piping with very low temperature loss or gain.","name":"Insulated Liquid Pipe (Straight)"},"structure":{"smallGrid":true}},"StructureInsulatedPipeLiquidTJunction":{"prefab":{"prefabName":"StructureInsulatedPipeLiquidTJunction","prefabHash":-532384855,"desc":"Liquid piping with very low temperature loss or gain.","name":"Insulated Liquid Pipe (T Junction)"},"structure":{"smallGrid":true}},"StructureInsulatedPipeStraight":{"prefab":{"prefabName":"StructureInsulatedPipeStraight","prefabHash":2134172356,"desc":"Insulated pipes greatly reduce heat loss from gases stored in them.","name":"Insulated Pipe (Straight)"},"structure":{"smallGrid":true}},"StructureInsulatedPipeTJunction":{"prefab":{"prefabName":"StructureInsulatedPipeTJunction","prefabHash":-2076086215,"desc":"Insulated pipes greatly reduce heat loss from gases stored in them.","name":"Insulated Pipe (T Junction)"},"structure":{"smallGrid":true}},"StructureInsulatedTankConnector":{"prefab":{"prefabName":"StructureInsulatedTankConnector","prefabHash":-31273349,"desc":"","name":"Insulated Tank Connector"},"structure":{"smallGrid":true},"slots":[{"name":"","typ":"None"}]},"StructureInsulatedTankConnectorLiquid":{"prefab":{"prefabName":"StructureInsulatedTankConnectorLiquid","prefabHash":-1602030414,"desc":"","name":"Insulated Tank Connector Liquid"},"structure":{"smallGrid":true},"slots":[{"name":"Portable Slot","typ":"None"}]},"StructureInteriorDoorGlass":{"prefab":{"prefabName":"StructureInteriorDoorGlass","prefabHash":-2096421875,"desc":"0.Operate\n1.Logic","name":"Interior Door Glass"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Idle":"Read","Lock":"ReadWrite","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"modes":{"0":"Operate","1":"Logic"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":true,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureInteriorDoorPadded":{"prefab":{"prefabName":"StructureInteriorDoorPadded","prefabHash":847461335,"desc":"0.Operate\n1.Logic","name":"Interior Door Padded"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Idle":"Read","Lock":"ReadWrite","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"modes":{"0":"Operate","1":"Logic"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":true,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureInteriorDoorPaddedThin":{"prefab":{"prefabName":"StructureInteriorDoorPaddedThin","prefabHash":1981698201,"desc":"0.Operate\n1.Logic","name":"Interior Door Padded Thin"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Idle":"Read","Lock":"ReadWrite","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"modes":{"0":"Operate","1":"Logic"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":true,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureInteriorDoorTriangle":{"prefab":{"prefabName":"StructureInteriorDoorTriangle","prefabHash":-1182923101,"desc":"0.Operate\n1.Logic","name":"Interior Door Triangle"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Idle":"Read","Lock":"ReadWrite","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"modes":{"0":"Operate","1":"Logic"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":true,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureKlaxon":{"prefab":{"prefabName":"StructureKlaxon","prefabHash":-828056979,"desc":"Klaxons allow you to play over 50 announcements and sounds, depending on your Logic set-up. Set the mode to select the output.","name":"Klaxon Speaker"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","SoundAlert":"ReadWrite","Volume":"ReadWrite"},"modes":{"0":"None","1":"Alarm2","2":"Alarm3","3":"Alarm4","4":"Alarm5","5":"Alarm6","6":"Alarm7","7":"Music1","8":"Music2","9":"Music3","10":"Alarm8","11":"Alarm9","12":"Alarm10","13":"Alarm11","14":"Alarm12","15":"Danger","16":"Warning","17":"Alert","18":"StormIncoming","19":"IntruderAlert","20":"Depressurising","21":"Pressurising","22":"AirlockCycling","23":"PowerLow","24":"SystemFailure","25":"Welcome","26":"MalfunctionDetected","27":"HaltWhoGoesThere","28":"FireFireFire","29":"One","30":"Two","31":"Three","32":"Four","33":"Five","34":"Floor","35":"RocketLaunching","36":"LiftOff","37":"TraderIncoming","38":"TraderLanded","39":"PressureHigh","40":"PressureLow","41":"TemperatureHigh","42":"TemperatureLow","43":"PollutantsDetected","44":"HighCarbonDioxide","45":"Alarm1"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":true,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureLadder":{"prefab":{"prefabName":"StructureLadder","prefabHash":-415420281,"desc":"","name":"Ladder"},"structure":{"smallGrid":true}},"StructureLadderEnd":{"prefab":{"prefabName":"StructureLadderEnd","prefabHash":1541734993,"desc":"","name":"Ladder End"},"structure":{"smallGrid":true}},"StructureLargeDirectHeatExchangeGastoGas":{"prefab":{"prefabName":"StructureLargeDirectHeatExchangeGastoGas","prefabHash":-1230658883,"desc":"Direct Heat Exchangers equalize the temperature of the two input networks.","name":"Large Direct Heat Exchanger - Gas + Gas"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Maximum":"Read","NameHash":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Pipe","role":"Input"},{"typ":"Pipe","role":"Input2"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureLargeDirectHeatExchangeGastoLiquid":{"prefab":{"prefabName":"StructureLargeDirectHeatExchangeGastoLiquid","prefabHash":1412338038,"desc":"Direct Heat Exchangers equalize the temperature of the two input networks.","name":"Large Direct Heat Exchanger - Gas + Liquid"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Maximum":"Read","NameHash":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PipeLiquid","role":"Input"},{"typ":"Pipe","role":"Input2"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureLargeDirectHeatExchangeLiquidtoLiquid":{"prefab":{"prefabName":"StructureLargeDirectHeatExchangeLiquidtoLiquid","prefabHash":792686502,"desc":"Direct Heat Exchangers equalize the temperature of the two input networks.","name":"Large Direct Heat Exchange - Liquid + Liquid"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Maximum":"Read","NameHash":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PipeLiquid","role":"Input"},{"typ":"PipeLiquid","role":"Input2"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureLargeExtendableRadiator":{"prefab":{"prefabName":"StructureLargeExtendableRadiator","prefabHash":-566775170,"desc":"Omptimised for radiating heat in vacuum and low pressure environments. If pointed at the sun it will heat its contents rapidly via solar heating. The panels can fold away to stop all heat radiation/solar heating and protect them from storms.","name":"Large Extendable Radiator"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Horizontal":"ReadWrite","Lock":"ReadWrite","Maximum":"Read","NameHash":"Read","Open":"ReadWrite","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"PipeLiquid","role":"Input"},{"typ":"PipeLiquid","role":"Output"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":false,"hasOpenState":true,"hasReagents":false}},"StructureLargeHangerDoor":{"prefab":{"prefabName":"StructureLargeHangerDoor","prefabHash":-1351081801,"desc":"1 x 3 modular door piece for building hangar doors.","name":"Large Hangar Door"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Idle":"Read","Lock":"ReadWrite","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"modes":{"0":"Operate","1":"Logic"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":true,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureLargeSatelliteDish":{"prefab":{"prefabName":"StructureLargeSatelliteDish","prefabHash":1913391845,"desc":"This large communications unit can be used to communicate with nearby trade vessels.\n\n When connected to a Computer containing a Communications Motherboard motherboard, a Landingpad Center, and a Vending Machine, this allows Stationeers to contact traders. Adjust its horizontal and vertical attributes either directly or through logic.","name":"Large Satellite Dish"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Activate":"ReadWrite","BestContactFilter":"ReadWrite","ContactTypeId":"Read","Error":"Read","Horizontal":"ReadWrite","Idle":"Read","InterrogationProgress":"Read","MinimumWattsToContact":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite","SignalID":"Read","SignalStrength":"Read","SizeX":"Read","SizeZ":"Read","TargetPadIndex":"ReadWrite","Vertical":"ReadWrite","WattsReachingContact":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureLaunchMount":{"prefab":{"prefabName":"StructureLaunchMount","prefabHash":-558953231,"desc":"The first piece to place whern building a rocket. Rockets can be constructed and/or landed here. Each Launch Mount will be allocated a slot on the Space Map and assigned a Location Code.","name":"Launch Mount"},"structure":{"smallGrid":false}},"StructureLightLong":{"prefab":{"prefabName":"StructureLightLong","prefabHash":797794350,"desc":"","name":"Wall Light (Long)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureLightLongAngled":{"prefab":{"prefabName":"StructureLightLongAngled","prefabHash":1847265835,"desc":"","name":"Wall Light (Long Angled)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureLightLongWide":{"prefab":{"prefabName":"StructureLightLongWide","prefabHash":555215790,"desc":"","name":"Wall Light (Long Wide)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureLightRound":{"prefab":{"prefabName":"StructureLightRound","prefabHash":1514476632,"desc":"Description coming.","name":"Light Round"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureLightRoundAngled":{"prefab":{"prefabName":"StructureLightRoundAngled","prefabHash":1592905386,"desc":"Description coming.","name":"Light Round (Angled)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureLightRoundSmall":{"prefab":{"prefabName":"StructureLightRoundSmall","prefabHash":1436121888,"desc":"Description coming.","name":"Light Round (Small)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureLiquidDrain":{"prefab":{"prefabName":"StructureLiquidDrain","prefabHash":1687692899,"desc":"When connected to power and activated, it pumps liquid from a liquid network into the world.","name":"Active Liquid Outlet"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Error":"Read","Lock":"ReadWrite","Maximum":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PipeLiquid","role":"None"},{"typ":"Data","role":"Input"},{"typ":"Power","role":"Input"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureLiquidPipeAnalyzer":{"prefab":{"prefabName":"StructureLiquidPipeAnalyzer","prefabHash":-2113838091,"desc":"","name":"Liquid Pipe Analyzer"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Combustion":"Read","Error":"Read","Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Pressure":"Read","RatioCarbonDioxide":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioVolatiles":"Read","RatioWater":"Read","ReferenceId":"Read","RequiredPower":"Read","Temperature":"Read","TotalMoles":"Read","Volume":"Read","VolumeOfLiquid":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureLiquidPipeHeater":{"prefab":{"prefabName":"StructureLiquidPipeHeater","prefabHash":-287495560,"desc":"Adds 1000 joules of heat per tick to the contents of your pipe network.","name":"Pipe Heater (Liquid)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Error":"Read","Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureLiquidPipeOneWayValve":{"prefab":{"prefabName":"StructureLiquidPipeOneWayValve","prefabHash":-782453061,"desc":"The one way valve moves liquid in one direction only: from input side to output side. It only permits flow if the input pressure is higher than output pressure..","name":"One Way Valve (Liquid)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Maximum":"Read","NameHash":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PipeLiquid","role":"Input"},{"typ":"PipeLiquid","role":"Output"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureLiquidPipeRadiator":{"prefab":{"prefabName":"StructureLiquidPipeRadiator","prefabHash":2072805863,"desc":"A simple heat exchanger, pipe radiators can be placed on pipes to shed or gain heat, depending on the temperature of the surrounding atmosphere. If the atmosphere is hotter, heat will be added to the liquid within the pipe network, and visa versa if colder. In a vacuum, heat will be radiated. \nThe speed of heat gain or loss will depend on the liquid in question. Adding multiple radiators will speed up heat transfer.","name":"Liquid Pipe Convection Radiator"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"NameHash":"Read","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureLiquidPressureRegulator":{"prefab":{"prefabName":"StructureLiquidPressureRegulator","prefabHash":482248766,"desc":"Regulates the volume ratio of liquid in the output Liquid pipe. This is expressed as percentage where 100 is totally full and 0 is empty.","name":"Liquid Volume Regulator"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Error":"Read","Lock":"ReadWrite","Maximum":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PipeLiquid","role":"Input"},{"typ":"PipeLiquid","role":"Output"},{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureLiquidTankBig":{"prefab":{"prefabName":"StructureLiquidTankBig","prefabHash":1098900430,"desc":"","name":"Liquid Tank Big"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Combustion":"Read","Maximum":"Read","NameHash":"Read","PrefabHash":"Read","Pressure":"Read","Ratio":"Read","RatioCarbonDioxide":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioVolatiles":"Read","RatioWater":"Read","ReferenceId":"Read","Setting":"ReadWrite","Temperature":"Read","TotalMoles":"Read","Volume":"Read","VolumeOfLiquid":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"PipeLiquid","role":"Input"}],"hasActivateState":false,"hasAtmosphere":true,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureLiquidTankBigInsulated":{"prefab":{"prefabName":"StructureLiquidTankBigInsulated","prefabHash":-1430440215,"desc":"","name":"Insulated Liquid Tank Big"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Combustion":"Read","Maximum":"Read","NameHash":"Read","PrefabHash":"Read","Pressure":"Read","Ratio":"Read","RatioCarbonDioxide":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioVolatiles":"Read","RatioWater":"Read","ReferenceId":"Read","Setting":"ReadWrite","Temperature":"Read","TotalMoles":"Read","Volume":"Read","VolumeOfLiquid":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"PipeLiquid","role":"Input"}],"hasActivateState":false,"hasAtmosphere":true,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureLiquidTankSmall":{"prefab":{"prefabName":"StructureLiquidTankSmall","prefabHash":1988118157,"desc":"","name":"Liquid Tank Small"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Combustion":"Read","Maximum":"Read","NameHash":"Read","PrefabHash":"Read","Pressure":"Read","Ratio":"Read","RatioCarbonDioxide":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioVolatiles":"Read","RatioWater":"Read","ReferenceId":"Read","Setting":"ReadWrite","Temperature":"Read","TotalMoles":"Read","Volume":"Read","VolumeOfLiquid":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"PipeLiquid","role":"Input"}],"hasActivateState":false,"hasAtmosphere":true,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureLiquidTankSmallInsulated":{"prefab":{"prefabName":"StructureLiquidTankSmallInsulated","prefabHash":608607718,"desc":"","name":"Insulated Liquid Tank Small"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Combustion":"Read","Maximum":"Read","NameHash":"Read","PrefabHash":"Read","Pressure":"Read","Ratio":"Read","RatioCarbonDioxide":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioVolatiles":"Read","RatioWater":"Read","ReferenceId":"Read","Setting":"ReadWrite","Temperature":"Read","TotalMoles":"Read","Volume":"Read","VolumeOfLiquid":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"PipeLiquid","role":"Input"}],"hasActivateState":false,"hasAtmosphere":true,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureLiquidTankStorage":{"prefab":{"prefabName":"StructureLiquidTankStorage","prefabHash":1691898022,"desc":"When connected to a liquid pipe network, the tank storage unit allows you to refill a Liquid Canister, as well as read various atmospheric data from the Gas Canister. It will not accept gas canisters.","name":"Liquid Tank Storage"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Open":"ReadWrite","PrefabHash":"Read","Pressure":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read","Temperature":"Read","Volume":"Read"}},"logicTypes":{"NameHash":"Read","PrefabHash":"Read","Pressure":"Read","Quantity":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","ReferenceId":"Read","Temperature":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Liquid Canister","typ":"LiquidCanister"}],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"PipeLiquid","role":"Input"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureLiquidTurboVolumePump":{"prefab":{"prefabName":"StructureLiquidTurboVolumePump","prefabHash":-1051805505,"desc":"Shifts 10 times more liquid than a basic Volume Pump, with a mode that can be set to flow in either direction.","name":"Turbo Volume Pump (Liquid)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Error":"Read","Lock":"ReadWrite","Maximum":"Read","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"modes":{"0":"Right","1":"Left"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"},{"typ":"PipeLiquid","role":"Input"},{"typ":"PipeLiquid","role":"Output"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":true,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureLiquidUmbilicalFemale":{"prefab":{"prefabName":"StructureLiquidUmbilicalFemale","prefabHash":1734723642,"desc":"","name":"Umbilical Socket (Liquid)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Maximum":"Read","NameHash":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PipeLiquid","role":"Input"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureLiquidUmbilicalFemaleSide":{"prefab":{"prefabName":"StructureLiquidUmbilicalFemaleSide","prefabHash":1220870319,"desc":"","name":"Umbilical Socket Angle (Liquid)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Maximum":"Read","NameHash":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PipeLiquid","role":"Input"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureLiquidUmbilicalMale":{"prefab":{"prefabName":"StructureLiquidUmbilicalMale","prefabHash":-1798420047,"desc":"0.Left\n1.Center\n2.Right","name":"Umbilical (Liquid)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Error":"Read","Lock":"ReadWrite","Maximum":"Read","Mode":"Read","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"modes":{"0":"Left","1":"Center","2":"Right"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PipeLiquid","role":"Input"},{"typ":"PowerAndData","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":true,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureLiquidValve":{"prefab":{"prefabName":"StructureLiquidValve","prefabHash":1849974453,"desc":"","name":"Liquid Valve"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Maximum":"Read","NameHash":"Read","On":"ReadWrite","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PipeLiquid","role":"None"},{"typ":"PipeLiquid","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureLiquidVolumePump":{"prefab":{"prefabName":"StructureLiquidVolumePump","prefabHash":-454028979,"desc":"","name":"Liquid Volume Pump"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Error":"Read","Lock":"ReadWrite","Maximum":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PipeLiquid","role":"Output"},{"typ":"PipeLiquid","role":"Input"},{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureLockerSmall":{"prefab":{"prefabName":"StructureLockerSmall","prefabHash":-647164662,"desc":"","name":"Locker (Small)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"1":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"2":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"3":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"Lock":"ReadWrite","NameHash":"Read","Open":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"}],"device":{"connectionList":[],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":false,"hasOpenState":true,"hasReagents":false}},"StructureLogicBatchReader":{"prefab":{"prefabName":"StructureLogicBatchReader","prefabHash":264413729,"desc":"","name":"Batch Reader"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Error":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"Input"},{"typ":"Data","role":"Output"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureLogicBatchSlotReader":{"prefab":{"prefabName":"StructureLogicBatchSlotReader","prefabHash":436888930,"desc":"","name":"Batch Slot Reader"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Error":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"Input"},{"typ":"Data","role":"Output"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureLogicBatchWriter":{"prefab":{"prefabName":"StructureLogicBatchWriter","prefabHash":1415443359,"desc":"","name":"Batch Writer"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Error":"Read","ForceWrite":"Write","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"Input"},{"typ":"Data","role":"Output"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureLogicButton":{"prefab":{"prefabName":"StructureLogicButton","prefabHash":491845673,"desc":"","name":"Button"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Activate":"ReadWrite","Lock":"ReadWrite","NameHash":"Read","PrefabHash":"Read","ReferenceId":"Read","Setting":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Data","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureLogicCompare":{"prefab":{"prefabName":"StructureLogicCompare","prefabHash":-1489728908,"desc":"0.Equals\n1.Greater\n2.Less\n3.NotEquals","name":"Logic Compare"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Error":"Read","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"Read"},"modes":{"0":"Equals","1":"Greater","2":"Less","3":"NotEquals"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"Input"},{"typ":"Data","role":"Input"},{"typ":"Data","role":"Output"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":true,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureLogicDial":{"prefab":{"prefabName":"StructureLogicDial","prefabHash":554524804,"desc":"An assignable dial with up to 1000 modes.","name":"Dial"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Mode":"ReadWrite","NameHash":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":true,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureLogicGate":{"prefab":{"prefabName":"StructureLogicGate","prefabHash":1942143074,"desc":"A logic device that performs a logical operation on one or more binary inputs that produces a single binary output. An input greater than zero is considered true for operations.","name":"Logic Gate"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Error":"Read","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"Read"},"modes":{"0":"AND","1":"OR","2":"XOR","3":"NAND","4":"NOR","5":"XNOR"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"Input"},{"typ":"Data","role":"Input"},{"typ":"Data","role":"Output"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":true,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureLogicHashGen":{"prefab":{"prefabName":"StructureLogicHashGen","prefabHash":2077593121,"desc":"","name":"Logic Hash Generator"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"NameHash":"Read","PrefabHash":"Read","ReferenceId":"Read","Setting":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Data","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureLogicMath":{"prefab":{"prefabName":"StructureLogicMath","prefabHash":1657691323,"desc":"0.Add\n1.Subtract\n2.Multiply\n3.Divide\n4.Mod\n5.Atan2\n6.Pow\n7.Log","name":"Logic Math"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Error":"Read","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"Read"},"modes":{"0":"Add","1":"Subtract","2":"Multiply","3":"Divide","4":"Mod","5":"Atan2","6":"Pow","7":"Log"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"Input"},{"typ":"Data","role":"Input"},{"typ":"Data","role":"Output"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":true,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureLogicMathUnary":{"prefab":{"prefabName":"StructureLogicMathUnary","prefabHash":-1160020195,"desc":"0.Ceil\n1.Floor\n2.Abs\n3.Log\n4.Exp\n5.Round\n6.Rand\n7.Sqrt\n8.Sin\n9.Cos\n10.Tan\n11.Asin\n12.Acos\n13.Atan\n14.Not","name":"Math Unary"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Error":"Read","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"Read"},"modes":{"0":"Ceil","1":"Floor","2":"Abs","3":"Log","4":"Exp","5":"Round","6":"Rand","7":"Sqrt","8":"Sin","9":"Cos","10":"Tan","11":"Asin","12":"Acos","13":"Atan","14":"Not"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"Input"},{"typ":"Data","role":"Output"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":true,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureLogicMemory":{"prefab":{"prefabName":"StructureLogicMemory","prefabHash":-851746783,"desc":"","name":"Logic Memory"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"NameHash":"Read","PrefabHash":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Data","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureLogicMinMax":{"prefab":{"prefabName":"StructureLogicMinMax","prefabHash":929022276,"desc":"0.Greater\n1.Less","name":"Logic Min/Max"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Error":"Read","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"Read"},"modes":{"0":"Greater","1":"Less"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"Input"},{"typ":"Data","role":"Input"},{"typ":"Data","role":"Output"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":true,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureLogicMirror":{"prefab":{"prefabName":"StructureLogicMirror","prefabHash":2096189278,"desc":"","name":"Logic Mirror"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"Input"},{"typ":"Data","role":"Output"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureLogicReader":{"prefab":{"prefabName":"StructureLogicReader","prefabHash":-345383640,"desc":"","name":"Logic Reader"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Error":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"Input"},{"typ":"Data","role":"Output"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureLogicReagentReader":{"prefab":{"prefabName":"StructureLogicReagentReader","prefabHash":-124308857,"desc":"","name":"Reagent Reader"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Error":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"Input"},{"typ":"Data","role":"Output"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureLogicRocketDownlink":{"prefab":{"prefabName":"StructureLogicRocketDownlink","prefabHash":876108549,"desc":"","name":"Logic Rocket Downlink"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"NameHash":"Read","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PowerAndData","role":"Input"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureLogicRocketUplink":{"prefab":{"prefabName":"StructureLogicRocketUplink","prefabHash":546002924,"desc":"","name":"Logic Uplink"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Error":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"Input"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureLogicSelect":{"prefab":{"prefabName":"StructureLogicSelect","prefabHash":1822736084,"desc":"0.Equals\n1.Greater\n2.Less\n3.NotEquals","name":"Logic Select"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Error":"Read","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"Read"},"modes":{"0":"Equals","1":"Greater","2":"Less","3":"NotEquals"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"Input"},{"typ":"Data","role":"Input"},{"typ":"Data","role":"Output"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":true,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureLogicSlotReader":{"prefab":{"prefabName":"StructureLogicSlotReader","prefabHash":-767867194,"desc":"","name":"Slot Reader"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Error":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"Input"},{"typ":"Data","role":"Output"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureLogicSorter":{"prefab":{"prefabName":"StructureLogicSorter","prefabHash":873418029,"desc":"Contains an Internal Memory which is assessed to check whether something should be sorted. When an item is in the Import Slot, the stack is checked and if result is true the thing is moved to the Export 2 slot, otherwise it is moved to the Export slot. The Mode is used in how the stack is assessed, by default the mode is ALL, so every instruction in the stack would need to return true.","name":"Logic Sorter"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"1":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"2":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"3":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"ClearMemory":"Write","Error":"Read","ExportCount":"Read","ImportCount":"Read","Lock":"ReadWrite","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"modes":{"0":"All","1":"Any","2":"None"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Import","typ":"None"},{"name":"Export","typ":"None"},{"name":"Export 2","typ":"None"},{"name":"Data Disk","typ":"DataDisk"}],"device":{"connectionList":[{"typ":"Chute","role":"Output2"},{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":true,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false},"memory":{"instructions":{"FilterPrefabHashEquals":{"description":"| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | PREFAB_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |","typ":"SorterInstruction","value":1},"FilterPrefabHashNotEquals":{"description":"| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | PREFAB_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |","typ":"SorterInstruction","value":2},"FilterQuantityCompare":{"description":"| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | CONDITION_OPERATION | BYTE_8 |\r\n| 16-31 | QUANTITY | USHORT_16 |\r\n| 32-63 | UNUSED | 32 |","typ":"SorterInstruction","value":5},"FilterSlotTypeCompare":{"description":"| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | CONDITION_OPERATION | BYTE_8 |\r\n| 16-31 | SLOT_TYPE | USHORT_16 |\r\n| 32-63 | UNUSED | 32 |","typ":"SorterInstruction","value":4},"FilterSortingClassCompare":{"description":"| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | CONDITION_OPERATION | BYTE_8 |\r\n| 16-31 | SORTING_CLASS | USHORT_16 |\r\n| 32-63 | UNUSED | 32 |","typ":"SorterInstruction","value":3},"LimitNextExecutionByCount":{"description":"| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | COUNT | UINT_32 |\r\n| 40-63 | UNUSED | 24 |","typ":"SorterInstruction","value":6}},"memoryAccess":"ReadWrite","memorySize":32}},"StructureLogicSwitch":{"prefab":{"prefabName":"StructureLogicSwitch","prefabHash":1220484876,"desc":"","name":"Lever"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Lock":"ReadWrite","NameHash":"Read","Open":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read","Setting":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Data","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":false,"hasOpenState":true,"hasReagents":false}},"StructureLogicSwitch2":{"prefab":{"prefabName":"StructureLogicSwitch2","prefabHash":321604921,"desc":"","name":"Switch"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Lock":"ReadWrite","NameHash":"Read","Open":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read","Setting":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Data","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":false,"hasOpenState":true,"hasReagents":false}},"StructureLogicTransmitter":{"prefab":{"prefabName":"StructureLogicTransmitter","prefabHash":-693235651,"desc":"Connects to Logic Transmitter","name":"Logic Transmitter"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{},"modes":{"0":"Passive","1":"Active"},"transmissionReceiver":true,"wirelessLogic":true,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"Input"},{"typ":"Data","role":"Input"},{"typ":"Data","role":"Input"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":true,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureLogicWriter":{"prefab":{"prefabName":"StructureLogicWriter","prefabHash":-1326019434,"desc":"","name":"Logic Writer"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Error":"Read","ForceWrite":"Write","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"Input"},{"typ":"Data","role":"Output"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureLogicWriterSwitch":{"prefab":{"prefabName":"StructureLogicWriterSwitch","prefabHash":-1321250424,"desc":"","name":"Logic Writer Switch"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Activate":"ReadWrite","Error":"Read","ForceWrite":"Write","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"Input"},{"typ":"Data","role":"Output"},{"typ":"Power","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureManualHatch":{"prefab":{"prefabName":"StructureManualHatch","prefabHash":-1808154199,"desc":"Can be welded using a Welding Torch or Arc Welder to lock it in the current state. Use the welder again to unlock.","name":"Manual Hatch"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Idle":"Read","Lock":"ReadWrite","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"modes":{"0":"Operate","1":"Logic"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":true,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureMediumConvectionRadiator":{"prefab":{"prefabName":"StructureMediumConvectionRadiator","prefabHash":-1918215845,"desc":"A stand-alone radiator unit optimized for exchanging heat with its surrounding atmosphere.","name":"Medium Convection Radiator"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Maximum":"Read","NameHash":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Pipe","role":"Input"},{"typ":"Pipe","role":"Output"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureMediumConvectionRadiatorLiquid":{"prefab":{"prefabName":"StructureMediumConvectionRadiatorLiquid","prefabHash":-1169014183,"desc":"A stand-alone liquid radiator unit optimized for exchanging heat with its surrounding atmosphere.","name":"Medium Convection Radiator Liquid"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Maximum":"Read","NameHash":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PipeLiquid","role":"Input"},{"typ":"PipeLiquid","role":"Output"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureMediumHangerDoor":{"prefab":{"prefabName":"StructureMediumHangerDoor","prefabHash":-566348148,"desc":"1 x 2 modular door piece for building hangar doors.","name":"Medium Hangar Door"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Idle":"Read","Lock":"ReadWrite","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"modes":{"0":"Operate","1":"Logic"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":true,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureMediumRadiator":{"prefab":{"prefabName":"StructureMediumRadiator","prefabHash":-975966237,"desc":"A stand-alone radiator unit optimized for radiating heat in vacuums.","name":"Medium Radiator"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Maximum":"Read","NameHash":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Pipe","role":"Input"},{"typ":"Pipe","role":"Output"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureMediumRadiatorLiquid":{"prefab":{"prefabName":"StructureMediumRadiatorLiquid","prefabHash":-1141760613,"desc":"A stand-alone liquid radiator unit optimized for radiating heat in vacuums.","name":"Medium Radiator Liquid"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Maximum":"Read","NameHash":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PipeLiquid","role":"Input"},{"typ":"PipeLiquid","role":"Output"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureMediumRocketGasFuelTank":{"prefab":{"prefabName":"StructureMediumRocketGasFuelTank","prefabHash":-1093860567,"desc":"","name":"Gas Capsule Tank Medium"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Combustion":"Read","Maximum":"Read","NameHash":"Read","PrefabHash":"Read","Pressure":"Read","Ratio":"Read","RatioCarbonDioxide":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioVolatiles":"Read","RatioWater":"Read","ReferenceId":"Read","Setting":"ReadWrite","Temperature":"Read","TotalMoles":"Read","Volume":"Read","VolumeOfLiquid":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"Output"},{"typ":"Pipe","role":"Input"}],"hasActivateState":false,"hasAtmosphere":true,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureMediumRocketLiquidFuelTank":{"prefab":{"prefabName":"StructureMediumRocketLiquidFuelTank","prefabHash":1143639539,"desc":"","name":"Liquid Capsule Tank Medium"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Combustion":"Read","Maximum":"Read","NameHash":"Read","PrefabHash":"Read","Pressure":"Read","Ratio":"Read","RatioCarbonDioxide":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioVolatiles":"Read","RatioWater":"Read","ReferenceId":"Read","Setting":"ReadWrite","Temperature":"Read","TotalMoles":"Read","Volume":"Read","VolumeOfLiquid":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"Output"},{"typ":"PipeLiquid","role":"Input"}],"hasActivateState":false,"hasAtmosphere":true,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureMotionSensor":{"prefab":{"prefabName":"StructureMotionSensor","prefabHash":-1713470563,"desc":"Originally developed to monitor dance marathons, the motion sensor can also be connected to Logic systems for security purposes, automatic lighting, doors and various other applications.\nThe sensor activates whenever a player enters the grid it is placed on.","name":"Motion Sensor"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Activate":"ReadWrite","NameHash":"Read","On":"ReadWrite","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PowerAndData","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureNitrolyzer":{"prefab":{"prefabName":"StructureNitrolyzer","prefabHash":1898243702,"desc":"This device is used to create Nitrous Oxide from Oxygen, Nitrogen, and a large amount of energy. The process does not completely transform all the available gas at once, so the output is a mix of all three gasses, which may need further processing. More NOS will be created, if the gas inside the machine is close to a 1/1 ratio of Oxygen to Nitrogen. The second gas input line in optional, and not required if the gas is pre mixed.","name":"Nitrolyzer"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"Activate":"ReadWrite","Combustion":"Read","CombustionInput":"Read","CombustionInput2":"Read","CombustionOutput":"Read","Error":"Read","Maximum":"Read","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","Pressure":"Read","PressureInput":"Read","PressureInput2":"Read","PressureOutput":"Read","Ratio":"Read","RatioCarbonDioxide":"Read","RatioCarbonDioxideInput":"Read","RatioCarbonDioxideInput2":"Read","RatioCarbonDioxideOutput":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidCarbonDioxideInput":"Read","RatioLiquidCarbonDioxideInput2":"Read","RatioLiquidCarbonDioxideOutput":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrogenInput":"Read","RatioLiquidNitrogenInput2":"Read","RatioLiquidNitrogenOutput":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidNitrousOxideInput":"Read","RatioLiquidNitrousOxideInput2":"Read","RatioLiquidNitrousOxideOutput":"Read","RatioLiquidOxygen":"Read","RatioLiquidOxygenInput":"Read","RatioLiquidOxygenInput2":"Read","RatioLiquidOxygenOutput":"Read","RatioLiquidPollutant":"Read","RatioLiquidPollutantInput":"Read","RatioLiquidPollutantInput2":"Read","RatioLiquidPollutantOutput":"Read","RatioLiquidVolatiles":"Read","RatioLiquidVolatilesInput":"Read","RatioLiquidVolatilesInput2":"Read","RatioLiquidVolatilesOutput":"Read","RatioNitrogen":"Read","RatioNitrogenInput":"Read","RatioNitrogenInput2":"Read","RatioNitrogenOutput":"Read","RatioNitrousOxide":"Read","RatioNitrousOxideInput":"Read","RatioNitrousOxideInput2":"Read","RatioNitrousOxideOutput":"Read","RatioOxygen":"Read","RatioOxygenInput":"Read","RatioOxygenInput2":"Read","RatioOxygenOutput":"Read","RatioPollutant":"Read","RatioPollutantInput":"Read","RatioPollutantInput2":"Read","RatioPollutantOutput":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioSteamInput":"Read","RatioSteamInput2":"Read","RatioSteamOutput":"Read","RatioVolatiles":"Read","RatioVolatilesInput":"Read","RatioVolatilesInput2":"Read","RatioVolatilesOutput":"Read","RatioWater":"Read","RatioWaterInput":"Read","RatioWaterInput2":"Read","RatioWaterOutput":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite","Temperature":"Read","TemperatureInput":"Read","TemperatureInput2":"Read","TemperatureOutput":"Read","TotalMoles":"Read","TotalMolesInput":"Read","TotalMolesInput2":"Read","TotalMolesOutput":"Read"},"modes":{"0":"Idle","1":"Active"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":true},"slots":[{"name":"Programmable Chip","typ":"ProgrammableChip"}],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Pipe","role":"Input"},{"typ":"Pipe","role":"Input2"},{"typ":"Pipe","role":"Output"},{"typ":"Power","role":"None"}],"devicePinsLength":2,"hasActivateState":true,"hasAtmosphere":true,"hasColorState":false,"hasLockState":false,"hasModeState":true,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureOccupancySensor":{"prefab":{"prefabName":"StructureOccupancySensor","prefabHash":322782515,"desc":"Will be triggered if there is a player in the same room as the sensor. The quantity variable will show the number of players. You can use configure it to only detect players who hold the correct Access Card using a Cartridge (Access Controller) in a Handheld Tablet. This sensor only works when placed in a room.","name":"Occupancy Sensor"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Activate":"Read","NameHash":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PowerAndData","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureOverheadShortCornerLocker":{"prefab":{"prefabName":"StructureOverheadShortCornerLocker","prefabHash":-1794932560,"desc":"","name":"Overhead Corner Locker"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"1":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"Lock":"ReadWrite","NameHash":"Read","Open":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"","typ":"None"},{"name":"","typ":"None"}],"device":{"connectionList":[],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":false,"hasOpenState":true,"hasReagents":false}},"StructureOverheadShortLocker":{"prefab":{"prefabName":"StructureOverheadShortLocker","prefabHash":1468249454,"desc":"","name":"Overhead Locker"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"1":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"2":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"3":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"4":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"5":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"6":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"7":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"8":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"9":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"Lock":"ReadWrite","NameHash":"Read","Open":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"}],"device":{"connectionList":[],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":false,"hasOpenState":true,"hasReagents":false}},"StructurePassiveLargeRadiatorGas":{"prefab":{"prefabName":"StructurePassiveLargeRadiatorGas","prefabHash":2066977095,"desc":"Has been replaced by Medium Convection Radiator.","name":"Medium Convection Radiator"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Maximum":"Read","NameHash":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Pipe","role":"Input"},{"typ":"Pipe","role":"Output"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructurePassiveLargeRadiatorLiquid":{"prefab":{"prefabName":"StructurePassiveLargeRadiatorLiquid","prefabHash":24786172,"desc":"Has been replaced by Medium Convection Radiator Liquid.","name":"Medium Convection Radiator Liquid"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Maximum":"Read","NameHash":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PipeLiquid","role":"Input"},{"typ":"PipeLiquid","role":"Output"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructurePassiveLiquidDrain":{"prefab":{"prefabName":"StructurePassiveLiquidDrain","prefabHash":1812364811,"desc":"Moves liquids from a pipe network to the world atmosphere.","name":"Passive Liquid Drain"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"NameHash":"Read","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructurePassiveVent":{"prefab":{"prefabName":"StructurePassiveVent","prefabHash":335498166,"desc":"Passive vents allow gases to move into and out of pipe networks, which are closed systems unless connected to a device or structure. Passive vents are not powered, merely an aperture, essentially turning an enclosed space into part of the pipe network. ","name":"Passive Vent"},"structure":{"smallGrid":true}},"StructurePassiveVentInsulated":{"prefab":{"prefabName":"StructurePassiveVentInsulated","prefabHash":1363077139,"desc":"","name":"Insulated Passive Vent"},"structure":{"smallGrid":true}},"StructurePassthroughHeatExchangerGasToGas":{"prefab":{"prefabName":"StructurePassthroughHeatExchangerGasToGas","prefabHash":-1674187440,"desc":"Exchange heat from one pipe network to another. By drawing down the pressure of the outputs with a pump or regulator and regulating input pressures, the temperatures of two counterflowing networks can be effectively exchanged.\n Balancing the throughput of both inputs is key to creating a good exhange of temperatures.","name":"CounterFlow Heat Exchanger - Gas + Gas"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Maximum":"Read","NameHash":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Pipe","role":"Input"},{"typ":"Pipe","role":"Input2"},{"typ":"Pipe","role":"Output"},{"typ":"Pipe","role":"Output2"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructurePassthroughHeatExchangerGasToLiquid":{"prefab":{"prefabName":"StructurePassthroughHeatExchangerGasToLiquid","prefabHash":1928991265,"desc":"Exchange heat from one pipe network to another. By drawing down the pressure of the outputs with a pump or regulator and regulating input pressures, the temperatures of two counterflowing networks can be effectively exchanged.\n Balancing the throughput of both inputs is key to creating a good exhange of temperatures.","name":"CounterFlow Heat Exchanger - Gas + Liquid"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Maximum":"Read","NameHash":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Pipe","role":"Input"},{"typ":"PipeLiquid","role":"Input2"},{"typ":"Pipe","role":"Output"},{"typ":"PipeLiquid","role":"Output2"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructurePassthroughHeatExchangerLiquidToLiquid":{"prefab":{"prefabName":"StructurePassthroughHeatExchangerLiquidToLiquid","prefabHash":-1472829583,"desc":"Exchange heat from one pipe network to another. By drawing down the pressure of the outputs with a pump or regulator and regulating input pressures, the temperatures of two counterflowing networks can be effectively exchanged.\n Balancing the throughput of both inputs is key to creating a good exchange of temperatures.","name":"CounterFlow Heat Exchanger - Liquid + Liquid"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Maximum":"Read","NameHash":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PipeLiquid","role":"Input"},{"typ":"PipeLiquid","role":"Input2"},{"typ":"PipeLiquid","role":"Output"},{"typ":"PipeLiquid","role":"Output2"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructurePictureFrameThickLandscapeLarge":{"prefab":{"prefabName":"StructurePictureFrameThickLandscapeLarge","prefabHash":-1434523206,"desc":"","name":"Picture Frame Thick Landscape Large"},"structure":{"smallGrid":true}},"StructurePictureFrameThickLandscapeSmall":{"prefab":{"prefabName":"StructurePictureFrameThickLandscapeSmall","prefabHash":-2041566697,"desc":"","name":"Picture Frame Thick Landscape Small"},"structure":{"smallGrid":true}},"StructurePictureFrameThickMountLandscapeLarge":{"prefab":{"prefabName":"StructurePictureFrameThickMountLandscapeLarge","prefabHash":950004659,"desc":"","name":"Picture Frame Thick Landscape Large"},"structure":{"smallGrid":true}},"StructurePictureFrameThickMountLandscapeSmall":{"prefab":{"prefabName":"StructurePictureFrameThickMountLandscapeSmall","prefabHash":347154462,"desc":"","name":"Picture Frame Thick Landscape Small"},"structure":{"smallGrid":true}},"StructurePictureFrameThickMountPortraitLarge":{"prefab":{"prefabName":"StructurePictureFrameThickMountPortraitLarge","prefabHash":-1459641358,"desc":"","name":"Picture Frame Thick Mount Portrait Large"},"structure":{"smallGrid":true}},"StructurePictureFrameThickMountPortraitSmall":{"prefab":{"prefabName":"StructurePictureFrameThickMountPortraitSmall","prefabHash":-2066653089,"desc":"","name":"Picture Frame Thick Mount Portrait Small"},"structure":{"smallGrid":true}},"StructurePictureFrameThickPortraitLarge":{"prefab":{"prefabName":"StructurePictureFrameThickPortraitLarge","prefabHash":-1686949570,"desc":"","name":"Picture Frame Thick Portrait Large"},"structure":{"smallGrid":true}},"StructurePictureFrameThickPortraitSmall":{"prefab":{"prefabName":"StructurePictureFrameThickPortraitSmall","prefabHash":-1218579821,"desc":"","name":"Picture Frame Thick Portrait Small"},"structure":{"smallGrid":true}},"StructurePictureFrameThinLandscapeLarge":{"prefab":{"prefabName":"StructurePictureFrameThinLandscapeLarge","prefabHash":-1418288625,"desc":"","name":"Picture Frame Thin Landscape Large"},"structure":{"smallGrid":true}},"StructurePictureFrameThinLandscapeSmall":{"prefab":{"prefabName":"StructurePictureFrameThinLandscapeSmall","prefabHash":-2024250974,"desc":"","name":"Picture Frame Thin Landscape Small"},"structure":{"smallGrid":true}},"StructurePictureFrameThinMountLandscapeLarge":{"prefab":{"prefabName":"StructurePictureFrameThinMountLandscapeLarge","prefabHash":-1146760430,"desc":"","name":"Picture Frame Thin Landscape Large"},"structure":{"smallGrid":true}},"StructurePictureFrameThinMountLandscapeSmall":{"prefab":{"prefabName":"StructurePictureFrameThinMountLandscapeSmall","prefabHash":-1752493889,"desc":"","name":"Picture Frame Thin Landscape Small"},"structure":{"smallGrid":true}},"StructurePictureFrameThinMountPortraitLarge":{"prefab":{"prefabName":"StructurePictureFrameThinMountPortraitLarge","prefabHash":1094895077,"desc":"","name":"Picture Frame Thin Portrait Large"},"structure":{"smallGrid":true}},"StructurePictureFrameThinMountPortraitSmall":{"prefab":{"prefabName":"StructurePictureFrameThinMountPortraitSmall","prefabHash":1835796040,"desc":"","name":"Picture Frame Thin Portrait Small"},"structure":{"smallGrid":true}},"StructurePictureFrameThinPortraitLarge":{"prefab":{"prefabName":"StructurePictureFrameThinPortraitLarge","prefabHash":1212777087,"desc":"","name":"Picture Frame Thin Portrait Large"},"structure":{"smallGrid":true}},"StructurePictureFrameThinPortraitSmall":{"prefab":{"prefabName":"StructurePictureFrameThinPortraitSmall","prefabHash":1684488658,"desc":"","name":"Picture Frame Thin Portrait Small"},"structure":{"smallGrid":true}},"StructurePipeAnalysizer":{"prefab":{"prefabName":"StructurePipeAnalysizer","prefabHash":435685051,"desc":"Allegedly the outcome of a weekend father-daughter electronics project by an overzealous {ExMin engineer, the pipe analyzer is essentially a more advanced version of the Pipe Meter.\nDisplaying the internal pressure of pipe networks, it also reads out temperature and gas contents, and can be connected to a Console or Computer via a {Logic system.","name":"Pipe Analyzer"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Combustion":"Read","Error":"Read","Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Pressure":"Read","RatioCarbonDioxide":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioVolatiles":"Read","RatioWater":"Read","ReferenceId":"Read","RequiredPower":"Read","Temperature":"Read","TotalMoles":"Read","Volume":"Read","VolumeOfLiquid":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructurePipeCorner":{"prefab":{"prefabName":"StructurePipeCorner","prefabHash":-1785673561,"desc":"You can upgrade this pipe to an Insulated Pipe (Corner) using an Kit (Insulated Pipe) and a Wrench.","name":"Pipe (Corner)"},"structure":{"smallGrid":true}},"StructurePipeCowl":{"prefab":{"prefabName":"StructurePipeCowl","prefabHash":465816159,"desc":"","name":"Pipe Cowl"},"structure":{"smallGrid":true}},"StructurePipeCrossJunction":{"prefab":{"prefabName":"StructurePipeCrossJunction","prefabHash":-1405295588,"desc":"You can upgrade this pipe to an Insulated Pipe (Cross Junction) using an Kit (Insulated Pipe) and a Wrench.","name":"Pipe (Cross Junction)"},"structure":{"smallGrid":true}},"StructurePipeCrossJunction3":{"prefab":{"prefabName":"StructurePipeCrossJunction3","prefabHash":2038427184,"desc":"You can upgrade this pipe to an Insulated Pipe (3-Way Junction) using an Kit (Insulated Pipe) and a Wrench.","name":"Pipe (3-Way Junction)"},"structure":{"smallGrid":true}},"StructurePipeCrossJunction4":{"prefab":{"prefabName":"StructurePipeCrossJunction4","prefabHash":-417629293,"desc":"You can upgrade this pipe to an Insulated Pipe (4-Way Junction) using an Kit (Insulated Pipe) and a Wrench.","name":"Pipe (4-Way Junction)"},"structure":{"smallGrid":true}},"StructurePipeCrossJunction5":{"prefab":{"prefabName":"StructurePipeCrossJunction5","prefabHash":-1877193979,"desc":"You can upgrade this pipe to an Insulated Pipe (5-Way Junction) using an Kit (Insulated Pipe) and a Wrench.","name":"Pipe (5-Way Junction)"},"structure":{"smallGrid":true}},"StructurePipeCrossJunction6":{"prefab":{"prefabName":"StructurePipeCrossJunction6","prefabHash":152378047,"desc":"You can upgrade this pipe to an Insulated Pipe (6-Way Junction) using an Kit (Insulated Pipe) and a Wrench.","name":"Pipe (6-Way Junction)"},"structure":{"smallGrid":true}},"StructurePipeHeater":{"prefab":{"prefabName":"StructurePipeHeater","prefabHash":-419758574,"desc":"Adds 1000 joules of heat per tick to the contents of your pipe network.","name":"Pipe Heater (Gas)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Error":"Read","Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructurePipeIgniter":{"prefab":{"prefabName":"StructurePipeIgniter","prefabHash":1286441942,"desc":"Ignites the atmosphere inside the attached pipe network.","name":"Pipe Igniter"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Activate":"ReadWrite","Error":"Read","NameHash":"Read","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PowerAndData","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructurePipeInsulatedLiquidCrossJunction":{"prefab":{"prefabName":"StructurePipeInsulatedLiquidCrossJunction","prefabHash":-2068497073,"desc":"Liquid piping with very low temperature loss or gain.","name":"Insulated Liquid Pipe (Cross Junction)"},"structure":{"smallGrid":true}},"StructurePipeLabel":{"prefab":{"prefabName":"StructurePipeLabel","prefabHash":-999721119,"desc":"As its perspicacious name suggests, the pipe label is designed to be attached to a straight stretch of pipe. Users can then label the label with the Labeller.","name":"Pipe Label"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"NameHash":"Read","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructurePipeLiquidCorner":{"prefab":{"prefabName":"StructurePipeLiquidCorner","prefabHash":-1856720921,"desc":"You can upgrade this pipe to an Insulated Liquid Pipe (Corner) using an Kit (Insulated Liquid Pipe) and a Wrench.","name":"Liquid Pipe (Corner)"},"structure":{"smallGrid":true}},"StructurePipeLiquidCrossJunction":{"prefab":{"prefabName":"StructurePipeLiquidCrossJunction","prefabHash":1848735691,"desc":"You can upgrade this pipe to an Insulated Liquid Pipe (Cross Junction) using an Kit (Insulated Liquid Pipe) and a Wrench.","name":"Liquid Pipe (Cross Junction)"},"structure":{"smallGrid":true}},"StructurePipeLiquidCrossJunction3":{"prefab":{"prefabName":"StructurePipeLiquidCrossJunction3","prefabHash":1628087508,"desc":"You can upgrade this pipe to an using an Kit (Insulated Liquid Pipe) and a Wrench.","name":"Liquid Pipe (3-Way Junction)"},"structure":{"smallGrid":true}},"StructurePipeLiquidCrossJunction4":{"prefab":{"prefabName":"StructurePipeLiquidCrossJunction4","prefabHash":-9555593,"desc":"You can upgrade this pipe to an Insulated Liquid Pipe (4-Way Junction) using an Kit (Insulated Liquid Pipe) and a Wrench.","name":"Liquid Pipe (4-Way Junction)"},"structure":{"smallGrid":true}},"StructurePipeLiquidCrossJunction5":{"prefab":{"prefabName":"StructurePipeLiquidCrossJunction5","prefabHash":-2006384159,"desc":"You can upgrade this pipe to an Insulated Liquid Pipe (5-Way Junction) using an Kit (Insulated Liquid Pipe) and a Wrench.","name":"Liquid Pipe (5-Way Junction)"},"structure":{"smallGrid":true}},"StructurePipeLiquidCrossJunction6":{"prefab":{"prefabName":"StructurePipeLiquidCrossJunction6","prefabHash":291524699,"desc":"You can upgrade this pipe to an Insulated Liquid Pipe (6-Way Junction) using an Kit (Insulated Liquid Pipe) and a Wrench.","name":"Liquid Pipe (6-Way Junction)"},"structure":{"smallGrid":true}},"StructurePipeLiquidStraight":{"prefab":{"prefabName":"StructurePipeLiquidStraight","prefabHash":667597982,"desc":"You can upgrade this pipe to an Insulated Liquid Pipe (Straight) using an Kit (Insulated Liquid Pipe) and a Wrench.","name":"Liquid Pipe (Straight)"},"structure":{"smallGrid":true}},"StructurePipeLiquidTJunction":{"prefab":{"prefabName":"StructurePipeLiquidTJunction","prefabHash":262616717,"desc":"You can upgrade this pipe to an Insulated Liquid Pipe (T Junction) using an Kit (Insulated Liquid Pipe) and a Wrench.","name":"Liquid Pipe (T Junction)"},"structure":{"smallGrid":true}},"StructurePipeMeter":{"prefab":{"prefabName":"StructurePipeMeter","prefabHash":-1798362329,"desc":"While the Stationeers program has, thus far, inspired little in the way of classical poetry, the following haiku was found etched, ironically, on a piece of pipe wreckage found on Vulcan:\n\"Humble pipe meter\nspeaks the truth, transmits pressure\nwithin any pipe\"","name":"Pipe Meter"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"NameHash":"Read","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructurePipeOneWayValve":{"prefab":{"prefabName":"StructurePipeOneWayValve","prefabHash":1580412404,"desc":"The one way valve moves gas in one direction only: from input side to output side. It only permits flow if the input pressure is higher than output pressure.\n","name":"One Way Valve (Gas)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Maximum":"Read","NameHash":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Pipe","role":"Input"},{"typ":"Pipe","role":"Output"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructurePipeOrgan":{"prefab":{"prefabName":"StructurePipeOrgan","prefabHash":1305252611,"desc":"The pipe organ can be attached to one end of a Kit (Pipe Valve). The length of the pipe after the pipe organ changes the pitch of the note it will play when the valve is opened. Use Logic to open and close the valves to create some custom tunes for your base or an audible warning.","name":"Pipe Organ"},"structure":{"smallGrid":true}},"StructurePipeRadiator":{"prefab":{"prefabName":"StructurePipeRadiator","prefabHash":1696603168,"desc":"A simple heat exchanger, pipe radiators can be placed on pipes to shed or gain heat, depending on the temperature of the surrounding atmosphere. If the atmosphere is hotter, heat will be added the gas within the pipe network, and visa versa if colder. In a vacuum, heat will be radiated. \nThe speed of heat gain or loss will depend on the gas in question. Adding multiple radiators will speed up heat transfer.","name":"Pipe Convection Radiator"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"NameHash":"Read","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructurePipeRadiatorFlat":{"prefab":{"prefabName":"StructurePipeRadiatorFlat","prefabHash":-399883995,"desc":"A pipe mounted radiator optimized for radiating heat in vacuums.","name":"Pipe Radiator"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"NameHash":"Read","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructurePipeRadiatorFlatLiquid":{"prefab":{"prefabName":"StructurePipeRadiatorFlatLiquid","prefabHash":2024754523,"desc":"A liquid pipe mounted radiator optimized for radiating heat in vacuums.","name":"Pipe Radiator Liquid"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"NameHash":"Read","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructurePipeStraight":{"prefab":{"prefabName":"StructurePipeStraight","prefabHash":73728932,"desc":"You can upgrade this pipe to an Insulated Pipe (Straight) using an Kit (Insulated Pipe) and a Wrench.","name":"Pipe (Straight)"},"structure":{"smallGrid":true}},"StructurePipeTJunction":{"prefab":{"prefabName":"StructurePipeTJunction","prefabHash":-913817472,"desc":"You can upgrade this pipe to an Insulated Pipe (T Junction) using an Kit (Insulated Pipe) and a Wrench.","name":"Pipe (T Junction)"},"structure":{"smallGrid":true}},"StructurePlanter":{"prefab":{"prefabName":"StructurePlanter","prefabHash":-1125641329,"desc":"A small planter for decorative or hydroponic purposes. Can be connected to Water, or watered manually using a Water Bottle or Liquid Canister (Water).","name":"Planter"},"structure":{"smallGrid":true},"slots":[{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"}]},"StructurePlatformLadderOpen":{"prefab":{"prefabName":"StructurePlatformLadderOpen","prefabHash":1559586682,"desc":"","name":"Ladder Platform"},"structure":{"smallGrid":false}},"StructurePlinth":{"prefab":{"prefabName":"StructurePlinth","prefabHash":989835703,"desc":"","name":"Plinth"},"structure":{"smallGrid":true},"slots":[{"name":"","typ":"None"}]},"StructurePortablesConnector":{"prefab":{"prefabName":"StructurePortablesConnector","prefabHash":-899013427,"desc":"","name":"Portables Connector"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"Maximum":"Read","NameHash":"Read","Open":"ReadWrite","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"","typ":"None"}],"device":{"connectionList":[{"typ":"Pipe","role":"Input"},{"typ":"PipeLiquid","role":"Input2"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":true,"hasReagents":false}},"StructurePowerConnector":{"prefab":{"prefabName":"StructurePowerConnector","prefabHash":-782951720,"desc":"Attaches a Kit (Portable Generator) to a power network.","name":"Power Connector"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"NameHash":"Read","Open":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Portable Slot","typ":"None"}],"device":{"connectionList":[{"typ":"Power","role":"Input"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":true,"hasReagents":false}},"StructurePowerTransmitter":{"prefab":{"prefabName":"StructurePowerTransmitter","prefabHash":-65087121,"desc":"The Norsec Wireless Power Transmitter is an uni-directional, A-to-B, far field microwave electrical transmission system.The rotatable base transmitter delivers a narrow, non-lethal microwave beam to a dedicated base receiver.\nThe transmitter must be aligned to the base station in order to transmit any power. The brightness of the transmitter's collimator arc provides an indication of transmission intensity. Note that there is an attrition over longer ranges, so the unit requires more power over greater distances to deliver the same output.","name":"Microwave Power Transmitter"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Charge":"Read","Error":"Read","Horizontal":"ReadWrite","Mode":"Read","NameHash":"Read","On":"ReadWrite","PositionX":"Read","PositionY":"Read","PositionZ":"Read","Power":"Read","PowerActual":"Read","PowerPotential":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Vertical":"ReadWrite"},"modes":{"0":"Unlinked","1":"Linked"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"Input"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":true,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructurePowerTransmitterOmni":{"prefab":{"prefabName":"StructurePowerTransmitterOmni","prefabHash":-327468845,"desc":"","name":"Power Transmitter Omni"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Error":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"Input"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructurePowerTransmitterReceiver":{"prefab":{"prefabName":"StructurePowerTransmitterReceiver","prefabHash":1195820278,"desc":"The Norsec Wireless Power Transmitter is an uni-directional, A-to-B, far field microwave electrical transmission system.The rotatable base transmitter delivers a narrow, non-lethal microwave beam to a dedicated base receiver.\nThe transmitter must be aligned to the base station in order to transmit any power. The brightness of the transmitter's collimator arc provides an indication of transmission intensity. Note that there is an attrition over longer ranges, so the unit requires more power over greater distances to deliver the same output.Connects to Logic Transmitter","name":"Microwave Power Receiver"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Charge":"Read","Error":"Read","Horizontal":"ReadWrite","Mode":"Read","NameHash":"Read","On":"ReadWrite","PositionX":"Read","PositionY":"Read","PositionZ":"Read","Power":"Read","PowerActual":"Read","PowerPotential":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Vertical":"ReadWrite"},"modes":{"0":"Unlinked","1":"Linked"},"transmissionReceiver":false,"wirelessLogic":true,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"Output"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":true,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructurePowerUmbilicalFemale":{"prefab":{"prefabName":"StructurePowerUmbilicalFemale","prefabHash":101488029,"desc":"","name":"Umbilical Socket (Power)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"NameHash":"Read","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Power","role":"Output"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructurePowerUmbilicalFemaleSide":{"prefab":{"prefabName":"StructurePowerUmbilicalFemaleSide","prefabHash":1922506192,"desc":"","name":"Umbilical Socket Angle (Power)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"NameHash":"Read","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Power","role":"Output"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructurePowerUmbilicalMale":{"prefab":{"prefabName":"StructurePowerUmbilicalMale","prefabHash":1529453938,"desc":"0.Left\n1.Center\n2.Right","name":"Umbilical (Power)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Error":"Read","Lock":"ReadWrite","Mode":"Read","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"modes":{"0":"Left","1":"Center","2":"Right"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"Input"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":true,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructurePoweredVent":{"prefab":{"prefabName":"StructurePoweredVent","prefabHash":938836756,"desc":"Great for moving large quantities of air into a pipe network. Its primary purpose is for the creation of multi-grid airlocks. It can effeciently pull a vacuum on a small to medium sized room.","name":"Powered Vent"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Error":"Read","Lock":"ReadWrite","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","PressureExternal":"ReadWrite","ReferenceId":"Read","RequiredPower":"Read"},"modes":{"0":"Outward","1":"Inward"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Pipe","role":"Output"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":true,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructurePoweredVentLarge":{"prefab":{"prefabName":"StructurePoweredVentLarge","prefabHash":-785498334,"desc":"For building large scale airlock systems and pressurised hangers, a bigger and bolder version of the Powered Vent that can effeciently pull a vacuum in large room.","name":"Powered Vent Large"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Error":"Read","Lock":"ReadWrite","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","PressureExternal":"ReadWrite","ReferenceId":"Read","RequiredPower":"Read"},"modes":{"0":"Outward","1":"Inward"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Pipe","role":"Output"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":true,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructurePressurantValve":{"prefab":{"prefabName":"StructurePressurantValve","prefabHash":23052817,"desc":"Pumps gas into a liquid pipe in order to raise the pressure","name":"Pressurant Valve"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Error":"Read","Lock":"ReadWrite","Maximum":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Pipe","role":"Input"},{"typ":"PipeLiquid","role":"Output"},{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructurePressureFedGasEngine":{"prefab":{"prefabName":"StructurePressureFedGasEngine","prefabHash":-624011170,"desc":"Inefficient but very powerful, the Pressure Fed Gas Engine moves gas from each of its two inputs based on the pressure of the input pipes. Control the mixing ratio of fuels by tweaking the input pressures to target a 2:1 mix of Volatiles to Oxygen gas. Chilling propellant gasses or using Nitrous Oxide as an oxydizer will result in even higher thrust outputs.","name":"Pressure Fed Gas Engine"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Combustion":"Read","Error":"Read","NameHash":"Read","On":"ReadWrite","PassedMoles":"Read","Power":"Read","PrefabHash":"Read","Pressure":"Read","RatioCarbonDioxide":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioVolatiles":"Read","RatioWater":"Read","ReferenceId":"Read","RequiredPower":"Read","Temperature":"Read","Throttle":"ReadWrite","TotalMoles":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Pipe","role":"Input"},{"typ":"Pipe","role":"Input2"},{"typ":"PowerAndData","role":"Output"}],"hasActivateState":false,"hasAtmosphere":true,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructurePressureFedLiquidEngine":{"prefab":{"prefabName":"StructurePressureFedLiquidEngine","prefabHash":379750958,"desc":"Highly efficient and powerful, the Pressure Fed Liquid Engine is a challenging engine to run in a stable configuration. Liquid is pulled from the input into the engine based on the input gas pressure. Some gas is also moved in this process so Stationeers will need to devise a system to maintain a high gas pressure in the liquid input pipe. The second liquid pipe connection is an optional heat-exchanger connection which exchanges heat between the pipes contents and the engine bell, the Setting variable drives the effectiveness of the heat-exchanger.","name":"Pressure Fed Liquid Engine"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Combustion":"Read","Error":"Read","Maximum":"Read","NameHash":"Read","On":"ReadWrite","PassedMoles":"Read","Power":"Read","PrefabHash":"Read","Pressure":"Read","Ratio":"Read","RatioCarbonDioxide":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioVolatiles":"Read","RatioWater":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite","Temperature":"Read","Throttle":"ReadWrite","TotalMoles":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PipeLiquid","role":"Input"},{"typ":"PipeLiquid","role":"Input2"},{"typ":"PowerAndData","role":"Output"}],"hasActivateState":false,"hasAtmosphere":true,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructurePressurePlateLarge":{"prefab":{"prefabName":"StructurePressurePlateLarge","prefabHash":-2008706143,"desc":"","name":"Trigger Plate (Large)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"NameHash":"Read","PrefabHash":"Read","ReferenceId":"Read","Setting":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Data","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructurePressurePlateMedium":{"prefab":{"prefabName":"StructurePressurePlateMedium","prefabHash":1269458680,"desc":"","name":"Trigger Plate (Medium)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"NameHash":"Read","PrefabHash":"Read","ReferenceId":"Read","Setting":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Data","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructurePressurePlateSmall":{"prefab":{"prefabName":"StructurePressurePlateSmall","prefabHash":-1536471028,"desc":"","name":"Trigger Plate (Small)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"NameHash":"Read","PrefabHash":"Read","ReferenceId":"Read","Setting":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Data","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructurePressureRegulator":{"prefab":{"prefabName":"StructurePressureRegulator","prefabHash":209854039,"desc":"Controlling the flow of gas between two pipe networks, pressure regulators shift gas until a set pressure on the outlet side is achieved, or the gas supply is exhausted. The back pressure regulator, by contrast, will only operate when pressure on the intake side exceeds the set value. With a max pressure of over 20,000kPa, it requires power to operate.","name":"Pressure Regulator"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Error":"Read","Lock":"ReadWrite","Maximum":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Pipe","role":"Input"},{"typ":"Pipe","role":"Output"},{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureProximitySensor":{"prefab":{"prefabName":"StructureProximitySensor","prefabHash":568800213,"desc":"Will be triggered if there is a player in the range of the sensor (as defined by the setting dial). The quantity variable will show the number of players. You can configure the sensor to only detect players who hold the correct Access Card using a Cartridge (Access Controller) in a Handheld Tablet.","name":"Proximity Sensor"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Activate":"Read","NameHash":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PowerAndData","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructurePumpedLiquidEngine":{"prefab":{"prefabName":"StructurePumpedLiquidEngine","prefabHash":-2031440019,"desc":"Liquid propellants bring greater efficiencies with Pumped Liquid Engine. Two inputs are provided so Stationeers can seperate their fuels, the Setting variable controls the mixing ratio of the inputs. The engine is designed to run on Liquid Volatiles and Liquid Oxygen, some Stationeers have reported excessive thrust values by switching to Liquid Nitrous Oxide","name":"Pumped Liquid Engine"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Combustion":"Read","Error":"Read","Maximum":"Read","NameHash":"Read","On":"ReadWrite","PassedMoles":"Read","Power":"Read","PrefabHash":"Read","Pressure":"Read","Ratio":"Read","RatioCarbonDioxide":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioVolatiles":"Read","RatioWater":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite","Temperature":"Read","Throttle":"ReadWrite","TotalMoles":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PipeLiquid","role":"None"},{"typ":"PipeLiquid","role":"None"},{"typ":"PowerAndData","role":"Output"}],"hasActivateState":false,"hasAtmosphere":true,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructurePurgeValve":{"prefab":{"prefabName":"StructurePurgeValve","prefabHash":-737232128,"desc":"Allows for removal of pressurant gas and evaporated liquids from a liquid pipe. Similar in function to a Back Pressure Regulator the Purge Valve moves gas from the input liquid pipe to the output gas pipe aiming to keep the pressure of the input at the target setting.","name":"Purge Valve"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Error":"Read","Lock":"ReadWrite","Maximum":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PipeLiquid","role":"Input"},{"typ":"Pipe","role":"Output"},{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureRailing":{"prefab":{"prefabName":"StructureRailing","prefabHash":-1756913871,"desc":"\"Safety third.\"","name":"Railing Industrial (Type 1)"},"structure":{"smallGrid":false}},"StructureRecycler":{"prefab":{"prefabName":"StructureRecycler","prefabHash":-1633947337,"desc":"A device for collecting the raw resources while destroying an item. Produces Reagent Mix containing packages of reagents. Pass these through the Centrifuge to gain back the source ores. Plants and organic matter passed through will create Biomass, which when passed through the Centrifuge will produce Biomass.","name":"Recycler"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"1":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"Activate":"ReadWrite","ClearMemory":"Write","Error":"Read","ExportCount":"Read","ImportCount":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Reagents":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Import","typ":"None"},{"name":"Export","typ":"None"}],"device":{"connectionList":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":true}},"StructureRefrigeratedVendingMachine":{"prefab":{"prefabName":"StructureRefrigeratedVendingMachine","prefabHash":-1577831321,"desc":"The refrigerated OmniKool vending machine is an advanced version of the standard Vending Machine, which maintains an optimum pressure and constant temperature of -130 degrees C, to prevent food spoilage. It can hold up to 100 stacks.\nThe OmniKool also has an in-built Stacker, allowing players to set the stack sizes of any items ADDED to the device. The unit's default stack size is 50.\nNOTE: altering stack sizes DOES NOT update existing stacks within the machine, only those subsequently added. ","name":"Refrigerated Vending Machine"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{},"1":{},"2":{},"3":{},"4":{},"5":{},"6":{},"7":{},"8":{},"9":{},"10":{},"11":{},"12":{},"13":{},"14":{},"15":{},"16":{},"17":{},"18":{},"19":{},"20":{},"21":{},"22":{},"23":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"42":{},"43":{},"44":{},"45":{},"46":{},"47":{},"48":{},"49":{},"50":{},"51":{},"52":{},"53":{},"54":{},"55":{},"56":{},"57":{},"58":{},"59":{},"60":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"67":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"86":{},"87":{},"88":{},"89":{},"90":{},"91":{},"92":{},"93":{},"94":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"101":{}},"logicTypes":{"Activate":"ReadWrite","ClearMemory":"Write","Combustion":"Read","Error":"Read","ExportCount":"Read","ImportCount":"Read","Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Pressure":"Read","Quantity":"Read","Ratio":"Read","RatioCarbonDioxide":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioVolatiles":"Read","RatioWater":"Read","ReferenceId":"Read","RequestHash":"ReadWrite","RequiredPower":"Read","Setting":"ReadWrite","Temperature":"Read","TotalMoles":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Import","typ":"None"},{"name":"Export","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"}],"device":{"connectionList":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":true,"hasAtmosphere":true,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureReinforcedCompositeWindow":{"prefab":{"prefabName":"StructureReinforcedCompositeWindow","prefabHash":2027713511,"desc":"Enjoy vistas of even the most savage, alien landscapes with these heavy duty window frames, which are resistant to pressure differentials up to 1MPa.","name":"Reinforced Window (Composite)"},"structure":{"smallGrid":false}},"StructureReinforcedCompositeWindowSteel":{"prefab":{"prefabName":"StructureReinforcedCompositeWindowSteel","prefabHash":-816454272,"desc":"Enjoy vistas of even the most savage, alien landscapes with these heavy duty window frames, which are resistant to pressure differentials up to 1MPa.","name":"Reinforced Window (Composite Steel)"},"structure":{"smallGrid":false}},"StructureReinforcedWallPaddedWindow":{"prefab":{"prefabName":"StructureReinforcedWallPaddedWindow","prefabHash":1939061729,"desc":"Enjoy vistas of even the most savage, alien landscapes with these heavy duty window frames, which are resistant to pressure differentials up to 1MPa.","name":"Reinforced Window (Padded)"},"structure":{"smallGrid":false}},"StructureReinforcedWallPaddedWindowThin":{"prefab":{"prefabName":"StructureReinforcedWallPaddedWindowThin","prefabHash":158502707,"desc":"Enjoy vistas of even the most savage, alien landscapes with these heavy duty window frames, which are resistant to pressure differentials up to 1MPa.","name":"Reinforced Window (Thin)"},"structure":{"smallGrid":false}},"StructureRocketAvionics":{"prefab":{"prefabName":"StructureRocketAvionics","prefabHash":808389066,"desc":"","name":"Rocket Avionics"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Acceleration":"Read","Apex":"Read","AutoLand":"Write","AutoShutOff":"ReadWrite","BurnTimeRemaining":"Read","Chart":"Read","ChartedNavPoints":"Read","CurrentCode":"Read","Density":"Read","DestinationCode":"ReadWrite","Discover":"Read","DryMass":"Read","Error":"Read","FlightControlRule":"Read","Mass":"Read","MinedQuantity":"Read","Mode":"ReadWrite","NameHash":"Read","NavPoints":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Progress":"Read","Quantity":"Read","RatioCarbonDioxide":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioVolatiles":"Read","RatioWater":"Read","ReEntryAltitude":"Read","Reagents":"Read","ReferenceId":"Read","RequiredPower":"Read","Richness":"Read","Sites":"Read","Size":"Read","Survey":"Read","Temperature":"Read","Thrust":"Read","ThrustToWeight":"Read","TimeToDestination":"Read","TotalMoles":"Read","TotalQuantity":"Read","VelocityRelativeY":"Read","Weight":"Read"},"modes":{"0":"Invalid","1":"None","2":"Mine","3":"Survey","4":"Discover","5":"Chart"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":true}},"StructureRocketCelestialTracker":{"prefab":{"prefabName":"StructureRocketCelestialTracker","prefabHash":997453927,"desc":"The Celestial Tracker can be placed in Rockets and when turned on will provide data that can be used to orientate devices such as the Telescope. The Horizontal and Vertical output is localized to the orientation of the tracker. You can calibrate your alignment by comparing the result for the primary body with the output from the Daylight Sensor. Full functionality will only be available in orbit, but you can configure using the primary body. For aligning with the telescope, have the face plate facing up and the cables facing in the same direction as for the telescope and the output values will be aligned.","name":"Rocket Celestial Tracker"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"CelestialHash":"Read","Error":"Read","Horizontal":"Read","Index":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Vertical":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false},"memory":{"instructions":{"BodyOrientation":{"description":"| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | CELESTIAL_INDEX | BYTE_8 |\r\n| 16-31 | HORIZONTAL_DECI_DEGREES | SHORT_16 |\r\n| 32-47 | VERTICAL_DECI_DEGREES | SHORT_16 |\r\n| 48-63 | UNUSED | 16 |","typ":"CelestialTracking","value":1}},"memoryAccess":"Read","memorySize":12}},"StructureRocketCircuitHousing":{"prefab":{"prefabName":"StructureRocketCircuitHousing","prefabHash":150135861,"desc":"","name":"Rocket Circuit Housing"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","LineNumber":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"Error":"Read","LineNumber":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":true},"slots":[{"name":"Programmable Chip","typ":"ProgrammableChip"}],"device":{"connectionList":[{"typ":"PowerAndData","role":"Input"}],"devicePinsLength":6,"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false},"memory":{"memoryAccess":"ReadWrite","memorySize":0}},"StructureRocketEngineTiny":{"prefab":{"prefabName":"StructureRocketEngineTiny","prefabHash":178472613,"desc":"","name":"Rocket Engine (Tiny)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Combustion":"Read","Error":"Read","Lock":"ReadWrite","Maximum":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Pressure":"Read","Ratio":"Read","RatioCarbonDioxide":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioVolatiles":"Read","RatioWater":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite","Temperature":"Read","TotalMoles":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Pipe","role":"Input"},{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":true,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureRocketManufactory":{"prefab":{"prefabName":"StructureRocketManufactory","prefabHash":1781051034,"desc":"","name":"Rocket Manufactory"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{},"1":{}},"logicTypes":{"Activate":"ReadWrite","ClearMemory":"Write","CompletionRatio":"Read","Error":"Read","ExportCount":"Read","ImportCount":"Read","Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","Reagents":"Read","RecipeHash":"ReadWrite","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Import","typ":"Ingot"},{"name":"Export","typ":"None"}],"device":{"connectionList":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":true,"hasReagents":true},"memory":{"instructions":{"DeviceSetLock":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |","typ":"PrinterInstruction","value":6},"EjectAllReagents":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |","typ":"PrinterInstruction","value":8},"EjectReagent":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |","typ":"PrinterInstruction","value":7},"ExecuteRecipe":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |","typ":"PrinterInstruction","value":2},"JumpIfNextInvalid":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":4},"JumpToAddress":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":5},"MissingRecipeReagent":{"description":"| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |","typ":"PrinterInstruction","value":9},"StackPointer":{"description":"| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":1},"WaitUntilNextValid":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |","typ":"PrinterInstruction","value":3}},"memoryAccess":"ReadWrite","memorySize":64}},"StructureRocketMiner":{"prefab":{"prefabName":"StructureRocketMiner","prefabHash":-2087223687,"desc":"Gathers available resources at the rocket's current space location.","name":"Rocket Miner"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{},"1":{}},"logicTypes":{"ClearMemory":"Write","DrillCondition":"Read","Error":"Read","ExportCount":"Read","ImportCount":"Read","Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Export","typ":"None"},{"name":"Drill Head Slot","typ":"DrillHead"}],"device":{"connectionList":[{"typ":"Chute","role":"Output"},{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureRocketScanner":{"prefab":{"prefabName":"StructureRocketScanner","prefabHash":2014252591,"desc":"","name":"Rocket Scanner"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{}},"logicTypes":{"Error":"Read","Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Scanner Head Slot","typ":"ScanningHead"}],"device":{"connectionList":[{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureRocketTower":{"prefab":{"prefabName":"StructureRocketTower","prefabHash":-654619479,"desc":"","name":"Launch Tower"},"structure":{"smallGrid":false}},"StructureRocketTransformerSmall":{"prefab":{"prefabName":"StructureRocketTransformerSmall","prefabHash":518925193,"desc":"","name":"Transformer Small (Rocket)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Error":"Read","Lock":"ReadWrite","Maximum":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Power","role":"Input"},{"typ":"Power","role":"Output"},{"typ":"Data","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureRover":{"prefab":{"prefabName":"StructureRover","prefabHash":806513938,"desc":"","name":"Rover Frame"},"structure":{"smallGrid":false}},"StructureSDBHopper":{"prefab":{"prefabName":"StructureSDBHopper","prefabHash":-1875856925,"desc":"","name":"SDB Hopper"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{}},"logicTypes":{"ClearMemory":"Write","ImportCount":"Read","NameHash":"Read","Open":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Import","typ":"None"}],"device":{"connectionList":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":true,"hasReagents":false}},"StructureSDBHopperAdvanced":{"prefab":{"prefabName":"StructureSDBHopperAdvanced","prefabHash":467225612,"desc":"","name":"SDB Hopper Advanced"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{}},"logicTypes":{"ClearMemory":"Write","ImportCount":"Read","Lock":"ReadWrite","NameHash":"Read","Open":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Import","typ":"None"}],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"},{"typ":"Chute","role":"Input"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":false,"hasOpenState":true,"hasReagents":false}},"StructureSDBSilo":{"prefab":{"prefabName":"StructureSDBSilo","prefabHash":1155865682,"desc":"The majestic silo holds large quantities of almost anything. While it is doing that, it cannot be deconstructed. Note also, that any food you put into a silo is likely to decay extremely rapidly. The silo can hold up to 600 stacks.","name":"SDB Silo"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{},"1":{}},"logicTypes":{"Activate":"ReadWrite","ClearMemory":"Write","Error":"Read","ExportCount":"Read","ImportCount":"Read","Lock":"ReadWrite","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","RequiredPower":"Read"},"modes":{"0":"Mode0","1":"Mode1"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Import","typ":"None"},{"name":"Export","typ":"None"}],"device":{"connectionList":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":true,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureSatelliteDish":{"prefab":{"prefabName":"StructureSatelliteDish","prefabHash":439026183,"desc":"This medium communications unit can be used to communicate with nearby trade vessels.\n \nWhen connected to a Computer containing a Communications Motherboard motherboard, a Landingpad Center, and a Vending Machine, this allows Stationeers to contact traders. Adjust its horizontal and vertical attributes either directly or through logic.","name":"Medium Satellite Dish"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Activate":"ReadWrite","BestContactFilter":"ReadWrite","ContactTypeId":"Read","Error":"Read","Horizontal":"ReadWrite","Idle":"Read","InterrogationProgress":"Read","MinimumWattsToContact":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite","SignalID":"Read","SignalStrength":"Read","SizeX":"Read","SizeZ":"Read","TargetPadIndex":"ReadWrite","Vertical":"ReadWrite","WattsReachingContact":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureSecurityPrinter":{"prefab":{"prefabName":"StructureSecurityPrinter","prefabHash":-641491515,"desc":"Any Stationeer concerned about security needs the Harkwell-designed Vigilant-E security printer. Use the Vigilant-E to create a Cartridge (Access Controller), in order to restrict access to different parts of your base via keycards like the Access Card (Blue). The printer also makes a variety of weapons and ammunitions to defend your base against any hostile, aggressive or just slightly rude entites you encounter as you explore the Solar System.\n","name":"Security Printer"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{},"1":{}},"logicTypes":{"Activate":"ReadWrite","ClearMemory":"Write","CompletionRatio":"Read","Error":"Read","ExportCount":"Read","ImportCount":"Read","Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","Reagents":"Read","RecipeHash":"ReadWrite","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Import","typ":"Ingot"},{"name":"Export","typ":"None"}],"device":{"connectionList":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":true,"hasReagents":true},"memory":{"instructions":{"DeviceSetLock":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |","typ":"PrinterInstruction","value":6},"EjectAllReagents":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |","typ":"PrinterInstruction","value":8},"EjectReagent":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |","typ":"PrinterInstruction","value":7},"ExecuteRecipe":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |","typ":"PrinterInstruction","value":2},"JumpIfNextInvalid":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":4},"JumpToAddress":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":5},"MissingRecipeReagent":{"description":"| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |","typ":"PrinterInstruction","value":9},"StackPointer":{"description":"| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":1},"WaitUntilNextValid":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |","typ":"PrinterInstruction","value":3}},"memoryAccess":"ReadWrite","memorySize":64}},"StructureShelf":{"prefab":{"prefabName":"StructureShelf","prefabHash":1172114950,"desc":"","name":"Shelf"},"structure":{"smallGrid":true},"slots":[{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"}]},"StructureShelfMedium":{"prefab":{"prefabName":"StructureShelfMedium","prefabHash":182006674,"desc":"A shelf for putting things on, so you can see them.","name":"Shelf Medium"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"1":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"2":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"3":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"4":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"5":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"6":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"7":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"8":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"9":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"10":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"11":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"12":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"13":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"14":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"NameHash":"Read","Open":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"}],"device":{"connectionList":[],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":true,"hasReagents":false}},"StructureShortCornerLocker":{"prefab":{"prefabName":"StructureShortCornerLocker","prefabHash":1330754486,"desc":"","name":"Short Corner Locker"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"1":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"Lock":"ReadWrite","NameHash":"Read","Open":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"","typ":"None"},{"name":"","typ":"None"}],"device":{"connectionList":[],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":false,"hasOpenState":true,"hasReagents":false}},"StructureShortLocker":{"prefab":{"prefabName":"StructureShortLocker","prefabHash":-554553467,"desc":"","name":"Short Locker"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"1":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"2":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"3":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"4":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"5":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"6":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"7":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"8":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"9":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"Lock":"ReadWrite","NameHash":"Read","Open":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"}],"device":{"connectionList":[],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":false,"hasOpenState":true,"hasReagents":false}},"StructureShower":{"prefab":{"prefabName":"StructureShower","prefabHash":-775128944,"desc":"","name":"Shower"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Activate":"ReadWrite","Maximum":"Read","NameHash":"Read","Open":"ReadWrite","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PipeLiquid","role":"Input"},{"typ":"PipeLiquid","role":"Output"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":true,"hasReagents":false}},"StructureShowerPowered":{"prefab":{"prefabName":"StructureShowerPowered","prefabHash":-1081797501,"desc":"","name":"Shower (Powered)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Error":"Read","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"PipeLiquid","role":"Input"},{"typ":"PipeLiquid","role":"Output"},{"typ":"Power","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureSign1x1":{"prefab":{"prefabName":"StructureSign1x1","prefabHash":879058460,"desc":"","name":"Sign 1x1"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"NameHash":"Read","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureSign2x1":{"prefab":{"prefabName":"StructureSign2x1","prefabHash":908320837,"desc":"","name":"Sign 2x1"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"NameHash":"Read","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureSingleBed":{"prefab":{"prefabName":"StructureSingleBed","prefabHash":-492611,"desc":"Description coming.","name":"Single Bed"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"NameHash":"Read","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Bed","typ":"Entity"}],"device":{"connectionList":[],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureSleeper":{"prefab":{"prefabName":"StructureSleeper","prefabHash":-1467449329,"desc":"","name":"Sleeper"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"Activate":"ReadWrite","EntityState":"Read","Error":"Read","Lock":"ReadWrite","Maximum":"Read","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Bed","typ":"Entity"}],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Pipe","role":"Input"},{"typ":"Power","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureSleeperLeft":{"prefab":{"prefabName":"StructureSleeperLeft","prefabHash":1213495833,"desc":"A horizontal variant of the sleeper. Will keep players hydrated and fed while they are logged out - as long as a breathable atmosphere is provided.","name":"Sleeper Left"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{}},"logicTypes":{"Activate":"ReadWrite","EntityState":"Read","Error":"Read","Lock":"ReadWrite","Maximum":"Read","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"modes":{"0":"Safe","1":"Unsafe","2":"Unpowered"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Player","typ":"Entity"}],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Pipe","role":"Input"},{"typ":"Power","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":true,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureSleeperRight":{"prefab":{"prefabName":"StructureSleeperRight","prefabHash":-1812330717,"desc":"A horizontal variant of the sleeper. Will keep players hydrated and fed while they are logged out - as long as a breathable atmosphere is provided.","name":"Sleeper Right"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{}},"logicTypes":{"Activate":"ReadWrite","EntityState":"Read","Error":"Read","Lock":"ReadWrite","Maximum":"Read","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"modes":{"0":"Safe","1":"Unsafe","2":"Unpowered"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Player","typ":"Entity"}],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Pipe","role":"Input"},{"typ":"Power","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":true,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureSleeperVertical":{"prefab":{"prefabName":"StructureSleeperVertical","prefabHash":-1300059018,"desc":"The vertical variant of the sleeper. Will keep players hydrated and fed while they are logged out - as long as a breathable atmosphere is provided.","name":"Sleeper Vertical"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{}},"logicTypes":{"Activate":"ReadWrite","EntityState":"Read","Error":"Read","Lock":"ReadWrite","Maximum":"Read","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"modes":{"0":"Safe","1":"Unsafe","2":"Unpowered"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Player","typ":"Entity"}],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Pipe","role":"Input"},{"typ":"Power","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":true,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureSleeperVerticalDroid":{"prefab":{"prefabName":"StructureSleeperVerticalDroid","prefabHash":1382098999,"desc":"The Droid Sleeper will recharge robot batteries and equiped suit batteries if present. This sleeper variant is only safe for robots. Entering as a non robot character will cause you to take damage.","name":"Droid Sleeper Vertical"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{}},"logicTypes":{"Activate":"ReadWrite","Error":"Read","Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Player","typ":"Entity"}],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"StructureSmallDirectHeatExchangeGastoGas":{"prefab":{"prefabName":"StructureSmallDirectHeatExchangeGastoGas","prefabHash":1310303582,"desc":"Direct Heat Exchangers equalize the temperature of the two input networks.","name":"Small Direct Heat Exchanger - Gas + Gas"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Maximum":"Read","NameHash":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Pipe","role":"Input"},{"typ":"Pipe","role":"Input2"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureSmallDirectHeatExchangeLiquidtoGas":{"prefab":{"prefabName":"StructureSmallDirectHeatExchangeLiquidtoGas","prefabHash":1825212016,"desc":"Direct Heat Exchangers equalize the temperature of the two input networks.","name":"Small Direct Heat Exchanger - Liquid + Gas "},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Maximum":"Read","NameHash":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PipeLiquid","role":"Input"},{"typ":"Pipe","role":"Input2"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureSmallDirectHeatExchangeLiquidtoLiquid":{"prefab":{"prefabName":"StructureSmallDirectHeatExchangeLiquidtoLiquid","prefabHash":-507770416,"desc":"Direct Heat Exchangers equalize the temperature of the two input networks.","name":"Small Direct Heat Exchanger - Liquid + Liquid"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Maximum":"Read","NameHash":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PipeLiquid","role":"Input"},{"typ":"PipeLiquid","role":"Input2"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureSmallSatelliteDish":{"prefab":{"prefabName":"StructureSmallSatelliteDish","prefabHash":-2138748650,"desc":"This small communications unit can be used to communicate with nearby trade vessels.\n\n When connected to a Computer containing a Communications Motherboard motherboard, a Landingpad Center, and a Vending Machine, this allows Stationeers to contact traders. Adjust its horizontal and vertical attributes either directly or through logic.","name":"Small Satellite Dish"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Activate":"ReadWrite","BestContactFilter":"ReadWrite","ContactTypeId":"Read","Error":"Read","Horizontal":"ReadWrite","Idle":"Read","InterrogationProgress":"Read","MinimumWattsToContact":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite","SignalID":"Read","SignalStrength":"Read","SizeX":"Read","SizeZ":"Read","TargetPadIndex":"ReadWrite","Vertical":"ReadWrite","WattsReachingContact":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"Input"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureSmallTableBacklessDouble":{"prefab":{"prefabName":"StructureSmallTableBacklessDouble","prefabHash":-1633000411,"desc":"","name":"Small (Table Backless Double)"},"structure":{"smallGrid":true}},"StructureSmallTableBacklessSingle":{"prefab":{"prefabName":"StructureSmallTableBacklessSingle","prefabHash":-1897221677,"desc":"","name":"Small (Table Backless Single)"},"structure":{"smallGrid":true}},"StructureSmallTableDinnerSingle":{"prefab":{"prefabName":"StructureSmallTableDinnerSingle","prefabHash":1260651529,"desc":"","name":"Small (Table Dinner Single)"},"structure":{"smallGrid":true}},"StructureSmallTableRectangleDouble":{"prefab":{"prefabName":"StructureSmallTableRectangleDouble","prefabHash":-660451023,"desc":"","name":"Small (Table Rectangle Double)"},"structure":{"smallGrid":true}},"StructureSmallTableRectangleSingle":{"prefab":{"prefabName":"StructureSmallTableRectangleSingle","prefabHash":-924678969,"desc":"","name":"Small (Table Rectangle Single)"},"structure":{"smallGrid":true}},"StructureSmallTableThickDouble":{"prefab":{"prefabName":"StructureSmallTableThickDouble","prefabHash":-19246131,"desc":"","name":"Small (Table Thick Double)"},"structure":{"smallGrid":true}},"StructureSmallTableThickSingle":{"prefab":{"prefabName":"StructureSmallTableThickSingle","prefabHash":-291862981,"desc":"","name":"Small Table (Thick Single)"},"structure":{"smallGrid":true}},"StructureSolarPanel":{"prefab":{"prefabName":"StructureSolarPanel","prefabHash":-2045627372,"desc":"Sinotai's standard solar panels are used for generating power from sunlight. They can be connected to Logic systems, in order to track sunlight, but their reduced during storms and when damaged. You can repair these using some trusty Duct Tape.","name":"Solar Panel"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Charge":"Read","Horizontal":"ReadWrite","Maximum":"Read","NameHash":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Vertical":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureSolarPanel45":{"prefab":{"prefabName":"StructureSolarPanel45","prefabHash":-1554349863,"desc":"Sinotai basic solar panels generate power from sunlight, sitting at 45 degrees to the ground. Their efficiency is reduced during storms and when damaged. You can repair these using some trusty Duct Tape.","name":"Solar Panel (Angled)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Charge":"Read","Horizontal":"ReadWrite","Maximum":"Read","NameHash":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Vertical":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureSolarPanel45Reinforced":{"prefab":{"prefabName":"StructureSolarPanel45Reinforced","prefabHash":930865127,"desc":"This solar panel is resistant to storm damage.","name":"Solar Panel (Heavy Angled)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Charge":"Read","Horizontal":"ReadWrite","Maximum":"Read","NameHash":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Vertical":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureSolarPanelDual":{"prefab":{"prefabName":"StructureSolarPanelDual","prefabHash":-539224550,"desc":"Sinotai dual solar panels are used for generating power from sunlight, with dedicated data and power ports. They can be connected to {Logic systems, in order to track sunlight, but their efficiency is reduced during storms and when damaged. You can repair these using some trusty Duct Tape.","name":"Solar Panel (Dual)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Charge":"Read","Horizontal":"ReadWrite","Maximum":"Read","NameHash":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Vertical":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureSolarPanelDualReinforced":{"prefab":{"prefabName":"StructureSolarPanelDualReinforced","prefabHash":-1545574413,"desc":"This solar panel is resistant to storm damage.","name":"Solar Panel (Heavy Dual)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Charge":"Read","Horizontal":"ReadWrite","Maximum":"Read","NameHash":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Vertical":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureSolarPanelFlat":{"prefab":{"prefabName":"StructureSolarPanelFlat","prefabHash":1968102968,"desc":"Sinotai basic solar panels generate power from sunlight. They lie flat to the ground, and their efficiency is reduced during storms and when damaged. You can repair these using some trusty Duct Tape.","name":"Solar Panel (Flat)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Charge":"Read","Horizontal":"ReadWrite","Maximum":"Read","NameHash":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Vertical":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureSolarPanelFlatReinforced":{"prefab":{"prefabName":"StructureSolarPanelFlatReinforced","prefabHash":1697196770,"desc":"This solar panel is resistant to storm damage.","name":"Solar Panel (Heavy Flat)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Charge":"Read","Horizontal":"ReadWrite","Maximum":"Read","NameHash":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Vertical":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureSolarPanelReinforced":{"prefab":{"prefabName":"StructureSolarPanelReinforced","prefabHash":-934345724,"desc":"This solar panel is resistant to storm damage.","name":"Solar Panel (Heavy)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Charge":"Read","Horizontal":"ReadWrite","Maximum":"Read","NameHash":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Vertical":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureSolidFuelGenerator":{"prefab":{"prefabName":"StructureSolidFuelGenerator","prefabHash":813146305,"desc":"The mainstay of power generation for Stationeers, this device provides 20kW of power. Multiple solid resources can be loaded. While operating, the device will output its maximum power regardless of whether you have captured it or not. Watch for blown wires! It will output much more power than your regular Cable Coil can handle.","name":"Generator (Solid Fuel)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"ClearMemory":"Write","ImportCount":"Read","Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","PowerGeneration":"Read","PrefabHash":"Read","ReferenceId":"Read"},"modes":{"0":"Not Generating","1":"Generating"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Input","typ":"Ore"}],"device":{"connectionList":[{"typ":"Chute","role":"Input"},{"typ":"Data","role":"None"},{"typ":"Power","role":"Output"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":true,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureSorter":{"prefab":{"prefabName":"StructureSorter","prefabHash":-1009150565,"desc":"No amount of automation is complete without some way of moving different items to different parts of a system. The Xigo A2B sorter can be programmed via a computer with a Sorter Motherboard to direct various items into different chute networks. Filtered items are always passed out the righthand side of the sorter, while non filtered items continue straight through.","name":"Sorter"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"1":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"2":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"3":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"ClearMemory":"Write","Error":"Read","ExportCount":"Read","ImportCount":"Read","Lock":"ReadWrite","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Output":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"modes":{"0":"Split","1":"Filter","2":"Logic"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Import","typ":"None"},{"name":"Export","typ":"None"},{"name":"Export 2","typ":"None"},{"name":"Data Disk","typ":"DataDisk"}],"device":{"connectionList":[{"typ":"Chute","role":"Output2"},{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":true,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureStacker":{"prefab":{"prefabName":"StructureStacker","prefabHash":-2020231820,"desc":"A stacker is an important part of any automated chute network. The Xigo ProKompile can be set manually or via logic, to make sure items passing through the stacker are maximized for your storage needs.\nThe ProKompile can stack a wide variety of things such as ingots, as well as splitting stacks into appropriate sizes as needed.","name":"Stacker"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"1":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"2":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"Activate":"ReadWrite","ClearMemory":"Write","Error":"Read","ExportCount":"Read","ImportCount":"Read","Lock":"ReadWrite","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Output":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"modes":{"0":"Automatic","1":"Logic"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Import","typ":"None"},{"name":"Export","typ":"None"},{"name":"Processing","typ":"None"}],"device":{"connectionList":[{"typ":"PowerAndData","role":"None"},{"typ":"Chute","role":"Output"},{"typ":"Chute","role":"Input"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":true,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureStackerReverse":{"prefab":{"prefabName":"StructureStackerReverse","prefabHash":1585641623,"desc":"A stacker is an important part of any automated chute network. The Xigo ProKompile can be set manually or via logic, to make sure items passing through the stacker are maximized for your storage needs. The reversed stacker has power and data on the opposite side.\nThe ProKompile can stack a wide variety of things such as ingots, as well as splitting stacks into appropriate sizes as needed.","name":"Stacker"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"1":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"2":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"Activate":"ReadWrite","ClearMemory":"Write","Error":"Read","ExportCount":"Read","ImportCount":"Read","Lock":"ReadWrite","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Output":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"modes":{"0":"Automatic","1":"Logic"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Import","typ":"None"},{"name":"Export","typ":"None"},{"name":"Export","typ":"None"}],"device":{"connectionList":[{"typ":"PowerAndData","role":"None"},{"typ":"Chute","role":"Output"},{"typ":"Chute","role":"Input"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":true,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureStairs4x2":{"prefab":{"prefabName":"StructureStairs4x2","prefabHash":1405018945,"desc":"","name":"Stairs"},"structure":{"smallGrid":false}},"StructureStairs4x2RailL":{"prefab":{"prefabName":"StructureStairs4x2RailL","prefabHash":155214029,"desc":"","name":"Stairs with Rail (Left)"},"structure":{"smallGrid":false}},"StructureStairs4x2RailR":{"prefab":{"prefabName":"StructureStairs4x2RailR","prefabHash":-212902482,"desc":"","name":"Stairs with Rail (Right)"},"structure":{"smallGrid":false}},"StructureStairs4x2Rails":{"prefab":{"prefabName":"StructureStairs4x2Rails","prefabHash":-1088008720,"desc":"","name":"Stairs with Rails"},"structure":{"smallGrid":false}},"StructureStairwellBackLeft":{"prefab":{"prefabName":"StructureStairwellBackLeft","prefabHash":505924160,"desc":"","name":"Stairwell (Back Left)"},"structure":{"smallGrid":false}},"StructureStairwellBackPassthrough":{"prefab":{"prefabName":"StructureStairwellBackPassthrough","prefabHash":-862048392,"desc":"","name":"Stairwell (Back Passthrough)"},"structure":{"smallGrid":false}},"StructureStairwellBackRight":{"prefab":{"prefabName":"StructureStairwellBackRight","prefabHash":-2128896573,"desc":"","name":"Stairwell (Back Right)"},"structure":{"smallGrid":false}},"StructureStairwellFrontLeft":{"prefab":{"prefabName":"StructureStairwellFrontLeft","prefabHash":-37454456,"desc":"","name":"Stairwell (Front Left)"},"structure":{"smallGrid":false}},"StructureStairwellFrontPassthrough":{"prefab":{"prefabName":"StructureStairwellFrontPassthrough","prefabHash":-1625452928,"desc":"","name":"Stairwell (Front Passthrough)"},"structure":{"smallGrid":false}},"StructureStairwellFrontRight":{"prefab":{"prefabName":"StructureStairwellFrontRight","prefabHash":340210934,"desc":"","name":"Stairwell (Front Right)"},"structure":{"smallGrid":false}},"StructureStairwellNoDoors":{"prefab":{"prefabName":"StructureStairwellNoDoors","prefabHash":2049879875,"desc":"","name":"Stairwell (No Doors)"},"structure":{"smallGrid":false}},"StructureStirlingEngine":{"prefab":{"prefabName":"StructureStirlingEngine","prefabHash":-260316435,"desc":"Harnessing an ancient thermal exploit, the Recurso 'Libra' Stirling Engine generates power via the expansion and contraction of a working gas to drive pistons operating an electrical generator.\n \nWhen high pressure hot gas is supplied into the input pipe, this gas will heat the hot side of the unit, then pass into the output pipe. The cooler side uses the room's ambient atmosphere, which must be kept at a lower temperature and pressure in order to create a differential. Add a working gas by inserting a Gas Canister. The unit must be deactivated when adding or removing canisters, or the working gas may leak into the surrounding atmosphere.\n \nGases with a low molecular mass make the most efficient working gases. Increasing the moles of working gas can result in a greater potential power output. However, overpressuring the unit may have ... sub-optimal results.","name":"Stirling Engine"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{}},"logicTypes":{"Combustion":"Read","EnvironmentEfficiency":"Read","Error":"Read","Maximum":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PowerGeneration":"Read","PrefabHash":"Read","Pressure":"Read","Quantity":"Read","Ratio":"Read","RatioCarbonDioxide":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioVolatiles":"Read","RatioWater":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite","Temperature":"Read","TotalMoles":"Read","Volume":"Read","WorkingGasEfficiency":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Gas Canister","typ":"GasCanister"}],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Pipe","role":"Input"},{"typ":"Pipe","role":"Output"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":true,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureStorageLocker":{"prefab":{"prefabName":"StructureStorageLocker","prefabHash":-793623899,"desc":"","name":"Locker"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"1":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"2":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"3":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"4":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"5":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"6":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"7":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"8":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"9":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"10":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"11":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"12":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"13":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"14":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"15":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"16":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"17":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"18":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"19":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"20":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"21":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"22":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"23":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"24":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"25":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"26":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"27":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"28":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"29":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"Lock":"ReadWrite","NameHash":"Read","Open":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"}],"device":{"connectionList":[],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":false,"hasOpenState":true,"hasReagents":false}},"StructureSuitStorage":{"prefab":{"prefabName":"StructureSuitStorage","prefabHash":255034731,"desc":"As tidy as it is useful, the suit storage rack holds an Eva Suit, Space Helmet and a Jetpack Basic.\nWhen powered and connected to and , it will recharge the suit's batteries, refill the Canister (Oxygen) and your Filter (Nitrogen) Gas Canister. The wastetank will be pumped out to the pipe connected to the waste outlet.\nAll the rack's pipes must be connected or the unit will show an error state, but it will still charge the battery.","name":"Suit Storage"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","Lock":"ReadWrite","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","On":"ReadWrite","Open":"ReadWrite","PrefabHash":"Read","Pressure":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"1":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Pressure":"Read","PressureAir":"Read","PressureWaste":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"2":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Pressure":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"Error":"Read","Maximum":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Helmet","typ":"Helmet"},{"name":"Suit","typ":"Suit"},{"name":"Back","typ":"Back"}],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"},{"typ":"Pipe","role":"Input"},{"typ":"Pipe","role":"Input2"},{"typ":"Pipe","role":"Output"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureTankBig":{"prefab":{"prefabName":"StructureTankBig","prefabHash":-1606848156,"desc":"","name":"Large Tank"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Combustion":"Read","Maximum":"Read","NameHash":"Read","Open":"ReadWrite","PrefabHash":"Read","Pressure":"Read","Ratio":"Read","RatioCarbonDioxide":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioVolatiles":"Read","RatioWater":"Read","ReferenceId":"Read","Setting":"ReadWrite","Temperature":"Read","TotalMoles":"Read","Volume":"Read","VolumeOfLiquid":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Pipe","role":"Input"}],"hasActivateState":false,"hasAtmosphere":true,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":true,"hasReagents":false}},"StructureTankBigInsulated":{"prefab":{"prefabName":"StructureTankBigInsulated","prefabHash":1280378227,"desc":"","name":"Tank Big (Insulated)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Combustion":"Read","Maximum":"Read","NameHash":"Read","Open":"ReadWrite","PrefabHash":"Read","Pressure":"Read","Ratio":"Read","RatioCarbonDioxide":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioVolatiles":"Read","RatioWater":"Read","ReferenceId":"Read","Setting":"ReadWrite","Temperature":"Read","TotalMoles":"Read","Volume":"Read","VolumeOfLiquid":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Pipe","role":"Input"}],"hasActivateState":false,"hasAtmosphere":true,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":true,"hasReagents":false}},"StructureTankConnector":{"prefab":{"prefabName":"StructureTankConnector","prefabHash":-1276379454,"desc":"Tank connectors are basic mounting devices that allow you to attach a Portable Gas Tank to a gas pipe network.","name":"Tank Connector"},"structure":{"smallGrid":true},"slots":[{"name":"","typ":"None"}]},"StructureTankConnectorLiquid":{"prefab":{"prefabName":"StructureTankConnectorLiquid","prefabHash":1331802518,"desc":"These basic mounting devices allow you to attach a Portable Liquid Tank to a liquid pipe network.","name":"Liquid Tank Connector"},"structure":{"smallGrid":true},"slots":[{"name":"Portable Slot","typ":"None"}]},"StructureTankSmall":{"prefab":{"prefabName":"StructureTankSmall","prefabHash":1013514688,"desc":"","name":"Small Tank"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Combustion":"Read","Maximum":"Read","NameHash":"Read","Open":"ReadWrite","PrefabHash":"Read","Pressure":"Read","Ratio":"Read","RatioCarbonDioxide":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioVolatiles":"Read","RatioWater":"Read","ReferenceId":"Read","Setting":"ReadWrite","Temperature":"Read","TotalMoles":"Read","Volume":"Read","VolumeOfLiquid":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Pipe","role":"None"}],"hasActivateState":false,"hasAtmosphere":true,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":true,"hasReagents":false}},"StructureTankSmallAir":{"prefab":{"prefabName":"StructureTankSmallAir","prefabHash":955744474,"desc":"","name":"Small Tank (Air)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Combustion":"Read","Maximum":"Read","NameHash":"Read","Open":"ReadWrite","PrefabHash":"Read","Pressure":"Read","Ratio":"Read","RatioCarbonDioxide":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioVolatiles":"Read","RatioWater":"Read","ReferenceId":"Read","Setting":"ReadWrite","Temperature":"Read","TotalMoles":"Read","Volume":"Read","VolumeOfLiquid":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Pipe","role":"None"}],"hasActivateState":false,"hasAtmosphere":true,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":true,"hasReagents":false}},"StructureTankSmallFuel":{"prefab":{"prefabName":"StructureTankSmallFuel","prefabHash":2102454415,"desc":"","name":"Small Tank (Fuel)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Combustion":"Read","Maximum":"Read","NameHash":"Read","Open":"ReadWrite","PrefabHash":"Read","Pressure":"Read","Ratio":"Read","RatioCarbonDioxide":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioVolatiles":"Read","RatioWater":"Read","ReferenceId":"Read","Setting":"ReadWrite","Temperature":"Read","TotalMoles":"Read","Volume":"Read","VolumeOfLiquid":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Pipe","role":"None"}],"hasActivateState":false,"hasAtmosphere":true,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":true,"hasReagents":false}},"StructureTankSmallInsulated":{"prefab":{"prefabName":"StructureTankSmallInsulated","prefabHash":272136332,"desc":"","name":"Tank Small (Insulated)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Combustion":"Read","Maximum":"Read","NameHash":"Read","Open":"ReadWrite","PrefabHash":"Read","Pressure":"Read","Ratio":"Read","RatioCarbonDioxide":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"Read","RatioNitrogen":"Read","RatioNitrousOxide":"Read","RatioOxygen":"Read","RatioPollutant":"Read","RatioPollutedWater":"Read","RatioSteam":"Read","RatioVolatiles":"Read","RatioWater":"Read","ReferenceId":"Read","Setting":"ReadWrite","Temperature":"Read","TotalMoles":"Read","Volume":"Read","VolumeOfLiquid":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Pipe","role":"Input"}],"hasActivateState":false,"hasAtmosphere":true,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":true,"hasReagents":false}},"StructureToolManufactory":{"prefab":{"prefabName":"StructureToolManufactory","prefabHash":-465741100,"desc":"No mission can be completed without the proper tools. The Norsec ThuulDek manufactory can fabricate almost any tool or hand-held device a Stationeer may need to complete their mission, as well as a variety of delightful paints.\nUpgrade the device using a Tool Printer Mod for additional recipes and faster processing speeds.","name":"Tool Manufactory"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{},"1":{}},"logicTypes":{"Activate":"ReadWrite","ClearMemory":"Write","CompletionRatio":"Read","Error":"Read","ExportCount":"Read","ImportCount":"Read","Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","Reagents":"Read","RecipeHash":"ReadWrite","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Import","typ":"Ingot"},{"name":"Export","typ":"None"}],"device":{"connectionList":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":true,"hasReagents":true},"memory":{"instructions":{"DeviceSetLock":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |","typ":"PrinterInstruction","value":6},"EjectAllReagents":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |","typ":"PrinterInstruction","value":8},"EjectReagent":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |","typ":"PrinterInstruction","value":7},"ExecuteRecipe":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |","typ":"PrinterInstruction","value":2},"JumpIfNextInvalid":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":4},"JumpToAddress":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":5},"MissingRecipeReagent":{"description":"| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |","typ":"PrinterInstruction","value":9},"StackPointer":{"description":"| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":1},"WaitUntilNextValid":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |","typ":"PrinterInstruction","value":3}},"memoryAccess":"ReadWrite","memorySize":64}},"StructureTorpedoRack":{"prefab":{"prefabName":"StructureTorpedoRack","prefabHash":1473807953,"desc":"","name":"Torpedo Rack"},"structure":{"smallGrid":true},"slots":[{"name":"Torpedo","typ":"Torpedo"},{"name":"Torpedo","typ":"Torpedo"},{"name":"Torpedo","typ":"Torpedo"},{"name":"Torpedo","typ":"Torpedo"},{"name":"Torpedo","typ":"Torpedo"},{"name":"Torpedo","typ":"Torpedo"},{"name":"Torpedo","typ":"Torpedo"},{"name":"Torpedo","typ":"Torpedo"}]},"StructureTraderWaypoint":{"prefab":{"prefabName":"StructureTraderWaypoint","prefabHash":1570931620,"desc":"","name":"Trader Waypoint"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Error":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureTransformer":{"prefab":{"prefabName":"StructureTransformer","prefabHash":-1423212473,"desc":"The large Norsec transformer is a critical component of extended electrical networks, controlling the maximum power that will flow down a cable. To prevent overloading, output can be set from 0 to 50,000W. \nNote that transformers operate as data isolators, preventing data flowing into any network beyond it.","name":"Transformer (Large)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Error":"Read","Lock":"ReadWrite","Maximum":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"Input"},{"typ":"Power","role":"Output"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureTransformerMedium":{"prefab":{"prefabName":"StructureTransformerMedium","prefabHash":-1065725831,"desc":"Transformers control the maximum power that will flow down a sub-network of cables, to prevent overloading electrical systems. \nMedium transformers are used in larger setups where more than 5000W is required, with output that can be set to a maximum of 25000W.\nNote that transformers also operate as data isolators, preventing data flowing into any network beyond it.","name":"Transformer (Medium)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Error":"Read","Lock":"ReadWrite","Maximum":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Power","role":"Input"},{"typ":"PowerAndData","role":"Output"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureTransformerMediumReversed":{"prefab":{"prefabName":"StructureTransformerMediumReversed","prefabHash":833912764,"desc":"Transformers control the maximum power that will flow down a sub-network of cables, to prevent overloading electrical systems. \nMedium transformers are used in larger setups where more than 5000W is required, with output that can be set to a maximum of 25000W.\nNote that transformers also operate as data isolators, preventing data flowing into any network beyond it.","name":"Transformer Reversed (Medium)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Error":"Read","Lock":"ReadWrite","Maximum":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Power","role":"Output"},{"typ":"PowerAndData","role":"Input"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureTransformerSmall":{"prefab":{"prefabName":"StructureTransformerSmall","prefabHash":-890946730,"desc":"Transformers control the maximum power that will flow down a cable subnetwork, to prevent overloading electrical systems. Output on small transformers can be set from 0 to 5000W.\nNote that transformers operate as data isolators, preventing data flowing into any network beyond it.","name":"Transformer (Small)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Error":"Read","Lock":"ReadWrite","Maximum":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PowerAndData","role":"Input"},{"typ":"Power","role":"Output"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureTransformerSmallReversed":{"prefab":{"prefabName":"StructureTransformerSmallReversed","prefabHash":1054059374,"desc":"Transformers control the maximum power that will flow down a cable subnetwork, to prevent overloading electrical systems. Output on small transformers can be set from 0 to 5000W.\nNote that transformers operate as data isolators, preventing data flowing into any network beyond it.","name":"Transformer Reversed (Small)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Error":"Read","Lock":"ReadWrite","Maximum":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Power","role":"Output"},{"typ":"PowerAndData","role":"Input"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureTurbineGenerator":{"prefab":{"prefabName":"StructureTurbineGenerator","prefabHash":1282191063,"desc":"","name":"Turbine Generator"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"NameHash":"Read","PowerGeneration":"Read","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureTurboVolumePump":{"prefab":{"prefabName":"StructureTurboVolumePump","prefabHash":1310794736,"desc":"Shifts 10 times more gas than a basic Volume Pump, with a mode that can be set to flow in either direction.","name":"Turbo Volume Pump (Gas)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Error":"Read","Lock":"ReadWrite","Maximum":"Read","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"modes":{"0":"Right","1":"Left"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"},{"typ":"Pipe","role":"Output"},{"typ":"Pipe","role":"Input"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":true,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureUnloader":{"prefab":{"prefabName":"StructureUnloader","prefabHash":750118160,"desc":"The Xigo Re:Gurge is a handy unit for unloading any items inserted into it, and feeding them into a chute network. For instance, if you add a full Mining Belt, the Re:Gurge will empty a mining belt of its contents, insert them into the chute network, then insert the mining belt itself. A Sorter is recommended to reclaim the mining belt.\n\nOutput = 0 exporting the main item\nOutput = 1 exporting items inside and eventually the main item.","name":"Unloader"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"},"1":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"ClearMemory":"Write","Error":"Read","ExportCount":"Read","ImportCount":"Read","Lock":"ReadWrite","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Output":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"modes":{"0":"Automatic","1":"Logic"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Import","typ":"None"},{"name":"Export","typ":"None"}],"device":{"connectionList":[{"typ":"PowerAndData","role":"None"},{"typ":"Chute","role":"Output"},{"typ":"Chute","role":"Input"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":true,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureUprightWindTurbine":{"prefab":{"prefabName":"StructureUprightWindTurbine","prefabHash":1622183451,"desc":"Norsec's basic wind turbine is an easily fabricated, rapidly deployed design that is strong enough to withstand the worst that environments can throw at it. \nWhile the wind turbine is optimized to produce power even on low atmosphere worlds (up to 200W), it performs best in denser environments. Output varies with wind speed, and during storms, may increase dramatically (up to 800W), so be careful to design your power networks with that in mind.","name":"Upright Wind Turbine"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"NameHash":"Read","PowerGeneration":"Read","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureValve":{"prefab":{"prefabName":"StructureValve","prefabHash":-692036078,"desc":"","name":"Valve"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Maximum":"Read","NameHash":"Read","On":"ReadWrite","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Pipe","role":"None"},{"typ":"Pipe","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureVendingMachine":{"prefab":{"prefabName":"StructureVendingMachine","prefabHash":-443130773,"desc":"The Xigo-designed 'Slot Mate' vending machine allows storage of almost any item, while also operating as a distribution point for working with Traders. You cannot trade without a vending machine, or its more advanced equivalent, the Refrigerated Vending Machine. Each vending machine can hold up to 100 stacks.","name":"Vending Machine"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{},"1":{},"2":{},"3":{},"4":{},"5":{},"6":{},"7":{},"8":{},"9":{},"10":{},"11":{},"12":{},"13":{},"14":{},"15":{},"16":{},"17":{},"18":{},"19":{},"20":{},"21":{},"22":{},"23":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"42":{},"43":{},"44":{},"45":{},"46":{},"47":{},"48":{},"49":{},"50":{},"51":{},"52":{},"53":{},"54":{},"55":{},"56":{},"57":{},"58":{},"59":{},"60":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"67":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"86":{},"87":{},"88":{},"89":{},"90":{},"91":{},"92":{},"93":{},"94":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"101":{}},"logicTypes":{"Activate":"ReadWrite","ClearMemory":"Write","Error":"Read","ExportCount":"Read","ImportCount":"Read","Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Quantity":"Read","Ratio":"Read","ReferenceId":"Read","RequestHash":"ReadWrite","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Import","typ":"None"},{"name":"Export","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"}],"device":{"connectionList":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureVolumePump":{"prefab":{"prefabName":"StructureVolumePump","prefabHash":-321403609,"desc":"The volume pump pumps pumpable gases. It also separates out pipe networks into separate networks.","name":"Volume Pump"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Error":"Read","Lock":"ReadWrite","Maximum":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Pipe","role":"Output"},{"typ":"Pipe","role":"Input"},{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureWallArch":{"prefab":{"prefabName":"StructureWallArch","prefabHash":-858143148,"desc":"","name":"Wall (Arch)"},"structure":{"smallGrid":false}},"StructureWallArchArrow":{"prefab":{"prefabName":"StructureWallArchArrow","prefabHash":1649708822,"desc":"","name":"Wall (Arch Arrow)"},"structure":{"smallGrid":false}},"StructureWallArchCornerRound":{"prefab":{"prefabName":"StructureWallArchCornerRound","prefabHash":1794588890,"desc":"","name":"Wall (Arch Corner Round)"},"structure":{"smallGrid":true}},"StructureWallArchCornerSquare":{"prefab":{"prefabName":"StructureWallArchCornerSquare","prefabHash":-1963016580,"desc":"","name":"Wall (Arch Corner Square)"},"structure":{"smallGrid":true}},"StructureWallArchCornerTriangle":{"prefab":{"prefabName":"StructureWallArchCornerTriangle","prefabHash":1281911841,"desc":"","name":"Wall (Arch Corner Triangle)"},"structure":{"smallGrid":true}},"StructureWallArchPlating":{"prefab":{"prefabName":"StructureWallArchPlating","prefabHash":1182510648,"desc":"","name":"Wall (Arch Plating)"},"structure":{"smallGrid":false}},"StructureWallArchTwoTone":{"prefab":{"prefabName":"StructureWallArchTwoTone","prefabHash":782529714,"desc":"","name":"Wall (Arch Two Tone)"},"structure":{"smallGrid":false}},"StructureWallCooler":{"prefab":{"prefabName":"StructureWallCooler","prefabHash":-739292323,"desc":"The Xigo Freezy Boi wall cooler complements the wall heater, which can only raise the temperature. The wall cooler functions by drawing heat from the surrounding atmosphere and adding that heat into its pipe network.\nIn order to run the wall cooler properly, you will need to connect pipes to the wall cooler and fill the connected pipe network with any type of gas. The gas's heat capacity and volume will determine how fast it reacts to temperature changes.\n\nEFFICIENCY\nThe higher the difference in temperature between the gas stored in the pipes and the room, the less efficient the wall cooler will be. So to keep the wall cooler running at an acceptable efficiency you will need to get rid of the heat that accumulates in the pipes connected to it. A common practice would be to run the pipes to the outside and use radiators on the outside section of the pipes to get rid of the heat.\nThe less efficient the wall cooler, the less power it consumes. It will consume 1010W at max efficiency. The wall cooler can be controlled by logic chips to run when the temperature hits a certain degree.\nERRORS\nIf the wall cooler is flashing an error then it is missing one of the following:\n\n- Pipe connection to the wall cooler.\n- Gas in the connected pipes, or pressure is too low.\n- Atmosphere in the surrounding environment or pressure is too low.\n\nFor more information about how to control temperatures, consult the temperature control Guides page.","name":"Wall Cooler"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"Error":"Read","Lock":"ReadWrite","Maximum":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"","typ":"DataDisk"}],"device":{"connectionList":[{"typ":"Pipe","role":"None"},{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureWallFlat":{"prefab":{"prefabName":"StructureWallFlat","prefabHash":1635864154,"desc":"","name":"Wall (Flat)"},"structure":{"smallGrid":false}},"StructureWallFlatCornerRound":{"prefab":{"prefabName":"StructureWallFlatCornerRound","prefabHash":898708250,"desc":"","name":"Wall (Flat Corner Round)"},"structure":{"smallGrid":true}},"StructureWallFlatCornerSquare":{"prefab":{"prefabName":"StructureWallFlatCornerSquare","prefabHash":298130111,"desc":"","name":"Wall (Flat Corner Square)"},"structure":{"smallGrid":true}},"StructureWallFlatCornerTriangle":{"prefab":{"prefabName":"StructureWallFlatCornerTriangle","prefabHash":2097419366,"desc":"","name":"Wall (Flat Corner Triangle)"},"structure":{"smallGrid":true}},"StructureWallFlatCornerTriangleFlat":{"prefab":{"prefabName":"StructureWallFlatCornerTriangleFlat","prefabHash":-1161662836,"desc":"","name":"Wall (Flat Corner Triangle Flat)"},"structure":{"smallGrid":true}},"StructureWallGeometryCorner":{"prefab":{"prefabName":"StructureWallGeometryCorner","prefabHash":1979212240,"desc":"","name":"Wall (Geometry Corner)"},"structure":{"smallGrid":false}},"StructureWallGeometryStreight":{"prefab":{"prefabName":"StructureWallGeometryStreight","prefabHash":1049735537,"desc":"","name":"Wall (Geometry Straight)"},"structure":{"smallGrid":false}},"StructureWallGeometryT":{"prefab":{"prefabName":"StructureWallGeometryT","prefabHash":1602758612,"desc":"","name":"Wall (Geometry T)"},"structure":{"smallGrid":false}},"StructureWallGeometryTMirrored":{"prefab":{"prefabName":"StructureWallGeometryTMirrored","prefabHash":-1427845483,"desc":"","name":"Wall (Geometry T Mirrored)"},"structure":{"smallGrid":false}},"StructureWallHeater":{"prefab":{"prefabName":"StructureWallHeater","prefabHash":24258244,"desc":"The Xigo wall heater is a simple device that can be installed on a wall or frame and connected to power. When switched on, it will start heating the surrounding environment. It consumes 1010W of power and can be controlled by logic chips to run when the temperature hits a certain level.","name":"Wall Heater"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"Error":"Read","Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"","typ":"DataDisk"}],"device":{"connectionList":[{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureWallIron":{"prefab":{"prefabName":"StructureWallIron","prefabHash":1287324802,"desc":"","name":"Iron Wall (Type 1)"},"structure":{"smallGrid":false}},"StructureWallIron02":{"prefab":{"prefabName":"StructureWallIron02","prefabHash":1485834215,"desc":"","name":"Iron Wall (Type 2)"},"structure":{"smallGrid":false}},"StructureWallIron03":{"prefab":{"prefabName":"StructureWallIron03","prefabHash":798439281,"desc":"","name":"Iron Wall (Type 3)"},"structure":{"smallGrid":false}},"StructureWallIron04":{"prefab":{"prefabName":"StructureWallIron04","prefabHash":-1309433134,"desc":"","name":"Iron Wall (Type 4)"},"structure":{"smallGrid":false}},"StructureWallLargePanel":{"prefab":{"prefabName":"StructureWallLargePanel","prefabHash":1492930217,"desc":"","name":"Wall (Large Panel)"},"structure":{"smallGrid":false}},"StructureWallLargePanelArrow":{"prefab":{"prefabName":"StructureWallLargePanelArrow","prefabHash":-776581573,"desc":"","name":"Wall (Large Panel Arrow)"},"structure":{"smallGrid":false}},"StructureWallLight":{"prefab":{"prefabName":"StructureWallLight","prefabHash":-1860064656,"desc":"","name":"Wall Light"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureWallLightBattery":{"prefab":{"prefabName":"StructureWallLightBattery","prefabHash":-1306415132,"desc":"","name":"Wall Light (Battery)"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Battery","typ":"Battery"}],"device":{"connectionList":[{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureWallPaddedArch":{"prefab":{"prefabName":"StructureWallPaddedArch","prefabHash":1590330637,"desc":"","name":"Wall (Padded Arch)"},"structure":{"smallGrid":false}},"StructureWallPaddedArchCorner":{"prefab":{"prefabName":"StructureWallPaddedArchCorner","prefabHash":-1126688298,"desc":"","name":"Wall (Padded Arch Corner)"},"structure":{"smallGrid":true}},"StructureWallPaddedArchLightFittingTop":{"prefab":{"prefabName":"StructureWallPaddedArchLightFittingTop","prefabHash":1171987947,"desc":"","name":"Wall (Padded Arch Light Fitting Top)"},"structure":{"smallGrid":false}},"StructureWallPaddedArchLightsFittings":{"prefab":{"prefabName":"StructureWallPaddedArchLightsFittings","prefabHash":-1546743960,"desc":"","name":"Wall (Padded Arch Lights Fittings)"},"structure":{"smallGrid":false}},"StructureWallPaddedCorner":{"prefab":{"prefabName":"StructureWallPaddedCorner","prefabHash":-155945899,"desc":"","name":"Wall (Padded Corner)"},"structure":{"smallGrid":true}},"StructureWallPaddedCornerThin":{"prefab":{"prefabName":"StructureWallPaddedCornerThin","prefabHash":1183203913,"desc":"","name":"Wall (Padded Corner Thin)"},"structure":{"smallGrid":true}},"StructureWallPaddedNoBorder":{"prefab":{"prefabName":"StructureWallPaddedNoBorder","prefabHash":8846501,"desc":"","name":"Wall (Padded No Border)"},"structure":{"smallGrid":false}},"StructureWallPaddedNoBorderCorner":{"prefab":{"prefabName":"StructureWallPaddedNoBorderCorner","prefabHash":179694804,"desc":"","name":"Wall (Padded No Border Corner)"},"structure":{"smallGrid":true}},"StructureWallPaddedThinNoBorder":{"prefab":{"prefabName":"StructureWallPaddedThinNoBorder","prefabHash":-1611559100,"desc":"","name":"Wall (Padded Thin No Border)"},"structure":{"smallGrid":false}},"StructureWallPaddedThinNoBorderCorner":{"prefab":{"prefabName":"StructureWallPaddedThinNoBorderCorner","prefabHash":1769527556,"desc":"","name":"Wall (Padded Thin No Border Corner)"},"structure":{"smallGrid":true}},"StructureWallPaddedWindow":{"prefab":{"prefabName":"StructureWallPaddedWindow","prefabHash":2087628940,"desc":"","name":"Wall (Padded Window)"},"structure":{"smallGrid":false}},"StructureWallPaddedWindowThin":{"prefab":{"prefabName":"StructureWallPaddedWindowThin","prefabHash":-37302931,"desc":"","name":"Wall (Padded Window Thin)"},"structure":{"smallGrid":false}},"StructureWallPadding":{"prefab":{"prefabName":"StructureWallPadding","prefabHash":635995024,"desc":"","name":"Wall (Padding)"},"structure":{"smallGrid":false}},"StructureWallPaddingArchVent":{"prefab":{"prefabName":"StructureWallPaddingArchVent","prefabHash":-1243329828,"desc":"","name":"Wall (Padding Arch Vent)"},"structure":{"smallGrid":false}},"StructureWallPaddingLightFitting":{"prefab":{"prefabName":"StructureWallPaddingLightFitting","prefabHash":2024882687,"desc":"","name":"Wall (Padding Light Fitting)"},"structure":{"smallGrid":false}},"StructureWallPaddingThin":{"prefab":{"prefabName":"StructureWallPaddingThin","prefabHash":-1102403554,"desc":"","name":"Wall (Padding Thin)"},"structure":{"smallGrid":false}},"StructureWallPlating":{"prefab":{"prefabName":"StructureWallPlating","prefabHash":26167457,"desc":"","name":"Wall (Plating)"},"structure":{"smallGrid":false}},"StructureWallSmallPanelsAndHatch":{"prefab":{"prefabName":"StructureWallSmallPanelsAndHatch","prefabHash":619828719,"desc":"","name":"Wall (Small Panels And Hatch)"},"structure":{"smallGrid":false}},"StructureWallSmallPanelsArrow":{"prefab":{"prefabName":"StructureWallSmallPanelsArrow","prefabHash":-639306697,"desc":"","name":"Wall (Small Panels Arrow)"},"structure":{"smallGrid":false}},"StructureWallSmallPanelsMonoChrome":{"prefab":{"prefabName":"StructureWallSmallPanelsMonoChrome","prefabHash":386820253,"desc":"","name":"Wall (Small Panels Mono Chrome)"},"structure":{"smallGrid":false}},"StructureWallSmallPanelsOpen":{"prefab":{"prefabName":"StructureWallSmallPanelsOpen","prefabHash":-1407480603,"desc":"","name":"Wall (Small Panels Open)"},"structure":{"smallGrid":false}},"StructureWallSmallPanelsTwoTone":{"prefab":{"prefabName":"StructureWallSmallPanelsTwoTone","prefabHash":1709994581,"desc":"","name":"Wall (Small Panels Two Tone)"},"structure":{"smallGrid":false}},"StructureWallVent":{"prefab":{"prefabName":"StructureWallVent","prefabHash":-1177469307,"desc":"Used to mix atmospheres passively between two walls.","name":"Wall Vent"},"structure":{"smallGrid":true}},"StructureWaterBottleFiller":{"prefab":{"prefabName":"StructureWaterBottleFiller","prefabHash":-1178961954,"desc":"","name":"Water Bottle Filler"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Open":"ReadWrite","PrefabHash":"Read","Pressure":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read","Temperature":"Read","Volume":"Read"},"1":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Open":"ReadWrite","PrefabHash":"Read","Pressure":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read","Temperature":"Read","Volume":"Read"}},"logicTypes":{"Activate":"ReadWrite","Error":"Read","NameHash":"Read","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Bottle Slot","typ":"LiquidBottle"},{"name":"Bottle Slot","typ":"LiquidBottle"}],"device":{"connectionList":[{"typ":"PipeLiquid","role":"Input"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureWaterBottleFillerBottom":{"prefab":{"prefabName":"StructureWaterBottleFillerBottom","prefabHash":1433754995,"desc":"","name":"Water Bottle Filler Bottom"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Open":"ReadWrite","PrefabHash":"Read","Pressure":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read","Temperature":"Read","Volume":"Read"},"1":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Open":"ReadWrite","PrefabHash":"Read","Pressure":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read","Temperature":"Read","Volume":"Read"}},"logicTypes":{"Activate":"ReadWrite","Error":"Read","NameHash":"Read","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Bottle Slot","typ":"LiquidBottle"},{"name":"Bottle Slot","typ":"LiquidBottle"}],"device":{"connectionList":[{"typ":"PipeLiquid","role":"Input"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureWaterBottleFillerPowered":{"prefab":{"prefabName":"StructureWaterBottleFillerPowered","prefabHash":-756587791,"desc":"","name":"Waterbottle Filler"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Open":"ReadWrite","PrefabHash":"Read","Pressure":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read","Temperature":"Read","Volume":"Read"},"1":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Open":"ReadWrite","PrefabHash":"Read","Pressure":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read","Temperature":"Read","Volume":"Read"}},"logicTypes":{"Activate":"ReadWrite","Error":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Bottle Slot","typ":"LiquidBottle"},{"name":"Bottle Slot","typ":"LiquidBottle"}],"device":{"connectionList":[{"typ":"PipeLiquid","role":"Input"},{"typ":"PowerAndData","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureWaterBottleFillerPoweredBottom":{"prefab":{"prefabName":"StructureWaterBottleFillerPoweredBottom","prefabHash":1986658780,"desc":"","name":"Waterbottle Filler"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Open":"ReadWrite","PrefabHash":"Read","Pressure":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read","Temperature":"Read","Volume":"Read"},"1":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Open":"ReadWrite","PrefabHash":"Read","Pressure":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read","Temperature":"Read","Volume":"Read"}},"logicTypes":{"Activate":"ReadWrite","Error":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Bottle Slot","typ":"LiquidBottle"},{"name":"Bottle Slot","typ":"LiquidBottle"}],"device":{"connectionList":[{"typ":"PipeLiquid","role":"None"},{"typ":"PowerAndData","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureWaterDigitalValve":{"prefab":{"prefabName":"StructureWaterDigitalValve","prefabHash":-517628750,"desc":"","name":"Liquid Digital Valve"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Error":"Read","Lock":"ReadWrite","Maximum":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"PipeLiquid","role":"Output"},{"typ":"PipeLiquid","role":"Input"},{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureWaterPipeMeter":{"prefab":{"prefabName":"StructureWaterPipeMeter","prefabHash":433184168,"desc":"","name":"Liquid Pipe Meter"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"NameHash":"Read","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureWaterPurifier":{"prefab":{"prefabName":"StructureWaterPurifier","prefabHash":887383294,"desc":"Cleans Polluted Water and outputs Water. The purification process requires Charcoal which can be added to the machine via the import bin. The procesing throughput can be improved by increasing the gas pressure of the input pipe relative to the gas pressure of the output pipe.","name":"Water Purifier"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{}},"logicTypes":{"ClearMemory":"Write","Error":"Read","ImportCount":"Read","Lock":"ReadWrite","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Import","typ":"Ore"}],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"PipeLiquid","role":"Input"},{"typ":"PipeLiquid","role":"Output"},{"typ":"Power","role":"None"},{"typ":"Chute","role":"Input"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureWaterWallCooler":{"prefab":{"prefabName":"StructureWaterWallCooler","prefabHash":-1369060582,"desc":"","name":"Liquid Wall Cooler"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{"Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","SortingClass":"Read"}},"logicTypes":{"Error":"Read","Lock":"ReadWrite","Maximum":"Read","NameHash":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"","typ":"DataDisk"}],"device":{"connectionList":[{"typ":"PipeLiquid","role":"None"},{"typ":"PowerAndData","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureWeatherStation":{"prefab":{"prefabName":"StructureWeatherStation","prefabHash":1997212478,"desc":"0.NoStorm\n1.StormIncoming\n2.InStorm","name":"Weather Station"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Activate":"ReadWrite","Error":"Read","Lock":"ReadWrite","Mode":"Read","NameHash":"Read","NextWeatherEventTime":"Read","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"modes":{"0":"NoStorm","1":"StormIncoming","2":"InStorm"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":true,"hasOnOffState":true,"hasOpenState":false,"hasReagents":false}},"StructureWindTurbine":{"prefab":{"prefabName":"StructureWindTurbine","prefabHash":-2082355173,"desc":"The Stationeers wind turbine was first designed by Norsec atmospheric engineers, looking to create a wind-driven power generation system that would operate even on exceedingly low atmosphere worlds. The ultra-light blades respond to exceedingly low atmospheric densities, while being strong enough to function even under huge strain in much more demanding environments.\nWhile the wind turbine is optimized to produce power (up to 500W) even on low atmosphere worlds, it performs best in denser environments. Output varies with wind speed and, during storms, may increase dramatically (up to 10,000W), so be careful to design your power networks with that in mind.","name":"Wind Turbine"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"NameHash":"Read","PowerGeneration":"Read","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Power","role":"None"},{"typ":"Data","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":false,"hasOnOffState":false,"hasOpenState":false,"hasReagents":false}},"StructureWindowShutter":{"prefab":{"prefabName":"StructureWindowShutter","prefabHash":2056377335,"desc":"For those special, private moments, a window that can be closed to prying eyes. \n \nWhen closed, has the heat transfer characteristics of a basic wall. Requires power, and can be connected to logic systems.","name":"Window Shutter"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{},"logicTypes":{"Error":"Read","Idle":"Read","Mode":"ReadWrite","NameHash":"Read","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"modes":{"0":"Operate","1":"Logic"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"hasActivateState":false,"hasAtmosphere":false,"hasColorState":false,"hasLockState":false,"hasModeState":true,"hasOnOffState":true,"hasOpenState":true,"hasReagents":false}},"ToolPrinterMod":{"prefab":{"prefabName":"ToolPrinterMod","prefabHash":1700018136,"desc":"Apply to an Tool Manufactory with a Welding Torch or Arc Welder to upgrade for increased processing speed and more recipe options.","name":"Tool Printer Mod"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Default"}},"ToyLuna":{"prefab":{"prefabName":"ToyLuna","prefabHash":94730034,"desc":"","name":"Toy Luna"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Default"}},"UniformCommander":{"prefab":{"prefabName":"UniformCommander","prefabHash":-2083426457,"desc":"","name":"Uniform Commander"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Uniform","sortingClass":"Clothing"},"slots":[{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"Access Card","typ":"AccessCard"},{"name":"Access Card","typ":"AccessCard"},{"name":"Credit Card","typ":"CreditCard"}]},"UniformMarine":{"prefab":{"prefabName":"UniformMarine","prefabHash":-48342840,"desc":"","name":"Marine Uniform"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Uniform","sortingClass":"Clothing"},"slots":[{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"Access Card","typ":"AccessCard"},{"name":"Credit Card","typ":"CreditCard"}]},"UniformOrangeJumpSuit":{"prefab":{"prefabName":"UniformOrangeJumpSuit","prefabHash":810053150,"desc":"","name":"Jump Suit (Orange)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Uniform","sortingClass":"Clothing"},"slots":[{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"Access Card","typ":"AccessCard"},{"name":"Credit Card","typ":"CreditCard"}]},"WeaponEnergy":{"prefab":{"prefabName":"WeaponEnergy","prefabHash":789494694,"desc":"","name":"Weapon Energy"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Tools"},"logic":{"logicSlotTypes":{"0":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"}},"logicTypes":{"On":"ReadWrite","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"WeaponPistolEnergy":{"prefab":{"prefabName":"WeaponPistolEnergy","prefabHash":-385323479,"desc":"0.Stun\n1.Kill","name":"Energy Pistol"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Tools"},"logic":{"logicSlotTypes":{"0":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"}},"logicTypes":{"Error":"Read","Lock":"ReadWrite","Mode":"ReadWrite","On":"ReadWrite","Open":"ReadWrite","Power":"Read","ReferenceId":"Read"},"modes":{"0":"Stun","1":"Kill"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"WeaponRifleEnergy":{"prefab":{"prefabName":"WeaponRifleEnergy","prefabHash":1154745374,"desc":"0.Stun\n1.Kill","name":"Energy Rifle"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"None","sortingClass":"Tools"},"logic":{"logicSlotTypes":{"0":{"Charge":"Read","ChargeRatio":"Read","Class":"Read","Damage":"Read","MaxQuantity":"Read","OccupantHash":"Read","Occupied":"Read","Quantity":"Read","ReferenceId":"Read"}},"logicTypes":{"Error":"Read","Lock":"ReadWrite","Mode":"ReadWrite","On":"ReadWrite","Open":"ReadWrite","Power":"Read","ReferenceId":"Read"},"modes":{"0":"Stun","1":"Kill"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"WeaponTorpedo":{"prefab":{"prefabName":"WeaponTorpedo","prefabHash":-1102977898,"desc":"","name":"Torpedo"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1,"slotClass":"Torpedo","sortingClass":"Default"}}},"reagents":{"Alcohol":{"Hash":1565803737,"Unit":"ml","Sources":null},"Astroloy":{"Hash":-1493155787,"Unit":"g","Sources":{"ItemAstroloyIngot":1.0}},"Biomass":{"Hash":925270362,"Unit":"","Sources":{"ItemBiomass":1.0}},"Carbon":{"Hash":1582746610,"Unit":"g","Sources":{"HumanSkull":1.0,"ItemCharcoal":1.0}},"Cobalt":{"Hash":1702246124,"Unit":"g","Sources":{"ItemCobaltOre":1.0}},"Cocoa":{"Hash":678781198,"Unit":"g","Sources":{"ItemCocoaPowder":1.0,"ItemCocoaTree":1.0}},"ColorBlue":{"Hash":557517660,"Unit":"g","Sources":{"ReagentColorBlue":10.0}},"ColorGreen":{"Hash":2129955242,"Unit":"g","Sources":{"ReagentColorGreen":10.0}},"ColorOrange":{"Hash":1728153015,"Unit":"g","Sources":{"ReagentColorOrange":10.0}},"ColorRed":{"Hash":667001276,"Unit":"g","Sources":{"ReagentColorRed":10.0}},"ColorYellow":{"Hash":-1430202288,"Unit":"g","Sources":{"ReagentColorYellow":10.0}},"Constantan":{"Hash":1731241392,"Unit":"g","Sources":{"ItemConstantanIngot":1.0}},"Copper":{"Hash":-1172078909,"Unit":"g","Sources":{"ItemCopperIngot":1.0,"ItemCopperOre":1.0}},"Corn":{"Hash":1550709753,"Unit":"","Sources":{"ItemCookedCorn":1.0,"ItemCorn":1.0}},"Egg":{"Hash":1887084450,"Unit":"","Sources":{"ItemCookedPowderedEggs":1.0,"ItemEgg":1.0,"ItemFertilizedEgg":1.0}},"Electrum":{"Hash":478264742,"Unit":"g","Sources":{"ItemElectrumIngot":1.0}},"Fenoxitone":{"Hash":-865687737,"Unit":"g","Sources":{"ItemFern":1.0}},"Flour":{"Hash":-811006991,"Unit":"g","Sources":{"ItemFlour":50.0}},"Gold":{"Hash":-409226641,"Unit":"g","Sources":{"ItemGoldIngot":1.0,"ItemGoldOre":1.0}},"Hastelloy":{"Hash":2019732679,"Unit":"g","Sources":{"ItemHastelloyIngot":1.0}},"Hydrocarbon":{"Hash":2003628602,"Unit":"g","Sources":{"ItemCoalOre":1.0,"ItemSolidFuel":1.0}},"Inconel":{"Hash":-586072179,"Unit":"g","Sources":{"ItemInconelIngot":1.0}},"Invar":{"Hash":-626453759,"Unit":"g","Sources":{"ItemInvarIngot":1.0}},"Iron":{"Hash":-666742878,"Unit":"g","Sources":{"ItemIronIngot":1.0,"ItemIronOre":1.0}},"Lead":{"Hash":-2002530571,"Unit":"g","Sources":{"ItemLeadIngot":1.0,"ItemLeadOre":1.0}},"Milk":{"Hash":471085864,"Unit":"ml","Sources":{"ItemCookedCondensedMilk":1.0,"ItemMilk":1.0}},"Mushroom":{"Hash":516242109,"Unit":"g","Sources":{"ItemCookedMushroom":1.0,"ItemMushroom":1.0}},"Nickel":{"Hash":556601662,"Unit":"g","Sources":{"ItemNickelIngot":1.0,"ItemNickelOre":1.0}},"Oil":{"Hash":1958538866,"Unit":"ml","Sources":{"ItemSoyOil":1.0}},"Plastic":{"Hash":791382247,"Unit":"g","Sources":null},"Potato":{"Hash":-1657266385,"Unit":"","Sources":{"ItemPotato":1.0,"ItemPotatoBaked":1.0}},"Pumpkin":{"Hash":-1250164309,"Unit":"","Sources":{"ItemCookedPumpkin":1.0,"ItemPumpkin":1.0}},"Rice":{"Hash":1951286569,"Unit":"g","Sources":{"ItemCookedRice":1.0,"ItemRice":1.0}},"SalicylicAcid":{"Hash":-2086114347,"Unit":"g","Sources":null},"Silicon":{"Hash":-1195893171,"Unit":"g","Sources":{"ItemSiliconIngot":0.1,"ItemSiliconOre":1.0}},"Silver":{"Hash":687283565,"Unit":"g","Sources":{"ItemSilverIngot":1.0,"ItemSilverOre":1.0}},"Solder":{"Hash":-1206542381,"Unit":"g","Sources":{"ItemSolderIngot":1.0}},"Soy":{"Hash":1510471435,"Unit":"","Sources":{"ItemCookedSoybean":1.0,"ItemSoybean":1.0}},"Steel":{"Hash":1331613335,"Unit":"g","Sources":{"ItemEmptyCan":1.0,"ItemSteelIngot":1.0}},"Stellite":{"Hash":-500544800,"Unit":"g","Sources":{"ItemStelliteIngot":1.0}},"Sugar":{"Hash":1778746875,"Unit":"g","Sources":{"ItemSugar":10.0,"ItemSugarCane":1.0}},"Tomato":{"Hash":733496620,"Unit":"","Sources":{"ItemCookedTomato":1.0,"ItemTomato":1.0}},"Uranium":{"Hash":-208860272,"Unit":"g","Sources":{"ItemUraniumOre":1.0}},"Waspaloy":{"Hash":1787814293,"Unit":"g","Sources":{"ItemWaspaloyIngot":1.0}},"Wheat":{"Hash":-686695134,"Unit":"","Sources":{"ItemWheat":1.0}}},"enums":{"scriptEnums":{"LogicBatchMethod":{"enumName":"LogicBatchMethod","values":{"Average":{"value":0,"deprecated":false,"description":""},"Maximum":{"value":3,"deprecated":false,"description":""},"Minimum":{"value":2,"deprecated":false,"description":""},"Sum":{"value":1,"deprecated":false,"description":""}}},"LogicReagentMode":{"enumName":"LogicReagentMode","values":{"Contents":{"value":0,"deprecated":false,"description":""},"Recipe":{"value":2,"deprecated":false,"description":""},"Required":{"value":1,"deprecated":false,"description":""},"TotalContents":{"value":3,"deprecated":false,"description":""}}},"LogicSlotType":{"enumName":"LogicSlotType","values":{"Charge":{"value":10,"deprecated":false,"description":"returns current energy charge the slot occupant is holding"},"ChargeRatio":{"value":11,"deprecated":false,"description":"returns current energy charge the slot occupant is holding as a ratio between 0 and 1 of its maximum"},"Class":{"value":12,"deprecated":false,"description":"returns integer representing the class of object"},"Damage":{"value":4,"deprecated":false,"description":"returns the damage state of the item in the slot"},"Efficiency":{"value":5,"deprecated":false,"description":"returns the growth efficiency of the plant in the slot"},"FilterType":{"value":25,"deprecated":false,"description":"No description available"},"Growth":{"value":7,"deprecated":false,"description":"returns the current growth state of the plant in the slot"},"Health":{"value":6,"deprecated":false,"description":"returns the health of the plant in the slot"},"LineNumber":{"value":19,"deprecated":false,"description":"The line number of current execution for an integrated circuit running on this device. While this number can be written, use with caution"},"Lock":{"value":23,"deprecated":false,"description":"No description available"},"Mature":{"value":16,"deprecated":false,"description":"returns 1 if the plant in this slot is mature, 0 when it isn't"},"MaxQuantity":{"value":15,"deprecated":false,"description":"returns the max stack size of the item in the slot"},"None":{"value":0,"deprecated":false,"description":"No description"},"OccupantHash":{"value":2,"deprecated":false,"description":"returns the has of the current occupant, the unique identifier of the thing"},"Occupied":{"value":1,"deprecated":false,"description":"returns 0 when slot is not occupied, 1 when it is"},"On":{"value":22,"deprecated":false,"description":"No description available"},"Open":{"value":21,"deprecated":false,"description":"No description available"},"PrefabHash":{"value":17,"deprecated":false,"description":"returns the hash of the structure in the slot"},"Pressure":{"value":8,"deprecated":false,"description":"returns pressure of the slot occupants internal atmosphere"},"PressureAir":{"value":14,"deprecated":false,"description":"returns pressure in the air tank of the jetpack in this slot"},"PressureWaste":{"value":13,"deprecated":false,"description":"returns pressure in the waste tank of the jetpack in this slot"},"Quantity":{"value":3,"deprecated":false,"description":"returns the current quantity, such as stack size, of the item in the slot"},"ReferenceId":{"value":26,"deprecated":false,"description":"Unique Reference Identifier for this object"},"Seeding":{"value":18,"deprecated":false,"description":"Whether a plant is seeding (ready to harvest seeds from). Returns 1 if seeding or 0 if not."},"SortingClass":{"value":24,"deprecated":false,"description":"No description available"},"Temperature":{"value":9,"deprecated":false,"description":"returns temperature of the slot occupants internal atmosphere"},"Volume":{"value":20,"deprecated":false,"description":"No description available"}}},"LogicType":{"enumName":"LogicType","values":{"Acceleration":{"value":216,"deprecated":false,"description":"Change in velocity. Rockets that are deccelerating when landing will show this as negative value."},"Activate":{"value":9,"deprecated":false,"description":"1 if device is activated (usually means running), otherwise 0"},"AirRelease":{"value":75,"deprecated":false,"description":"The current state of the air release system, for example AirRelease = 1 for a Hardsuit sets Air Release to On"},"AlignmentError":{"value":243,"deprecated":false,"description":"The angular discrepancy between the telescope's current orientation and the target. Indicates how 'off target' the telescope is. Returns NaN when no target."},"Apex":{"value":238,"deprecated":false,"description":"The lowest altitude that the rocket will reach before it starts travelling upwards again."},"AutoLand":{"value":226,"deprecated":false,"description":"Engages the automatic landing algorithm. The rocket will automatically throttle and turn on and off its engines to achieve a smooth landing."},"AutoShutOff":{"value":218,"deprecated":false,"description":"Turns off all devices in the rocket upon reaching destination"},"BestContactFilter":{"value":267,"deprecated":false,"description":"Filters the satellite's auto selection of targets to a single reference ID."},"Bpm":{"value":103,"deprecated":false,"description":"Bpm"},"BurnTimeRemaining":{"value":225,"deprecated":false,"description":"Estimated time in seconds until fuel is depleted. Calculated based on current fuel usage."},"CelestialHash":{"value":242,"deprecated":false,"description":"The current hash of the targeted celestial object."},"CelestialParentHash":{"value":250,"deprecated":false,"description":"The hash for the name of the parent the celestial is orbiting, 0 if there is no parent celestial."},"Channel0":{"value":165,"deprecated":false,"description":"Channel on a cable network which should be considered volatile"},"Channel1":{"value":166,"deprecated":false,"description":"Channel on a cable network which should be considered volatile"},"Channel2":{"value":167,"deprecated":false,"description":"Channel on a cable network which should be considered volatile"},"Channel3":{"value":168,"deprecated":false,"description":"Channel on a cable network which should be considered volatile"},"Channel4":{"value":169,"deprecated":false,"description":"Channel on a cable network which should be considered volatile"},"Channel5":{"value":170,"deprecated":false,"description":"Channel on a cable network which should be considered volatile"},"Channel6":{"value":171,"deprecated":false,"description":"Channel on a cable network which should be considered volatile"},"Channel7":{"value":172,"deprecated":false,"description":"Channel on a cable network which should be considered volatile"},"Charge":{"value":11,"deprecated":false,"description":"The current charge the device has"},"Chart":{"value":256,"deprecated":false,"description":"Progress status of Chart scan at the rocket's target Space Map Location. Returns a clamped normalised value. If Chart scan is not available returns -1."},"ChartedNavPoints":{"value":259,"deprecated":false,"description":"The number of charted NavPoints at the rocket's target Space Map Location."},"ClearMemory":{"value":62,"deprecated":false,"description":"When set to 1, clears the counter memory (e.g. ExportCount). Will set itself back to 0 when actioned"},"CollectableGoods":{"value":101,"deprecated":false,"description":"Gets the cost of fuel to return the rocket to your current world."},"Color":{"value":38,"deprecated":false,"description":"\n Whether driven by concerns for clarity, safety or simple aesthetics, Stationeers have access to a small rainbow of colors for their constructions. These are the color setting for devices, represented as an integer.\n\n0: Blue\n1: Grey\n2: Green\n3: Orange\n4: Red\n5: Yellow\n6: White\n7: Black\n8: Brown\n9: Khaki\n10: Pink\n11: Purple\n\n It is an unwavering universal law that anything higher than 11 will be purple. The ODA is powerless to change this. Similarly, anything lower than 0 will be Blue.\n "},"Combustion":{"value":98,"deprecated":false,"description":"The assess atmosphere is on fire. Returns 1 if atmosphere is on fire, 0 if not."},"CombustionInput":{"value":146,"deprecated":false,"description":"The assess atmosphere is on fire. Returns 1 if device's input network is on fire, 0 if not."},"CombustionInput2":{"value":147,"deprecated":false,"description":"The assess atmosphere is on fire. Returns 1 if device's Input2 network is on fire, 0 if not."},"CombustionLimiter":{"value":153,"deprecated":false,"description":"Retards the rate of combustion inside the machine (range: 0-100), with 0 being the slowest rate of combustion and 100 being the fastest"},"CombustionOutput":{"value":148,"deprecated":false,"description":"The assess atmosphere is on fire. Returns 1 if device's Output network is on fire, 0 if not."},"CombustionOutput2":{"value":149,"deprecated":false,"description":"The assess atmosphere is on fire. Returns 1 if device's Output2 network is on fire, 0 if not."},"CompletionRatio":{"value":61,"deprecated":false,"description":"How complete the current production is for this device, between 0 and 1"},"ContactTypeId":{"value":198,"deprecated":false,"description":"The type id of the contact."},"CurrentCode":{"value":261,"deprecated":false,"description":"The Space Map Address of the rockets current Space Map Location"},"CurrentResearchPodType":{"value":93,"deprecated":false,"description":""},"Density":{"value":262,"deprecated":false,"description":"The density of the rocket's target site's mine-able deposit."},"DestinationCode":{"value":215,"deprecated":false,"description":"The Space Map Address of the rockets target Space Map Location"},"Discover":{"value":255,"deprecated":false,"description":"Progress status of Discovery scan at the rocket's target Space Map Location. Returns a clamped normalised value. If Discovery scan is not available returns -1."},"DistanceAu":{"value":244,"deprecated":false,"description":"The current distance to the celestial object, measured in astronomical units."},"DistanceKm":{"value":249,"deprecated":false,"description":"The current distance to the celestial object, measured in kilometers."},"DrillCondition":{"value":240,"deprecated":false,"description":"The current condition of the drill head in this devices drill slot. Expressed as a ratio between 0 and 1."},"DryMass":{"value":220,"deprecated":false,"description":"The Mass in kilograms of the rocket excluding fuel. The more massive the rocket the more fuel will be required to move to a new location in space."},"Eccentricity":{"value":247,"deprecated":false,"description":"A measure of how elliptical (oval) an orbit is. Ranges from 0 (a perfect circle) to 1 (a parabolic trajectory)."},"ElevatorLevel":{"value":40,"deprecated":false,"description":"Level the elevator is currently at"},"ElevatorSpeed":{"value":39,"deprecated":false,"description":"Current speed of the elevator"},"EntityState":{"value":239,"deprecated":false,"description":"The current entity state, such as whether it is dead, unconscious or alive, expressed as a state integer."},"EnvironmentEfficiency":{"value":104,"deprecated":false,"description":"The Environment Efficiency reported by the machine, as a float between 0 and 1"},"Error":{"value":4,"deprecated":false,"description":"1 if device is in error state, otherwise 0"},"ExhaustVelocity":{"value":235,"deprecated":false,"description":"The velocity of the exhaust gas in m/s"},"ExportCount":{"value":63,"deprecated":false,"description":"How many items exported since last ClearMemory"},"ExportQuantity":{"value":31,"deprecated":true,"description":"Total quantity of items exported by the device"},"ExportSlotHash":{"value":42,"deprecated":true,"description":"DEPRECATED"},"ExportSlotOccupant":{"value":32,"deprecated":true,"description":"DEPRECATED"},"Filtration":{"value":74,"deprecated":false,"description":"The current state of the filtration system, for example Filtration = 1 for a Hardsuit sets filtration to On"},"FlightControlRule":{"value":236,"deprecated":false,"description":"Flight control rule of rocket. None = 0, No AutoPilot. Normal = 1, Target Decent Apex of 60m. Alternate = 2, Velocity to High - Full throttle. Alternate2 = 3, Target an appropriate decent velocity as velocity is too low. FinalApproach = 4, Descend towards launch mount in a controlled manner."},"Flush":{"value":174,"deprecated":false,"description":"Set to 1 to activate the flush function on the device"},"ForceWrite":{"value":85,"deprecated":false,"description":"Forces Logic Writer devices to rewrite value"},"ForwardX":{"value":227,"deprecated":false,"description":"The direction the entity is facing expressed as a normalized vector"},"ForwardY":{"value":228,"deprecated":false,"description":"The direction the entity is facing expressed as a normalized vector"},"ForwardZ":{"value":229,"deprecated":false,"description":"The direction the entity is facing expressed as a normalized vector"},"Fuel":{"value":99,"deprecated":false,"description":"Gets the cost of fuel to return the rocket to your current world."},"Harvest":{"value":69,"deprecated":false,"description":"Performs the harvesting action for any plant based machinery"},"Horizontal":{"value":20,"deprecated":false,"description":"Horizontal setting of the device"},"HorizontalRatio":{"value":34,"deprecated":false,"description":"Radio of horizontal setting for device"},"Idle":{"value":37,"deprecated":false,"description":"Returns 1 if the device is currently idle, otherwise 0"},"ImportCount":{"value":64,"deprecated":false,"description":"How many items imported since last ClearMemory"},"ImportQuantity":{"value":29,"deprecated":true,"description":"Total quantity of items imported by the device"},"ImportSlotHash":{"value":43,"deprecated":true,"description":"DEPRECATED"},"ImportSlotOccupant":{"value":30,"deprecated":true,"description":"DEPRECATED"},"Inclination":{"value":246,"deprecated":false,"description":"The tilt of an orbit's plane relative to the equatorial plane, measured in degrees. Defines the orbital plane's angle."},"Index":{"value":241,"deprecated":false,"description":"The current index for the device."},"InterrogationProgress":{"value":157,"deprecated":false,"description":"Progress of this sattellite dish's interrogation of its current target, as a ratio from 0-1"},"LineNumber":{"value":173,"deprecated":false,"description":"The line number of current execution for an integrated circuit running on this device. While this number can be written, use with caution"},"Lock":{"value":10,"deprecated":false,"description":"1 if device is locked, otherwise 0, can be set in most devices and prevents the user from access the values"},"ManualResearchRequiredPod":{"value":94,"deprecated":false,"description":"Sets the pod type to search for a certain pod when breaking down a pods."},"Mass":{"value":219,"deprecated":false,"description":"The total Mass of the rocket in kilograms including fuel and cargo. The more massive the rocket the more fuel will be required to move to a new location in space."},"Maximum":{"value":23,"deprecated":false,"description":"Maximum setting of the device"},"MineablesInQueue":{"value":96,"deprecated":false,"description":"Returns the amount of mineables AIMEe has queued up to mine."},"MineablesInVicinity":{"value":95,"deprecated":false,"description":"Returns the amount of potential mineables within an extended area around AIMEe."},"MinedQuantity":{"value":266,"deprecated":false,"description":"The total number of resources that have been mined at the rocket's target Space Map Site."},"MinimumWattsToContact":{"value":163,"deprecated":false,"description":"Minimum required amount of watts from the dish hitting the target trader contact to start interrogating the contact"},"Mode":{"value":3,"deprecated":false,"description":"Integer for mode state, different devices will have different mode states available to them"},"NameHash":{"value":268,"deprecated":false,"description":"Provides the hash value for the name of the object as a 32 bit integer."},"NavPoints":{"value":258,"deprecated":false,"description":"The number of NavPoints at the rocket's target Space Map Location."},"NextWeatherEventTime":{"value":97,"deprecated":false,"description":"Returns in seconds when the next weather event is inbound."},"None":{"value":0,"deprecated":true,"description":"No description"},"On":{"value":28,"deprecated":false,"description":"The current state of the device, 0 for off, 1 for on"},"Open":{"value":2,"deprecated":false,"description":"1 if device is open, otherwise 0"},"OperationalTemperatureEfficiency":{"value":150,"deprecated":false,"description":"How the input pipe's temperature effects the machines efficiency"},"OrbitPeriod":{"value":245,"deprecated":false,"description":"The time it takes for an object to complete one full orbit around another object, measured in days. Indicates the duration of the orbital cycle."},"Orientation":{"value":230,"deprecated":false,"description":"The orientation of the entity in degrees in a plane relative towards the north origin"},"Output":{"value":70,"deprecated":false,"description":"The output operation for a sort handling device, such as a stacker or sorter, when in logic mode the device will only action one repetition when set zero or above and then back to -1 and await further instructions"},"PassedMoles":{"value":234,"deprecated":false,"description":"The number of moles that passed through this device on the previous simulation tick"},"Plant":{"value":68,"deprecated":false,"description":"Performs the planting action for any plant based machinery"},"PlantEfficiency1":{"value":52,"deprecated":true,"description":"DEPRECATED"},"PlantEfficiency2":{"value":53,"deprecated":true,"description":"DEPRECATED"},"PlantEfficiency3":{"value":54,"deprecated":true,"description":"DEPRECATED"},"PlantEfficiency4":{"value":55,"deprecated":true,"description":"DEPRECATED"},"PlantGrowth1":{"value":48,"deprecated":true,"description":"DEPRECATED"},"PlantGrowth2":{"value":49,"deprecated":true,"description":"DEPRECATED"},"PlantGrowth3":{"value":50,"deprecated":true,"description":"DEPRECATED"},"PlantGrowth4":{"value":51,"deprecated":true,"description":"DEPRECATED"},"PlantHash1":{"value":56,"deprecated":true,"description":"DEPRECATED"},"PlantHash2":{"value":57,"deprecated":true,"description":"DEPRECATED"},"PlantHash3":{"value":58,"deprecated":true,"description":"DEPRECATED"},"PlantHash4":{"value":59,"deprecated":true,"description":"DEPRECATED"},"PlantHealth1":{"value":44,"deprecated":true,"description":"DEPRECATED"},"PlantHealth2":{"value":45,"deprecated":true,"description":"DEPRECATED"},"PlantHealth3":{"value":46,"deprecated":true,"description":"DEPRECATED"},"PlantHealth4":{"value":47,"deprecated":true,"description":"DEPRECATED"},"PositionX":{"value":76,"deprecated":false,"description":"The current position in X dimension in world coordinates"},"PositionY":{"value":77,"deprecated":false,"description":"The current position in Y dimension in world coordinates"},"PositionZ":{"value":78,"deprecated":false,"description":"The current position in Z dimension in world coordinates"},"Power":{"value":1,"deprecated":false,"description":"Can be read to return if the device is correctly powered or not, set via the power system, return 1 if powered and 0 if not"},"PowerActual":{"value":26,"deprecated":false,"description":"How much energy the device or network is actually using"},"PowerGeneration":{"value":65,"deprecated":false,"description":"Returns how much power is being generated"},"PowerPotential":{"value":25,"deprecated":false,"description":"How much energy the device or network potentially provides"},"PowerRequired":{"value":36,"deprecated":false,"description":"Power requested from the device and/or network"},"PrefabHash":{"value":84,"deprecated":false,"description":"The hash of the structure"},"Pressure":{"value":5,"deprecated":false,"description":"The current pressure reading of the device"},"PressureEfficiency":{"value":152,"deprecated":false,"description":"How the pressure of the input pipe and waste pipe effect the machines efficiency"},"PressureExternal":{"value":7,"deprecated":false,"description":"Setting for external pressure safety, in KPa"},"PressureInput":{"value":106,"deprecated":false,"description":"The current pressure reading of the device's Input Network"},"PressureInput2":{"value":116,"deprecated":false,"description":"The current pressure reading of the device's Input2 Network"},"PressureInternal":{"value":8,"deprecated":false,"description":"Setting for internal pressure safety, in KPa"},"PressureOutput":{"value":126,"deprecated":false,"description":"The current pressure reading of the device's Output Network"},"PressureOutput2":{"value":136,"deprecated":false,"description":"The current pressure reading of the device's Output2 Network"},"PressureSetting":{"value":71,"deprecated":false,"description":"The current setting for the internal pressure of the object (e.g. the Hardsuit Air release), in KPa"},"Progress":{"value":214,"deprecated":false,"description":"Progress of the rocket to the next node on the map expressed as a value between 0-1."},"Quantity":{"value":27,"deprecated":false,"description":"Total quantity on the device"},"Ratio":{"value":24,"deprecated":false,"description":"Context specific value depending on device, 0 to 1 based ratio"},"RatioCarbonDioxide":{"value":15,"deprecated":false,"description":"The ratio of Carbon Dioxide in device atmosphere"},"RatioCarbonDioxideInput":{"value":109,"deprecated":false,"description":"The ratio of Carbon Dioxide in device's input network"},"RatioCarbonDioxideInput2":{"value":119,"deprecated":false,"description":"The ratio of Carbon Dioxide in device's Input2 network"},"RatioCarbonDioxideOutput":{"value":129,"deprecated":false,"description":"The ratio of Carbon Dioxide in device's Output network"},"RatioCarbonDioxideOutput2":{"value":139,"deprecated":false,"description":"The ratio of Carbon Dioxide in device's Output2 network"},"RatioHydrogen":{"value":252,"deprecated":false,"description":"The ratio of Hydrogen in device's Atmopshere"},"RatioLiquidCarbonDioxide":{"value":199,"deprecated":false,"description":"The ratio of Liquid Carbon Dioxide in device's Atmosphere"},"RatioLiquidCarbonDioxideInput":{"value":200,"deprecated":false,"description":"The ratio of Liquid Carbon Dioxide in device's Input Atmosphere"},"RatioLiquidCarbonDioxideInput2":{"value":201,"deprecated":false,"description":"The ratio of Liquid Carbon Dioxide in device's Input2 Atmosphere"},"RatioLiquidCarbonDioxideOutput":{"value":202,"deprecated":false,"description":"The ratio of Liquid Carbon Dioxide in device's device's Output Atmosphere"},"RatioLiquidCarbonDioxideOutput2":{"value":203,"deprecated":false,"description":"The ratio of Liquid Carbon Dioxide in device's Output2 Atmopshere"},"RatioLiquidHydrogen":{"value":253,"deprecated":false,"description":"The ratio of Liquid Hydrogen in device's Atmopshere"},"RatioLiquidNitrogen":{"value":177,"deprecated":false,"description":"The ratio of Liquid Nitrogen in device atmosphere"},"RatioLiquidNitrogenInput":{"value":178,"deprecated":false,"description":"The ratio of Liquid Nitrogen in device's input network"},"RatioLiquidNitrogenInput2":{"value":179,"deprecated":false,"description":"The ratio of Liquid Nitrogen in device's Input2 network"},"RatioLiquidNitrogenOutput":{"value":180,"deprecated":false,"description":"The ratio of Liquid Nitrogen in device's Output network"},"RatioLiquidNitrogenOutput2":{"value":181,"deprecated":false,"description":"The ratio of Liquid Nitrogen in device's Output2 network"},"RatioLiquidNitrousOxide":{"value":209,"deprecated":false,"description":"The ratio of Liquid Nitrous Oxide in device's Atmosphere"},"RatioLiquidNitrousOxideInput":{"value":210,"deprecated":false,"description":"The ratio of Liquid Nitrous Oxide in device's Input Atmosphere"},"RatioLiquidNitrousOxideInput2":{"value":211,"deprecated":false,"description":"The ratio of Liquid Nitrous Oxide in device's Input2 Atmosphere"},"RatioLiquidNitrousOxideOutput":{"value":212,"deprecated":false,"description":"The ratio of Liquid Nitrous Oxide in device's device's Output Atmosphere"},"RatioLiquidNitrousOxideOutput2":{"value":213,"deprecated":false,"description":"The ratio of Liquid Nitrous Oxide in device's Output2 Atmopshere"},"RatioLiquidOxygen":{"value":183,"deprecated":false,"description":"The ratio of Liquid Oxygen in device's Atmosphere"},"RatioLiquidOxygenInput":{"value":184,"deprecated":false,"description":"The ratio of Liquid Oxygen in device's Input Atmosphere"},"RatioLiquidOxygenInput2":{"value":185,"deprecated":false,"description":"The ratio of Liquid Oxygen in device's Input2 Atmosphere"},"RatioLiquidOxygenOutput":{"value":186,"deprecated":false,"description":"The ratio of Liquid Oxygen in device's device's Output Atmosphere"},"RatioLiquidOxygenOutput2":{"value":187,"deprecated":false,"description":"The ratio of Liquid Oxygen in device's Output2 Atmopshere"},"RatioLiquidPollutant":{"value":204,"deprecated":false,"description":"The ratio of Liquid Pollutant in device's Atmosphere"},"RatioLiquidPollutantInput":{"value":205,"deprecated":false,"description":"The ratio of Liquid Pollutant in device's Input Atmosphere"},"RatioLiquidPollutantInput2":{"value":206,"deprecated":false,"description":"The ratio of Liquid Pollutant in device's Input2 Atmosphere"},"RatioLiquidPollutantOutput":{"value":207,"deprecated":false,"description":"The ratio of Liquid Pollutant in device's device's Output Atmosphere"},"RatioLiquidPollutantOutput2":{"value":208,"deprecated":false,"description":"The ratio of Liquid Pollutant in device's Output2 Atmopshere"},"RatioLiquidVolatiles":{"value":188,"deprecated":false,"description":"The ratio of Liquid Volatiles in device's Atmosphere"},"RatioLiquidVolatilesInput":{"value":189,"deprecated":false,"description":"The ratio of Liquid Volatiles in device's Input Atmosphere"},"RatioLiquidVolatilesInput2":{"value":190,"deprecated":false,"description":"The ratio of Liquid Volatiles in device's Input2 Atmosphere"},"RatioLiquidVolatilesOutput":{"value":191,"deprecated":false,"description":"The ratio of Liquid Volatiles in device's device's Output Atmosphere"},"RatioLiquidVolatilesOutput2":{"value":192,"deprecated":false,"description":"The ratio of Liquid Volatiles in device's Output2 Atmopshere"},"RatioNitrogen":{"value":16,"deprecated":false,"description":"The ratio of nitrogen in device atmosphere"},"RatioNitrogenInput":{"value":110,"deprecated":false,"description":"The ratio of nitrogen in device's input network"},"RatioNitrogenInput2":{"value":120,"deprecated":false,"description":"The ratio of nitrogen in device's Input2 network"},"RatioNitrogenOutput":{"value":130,"deprecated":false,"description":"The ratio of nitrogen in device's Output network"},"RatioNitrogenOutput2":{"value":140,"deprecated":false,"description":"The ratio of nitrogen in device's Output2 network"},"RatioNitrousOxide":{"value":83,"deprecated":false,"description":"The ratio of Nitrous Oxide in device atmosphere"},"RatioNitrousOxideInput":{"value":114,"deprecated":false,"description":"The ratio of Nitrous Oxide in device's input network"},"RatioNitrousOxideInput2":{"value":124,"deprecated":false,"description":"The ratio of Nitrous Oxide in device's Input2 network"},"RatioNitrousOxideOutput":{"value":134,"deprecated":false,"description":"The ratio of Nitrous Oxide in device's Output network"},"RatioNitrousOxideOutput2":{"value":144,"deprecated":false,"description":"The ratio of Nitrous Oxide in device's Output2 network"},"RatioOxygen":{"value":14,"deprecated":false,"description":"The ratio of oxygen in device atmosphere"},"RatioOxygenInput":{"value":108,"deprecated":false,"description":"The ratio of oxygen in device's input network"},"RatioOxygenInput2":{"value":118,"deprecated":false,"description":"The ratio of oxygen in device's Input2 network"},"RatioOxygenOutput":{"value":128,"deprecated":false,"description":"The ratio of oxygen in device's Output network"},"RatioOxygenOutput2":{"value":138,"deprecated":false,"description":"The ratio of oxygen in device's Output2 network"},"RatioPollutant":{"value":17,"deprecated":false,"description":"The ratio of pollutant in device atmosphere"},"RatioPollutantInput":{"value":111,"deprecated":false,"description":"The ratio of pollutant in device's input network"},"RatioPollutantInput2":{"value":121,"deprecated":false,"description":"The ratio of pollutant in device's Input2 network"},"RatioPollutantOutput":{"value":131,"deprecated":false,"description":"The ratio of pollutant in device's Output network"},"RatioPollutantOutput2":{"value":141,"deprecated":false,"description":"The ratio of pollutant in device's Output2 network"},"RatioPollutedWater":{"value":254,"deprecated":false,"description":"The ratio of polluted water in device atmosphere"},"RatioSteam":{"value":193,"deprecated":false,"description":"The ratio of Steam in device's Atmosphere"},"RatioSteamInput":{"value":194,"deprecated":false,"description":"The ratio of Steam in device's Input Atmosphere"},"RatioSteamInput2":{"value":195,"deprecated":false,"description":"The ratio of Steam in device's Input2 Atmosphere"},"RatioSteamOutput":{"value":196,"deprecated":false,"description":"The ratio of Steam in device's device's Output Atmosphere"},"RatioSteamOutput2":{"value":197,"deprecated":false,"description":"The ratio of Steam in device's Output2 Atmopshere"},"RatioVolatiles":{"value":18,"deprecated":false,"description":"The ratio of volatiles in device atmosphere"},"RatioVolatilesInput":{"value":112,"deprecated":false,"description":"The ratio of volatiles in device's input network"},"RatioVolatilesInput2":{"value":122,"deprecated":false,"description":"The ratio of volatiles in device's Input2 network"},"RatioVolatilesOutput":{"value":132,"deprecated":false,"description":"The ratio of volatiles in device's Output network"},"RatioVolatilesOutput2":{"value":142,"deprecated":false,"description":"The ratio of volatiles in device's Output2 network"},"RatioWater":{"value":19,"deprecated":false,"description":"The ratio of water in device atmosphere"},"RatioWaterInput":{"value":113,"deprecated":false,"description":"The ratio of water in device's input network"},"RatioWaterInput2":{"value":123,"deprecated":false,"description":"The ratio of water in device's Input2 network"},"RatioWaterOutput":{"value":133,"deprecated":false,"description":"The ratio of water in device's Output network"},"RatioWaterOutput2":{"value":143,"deprecated":false,"description":"The ratio of water in device's Output2 network"},"ReEntryAltitude":{"value":237,"deprecated":false,"description":"The altitude that the rocket will begin its decent to the pad. Must be between 25km and 120km"},"Reagents":{"value":13,"deprecated":false,"description":"Total number of reagents recorded by the device"},"RecipeHash":{"value":41,"deprecated":false,"description":"Current hash of the recipe the device is set to produce"},"ReferenceId":{"value":217,"deprecated":false,"description":"Unique Reference Identifier for this object"},"RequestHash":{"value":60,"deprecated":false,"description":"When set to the unique identifier, requests an item of the provided type from the device"},"RequiredPower":{"value":33,"deprecated":false,"description":"Idle operating power quantity, does not necessarily include extra demand power"},"ReturnFuelCost":{"value":100,"deprecated":false,"description":"Gets the fuel remaining in your rocket's fuel tank."},"Richness":{"value":263,"deprecated":false,"description":"The richness of the rocket's target site's mine-able deposit."},"Rpm":{"value":155,"deprecated":false,"description":"The number of revolutions per minute that the device's spinning mechanism is doing"},"SemiMajorAxis":{"value":248,"deprecated":false,"description":"The longest radius of an elliptical orbit in astronomical units, measuring half the major axis. Determines the size of the orbit."},"Setting":{"value":12,"deprecated":false,"description":"A variable setting that can be read or written, depending on the device"},"SettingInput":{"value":91,"deprecated":false,"description":""},"SettingOutput":{"value":92,"deprecated":false,"description":""},"SignalID":{"value":87,"deprecated":false,"description":"Returns the contact ID of the strongest signal from this Satellite"},"SignalStrength":{"value":86,"deprecated":false,"description":"Returns the degree offset of the strongest contact"},"Sites":{"value":260,"deprecated":false,"description":"The number of Sites that have been discovered at the rockets target Space Map location."},"Size":{"value":264,"deprecated":false,"description":"The size of the rocket's target site's mine-able deposit."},"SizeX":{"value":160,"deprecated":false,"description":"Size on the X (right) axis of the object in largeGrids (a largeGrid is 2meters)"},"SizeY":{"value":161,"deprecated":false,"description":"Size on the Y(Up) axis of the object in largeGrids (a largeGrid is 2meters)"},"SizeZ":{"value":162,"deprecated":false,"description":"Size on the Z(Forward) axis of the object in largeGrids (a largeGrid is 2meters)"},"SolarAngle":{"value":22,"deprecated":false,"description":"Solar angle of the device"},"SolarIrradiance":{"value":176,"deprecated":false,"description":""},"SoundAlert":{"value":175,"deprecated":false,"description":"Plays a sound alert on the devices speaker"},"Stress":{"value":156,"deprecated":false,"description":"Machines get stressed when working hard. When Stress reaches 100 the machine will automatically shut down"},"Survey":{"value":257,"deprecated":false,"description":"Progress status of Survey scan at the rocket's target Space Map Location. Returns a normalised value where 100% surveyed is equal to 1. If Survey scan is not available returns -1."},"TargetPadIndex":{"value":158,"deprecated":false,"description":"The index of the trader landing pad on this devices data network that it will try to call a trader in to land"},"TargetX":{"value":88,"deprecated":false,"description":"The target position in X dimension in world coordinates"},"TargetY":{"value":89,"deprecated":false,"description":"The target position in Y dimension in world coordinates"},"TargetZ":{"value":90,"deprecated":false,"description":"The target position in Z dimension in world coordinates"},"Temperature":{"value":6,"deprecated":false,"description":"The current temperature reading of the device"},"TemperatureDifferentialEfficiency":{"value":151,"deprecated":false,"description":"How the difference between the input pipe and waste pipe temperatures effect the machines efficiency"},"TemperatureExternal":{"value":73,"deprecated":false,"description":"The temperature of the outside of the device, usually the world atmosphere surrounding it"},"TemperatureInput":{"value":107,"deprecated":false,"description":"The current temperature reading of the device's Input Network"},"TemperatureInput2":{"value":117,"deprecated":false,"description":"The current temperature reading of the device's Input2 Network"},"TemperatureOutput":{"value":127,"deprecated":false,"description":"The current temperature reading of the device's Output Network"},"TemperatureOutput2":{"value":137,"deprecated":false,"description":"The current temperature reading of the device's Output2 Network"},"TemperatureSetting":{"value":72,"deprecated":false,"description":"The current setting for the internal temperature of the object (e.g. the Hardsuit A/C)"},"Throttle":{"value":154,"deprecated":false,"description":"Increases the rate at which the machine works (range: 0-100)"},"Thrust":{"value":221,"deprecated":false,"description":"Total current thrust of all rocket engines on the rocket in Newtons."},"ThrustToWeight":{"value":223,"deprecated":false,"description":"Ratio of thrust to weight of rocket. Weight is effected by local body gravity. A rocket with a low thrust to weight will expend more fuel during launch and landing."},"Time":{"value":102,"deprecated":false,"description":"Time"},"TimeToDestination":{"value":224,"deprecated":false,"description":"Estimated time in seconds until rocket arrives at target destination."},"TotalMoles":{"value":66,"deprecated":false,"description":"Returns the total moles of the device"},"TotalMolesInput":{"value":115,"deprecated":false,"description":"Returns the total moles of the device's Input Network"},"TotalMolesInput2":{"value":125,"deprecated":false,"description":"Returns the total moles of the device's Input2 Network"},"TotalMolesOutput":{"value":135,"deprecated":false,"description":"Returns the total moles of the device's Output Network"},"TotalMolesOutput2":{"value":145,"deprecated":false,"description":"Returns the total moles of the device's Output2 Network"},"TotalQuantity":{"value":265,"deprecated":false,"description":"The estimated total quantity of resources available to mine at the rocket's target Space Map Site."},"TrueAnomaly":{"value":251,"deprecated":false,"description":"An angular parameter that defines the position of a body moving along a Keplerian orbit. It is the angle between the direction of periapsis and the current position of the body, as seen from the main focus of the ellipse (the point around which the object orbits)."},"VelocityMagnitude":{"value":79,"deprecated":false,"description":"The current magnitude of the velocity vector"},"VelocityRelativeX":{"value":80,"deprecated":false,"description":"The current velocity X relative to the forward vector of this"},"VelocityRelativeY":{"value":81,"deprecated":false,"description":"The current velocity Y relative to the forward vector of this"},"VelocityRelativeZ":{"value":82,"deprecated":false,"description":"The current velocity Z relative to the forward vector of this"},"VelocityX":{"value":231,"deprecated":false,"description":"The world velocity of the entity in the X axis"},"VelocityY":{"value":232,"deprecated":false,"description":"The world velocity of the entity in the Y axis"},"VelocityZ":{"value":233,"deprecated":false,"description":"The world velocity of the entity in the Z axis"},"Vertical":{"value":21,"deprecated":false,"description":"Vertical setting of the device"},"VerticalRatio":{"value":35,"deprecated":false,"description":"Radio of vertical setting for device"},"Volume":{"value":67,"deprecated":false,"description":"Returns the device atmosphere volume"},"VolumeOfLiquid":{"value":182,"deprecated":false,"description":"The total volume of all liquids in Liters in the atmosphere"},"WattsReachingContact":{"value":164,"deprecated":false,"description":"The amount of watts actually hitting the contact. This is effected by the power of the dish and how far off-axis the dish is from the contact vector"},"Weight":{"value":222,"deprecated":false,"description":"Weight of Rocket in Newtons (Including fuel and cargo). Weight is effected by local body gravity."},"WorkingGasEfficiency":{"value":105,"deprecated":false,"description":"The Working Gas Efficiency reported by the machine, as a float between 0 and 1"}}}},"basicEnums":{"AirCon":{"enumName":"AirConditioningMode","values":{"Cold":{"value":0,"deprecated":false,"description":""},"Hot":{"value":1,"deprecated":false,"description":""}}},"AirControl":{"enumName":"AirControlMode","values":{"Draught":{"value":4,"deprecated":false,"description":""},"None":{"value":0,"deprecated":false,"description":""},"Offline":{"value":1,"deprecated":false,"description":""},"Pressure":{"value":2,"deprecated":false,"description":""}}},"Color":{"enumName":"ColorType","values":{"Black":{"value":7,"deprecated":false,"description":""},"Blue":{"value":0,"deprecated":false,"description":""},"Brown":{"value":8,"deprecated":false,"description":""},"Gray":{"value":1,"deprecated":false,"description":""},"Green":{"value":2,"deprecated":false,"description":""},"Khaki":{"value":9,"deprecated":false,"description":""},"Orange":{"value":3,"deprecated":false,"description":""},"Pink":{"value":10,"deprecated":false,"description":""},"Purple":{"value":11,"deprecated":false,"description":""},"Red":{"value":4,"deprecated":false,"description":""},"White":{"value":6,"deprecated":false,"description":""},"Yellow":{"value":5,"deprecated":false,"description":""}}},"DaylightSensorMode":{"enumName":"DaylightSensorMode","values":{"Default":{"value":0,"deprecated":false,"description":""},"Horizontal":{"value":1,"deprecated":false,"description":""},"Vertical":{"value":2,"deprecated":false,"description":""}}},"ElevatorMode":{"enumName":"ElevatorMode","values":{"Downward":{"value":2,"deprecated":false,"description":""},"Stationary":{"value":0,"deprecated":false,"description":""},"Upward":{"value":1,"deprecated":false,"description":""}}},"EntityState":{"enumName":"EntityState","values":{"Alive":{"value":0,"deprecated":false,"description":""},"Dead":{"value":1,"deprecated":false,"description":""},"Decay":{"value":3,"deprecated":false,"description":""},"Unconscious":{"value":2,"deprecated":false,"description":""}}},"GasType":{"enumName":"GasType","values":{"CarbonDioxide":{"value":4,"deprecated":false,"description":""},"Hydrogen":{"value":16384,"deprecated":false,"description":""},"LiquidCarbonDioxide":{"value":2048,"deprecated":false,"description":""},"LiquidHydrogen":{"value":32768,"deprecated":false,"description":""},"LiquidNitrogen":{"value":128,"deprecated":false,"description":""},"LiquidNitrousOxide":{"value":8192,"deprecated":false,"description":""},"LiquidOxygen":{"value":256,"deprecated":false,"description":""},"LiquidPollutant":{"value":4096,"deprecated":false,"description":""},"LiquidVolatiles":{"value":512,"deprecated":false,"description":""},"Nitrogen":{"value":2,"deprecated":false,"description":""},"NitrousOxide":{"value":64,"deprecated":false,"description":""},"Oxygen":{"value":1,"deprecated":false,"description":""},"Pollutant":{"value":16,"deprecated":false,"description":""},"PollutedWater":{"value":65536,"deprecated":false,"description":""},"Steam":{"value":1024,"deprecated":false,"description":""},"Undefined":{"value":0,"deprecated":false,"description":""},"Volatiles":{"value":8,"deprecated":false,"description":""},"Water":{"value":32,"deprecated":false,"description":""}}},"LogicSlotType":{"enumName":"LogicSlotType","values":{"Charge":{"value":10,"deprecated":false,"description":"returns current energy charge the slot occupant is holding"},"ChargeRatio":{"value":11,"deprecated":false,"description":"returns current energy charge the slot occupant is holding as a ratio between 0 and 1 of its maximum"},"Class":{"value":12,"deprecated":false,"description":"returns integer representing the class of object"},"Damage":{"value":4,"deprecated":false,"description":"returns the damage state of the item in the slot"},"Efficiency":{"value":5,"deprecated":false,"description":"returns the growth efficiency of the plant in the slot"},"FilterType":{"value":25,"deprecated":false,"description":"No description available"},"Growth":{"value":7,"deprecated":false,"description":"returns the current growth state of the plant in the slot"},"Health":{"value":6,"deprecated":false,"description":"returns the health of the plant in the slot"},"LineNumber":{"value":19,"deprecated":false,"description":"The line number of current execution for an integrated circuit running on this device. While this number can be written, use with caution"},"Lock":{"value":23,"deprecated":false,"description":"No description available"},"Mature":{"value":16,"deprecated":false,"description":"returns 1 if the plant in this slot is mature, 0 when it isn't"},"MaxQuantity":{"value":15,"deprecated":false,"description":"returns the max stack size of the item in the slot"},"None":{"value":0,"deprecated":false,"description":"No description"},"OccupantHash":{"value":2,"deprecated":false,"description":"returns the has of the current occupant, the unique identifier of the thing"},"Occupied":{"value":1,"deprecated":false,"description":"returns 0 when slot is not occupied, 1 when it is"},"On":{"value":22,"deprecated":false,"description":"No description available"},"Open":{"value":21,"deprecated":false,"description":"No description available"},"PrefabHash":{"value":17,"deprecated":false,"description":"returns the hash of the structure in the slot"},"Pressure":{"value":8,"deprecated":false,"description":"returns pressure of the slot occupants internal atmosphere"},"PressureAir":{"value":14,"deprecated":false,"description":"returns pressure in the air tank of the jetpack in this slot"},"PressureWaste":{"value":13,"deprecated":false,"description":"returns pressure in the waste tank of the jetpack in this slot"},"Quantity":{"value":3,"deprecated":false,"description":"returns the current quantity, such as stack size, of the item in the slot"},"ReferenceId":{"value":26,"deprecated":false,"description":"Unique Reference Identifier for this object"},"Seeding":{"value":18,"deprecated":false,"description":"Whether a plant is seeding (ready to harvest seeds from). Returns 1 if seeding or 0 if not."},"SortingClass":{"value":24,"deprecated":false,"description":"No description available"},"Temperature":{"value":9,"deprecated":false,"description":"returns temperature of the slot occupants internal atmosphere"},"Volume":{"value":20,"deprecated":false,"description":"No description available"}}},"LogicType":{"enumName":"LogicType","values":{"Acceleration":{"value":216,"deprecated":false,"description":"Change in velocity. Rockets that are deccelerating when landing will show this as negative value."},"Activate":{"value":9,"deprecated":false,"description":"1 if device is activated (usually means running), otherwise 0"},"AirRelease":{"value":75,"deprecated":false,"description":"The current state of the air release system, for example AirRelease = 1 for a Hardsuit sets Air Release to On"},"AlignmentError":{"value":243,"deprecated":false,"description":"The angular discrepancy between the telescope's current orientation and the target. Indicates how 'off target' the telescope is. Returns NaN when no target."},"Apex":{"value":238,"deprecated":false,"description":"The lowest altitude that the rocket will reach before it starts travelling upwards again."},"AutoLand":{"value":226,"deprecated":false,"description":"Engages the automatic landing algorithm. The rocket will automatically throttle and turn on and off its engines to achieve a smooth landing."},"AutoShutOff":{"value":218,"deprecated":false,"description":"Turns off all devices in the rocket upon reaching destination"},"BestContactFilter":{"value":267,"deprecated":false,"description":"Filters the satellite's auto selection of targets to a single reference ID."},"Bpm":{"value":103,"deprecated":false,"description":"Bpm"},"BurnTimeRemaining":{"value":225,"deprecated":false,"description":"Estimated time in seconds until fuel is depleted. Calculated based on current fuel usage."},"CelestialHash":{"value":242,"deprecated":false,"description":"The current hash of the targeted celestial object."},"CelestialParentHash":{"value":250,"deprecated":false,"description":"The hash for the name of the parent the celestial is orbiting, 0 if there is no parent celestial."},"Channel0":{"value":165,"deprecated":false,"description":"Channel on a cable network which should be considered volatile"},"Channel1":{"value":166,"deprecated":false,"description":"Channel on a cable network which should be considered volatile"},"Channel2":{"value":167,"deprecated":false,"description":"Channel on a cable network which should be considered volatile"},"Channel3":{"value":168,"deprecated":false,"description":"Channel on a cable network which should be considered volatile"},"Channel4":{"value":169,"deprecated":false,"description":"Channel on a cable network which should be considered volatile"},"Channel5":{"value":170,"deprecated":false,"description":"Channel on a cable network which should be considered volatile"},"Channel6":{"value":171,"deprecated":false,"description":"Channel on a cable network which should be considered volatile"},"Channel7":{"value":172,"deprecated":false,"description":"Channel on a cable network which should be considered volatile"},"Charge":{"value":11,"deprecated":false,"description":"The current charge the device has"},"Chart":{"value":256,"deprecated":false,"description":"Progress status of Chart scan at the rocket's target Space Map Location. Returns a clamped normalised value. If Chart scan is not available returns -1."},"ChartedNavPoints":{"value":259,"deprecated":false,"description":"The number of charted NavPoints at the rocket's target Space Map Location."},"ClearMemory":{"value":62,"deprecated":false,"description":"When set to 1, clears the counter memory (e.g. ExportCount). Will set itself back to 0 when actioned"},"CollectableGoods":{"value":101,"deprecated":false,"description":"Gets the cost of fuel to return the rocket to your current world."},"Color":{"value":38,"deprecated":false,"description":"\n Whether driven by concerns for clarity, safety or simple aesthetics, Stationeers have access to a small rainbow of colors for their constructions. These are the color setting for devices, represented as an integer.\n\n0: Blue\n1: Grey\n2: Green\n3: Orange\n4: Red\n5: Yellow\n6: White\n7: Black\n8: Brown\n9: Khaki\n10: Pink\n11: Purple\n\n It is an unwavering universal law that anything higher than 11 will be purple. The ODA is powerless to change this. Similarly, anything lower than 0 will be Blue.\n "},"Combustion":{"value":98,"deprecated":false,"description":"The assess atmosphere is on fire. Returns 1 if atmosphere is on fire, 0 if not."},"CombustionInput":{"value":146,"deprecated":false,"description":"The assess atmosphere is on fire. Returns 1 if device's input network is on fire, 0 if not."},"CombustionInput2":{"value":147,"deprecated":false,"description":"The assess atmosphere is on fire. Returns 1 if device's Input2 network is on fire, 0 if not."},"CombustionLimiter":{"value":153,"deprecated":false,"description":"Retards the rate of combustion inside the machine (range: 0-100), with 0 being the slowest rate of combustion and 100 being the fastest"},"CombustionOutput":{"value":148,"deprecated":false,"description":"The assess atmosphere is on fire. Returns 1 if device's Output network is on fire, 0 if not."},"CombustionOutput2":{"value":149,"deprecated":false,"description":"The assess atmosphere is on fire. Returns 1 if device's Output2 network is on fire, 0 if not."},"CompletionRatio":{"value":61,"deprecated":false,"description":"How complete the current production is for this device, between 0 and 1"},"ContactTypeId":{"value":198,"deprecated":false,"description":"The type id of the contact."},"CurrentCode":{"value":261,"deprecated":false,"description":"The Space Map Address of the rockets current Space Map Location"},"CurrentResearchPodType":{"value":93,"deprecated":false,"description":""},"Density":{"value":262,"deprecated":false,"description":"The density of the rocket's target site's mine-able deposit."},"DestinationCode":{"value":215,"deprecated":false,"description":"The Space Map Address of the rockets target Space Map Location"},"Discover":{"value":255,"deprecated":false,"description":"Progress status of Discovery scan at the rocket's target Space Map Location. Returns a clamped normalised value. If Discovery scan is not available returns -1."},"DistanceAu":{"value":244,"deprecated":false,"description":"The current distance to the celestial object, measured in astronomical units."},"DistanceKm":{"value":249,"deprecated":false,"description":"The current distance to the celestial object, measured in kilometers."},"DrillCondition":{"value":240,"deprecated":false,"description":"The current condition of the drill head in this devices drill slot. Expressed as a ratio between 0 and 1."},"DryMass":{"value":220,"deprecated":false,"description":"The Mass in kilograms of the rocket excluding fuel. The more massive the rocket the more fuel will be required to move to a new location in space."},"Eccentricity":{"value":247,"deprecated":false,"description":"A measure of how elliptical (oval) an orbit is. Ranges from 0 (a perfect circle) to 1 (a parabolic trajectory)."},"ElevatorLevel":{"value":40,"deprecated":false,"description":"Level the elevator is currently at"},"ElevatorSpeed":{"value":39,"deprecated":false,"description":"Current speed of the elevator"},"EntityState":{"value":239,"deprecated":false,"description":"The current entity state, such as whether it is dead, unconscious or alive, expressed as a state integer."},"EnvironmentEfficiency":{"value":104,"deprecated":false,"description":"The Environment Efficiency reported by the machine, as a float between 0 and 1"},"Error":{"value":4,"deprecated":false,"description":"1 if device is in error state, otherwise 0"},"ExhaustVelocity":{"value":235,"deprecated":false,"description":"The velocity of the exhaust gas in m/s"},"ExportCount":{"value":63,"deprecated":false,"description":"How many items exported since last ClearMemory"},"ExportQuantity":{"value":31,"deprecated":true,"description":"Total quantity of items exported by the device"},"ExportSlotHash":{"value":42,"deprecated":true,"description":"DEPRECATED"},"ExportSlotOccupant":{"value":32,"deprecated":true,"description":"DEPRECATED"},"Filtration":{"value":74,"deprecated":false,"description":"The current state of the filtration system, for example Filtration = 1 for a Hardsuit sets filtration to On"},"FlightControlRule":{"value":236,"deprecated":false,"description":"Flight control rule of rocket. None = 0, No AutoPilot. Normal = 1, Target Decent Apex of 60m. Alternate = 2, Velocity to High - Full throttle. Alternate2 = 3, Target an appropriate decent velocity as velocity is too low. FinalApproach = 4, Descend towards launch mount in a controlled manner."},"Flush":{"value":174,"deprecated":false,"description":"Set to 1 to activate the flush function on the device"},"ForceWrite":{"value":85,"deprecated":false,"description":"Forces Logic Writer devices to rewrite value"},"ForwardX":{"value":227,"deprecated":false,"description":"The direction the entity is facing expressed as a normalized vector"},"ForwardY":{"value":228,"deprecated":false,"description":"The direction the entity is facing expressed as a normalized vector"},"ForwardZ":{"value":229,"deprecated":false,"description":"The direction the entity is facing expressed as a normalized vector"},"Fuel":{"value":99,"deprecated":false,"description":"Gets the cost of fuel to return the rocket to your current world."},"Harvest":{"value":69,"deprecated":false,"description":"Performs the harvesting action for any plant based machinery"},"Horizontal":{"value":20,"deprecated":false,"description":"Horizontal setting of the device"},"HorizontalRatio":{"value":34,"deprecated":false,"description":"Radio of horizontal setting for device"},"Idle":{"value":37,"deprecated":false,"description":"Returns 1 if the device is currently idle, otherwise 0"},"ImportCount":{"value":64,"deprecated":false,"description":"How many items imported since last ClearMemory"},"ImportQuantity":{"value":29,"deprecated":true,"description":"Total quantity of items imported by the device"},"ImportSlotHash":{"value":43,"deprecated":true,"description":"DEPRECATED"},"ImportSlotOccupant":{"value":30,"deprecated":true,"description":"DEPRECATED"},"Inclination":{"value":246,"deprecated":false,"description":"The tilt of an orbit's plane relative to the equatorial plane, measured in degrees. Defines the orbital plane's angle."},"Index":{"value":241,"deprecated":false,"description":"The current index for the device."},"InterrogationProgress":{"value":157,"deprecated":false,"description":"Progress of this sattellite dish's interrogation of its current target, as a ratio from 0-1"},"LineNumber":{"value":173,"deprecated":false,"description":"The line number of current execution for an integrated circuit running on this device. While this number can be written, use with caution"},"Lock":{"value":10,"deprecated":false,"description":"1 if device is locked, otherwise 0, can be set in most devices and prevents the user from access the values"},"ManualResearchRequiredPod":{"value":94,"deprecated":false,"description":"Sets the pod type to search for a certain pod when breaking down a pods."},"Mass":{"value":219,"deprecated":false,"description":"The total Mass of the rocket in kilograms including fuel and cargo. The more massive the rocket the more fuel will be required to move to a new location in space."},"Maximum":{"value":23,"deprecated":false,"description":"Maximum setting of the device"},"MineablesInQueue":{"value":96,"deprecated":false,"description":"Returns the amount of mineables AIMEe has queued up to mine."},"MineablesInVicinity":{"value":95,"deprecated":false,"description":"Returns the amount of potential mineables within an extended area around AIMEe."},"MinedQuantity":{"value":266,"deprecated":false,"description":"The total number of resources that have been mined at the rocket's target Space Map Site."},"MinimumWattsToContact":{"value":163,"deprecated":false,"description":"Minimum required amount of watts from the dish hitting the target trader contact to start interrogating the contact"},"Mode":{"value":3,"deprecated":false,"description":"Integer for mode state, different devices will have different mode states available to them"},"NameHash":{"value":268,"deprecated":false,"description":"Provides the hash value for the name of the object as a 32 bit integer."},"NavPoints":{"value":258,"deprecated":false,"description":"The number of NavPoints at the rocket's target Space Map Location."},"NextWeatherEventTime":{"value":97,"deprecated":false,"description":"Returns in seconds when the next weather event is inbound."},"None":{"value":0,"deprecated":true,"description":"No description"},"On":{"value":28,"deprecated":false,"description":"The current state of the device, 0 for off, 1 for on"},"Open":{"value":2,"deprecated":false,"description":"1 if device is open, otherwise 0"},"OperationalTemperatureEfficiency":{"value":150,"deprecated":false,"description":"How the input pipe's temperature effects the machines efficiency"},"OrbitPeriod":{"value":245,"deprecated":false,"description":"The time it takes for an object to complete one full orbit around another object, measured in days. Indicates the duration of the orbital cycle."},"Orientation":{"value":230,"deprecated":false,"description":"The orientation of the entity in degrees in a plane relative towards the north origin"},"Output":{"value":70,"deprecated":false,"description":"The output operation for a sort handling device, such as a stacker or sorter, when in logic mode the device will only action one repetition when set zero or above and then back to -1 and await further instructions"},"PassedMoles":{"value":234,"deprecated":false,"description":"The number of moles that passed through this device on the previous simulation tick"},"Plant":{"value":68,"deprecated":false,"description":"Performs the planting action for any plant based machinery"},"PlantEfficiency1":{"value":52,"deprecated":true,"description":"DEPRECATED"},"PlantEfficiency2":{"value":53,"deprecated":true,"description":"DEPRECATED"},"PlantEfficiency3":{"value":54,"deprecated":true,"description":"DEPRECATED"},"PlantEfficiency4":{"value":55,"deprecated":true,"description":"DEPRECATED"},"PlantGrowth1":{"value":48,"deprecated":true,"description":"DEPRECATED"},"PlantGrowth2":{"value":49,"deprecated":true,"description":"DEPRECATED"},"PlantGrowth3":{"value":50,"deprecated":true,"description":"DEPRECATED"},"PlantGrowth4":{"value":51,"deprecated":true,"description":"DEPRECATED"},"PlantHash1":{"value":56,"deprecated":true,"description":"DEPRECATED"},"PlantHash2":{"value":57,"deprecated":true,"description":"DEPRECATED"},"PlantHash3":{"value":58,"deprecated":true,"description":"DEPRECATED"},"PlantHash4":{"value":59,"deprecated":true,"description":"DEPRECATED"},"PlantHealth1":{"value":44,"deprecated":true,"description":"DEPRECATED"},"PlantHealth2":{"value":45,"deprecated":true,"description":"DEPRECATED"},"PlantHealth3":{"value":46,"deprecated":true,"description":"DEPRECATED"},"PlantHealth4":{"value":47,"deprecated":true,"description":"DEPRECATED"},"PositionX":{"value":76,"deprecated":false,"description":"The current position in X dimension in world coordinates"},"PositionY":{"value":77,"deprecated":false,"description":"The current position in Y dimension in world coordinates"},"PositionZ":{"value":78,"deprecated":false,"description":"The current position in Z dimension in world coordinates"},"Power":{"value":1,"deprecated":false,"description":"Can be read to return if the device is correctly powered or not, set via the power system, return 1 if powered and 0 if not"},"PowerActual":{"value":26,"deprecated":false,"description":"How much energy the device or network is actually using"},"PowerGeneration":{"value":65,"deprecated":false,"description":"Returns how much power is being generated"},"PowerPotential":{"value":25,"deprecated":false,"description":"How much energy the device or network potentially provides"},"PowerRequired":{"value":36,"deprecated":false,"description":"Power requested from the device and/or network"},"PrefabHash":{"value":84,"deprecated":false,"description":"The hash of the structure"},"Pressure":{"value":5,"deprecated":false,"description":"The current pressure reading of the device"},"PressureEfficiency":{"value":152,"deprecated":false,"description":"How the pressure of the input pipe and waste pipe effect the machines efficiency"},"PressureExternal":{"value":7,"deprecated":false,"description":"Setting for external pressure safety, in KPa"},"PressureInput":{"value":106,"deprecated":false,"description":"The current pressure reading of the device's Input Network"},"PressureInput2":{"value":116,"deprecated":false,"description":"The current pressure reading of the device's Input2 Network"},"PressureInternal":{"value":8,"deprecated":false,"description":"Setting for internal pressure safety, in KPa"},"PressureOutput":{"value":126,"deprecated":false,"description":"The current pressure reading of the device's Output Network"},"PressureOutput2":{"value":136,"deprecated":false,"description":"The current pressure reading of the device's Output2 Network"},"PressureSetting":{"value":71,"deprecated":false,"description":"The current setting for the internal pressure of the object (e.g. the Hardsuit Air release), in KPa"},"Progress":{"value":214,"deprecated":false,"description":"Progress of the rocket to the next node on the map expressed as a value between 0-1."},"Quantity":{"value":27,"deprecated":false,"description":"Total quantity on the device"},"Ratio":{"value":24,"deprecated":false,"description":"Context specific value depending on device, 0 to 1 based ratio"},"RatioCarbonDioxide":{"value":15,"deprecated":false,"description":"The ratio of Carbon Dioxide in device atmosphere"},"RatioCarbonDioxideInput":{"value":109,"deprecated":false,"description":"The ratio of Carbon Dioxide in device's input network"},"RatioCarbonDioxideInput2":{"value":119,"deprecated":false,"description":"The ratio of Carbon Dioxide in device's Input2 network"},"RatioCarbonDioxideOutput":{"value":129,"deprecated":false,"description":"The ratio of Carbon Dioxide in device's Output network"},"RatioCarbonDioxideOutput2":{"value":139,"deprecated":false,"description":"The ratio of Carbon Dioxide in device's Output2 network"},"RatioHydrogen":{"value":252,"deprecated":false,"description":"The ratio of Hydrogen in device's Atmopshere"},"RatioLiquidCarbonDioxide":{"value":199,"deprecated":false,"description":"The ratio of Liquid Carbon Dioxide in device's Atmosphere"},"RatioLiquidCarbonDioxideInput":{"value":200,"deprecated":false,"description":"The ratio of Liquid Carbon Dioxide in device's Input Atmosphere"},"RatioLiquidCarbonDioxideInput2":{"value":201,"deprecated":false,"description":"The ratio of Liquid Carbon Dioxide in device's Input2 Atmosphere"},"RatioLiquidCarbonDioxideOutput":{"value":202,"deprecated":false,"description":"The ratio of Liquid Carbon Dioxide in device's device's Output Atmosphere"},"RatioLiquidCarbonDioxideOutput2":{"value":203,"deprecated":false,"description":"The ratio of Liquid Carbon Dioxide in device's Output2 Atmopshere"},"RatioLiquidHydrogen":{"value":253,"deprecated":false,"description":"The ratio of Liquid Hydrogen in device's Atmopshere"},"RatioLiquidNitrogen":{"value":177,"deprecated":false,"description":"The ratio of Liquid Nitrogen in device atmosphere"},"RatioLiquidNitrogenInput":{"value":178,"deprecated":false,"description":"The ratio of Liquid Nitrogen in device's input network"},"RatioLiquidNitrogenInput2":{"value":179,"deprecated":false,"description":"The ratio of Liquid Nitrogen in device's Input2 network"},"RatioLiquidNitrogenOutput":{"value":180,"deprecated":false,"description":"The ratio of Liquid Nitrogen in device's Output network"},"RatioLiquidNitrogenOutput2":{"value":181,"deprecated":false,"description":"The ratio of Liquid Nitrogen in device's Output2 network"},"RatioLiquidNitrousOxide":{"value":209,"deprecated":false,"description":"The ratio of Liquid Nitrous Oxide in device's Atmosphere"},"RatioLiquidNitrousOxideInput":{"value":210,"deprecated":false,"description":"The ratio of Liquid Nitrous Oxide in device's Input Atmosphere"},"RatioLiquidNitrousOxideInput2":{"value":211,"deprecated":false,"description":"The ratio of Liquid Nitrous Oxide in device's Input2 Atmosphere"},"RatioLiquidNitrousOxideOutput":{"value":212,"deprecated":false,"description":"The ratio of Liquid Nitrous Oxide in device's device's Output Atmosphere"},"RatioLiquidNitrousOxideOutput2":{"value":213,"deprecated":false,"description":"The ratio of Liquid Nitrous Oxide in device's Output2 Atmopshere"},"RatioLiquidOxygen":{"value":183,"deprecated":false,"description":"The ratio of Liquid Oxygen in device's Atmosphere"},"RatioLiquidOxygenInput":{"value":184,"deprecated":false,"description":"The ratio of Liquid Oxygen in device's Input Atmosphere"},"RatioLiquidOxygenInput2":{"value":185,"deprecated":false,"description":"The ratio of Liquid Oxygen in device's Input2 Atmosphere"},"RatioLiquidOxygenOutput":{"value":186,"deprecated":false,"description":"The ratio of Liquid Oxygen in device's device's Output Atmosphere"},"RatioLiquidOxygenOutput2":{"value":187,"deprecated":false,"description":"The ratio of Liquid Oxygen in device's Output2 Atmopshere"},"RatioLiquidPollutant":{"value":204,"deprecated":false,"description":"The ratio of Liquid Pollutant in device's Atmosphere"},"RatioLiquidPollutantInput":{"value":205,"deprecated":false,"description":"The ratio of Liquid Pollutant in device's Input Atmosphere"},"RatioLiquidPollutantInput2":{"value":206,"deprecated":false,"description":"The ratio of Liquid Pollutant in device's Input2 Atmosphere"},"RatioLiquidPollutantOutput":{"value":207,"deprecated":false,"description":"The ratio of Liquid Pollutant in device's device's Output Atmosphere"},"RatioLiquidPollutantOutput2":{"value":208,"deprecated":false,"description":"The ratio of Liquid Pollutant in device's Output2 Atmopshere"},"RatioLiquidVolatiles":{"value":188,"deprecated":false,"description":"The ratio of Liquid Volatiles in device's Atmosphere"},"RatioLiquidVolatilesInput":{"value":189,"deprecated":false,"description":"The ratio of Liquid Volatiles in device's Input Atmosphere"},"RatioLiquidVolatilesInput2":{"value":190,"deprecated":false,"description":"The ratio of Liquid Volatiles in device's Input2 Atmosphere"},"RatioLiquidVolatilesOutput":{"value":191,"deprecated":false,"description":"The ratio of Liquid Volatiles in device's device's Output Atmosphere"},"RatioLiquidVolatilesOutput2":{"value":192,"deprecated":false,"description":"The ratio of Liquid Volatiles in device's Output2 Atmopshere"},"RatioNitrogen":{"value":16,"deprecated":false,"description":"The ratio of nitrogen in device atmosphere"},"RatioNitrogenInput":{"value":110,"deprecated":false,"description":"The ratio of nitrogen in device's input network"},"RatioNitrogenInput2":{"value":120,"deprecated":false,"description":"The ratio of nitrogen in device's Input2 network"},"RatioNitrogenOutput":{"value":130,"deprecated":false,"description":"The ratio of nitrogen in device's Output network"},"RatioNitrogenOutput2":{"value":140,"deprecated":false,"description":"The ratio of nitrogen in device's Output2 network"},"RatioNitrousOxide":{"value":83,"deprecated":false,"description":"The ratio of Nitrous Oxide in device atmosphere"},"RatioNitrousOxideInput":{"value":114,"deprecated":false,"description":"The ratio of Nitrous Oxide in device's input network"},"RatioNitrousOxideInput2":{"value":124,"deprecated":false,"description":"The ratio of Nitrous Oxide in device's Input2 network"},"RatioNitrousOxideOutput":{"value":134,"deprecated":false,"description":"The ratio of Nitrous Oxide in device's Output network"},"RatioNitrousOxideOutput2":{"value":144,"deprecated":false,"description":"The ratio of Nitrous Oxide in device's Output2 network"},"RatioOxygen":{"value":14,"deprecated":false,"description":"The ratio of oxygen in device atmosphere"},"RatioOxygenInput":{"value":108,"deprecated":false,"description":"The ratio of oxygen in device's input network"},"RatioOxygenInput2":{"value":118,"deprecated":false,"description":"The ratio of oxygen in device's Input2 network"},"RatioOxygenOutput":{"value":128,"deprecated":false,"description":"The ratio of oxygen in device's Output network"},"RatioOxygenOutput2":{"value":138,"deprecated":false,"description":"The ratio of oxygen in device's Output2 network"},"RatioPollutant":{"value":17,"deprecated":false,"description":"The ratio of pollutant in device atmosphere"},"RatioPollutantInput":{"value":111,"deprecated":false,"description":"The ratio of pollutant in device's input network"},"RatioPollutantInput2":{"value":121,"deprecated":false,"description":"The ratio of pollutant in device's Input2 network"},"RatioPollutantOutput":{"value":131,"deprecated":false,"description":"The ratio of pollutant in device's Output network"},"RatioPollutantOutput2":{"value":141,"deprecated":false,"description":"The ratio of pollutant in device's Output2 network"},"RatioPollutedWater":{"value":254,"deprecated":false,"description":"The ratio of polluted water in device atmosphere"},"RatioSteam":{"value":193,"deprecated":false,"description":"The ratio of Steam in device's Atmosphere"},"RatioSteamInput":{"value":194,"deprecated":false,"description":"The ratio of Steam in device's Input Atmosphere"},"RatioSteamInput2":{"value":195,"deprecated":false,"description":"The ratio of Steam in device's Input2 Atmosphere"},"RatioSteamOutput":{"value":196,"deprecated":false,"description":"The ratio of Steam in device's device's Output Atmosphere"},"RatioSteamOutput2":{"value":197,"deprecated":false,"description":"The ratio of Steam in device's Output2 Atmopshere"},"RatioVolatiles":{"value":18,"deprecated":false,"description":"The ratio of volatiles in device atmosphere"},"RatioVolatilesInput":{"value":112,"deprecated":false,"description":"The ratio of volatiles in device's input network"},"RatioVolatilesInput2":{"value":122,"deprecated":false,"description":"The ratio of volatiles in device's Input2 network"},"RatioVolatilesOutput":{"value":132,"deprecated":false,"description":"The ratio of volatiles in device's Output network"},"RatioVolatilesOutput2":{"value":142,"deprecated":false,"description":"The ratio of volatiles in device's Output2 network"},"RatioWater":{"value":19,"deprecated":false,"description":"The ratio of water in device atmosphere"},"RatioWaterInput":{"value":113,"deprecated":false,"description":"The ratio of water in device's input network"},"RatioWaterInput2":{"value":123,"deprecated":false,"description":"The ratio of water in device's Input2 network"},"RatioWaterOutput":{"value":133,"deprecated":false,"description":"The ratio of water in device's Output network"},"RatioWaterOutput2":{"value":143,"deprecated":false,"description":"The ratio of water in device's Output2 network"},"ReEntryAltitude":{"value":237,"deprecated":false,"description":"The altitude that the rocket will begin its decent to the pad. Must be between 25km and 120km"},"Reagents":{"value":13,"deprecated":false,"description":"Total number of reagents recorded by the device"},"RecipeHash":{"value":41,"deprecated":false,"description":"Current hash of the recipe the device is set to produce"},"ReferenceId":{"value":217,"deprecated":false,"description":"Unique Reference Identifier for this object"},"RequestHash":{"value":60,"deprecated":false,"description":"When set to the unique identifier, requests an item of the provided type from the device"},"RequiredPower":{"value":33,"deprecated":false,"description":"Idle operating power quantity, does not necessarily include extra demand power"},"ReturnFuelCost":{"value":100,"deprecated":false,"description":"Gets the fuel remaining in your rocket's fuel tank."},"Richness":{"value":263,"deprecated":false,"description":"The richness of the rocket's target site's mine-able deposit."},"Rpm":{"value":155,"deprecated":false,"description":"The number of revolutions per minute that the device's spinning mechanism is doing"},"SemiMajorAxis":{"value":248,"deprecated":false,"description":"The longest radius of an elliptical orbit in astronomical units, measuring half the major axis. Determines the size of the orbit."},"Setting":{"value":12,"deprecated":false,"description":"A variable setting that can be read or written, depending on the device"},"SettingInput":{"value":91,"deprecated":false,"description":""},"SettingOutput":{"value":92,"deprecated":false,"description":""},"SignalID":{"value":87,"deprecated":false,"description":"Returns the contact ID of the strongest signal from this Satellite"},"SignalStrength":{"value":86,"deprecated":false,"description":"Returns the degree offset of the strongest contact"},"Sites":{"value":260,"deprecated":false,"description":"The number of Sites that have been discovered at the rockets target Space Map location."},"Size":{"value":264,"deprecated":false,"description":"The size of the rocket's target site's mine-able deposit."},"SizeX":{"value":160,"deprecated":false,"description":"Size on the X (right) axis of the object in largeGrids (a largeGrid is 2meters)"},"SizeY":{"value":161,"deprecated":false,"description":"Size on the Y(Up) axis of the object in largeGrids (a largeGrid is 2meters)"},"SizeZ":{"value":162,"deprecated":false,"description":"Size on the Z(Forward) axis of the object in largeGrids (a largeGrid is 2meters)"},"SolarAngle":{"value":22,"deprecated":false,"description":"Solar angle of the device"},"SolarIrradiance":{"value":176,"deprecated":false,"description":""},"SoundAlert":{"value":175,"deprecated":false,"description":"Plays a sound alert on the devices speaker"},"Stress":{"value":156,"deprecated":false,"description":"Machines get stressed when working hard. When Stress reaches 100 the machine will automatically shut down"},"Survey":{"value":257,"deprecated":false,"description":"Progress status of Survey scan at the rocket's target Space Map Location. Returns a normalised value where 100% surveyed is equal to 1. If Survey scan is not available returns -1."},"TargetPadIndex":{"value":158,"deprecated":false,"description":"The index of the trader landing pad on this devices data network that it will try to call a trader in to land"},"TargetX":{"value":88,"deprecated":false,"description":"The target position in X dimension in world coordinates"},"TargetY":{"value":89,"deprecated":false,"description":"The target position in Y dimension in world coordinates"},"TargetZ":{"value":90,"deprecated":false,"description":"The target position in Z dimension in world coordinates"},"Temperature":{"value":6,"deprecated":false,"description":"The current temperature reading of the device"},"TemperatureDifferentialEfficiency":{"value":151,"deprecated":false,"description":"How the difference between the input pipe and waste pipe temperatures effect the machines efficiency"},"TemperatureExternal":{"value":73,"deprecated":false,"description":"The temperature of the outside of the device, usually the world atmosphere surrounding it"},"TemperatureInput":{"value":107,"deprecated":false,"description":"The current temperature reading of the device's Input Network"},"TemperatureInput2":{"value":117,"deprecated":false,"description":"The current temperature reading of the device's Input2 Network"},"TemperatureOutput":{"value":127,"deprecated":false,"description":"The current temperature reading of the device's Output Network"},"TemperatureOutput2":{"value":137,"deprecated":false,"description":"The current temperature reading of the device's Output2 Network"},"TemperatureSetting":{"value":72,"deprecated":false,"description":"The current setting for the internal temperature of the object (e.g. the Hardsuit A/C)"},"Throttle":{"value":154,"deprecated":false,"description":"Increases the rate at which the machine works (range: 0-100)"},"Thrust":{"value":221,"deprecated":false,"description":"Total current thrust of all rocket engines on the rocket in Newtons."},"ThrustToWeight":{"value":223,"deprecated":false,"description":"Ratio of thrust to weight of rocket. Weight is effected by local body gravity. A rocket with a low thrust to weight will expend more fuel during launch and landing."},"Time":{"value":102,"deprecated":false,"description":"Time"},"TimeToDestination":{"value":224,"deprecated":false,"description":"Estimated time in seconds until rocket arrives at target destination."},"TotalMoles":{"value":66,"deprecated":false,"description":"Returns the total moles of the device"},"TotalMolesInput":{"value":115,"deprecated":false,"description":"Returns the total moles of the device's Input Network"},"TotalMolesInput2":{"value":125,"deprecated":false,"description":"Returns the total moles of the device's Input2 Network"},"TotalMolesOutput":{"value":135,"deprecated":false,"description":"Returns the total moles of the device's Output Network"},"TotalMolesOutput2":{"value":145,"deprecated":false,"description":"Returns the total moles of the device's Output2 Network"},"TotalQuantity":{"value":265,"deprecated":false,"description":"The estimated total quantity of resources available to mine at the rocket's target Space Map Site."},"TrueAnomaly":{"value":251,"deprecated":false,"description":"An angular parameter that defines the position of a body moving along a Keplerian orbit. It is the angle between the direction of periapsis and the current position of the body, as seen from the main focus of the ellipse (the point around which the object orbits)."},"VelocityMagnitude":{"value":79,"deprecated":false,"description":"The current magnitude of the velocity vector"},"VelocityRelativeX":{"value":80,"deprecated":false,"description":"The current velocity X relative to the forward vector of this"},"VelocityRelativeY":{"value":81,"deprecated":false,"description":"The current velocity Y relative to the forward vector of this"},"VelocityRelativeZ":{"value":82,"deprecated":false,"description":"The current velocity Z relative to the forward vector of this"},"VelocityX":{"value":231,"deprecated":false,"description":"The world velocity of the entity in the X axis"},"VelocityY":{"value":232,"deprecated":false,"description":"The world velocity of the entity in the Y axis"},"VelocityZ":{"value":233,"deprecated":false,"description":"The world velocity of the entity in the Z axis"},"Vertical":{"value":21,"deprecated":false,"description":"Vertical setting of the device"},"VerticalRatio":{"value":35,"deprecated":false,"description":"Radio of vertical setting for device"},"Volume":{"value":67,"deprecated":false,"description":"Returns the device atmosphere volume"},"VolumeOfLiquid":{"value":182,"deprecated":false,"description":"The total volume of all liquids in Liters in the atmosphere"},"WattsReachingContact":{"value":164,"deprecated":false,"description":"The amount of watts actually hitting the contact. This is effected by the power of the dish and how far off-axis the dish is from the contact vector"},"Weight":{"value":222,"deprecated":false,"description":"Weight of Rocket in Newtons (Including fuel and cargo). Weight is effected by local body gravity."},"WorkingGasEfficiency":{"value":105,"deprecated":false,"description":"The Working Gas Efficiency reported by the machine, as a float between 0 and 1"}}},"PowerMode":{"enumName":"PowerMode","values":{"Charged":{"value":4,"deprecated":false,"description":""},"Charging":{"value":3,"deprecated":false,"description":""},"Discharged":{"value":1,"deprecated":false,"description":""},"Discharging":{"value":2,"deprecated":false,"description":""},"Idle":{"value":0,"deprecated":false,"description":""}}},"PrinterInstruction":{"enumName":"PrinterInstruction","values":{"DeviceSetLock":{"value":6,"deprecated":false,"description":""},"EjectAllReagents":{"value":8,"deprecated":false,"description":""},"EjectReagent":{"value":7,"deprecated":false,"description":""},"ExecuteRecipe":{"value":2,"deprecated":false,"description":""},"JumpIfNextInvalid":{"value":4,"deprecated":false,"description":""},"JumpToAddress":{"value":5,"deprecated":false,"description":""},"MissingRecipeReagent":{"value":9,"deprecated":false,"description":""},"None":{"value":0,"deprecated":false,"description":""},"StackPointer":{"value":1,"deprecated":false,"description":""},"WaitUntilNextValid":{"value":3,"deprecated":false,"description":""}}},"ReEntryProfile":{"enumName":"ReEntryProfile","values":{"High":{"value":3,"deprecated":false,"description":""},"Max":{"value":4,"deprecated":false,"description":""},"Medium":{"value":2,"deprecated":false,"description":""},"None":{"value":0,"deprecated":false,"description":""},"Optimal":{"value":1,"deprecated":false,"description":""}}},"RobotMode":{"enumName":"RobotMode","values":{"Follow":{"value":1,"deprecated":false,"description":""},"MoveToTarget":{"value":2,"deprecated":false,"description":""},"None":{"value":0,"deprecated":false,"description":""},"PathToTarget":{"value":5,"deprecated":false,"description":""},"Roam":{"value":3,"deprecated":false,"description":""},"StorageFull":{"value":6,"deprecated":false,"description":""},"Unload":{"value":4,"deprecated":false,"description":""}}},"RocketMode":{"enumName":"RocketMode","values":{"Chart":{"value":5,"deprecated":false,"description":""},"Discover":{"value":4,"deprecated":false,"description":""},"Invalid":{"value":0,"deprecated":false,"description":""},"Mine":{"value":2,"deprecated":false,"description":""},"None":{"value":1,"deprecated":false,"description":""},"Survey":{"value":3,"deprecated":false,"description":""}}},"SlotClass":{"enumName":"Class","values":{"AccessCard":{"value":22,"deprecated":false,"description":""},"Appliance":{"value":18,"deprecated":false,"description":""},"Back":{"value":3,"deprecated":false,"description":""},"Battery":{"value":14,"deprecated":false,"description":""},"Belt":{"value":16,"deprecated":false,"description":""},"Blocked":{"value":38,"deprecated":false,"description":""},"Bottle":{"value":25,"deprecated":false,"description":""},"Cartridge":{"value":21,"deprecated":false,"description":""},"Circuit":{"value":24,"deprecated":false,"description":""},"Circuitboard":{"value":7,"deprecated":false,"description":""},"CreditCard":{"value":28,"deprecated":false,"description":""},"DataDisk":{"value":8,"deprecated":false,"description":""},"DirtCanister":{"value":29,"deprecated":false,"description":""},"DrillHead":{"value":35,"deprecated":false,"description":""},"Egg":{"value":15,"deprecated":false,"description":""},"Entity":{"value":13,"deprecated":false,"description":""},"Flare":{"value":37,"deprecated":false,"description":""},"GasCanister":{"value":5,"deprecated":false,"description":""},"GasFilter":{"value":4,"deprecated":false,"description":""},"Glasses":{"value":27,"deprecated":false,"description":""},"Helmet":{"value":1,"deprecated":false,"description":""},"Ingot":{"value":19,"deprecated":false,"description":""},"LiquidBottle":{"value":32,"deprecated":false,"description":""},"LiquidCanister":{"value":31,"deprecated":false,"description":""},"Magazine":{"value":23,"deprecated":false,"description":""},"Motherboard":{"value":6,"deprecated":false,"description":""},"None":{"value":0,"deprecated":false,"description":""},"Ore":{"value":10,"deprecated":false,"description":""},"Organ":{"value":9,"deprecated":false,"description":""},"Plant":{"value":11,"deprecated":false,"description":""},"ProgrammableChip":{"value":26,"deprecated":false,"description":""},"ScanningHead":{"value":36,"deprecated":false,"description":""},"SensorProcessingUnit":{"value":30,"deprecated":false,"description":""},"SoundCartridge":{"value":34,"deprecated":false,"description":""},"Suit":{"value":2,"deprecated":false,"description":""},"SuitMod":{"value":39,"deprecated":false,"description":""},"Tool":{"value":17,"deprecated":false,"description":""},"Torpedo":{"value":20,"deprecated":false,"description":""},"Uniform":{"value":12,"deprecated":false,"description":""},"Wreckage":{"value":33,"deprecated":false,"description":""}}},"SorterInstruction":{"enumName":"SorterInstruction","values":{"FilterPrefabHashEquals":{"value":1,"deprecated":false,"description":""},"FilterPrefabHashNotEquals":{"value":2,"deprecated":false,"description":""},"FilterQuantityCompare":{"value":5,"deprecated":false,"description":""},"FilterSlotTypeCompare":{"value":4,"deprecated":false,"description":""},"FilterSortingClassCompare":{"value":3,"deprecated":false,"description":""},"LimitNextExecutionByCount":{"value":6,"deprecated":false,"description":""},"None":{"value":0,"deprecated":false,"description":""}}},"SortingClass":{"enumName":"SortingClass","values":{"Appliances":{"value":6,"deprecated":false,"description":""},"Atmospherics":{"value":7,"deprecated":false,"description":""},"Clothing":{"value":5,"deprecated":false,"description":""},"Default":{"value":0,"deprecated":false,"description":""},"Food":{"value":4,"deprecated":false,"description":""},"Ices":{"value":10,"deprecated":false,"description":""},"Kits":{"value":1,"deprecated":false,"description":""},"Ores":{"value":9,"deprecated":false,"description":""},"Resources":{"value":3,"deprecated":false,"description":""},"Storage":{"value":8,"deprecated":false,"description":""},"Tools":{"value":2,"deprecated":false,"description":""}}},"Sound":{"enumName":"SoundAlert","values":{"AirlockCycling":{"value":22,"deprecated":false,"description":""},"Alarm1":{"value":45,"deprecated":false,"description":""},"Alarm10":{"value":12,"deprecated":false,"description":""},"Alarm11":{"value":13,"deprecated":false,"description":""},"Alarm12":{"value":14,"deprecated":false,"description":""},"Alarm2":{"value":1,"deprecated":false,"description":""},"Alarm3":{"value":2,"deprecated":false,"description":""},"Alarm4":{"value":3,"deprecated":false,"description":""},"Alarm5":{"value":4,"deprecated":false,"description":""},"Alarm6":{"value":5,"deprecated":false,"description":""},"Alarm7":{"value":6,"deprecated":false,"description":""},"Alarm8":{"value":10,"deprecated":false,"description":""},"Alarm9":{"value":11,"deprecated":false,"description":""},"Alert":{"value":17,"deprecated":false,"description":""},"Danger":{"value":15,"deprecated":false,"description":""},"Depressurising":{"value":20,"deprecated":false,"description":""},"FireFireFire":{"value":28,"deprecated":false,"description":""},"Five":{"value":33,"deprecated":false,"description":""},"Floor":{"value":34,"deprecated":false,"description":""},"Four":{"value":32,"deprecated":false,"description":""},"HaltWhoGoesThere":{"value":27,"deprecated":false,"description":""},"HighCarbonDioxide":{"value":44,"deprecated":false,"description":""},"IntruderAlert":{"value":19,"deprecated":false,"description":""},"LiftOff":{"value":36,"deprecated":false,"description":""},"MalfunctionDetected":{"value":26,"deprecated":false,"description":""},"Music1":{"value":7,"deprecated":false,"description":""},"Music2":{"value":8,"deprecated":false,"description":""},"Music3":{"value":9,"deprecated":false,"description":""},"None":{"value":0,"deprecated":false,"description":""},"One":{"value":29,"deprecated":false,"description":""},"PollutantsDetected":{"value":43,"deprecated":false,"description":""},"PowerLow":{"value":23,"deprecated":false,"description":""},"PressureHigh":{"value":39,"deprecated":false,"description":""},"PressureLow":{"value":40,"deprecated":false,"description":""},"Pressurising":{"value":21,"deprecated":false,"description":""},"RocketLaunching":{"value":35,"deprecated":false,"description":""},"StormIncoming":{"value":18,"deprecated":false,"description":""},"SystemFailure":{"value":24,"deprecated":false,"description":""},"TemperatureHigh":{"value":41,"deprecated":false,"description":""},"TemperatureLow":{"value":42,"deprecated":false,"description":""},"Three":{"value":31,"deprecated":false,"description":""},"TraderIncoming":{"value":37,"deprecated":false,"description":""},"TraderLanded":{"value":38,"deprecated":false,"description":""},"Two":{"value":30,"deprecated":false,"description":""},"Warning":{"value":16,"deprecated":false,"description":""},"Welcome":{"value":25,"deprecated":false,"description":""}}},"TransmitterMode":{"enumName":"LogicTransmitterMode","values":{"Active":{"value":1,"deprecated":false,"description":""},"Passive":{"value":0,"deprecated":false,"description":""}}},"Vent":{"enumName":"VentDirection","values":{"Inward":{"value":1,"deprecated":false,"description":""},"Outward":{"value":0,"deprecated":false,"description":""}}},"_unnamed":{"enumName":"ConditionOperation","values":{"Equals":{"value":0,"deprecated":false,"description":""},"Greater":{"value":1,"deprecated":false,"description":""},"Less":{"value":2,"deprecated":false,"description":""},"NotEquals":{"value":3,"deprecated":false,"description":""}}}}},"prefabsByHash":{"-2140672772":"ItemKitGroundTelescope","-2138748650":"StructureSmallSatelliteDish","-2128896573":"StructureStairwellBackRight","-2127086069":"StructureBench2","-2126113312":"ItemLiquidPipeValve","-2124435700":"ItemDisposableBatteryCharger","-2123455080":"StructureBatterySmall","-2113838091":"StructureLiquidPipeAnalyzer","-2113012215":"ItemGasTankStorage","-2112390778":"StructureFrameCorner","-2111886401":"ItemPotatoBaked","-2107840748":"ItemFlashingLight","-2106280569":"ItemLiquidPipeVolumePump","-2105052344":"StructureAirlock","-2104175091":"ItemCannedCondensedMilk","-2098556089":"ItemKitHydraulicPipeBender","-2098214189":"ItemKitLogicMemory","-2096421875":"StructureInteriorDoorGlass","-2087593337":"StructureAirConditioner","-2087223687":"StructureRocketMiner","-2085885850":"DynamicGPR","-2083426457":"UniformCommander","-2082355173":"StructureWindTurbine","-2076086215":"StructureInsulatedPipeTJunction","-2073202179":"ItemPureIcePollutedWater","-2072792175":"RailingIndustrial02","-2068497073":"StructurePipeInsulatedLiquidCrossJunction","-2066892079":"ItemWeldingTorch","-2066653089":"StructurePictureFrameThickMountPortraitSmall","-2066405918":"Landingpad_DataConnectionPiece","-2062364768":"ItemKitPictureFrame","-2061979347":"ItemMKIIArcWelder","-2060571986":"StructureCompositeWindow","-2052458905":"ItemEmergencyDrill","-2049946335":"Rover_MkI","-2045627372":"StructureSolarPanel","-2044446819":"CircuitboardShipDisplay","-2042448192":"StructureBench","-2041566697":"StructurePictureFrameThickLandscapeSmall","-2039971217":"ItemKitLargeSatelliteDish","-2038889137":"ItemKitMusicMachines","-2038663432":"ItemStelliteGlassSheets","-2038384332":"ItemKitVendingMachine","-2031440019":"StructurePumpedLiquidEngine","-2024250974":"StructurePictureFrameThinLandscapeSmall","-2020231820":"StructureStacker","-2015613246":"ItemMKIIScrewdriver","-2008706143":"StructurePressurePlateLarge","-2006384159":"StructurePipeLiquidCrossJunction5","-1993197973":"ItemGasFilterWater","-1991297271":"SpaceShuttle","-1990600883":"SeedBag_Fern","-1981101032":"ItemSecurityCamera","-1976947556":"CardboardBox","-1971419310":"ItemSoundCartridgeSynth","-1968255729":"StructureCornerLocker","-1967711059":"StructureInsulatedPipeCorner","-1963016580":"StructureWallArchCornerSquare","-1961153710":"StructureControlChair","-1958705204":"PortableComposter","-1957063345":"CartridgeGPS","-1949054743":"StructureConsoleLED1x3","-1943134693":"ItemDuctTape","-1939209112":"DynamicLiquidCanisterEmpty","-1935075707":"ItemKitDeepMiner","-1931958659":"ItemKitAutomatedOven","-1930442922":"MothershipCore","-1924492105":"ItemKitSolarPanel","-1923778429":"CircuitboardPowerControl","-1922066841":"SeedBag_Tomato","-1918892177":"StructureChuteUmbilicalFemale","-1918215845":"StructureMediumConvectionRadiator","-1916176068":"ItemGasFilterVolatilesInfinite","-1908268220":"MotherboardSorter","-1901500508":"ItemSoundCartridgeDrums","-1900541738":"StructureFairingTypeA3","-1898247915":"RailingElegant02","-1897868623":"ItemStelliteIngot","-1897221677":"StructureSmallTableBacklessSingle","-1888248335":"StructureHydraulicPipeBender","-1886261558":"ItemWrench","-1884103228":"SeedBag_SugarCane","-1883441704":"ItemSoundCartridgeBass","-1880941852":"ItemSprayCanGreen","-1877193979":"StructurePipeCrossJunction5","-1875856925":"StructureSDBHopper","-1875271296":"ItemMKIIMiningDrill","-1872345847":"Landingpad_TaxiPieceCorner","-1868555784":"ItemKitStairwell","-1867508561":"ItemKitVendingMachineRefrigerated","-1867280568":"ItemKitGasUmbilical","-1866880307":"ItemBatteryCharger","-1864982322":"ItemMuffin","-1861154222":"ItemKitDynamicHydroponics","-1860064656":"StructureWallLight","-1856720921":"StructurePipeLiquidCorner","-1854861891":"ItemGasCanisterWater","-1854167549":"ItemKitLaunchMount","-1844430312":"DeviceLfoVolume","-1843379322":"StructureCableCornerH3","-1841871763":"StructureCompositeCladdingAngledCornerInner","-1841632400":"StructureHydroponicsTrayData","-1831558953":"ItemKitInsulatedPipeUtilityLiquid","-1826855889":"ItemKitWall","-1826023284":"ItemWreckageAirConditioner1","-1821571150":"ItemKitStirlingEngine","-1814939203":"StructureGasUmbilicalMale","-1812330717":"StructureSleeperRight","-1808154199":"StructureManualHatch","-1805394113":"ItemOxite","-1805020897":"ItemKitLiquidTurboVolumePump","-1798420047":"StructureLiquidUmbilicalMale","-1798362329":"StructurePipeMeter","-1798044015":"ItemKitUprightWindTurbine","-1796655088":"ItemPipeRadiator","-1794932560":"StructureOverheadShortCornerLocker","-1792787349":"ItemCableAnalyser","-1788929869":"Landingpad_LiquidConnectorOutwardPiece","-1785673561":"StructurePipeCorner","-1776897113":"ItemKitSensor","-1773192190":"ItemReusableFireExtinguisher","-1768732546":"CartridgeOreScanner","-1766301997":"ItemPipeVolumePump","-1758710260":"StructureGrowLight","-1758310454":"ItemHardSuit","-1756913871":"StructureRailing","-1756896811":"StructureCableJunction4Burnt","-1756772618":"ItemCreditCard","-1755116240":"ItemKitBlastDoor","-1753893214":"ItemKitAutolathe","-1752768283":"ItemKitPassiveLargeRadiatorGas","-1752493889":"StructurePictureFrameThinMountLandscapeSmall","-1751627006":"ItemPipeHeater","-1748926678":"ItemPureIceLiquidPollutant","-1743663875":"ItemKitDrinkingFountain","-1741267161":"DynamicGasCanisterEmpty","-1737666461":"ItemSpaceCleaner","-1731627004":"ItemAuthoringToolRocketNetwork","-1730464583":"ItemSensorProcessingUnitMesonScanner","-1721846327":"ItemWaterWallCooler","-1715945725":"ItemPureIceLiquidCarbonDioxide","-1713748313":"AccessCardRed","-1713611165":"DynamicGasCanisterAir","-1713470563":"StructureMotionSensor","-1712264413":"ItemCookedPowderedEggs","-1712153401":"ItemGasCanisterNitrousOxide","-1710540039":"ItemKitHeatExchanger","-1708395413":"ItemPureIceNitrogen","-1697302609":"ItemKitPipeRadiatorLiquid","-1693382705":"StructureInLineTankGas1x1","-1691151239":"SeedBag_Rice","-1686949570":"StructurePictureFrameThickPortraitLarge","-1683849799":"ApplianceDeskLampLeft","-1682930158":"ItemWreckageWallCooler1","-1680477930":"StructureGasUmbilicalFemale","-1678456554":"ItemGasFilterWaterInfinite","-1674187440":"StructurePassthroughHeatExchangerGasToGas","-1672404896":"StructureAutomatedOven","-1668992663":"StructureElectrolyzer","-1667675295":"MonsterEgg","-1663349918":"ItemMiningDrillHeavy","-1662476145":"ItemAstroloySheets","-1662394403":"ItemWreckageTurbineGenerator1","-1650383245":"ItemMiningBackPack","-1645266981":"ItemSprayCanGrey","-1641500434":"ItemReagentMix","-1634532552":"CartridgeAccessController","-1633947337":"StructureRecycler","-1633000411":"StructureSmallTableBacklessDouble","-1629347579":"ItemKitRocketGasFuelTank","-1625452928":"StructureStairwellFrontPassthrough","-1620686196":"StructureCableJunctionBurnt","-1619793705":"ItemKitPipe","-1616308158":"ItemPureIce","-1613497288":"StructureBasketHoop","-1611559100":"StructureWallPaddedThinNoBorder","-1606848156":"StructureTankBig","-1602030414":"StructureInsulatedTankConnectorLiquid","-1590715731":"ItemKitTurbineGenerator","-1585956426":"ItemKitCrateMkII","-1577831321":"StructureRefrigeratedVendingMachine","-1573623434":"ItemFlowerBlue","-1567752627":"ItemWallCooler","-1554349863":"StructureSolarPanel45","-1552586384":"ItemGasCanisterPollutants","-1550278665":"CartridgeAtmosAnalyser","-1546743960":"StructureWallPaddedArchLightsFittings","-1545574413":"StructureSolarPanelDualReinforced","-1542172466":"StructureCableCorner4","-1536471028":"StructurePressurePlateSmall","-1535893860":"StructureFlashingLight","-1533287054":"StructureFuselageTypeA2","-1532448832":"ItemPipeDigitalValve","-1530571426":"StructureCableJunctionH5","-1529819532":"StructureFlagSmall","-1527229051":"StopWatch","-1516581844":"ItemUraniumOre","-1514298582":"Landingpad_ThreshholdPiece","-1513337058":"ItemFlowerGreen","-1513030150":"StructureCompositeCladdingAngled","-1510009608":"StructureChairThickSingle","-1505147578":"StructureInsulatedPipeCrossJunction5","-1499471529":"ItemNitrice","-1493672123":"StructureCargoStorageSmall","-1489728908":"StructureLogicCompare","-1477941080":"Landingpad_TaxiPieceStraight","-1472829583":"StructurePassthroughHeatExchangerLiquidToLiquid","-1470820996":"ItemKitCompositeCladding","-1469588766":"StructureChuteInlet","-1467449329":"StructureSleeper","-1462180176":"CartridgeElectronicReader","-1459641358":"StructurePictureFrameThickMountPortraitLarge","-1448105779":"ItemSteelFrames","-1446854725":"StructureChuteFlipFlopSplitter","-1434523206":"StructurePictureFrameThickLandscapeLarge","-1431998347":"ItemKitAdvancedComposter","-1430440215":"StructureLiquidTankBigInsulated","-1429782576":"StructureEvaporationChamber","-1427845483":"StructureWallGeometryTMirrored","-1427415566":"KitchenTableShort","-1425428917":"StructureChairRectangleSingle","-1423212473":"StructureTransformer","-1418288625":"StructurePictureFrameThinLandscapeLarge","-1417912632":"StructureCompositeCladdingAngledCornerInnerLong","-1414203269":"ItemPlantEndothermic_Genepool2","-1411986716":"ItemFlowerOrange","-1411327657":"AccessCardBlue","-1407480603":"StructureWallSmallPanelsOpen","-1406385572":"ItemNickelIngot","-1405295588":"StructurePipeCrossJunction","-1404690610":"StructureCableJunction6","-1397583760":"ItemPassiveVentInsulated","-1394008073":"ItemKitChairs","-1388288459":"StructureBatteryLarge","-1387439451":"ItemGasFilterNitrogenL","-1386237782":"KitchenTableTall","-1385712131":"StructureCapsuleTankGas","-1381321828":"StructureCryoTubeVertical","-1369060582":"StructureWaterWallCooler","-1361598922":"ItemKitTables","-1351081801":"StructureLargeHangerDoor","-1348105509":"ItemGoldOre","-1344601965":"ItemCannedMushroom","-1339716113":"AppliancePaintMixer","-1339479035":"AccessCardGray","-1337091041":"StructureChuteDigitalValveRight","-1335056202":"ItemSugarCane","-1332682164":"ItemKitSmallDirectHeatExchanger","-1330388999":"AccessCardBlack","-1326019434":"StructureLogicWriter","-1321250424":"StructureLogicWriterSwitch","-1309433134":"StructureWallIron04","-1306628937":"ItemPureIceLiquidVolatiles","-1306415132":"StructureWallLightBattery","-1303038067":"AppliancePlantGeneticAnalyzer","-1301215609":"ItemIronIngot","-1300059018":"StructureSleeperVertical","-1295222317":"Landingpad_2x2CenterPiece01","-1290755415":"SeedBag_Corn","-1280984102":"StructureDigitalValve","-1276379454":"StructureTankConnector","-1274308304":"ItemSuitModCryogenicUpgrade","-1267511065":"ItemKitLandingPadWaypoint","-1264455519":"DynamicGasTankAdvancedOxygen","-1262580790":"ItemBasketBall","-1260618380":"ItemSpacepack","-1256996603":"ItemKitRocketDatalink","-1252983604":"StructureGasSensor","-1251009404":"ItemPureIceCarbonDioxide","-1248429712":"ItemKitTurboVolumePump","-1247674305":"ItemGasFilterNitrousOxide","-1245724402":"StructureChairThickDouble","-1243329828":"StructureWallPaddingArchVent","-1241851179":"ItemKitConsole","-1241256797":"ItemKitBeds","-1240951678":"StructureFrameIron","-1234745580":"ItemDirtyOre","-1230658883":"StructureLargeDirectHeatExchangeGastoGas","-1219128491":"ItemSensorProcessingUnitOreScanner","-1218579821":"StructurePictureFrameThickPortraitSmall","-1217998945":"ItemGasFilterOxygenL","-1216167727":"Landingpad_LiquidConnectorInwardPiece","-1214467897":"ItemWreckageStructureWeatherStation008","-1208890208":"ItemPlantThermogenic_Creative","-1198702771":"ItemRocketScanningHead","-1196981113":"StructureCableStraightBurnt","-1193543727":"ItemHydroponicTray","-1185552595":"ItemCannedRicePudding","-1183969663":"StructureInLineTankLiquid1x2","-1182923101":"StructureInteriorDoorTriangle","-1181922382":"ItemKitElectronicsPrinter","-1178961954":"StructureWaterBottleFiller","-1177469307":"StructureWallVent","-1176140051":"ItemSensorLenses","-1174735962":"ItemSoundCartridgeLeads","-1169014183":"StructureMediumConvectionRadiatorLiquid","-1168199498":"ItemKitFridgeBig","-1166461357":"ItemKitPipeLiquid","-1161662836":"StructureWallFlatCornerTriangleFlat","-1160020195":"StructureLogicMathUnary","-1159179557":"ItemPlantEndothermic_Creative","-1154200014":"ItemSensorProcessingUnitCelestialScanner","-1152812099":"StructureChairRectangleDouble","-1152261938":"ItemGasCanisterOxygen","-1150448260":"ItemPureIceOxygen","-1149857558":"StructureBackPressureRegulator","-1146760430":"StructurePictureFrameThinMountLandscapeLarge","-1141760613":"StructureMediumRadiatorLiquid","-1136173965":"ApplianceMicrowave","-1134459463":"ItemPipeGasMixer","-1134148135":"CircuitboardModeControl","-1129453144":"StructureActiveVent","-1126688298":"StructureWallPaddedArchCorner","-1125641329":"StructurePlanter","-1125305264":"StructureBatteryMedium","-1117581553":"ItemHorticultureBelt","-1116110181":"CartridgeMedicalAnalyser","-1113471627":"StructureCompositeFloorGrating3","-1108244510":"ItemPlainCake","-1104478996":"ItemWreckageStructureWeatherStation004","-1103727120":"StructureCableFuse1k","-1102977898":"WeaponTorpedo","-1102403554":"StructureWallPaddingThin","-1100218307":"Landingpad_GasConnectorOutwardPiece","-1094868323":"AppliancePlantGeneticSplicer","-1093860567":"StructureMediumRocketGasFuelTank","-1088008720":"StructureStairs4x2Rails","-1081797501":"StructureShowerPowered","-1076892658":"ItemCookedMushroom","-1068925231":"ItemGlasses","-1068629349":"KitchenTableSimpleTall","-1067319543":"ItemGasFilterOxygenM","-1065725831":"StructureTransformerMedium","-1061945368":"ItemKitDynamicCanister","-1061510408":"ItemEmergencyPickaxe","-1057658015":"ItemWheat","-1056029600":"ItemEmergencyArcWelder","-1055451111":"ItemGasFilterOxygenInfinite","-1051805505":"StructureLiquidTurboVolumePump","-1044933269":"ItemPureIceLiquidHydrogen","-1032590967":"StructureCompositeCladdingAngledCornerInnerLongR","-1032513487":"StructureAreaPowerControlReversed","-1022714809":"StructureChuteOutlet","-1022693454":"ItemKitHarvie","-1014695176":"ItemGasCanisterFuel","-1011701267":"StructureCompositeWall04","-1009150565":"StructureSorter","-999721119":"StructurePipeLabel","-999714082":"ItemCannedEdamame","-998592080":"ItemTomato","-983091249":"ItemCobaltOre","-981223316":"StructureCableCorner4HBurnt","-976273247":"Landingpad_StraightPiece01","-975966237":"StructureMediumRadiator","-971920158":"ItemDynamicScrubber","-965741795":"StructureCondensationValve","-958884053":"StructureChuteUmbilicalMale","-945806652":"ItemKitElevator","-934345724":"StructureSolarPanelReinforced","-932335800":"ItemKitRocketTransformerSmall","-932136011":"CartridgeConfiguration","-929742000":"ItemSilverIngot","-927931558":"ItemKitHydroponicAutomated","-924678969":"StructureSmallTableRectangleSingle","-919745414":"ItemWreckageStructureWeatherStation005","-916518678":"ItemSilverOre","-913817472":"StructurePipeTJunction","-913649823":"ItemPickaxe","-906521320":"ItemPipeLiquidRadiator","-899013427":"StructurePortablesConnector","-895027741":"StructureCompositeFloorGrating2","-890946730":"StructureTransformerSmall","-889269388":"StructureCableCorner","-876560854":"ItemKitChuteUmbilical","-874791066":"ItemPureIceSteam","-869869491":"ItemBeacon","-868916503":"ItemKitWindTurbine","-867969909":"ItemKitRocketMiner","-862048392":"StructureStairwellBackPassthrough","-858143148":"StructureWallArch","-857713709":"HumanSkull","-851746783":"StructureLogicMemory","-850484480":"StructureChuteBin","-846838195":"ItemKitWallFlat","-842048328":"ItemActiveVent","-838472102":"ItemFlashlight","-834664349":"ItemWreckageStructureWeatherStation001","-831480639":"ItemBiomass","-831211676":"ItemKitPowerTransmitterOmni","-828056979":"StructureKlaxon","-827912235":"StructureElevatorLevelFront","-827125300":"ItemKitPipeOrgan","-821868990":"ItemKitWallPadded","-817051527":"DynamicGasCanisterFuel","-816454272":"StructureReinforcedCompositeWindowSteel","-815193061":"StructureConsoleLED5","-813426145":"StructureInsulatedInLineTankLiquid1x1","-810874728":"StructureChuteDigitalFlipFlopSplitterLeft","-806986392":"MotherboardRockets","-806743925":"ItemKitFurnace","-800947386":"ItemTropicalPlant","-799849305":"ItemKitLiquidTank","-793837322":"StructureCompositeDoor","-793623899":"StructureStorageLocker","-788672929":"RespawnPoint","-787796599":"ItemInconelIngot","-785498334":"StructurePoweredVentLarge","-784733231":"ItemKitWallGeometry","-783387184":"StructureInsulatedPipeCrossJunction4","-782951720":"StructurePowerConnector","-782453061":"StructureLiquidPipeOneWayValve","-776581573":"StructureWallLargePanelArrow","-775128944":"StructureShower","-772542081":"ItemChemLightBlue","-767867194":"StructureLogicSlotReader","-767685874":"ItemGasCanisterCarbonDioxide","-767597887":"ItemPipeAnalyizer","-761772413":"StructureBatteryChargerSmall","-756587791":"StructureWaterBottleFillerPowered","-749191906":"AppliancePackagingMachine","-744098481":"ItemIntegratedCircuit10","-743968726":"ItemLabeller","-742234680":"StructureCableJunctionH4","-739292323":"StructureWallCooler","-737232128":"StructurePurgeValve","-733500083":"StructureCrateMount","-732720413":"ItemKitDynamicGenerator","-722284333":"StructureConsoleDual","-721824748":"ItemGasFilterOxygen","-709086714":"ItemCookedTomato","-707307845":"ItemCopperOre","-693235651":"StructureLogicTransmitter","-692036078":"StructureValve","-688284639":"StructureCompositeWindowIron","-688107795":"ItemSprayCanBlack","-684020753":"ItemRocketMiningDrillHeadLongTerm","-676435305":"ItemMiningBelt","-668314371":"ItemGasCanisterSmart","-665995854":"ItemFlour","-660451023":"StructureSmallTableRectangleDouble","-659093969":"StructureChuteUmbilicalFemaleSide","-654790771":"ItemSteelIngot","-654756733":"SeedBag_Wheet","-654619479":"StructureRocketTower","-648683847":"StructureGasUmbilicalFemaleSide","-647164662":"StructureLockerSmall","-641491515":"StructureSecurityPrinter","-639306697":"StructureWallSmallPanelsArrow","-638019974":"ItemKitDynamicMKIILiquidCanister","-636127860":"ItemKitRocketManufactory","-633723719":"ItemPureIceVolatiles","-632657357":"ItemGasFilterNitrogenM","-631590668":"StructureCableFuse5k","-628145954":"StructureCableJunction6Burnt","-626563514":"StructureComputer","-624011170":"StructurePressureFedGasEngine","-619745681":"StructureGroundBasedTelescope","-616758353":"ItemKitAdvancedFurnace","-613784254":"StructureHeatExchangerLiquidtoLiquid","-611232514":"StructureChuteJunction","-607241919":"StructureChuteWindow","-598730959":"ItemWearLamp","-598545233":"ItemKitAdvancedPackagingMachine","-597479390":"ItemChemLightGreen","-583103395":"EntityRoosterBrown","-566775170":"StructureLargeExtendableRadiator","-566348148":"StructureMediumHangerDoor","-558953231":"StructureLaunchMount","-554553467":"StructureShortLocker","-551612946":"ItemKitCrateMount","-545234195":"ItemKitCryoTube","-539224550":"StructureSolarPanelDual","-532672323":"ItemPlantSwitchGrass","-532384855":"StructureInsulatedPipeLiquidTJunction","-528695432":"ItemKitSolarPanelBasicReinforced","-525810132":"ItemChemLightRed","-524546923":"ItemKitWallIron","-524289310":"ItemEggCarton","-517628750":"StructureWaterDigitalValve","-507770416":"StructureSmallDirectHeatExchangeLiquidtoLiquid","-504717121":"ItemWirelessBatteryCellExtraLarge","-503738105":"ItemGasFilterPollutantsInfinite","-498464883":"ItemSprayCanBlue","-491247370":"RespawnPointWallMounted","-487378546":"ItemIronSheets","-472094806":"ItemGasCanisterVolatiles","-466050668":"ItemCableCoil","-465741100":"StructureToolManufactory","-463037670":"StructureAdvancedPackagingMachine","-462415758":"Battery_Wireless_cell","-459827268":"ItemBatteryCellLarge","-454028979":"StructureLiquidVolumePump","-453039435":"ItemKitTransformer","-443130773":"StructureVendingMachine","-419758574":"StructurePipeHeater","-417629293":"StructurePipeCrossJunction4","-415420281":"StructureLadder","-412551656":"ItemHardJetpack","-412104504":"CircuitboardCameraDisplay","-404336834":"ItemCopperIngot","-400696159":"ReagentColorOrange","-400115994":"StructureBattery","-399883995":"StructurePipeRadiatorFlat","-387546514":"StructureCompositeCladdingAngledLong","-386375420":"DynamicGasTankAdvanced","-385323479":"WeaponPistolEnergy","-383972371":"ItemFertilizedEgg","-380904592":"ItemRocketMiningDrillHeadIce","-375156130":"Flag_ODA_8m","-374567952":"AccessCardGreen","-367720198":"StructureChairBoothCornerLeft","-366262681":"ItemKitFuselage","-365253871":"ItemSolidFuel","-364868685":"ItemKitSolarPanelReinforced","-355127880":"ItemToolBelt","-351438780":"ItemEmergencyAngleGrinder","-349716617":"StructureCableFuse50k","-348918222":"StructureCompositeCladdingAngledCornerLongR","-348054045":"StructureFiltration","-345383640":"StructureLogicReader","-344968335":"ItemKitMotherShipCore","-342072665":"StructureCamera","-341365649":"StructureCableJunctionHBurnt","-337075633":"MotherboardComms","-332896929":"AccessCardOrange","-327468845":"StructurePowerTransmitterOmni","-324331872":"StructureGlassDoor","-322413931":"DynamicGasCanisterCarbonDioxide","-321403609":"StructureVolumePump","-319510386":"DynamicMKIILiquidCanisterWater","-314072139":"ItemKitRocketBattery","-311170652":"ElectronicPrinterMod","-310178617":"ItemWreckageHydroponicsTray1","-303008602":"ItemKitRocketCelestialTracker","-302420053":"StructureFrameSide","-297990285":"ItemInvarIngot","-291862981":"StructureSmallTableThickSingle","-290196476":"ItemSiliconIngot","-287495560":"StructureLiquidPipeHeater","-261575861":"ItemChocolateCake","-260316435":"StructureStirlingEngine","-259357734":"StructureCompositeCladdingRounded","-256607540":"SMGMagazine","-248475032":"ItemLiquidPipeHeater","-247344692":"StructureArcFurnace","-229808600":"ItemTablet","-214232602":"StructureGovernedGasEngine","-212902482":"StructureStairs4x2RailR","-190236170":"ItemLeadOre","-188177083":"StructureBeacon","-185568964":"ItemGasFilterCarbonDioxideInfinite","-185207387":"ItemLiquidCanisterEmpty","-178893251":"ItemMKIIWireCutters","-177792789":"ItemPlantThermogenic_Genepool1","-177610944":"StructureInsulatedInLineTankGas1x2","-177220914":"StructureCableCornerBurnt","-175342021":"StructureCableJunction","-174523552":"ItemKitLaunchTower","-164622691":"StructureBench3","-161107071":"MotherboardProgrammableChip","-158007629":"ItemSprayCanOrange","-155945899":"StructureWallPaddedCorner","-146200530":"StructureCableStraightH","-137465079":"StructureDockPortSide","-128473777":"StructureCircuitHousing","-127121474":"MotherboardMissionControl","-126038526":"ItemKitSpeaker","-124308857":"StructureLogicReagentReader","-123934842":"ItemGasFilterNitrousOxideInfinite","-121514007":"ItemKitPressureFedGasEngine","-115809132":"StructureCableJunction4HBurnt","-110788403":"ElevatorCarrage","-104908736":"StructureFairingTypeA2","-99091572":"ItemKitPressureFedLiquidEngine","-99064335":"Meteorite","-98995857":"ItemKitArcFurnace","-92778058":"StructureInsulatedPipeCrossJunction","-90898877":"ItemWaterPipeMeter","-86315541":"FireArmSMG","-84573099":"ItemHardsuitHelmet","-82508479":"ItemSolderIngot","-82343730":"CircuitboardGasDisplay","-82087220":"DynamicGenerator","-81376085":"ItemFlowerRed","-78099334":"KitchenTableSimpleShort","-73796547":"ImGuiCircuitboardAirlockControl","-72748982":"StructureInsulatedPipeLiquidCrossJunction6","-69685069":"StructureCompositeCladdingAngledCorner","-65087121":"StructurePowerTransmitter","-57608687":"ItemFrenchFries","-53151617":"StructureConsoleLED1x2","-48342840":"UniformMarine","-41519077":"Battery_Wireless_cell_Big","-39359015":"StructureCableCornerH","-38898376":"ItemPipeCowl","-37454456":"StructureStairwellFrontLeft","-37302931":"StructureWallPaddedWindowThin","-31273349":"StructureInsulatedTankConnector","-27284803":"ItemKitInsulatedPipeUtility","-21970188":"DynamicLight","-21225041":"ItemKitBatteryLarge","-19246131":"StructureSmallTableThickDouble","-9559091":"ItemAmmoBox","-9555593":"StructurePipeLiquidCrossJunction4","-8883951":"DynamicGasCanisterRocketFuel","-1755356":"ItemPureIcePollutant","-997763":"ItemWreckageLargeExtendableRadiator01","-492611":"StructureSingleBed","2393826":"StructureCableCorner3HBurnt","7274344":"StructureAutoMinerSmall","8709219":"CrateMkII","8804422":"ItemGasFilterWaterM","8846501":"StructureWallPaddedNoBorder","15011598":"ItemGasFilterVolatiles","15829510":"ItemMiningCharge","19645163":"ItemKitEngineSmall","21266291":"StructureHeatExchangerGastoGas","23052817":"StructurePressurantValve","24258244":"StructureWallHeater","24786172":"StructurePassiveLargeRadiatorLiquid","26167457":"StructureWallPlating","30686509":"ItemSprayCanPurple","30727200":"DynamicGasCanisterNitrousOxide","35149429":"StructureInLineTankGas1x2","38555961":"ItemSteelSheets","42280099":"ItemGasCanisterEmpty","45733800":"ItemWreckageWallCooler2","62768076":"ItemPumpkinPie","63677771":"ItemGasFilterPollutantsM","73728932":"StructurePipeStraight","77421200":"ItemKitDockingPort","81488783":"CartridgeTracker","94730034":"ToyLuna","98602599":"ItemWreckageTurbineGenerator2","101488029":"StructurePowerUmbilicalFemale","106953348":"DynamicSkeleton","107741229":"ItemWaterBottle","108086870":"DynamicGasCanisterVolatiles","110184667":"StructureCompositeCladdingRoundedCornerInner","111280987":"ItemTerrainManipulator","118685786":"FlareGun","119096484":"ItemKitPlanter","120807542":"ReagentColorGreen","121951301":"DynamicGasCanisterNitrogen","123504691":"ItemKitPressurePlate","124499454":"ItemKitLogicSwitch","139107321":"StructureCompositeCladdingSpherical","141535121":"ItemLaptop","142831994":"ApplianceSeedTray","146051619":"Landingpad_TaxiPieceHold","147395155":"StructureFuselageTypeC5","148305004":"ItemKitBasket","150135861":"StructureRocketCircuitHousing","152378047":"StructurePipeCrossJunction6","152751131":"ItemGasFilterNitrogenInfinite","155214029":"StructureStairs4x2RailL","155856647":"NpcChick","156348098":"ItemWaspaloyIngot","158502707":"StructureReinforcedWallPaddedWindowThin","159886536":"ItemKitWaterBottleFiller","162553030":"ItemEmergencyWrench","163728359":"StructureChuteDigitalFlipFlopSplitterRight","168307007":"StructureChuteStraight","168615924":"ItemKitDoor","169888054":"ItemWreckageAirConditioner2","170818567":"Landingpad_GasCylinderTankPiece","170878959":"ItemKitStairs","173023800":"ItemPlantSampler","176446172":"ItemAlienMushroom","178422810":"ItemKitSatelliteDish","178472613":"StructureRocketEngineTiny","179694804":"StructureWallPaddedNoBorderCorner","182006674":"StructureShelfMedium","195298587":"StructureExpansionValve","195442047":"ItemCableFuse","197243872":"ItemKitRoverMKI","197293625":"DynamicGasCanisterWater","201215010":"ItemAngleGrinder","205837861":"StructureCableCornerH4","205916793":"ItemEmergencySpaceHelmet","206848766":"ItemKitGovernedGasRocketEngine","209854039":"StructurePressureRegulator","212919006":"StructureCompositeCladdingCylindrical","215486157":"ItemCropHay","220644373":"ItemKitLogicProcessor","221058307":"AutolathePrinterMod","225377225":"StructureChuteOverflow","226055671":"ItemLiquidPipeAnalyzer","226410516":"ItemGoldIngot","231903234":"KitStructureCombustionCentrifuge","234601764":"ItemChocolateBar","235361649":"ItemExplosive","235638270":"StructureConsole","238631271":"ItemPassiveVent","240174650":"ItemMKIIAngleGrinder","247238062":"Handgun","248893646":"PassiveSpeaker","249073136":"ItemKitBeacon","252561409":"ItemCharcoal","255034731":"StructureSuitStorage","258339687":"ItemCorn","262616717":"StructurePipeLiquidTJunction","264413729":"StructureLogicBatchReader","265720906":"StructureDeepMiner","266099983":"ItemEmergencyScrewdriver","266654416":"ItemFilterFern","268421361":"StructureCableCorner4Burnt","271315669":"StructureFrameCornerCut","272136332":"StructureTankSmallInsulated","281380789":"StructureCableFuse100k","288111533":"ItemKitIceCrusher","291368213":"ItemKitPowerTransmitter","291524699":"StructurePipeLiquidCrossJunction6","293581318":"ItemKitLandingPadBasic","295678685":"StructureInsulatedPipeLiquidStraight","298130111":"StructureWallFlatCornerSquare","299189339":"ItemHat","309693520":"ItemWaterPipeDigitalValve","311593418":"SeedBag_Mushroom","318437449":"StructureCableCorner3Burnt","321604921":"StructureLogicSwitch2","322782515":"StructureOccupancySensor","323957548":"ItemKitSDBHopper","324791548":"ItemMKIIDrill","324868581":"StructureCompositeFloorGrating","326752036":"ItemKitSleeper","334097180":"EntityChickenBrown","335498166":"StructurePassiveVent","336213101":"StructureAutolathe","337035771":"AccessCardKhaki","337416191":"StructureBlastDoor","337505889":"ItemKitWeatherStation","340210934":"StructureStairwellFrontRight","341030083":"ItemKitGrowLight","347154462":"StructurePictureFrameThickMountLandscapeSmall","350726273":"RoverCargo","363303270":"StructureInsulatedPipeLiquidCrossJunction4","374891127":"ItemHardBackpack","375541286":"ItemKitDynamicLiquidCanister","377745425":"ItemKitGasGenerator","378084505":"StructureBlocker","379750958":"StructurePressureFedLiquidEngine","386754635":"ItemPureIceNitrous","386820253":"StructureWallSmallPanelsMonoChrome","388774906":"ItemMKIIDuctTape","391453348":"ItemWreckageStructureRTG1","391769637":"ItemPipeLabel","396065382":"DynamicGasCanisterPollutants","399074198":"NpcChicken","399661231":"RailingElegant01","406745009":"StructureBench1","412924554":"ItemAstroloyIngot","416897318":"ItemGasFilterCarbonDioxideM","418958601":"ItemPillStun","429365598":"ItemKitCrate","431317557":"AccessCardPink","433184168":"StructureWaterPipeMeter","434786784":"Robot","434875271":"StructureChuteValve","435685051":"StructurePipeAnalysizer","436888930":"StructureLogicBatchSlotReader","439026183":"StructureSatelliteDish","443849486":"StructureIceCrusher","443947415":"PipeBenderMod","446212963":"StructureAdvancedComposter","450164077":"ItemKitLargeDirectHeatExchanger","452636699":"ItemKitInsulatedPipe","457286516":"ItemCocoaPowder","459843265":"AccessCardPurple","465267979":"ItemGasFilterNitrousOxideL","465816159":"StructurePipeCowl","467225612":"StructureSDBHopperAdvanced","469451637":"StructureCableJunctionH","470636008":"ItemHEMDroidRepairKit","479850239":"ItemKitRocketCargoStorage","482248766":"StructureLiquidPressureRegulator","488360169":"SeedBag_Switchgrass","489494578":"ItemKitLadder","491845673":"StructureLogicButton","495305053":"ItemRTG","496830914":"ItemKitAIMeE","498481505":"ItemSprayCanWhite","502280180":"ItemElectrumIngot","502555944":"MotherboardLogic","505924160":"StructureStairwellBackLeft","513258369":"ItemKitAccessBridge","518925193":"StructureRocketTransformerSmall","519913639":"DynamicAirConditioner","529137748":"ItemKitToolManufactory","529996327":"ItemKitSign","534213209":"StructureCompositeCladdingSphericalCap","541621589":"ItemPureIceLiquidOxygen","542009679":"ItemWreckageStructureWeatherStation003","543645499":"StructureInLineTankLiquid1x1","544617306":"ItemBatteryCellNuclear","545034114":"ItemCornSoup","545937711":"StructureAdvancedFurnace","546002924":"StructureLogicRocketUplink","554524804":"StructureLogicDial","555215790":"StructureLightLongWide","568800213":"StructureProximitySensor","568932536":"AccessCardYellow","576516101":"StructureDiodeSlide","578078533":"ItemKitSecurityPrinter","578182956":"ItemKitCentrifuge","587726607":"DynamicHydroponics","595478589":"ItemKitPipeUtilityLiquid","600133846":"StructureCompositeFloorGrating4","605357050":"StructureCableStraight","608607718":"StructureLiquidTankSmallInsulated","611181283":"ItemKitWaterPurifier","617773453":"ItemKitLiquidTankInsulated","619828719":"StructureWallSmallPanelsAndHatch","632853248":"ItemGasFilterNitrogen","635208006":"ReagentColorYellow","635995024":"StructureWallPadding","636112787":"ItemKitPassthroughHeatExchanger","648608238":"StructureChuteDigitalValveLeft","653461728":"ItemRocketMiningDrillHeadHighSpeedIce","656649558":"ItemWreckageStructureWeatherStation007","658916791":"ItemRice","662053345":"ItemPlasticSheets","665194284":"ItemKitTransformerSmall","667597982":"StructurePipeLiquidStraight","675686937":"ItemSpaceIce","678483886":"ItemRemoteDetonator","680051921":"ItemCocoaTree","682546947":"ItemKitAirlockGate","687940869":"ItemScrewdriver","688734890":"ItemTomatoSoup","690945935":"StructureCentrifuge","697908419":"StructureBlockBed","700133157":"ItemBatteryCell","714830451":"ItemSpaceHelmet","718343384":"StructureCompositeWall02","721251202":"ItemKitRocketCircuitHousing","724776762":"ItemKitResearchMachine","731250882":"ItemElectronicParts","735858725":"ItemKitShower","750118160":"StructureUnloader","750176282":"ItemKitRailing","751887598":"StructureFridgeSmall","755048589":"DynamicScrubber","755302726":"ItemKitEngineLarge","771439840":"ItemKitTank","777684475":"ItemLiquidCanisterSmart","782529714":"StructureWallArchTwoTone","789015045":"ItemAuthoringTool","789494694":"WeaponEnergy","791746840":"ItemCerealBar","792686502":"StructureLargeDirectHeatExchangeLiquidtoLiquid","797794350":"StructureLightLong","798439281":"StructureWallIron03","799323450":"ItemPipeValve","801677497":"StructureConsoleMonitor","806513938":"StructureRover","808389066":"StructureRocketAvionics","810053150":"UniformOrangeJumpSuit","813146305":"StructureSolidFuelGenerator","817945707":"Landingpad_GasConnectorInwardPiece","826144419":"StructureElevatorShaft","833912764":"StructureTransformerMediumReversed","839890807":"StructureFlatBench","839924019":"ItemPowerConnector","844391171":"ItemKitHorizontalAutoMiner","844961456":"ItemKitSolarPanelBasic","845176977":"ItemSprayCanBrown","847430620":"ItemKitLargeExtendableRadiator","847461335":"StructureInteriorDoorPadded","849148192":"ItemKitRecycler","850558385":"StructureCompositeCladdingAngledCornerLong","851290561":"ItemPlantEndothermic_Genepool1","855694771":"CircuitboardDoorControl","856108234":"ItemCrowbar","860793245":"ItemChocolateCerealBar","861674123":"Rover_MkI_build_states","871432335":"AppliancePlantGeneticStabilizer","871811564":"ItemRoadFlare","872720793":"CartridgeGuide","873418029":"StructureLogicSorter","876108549":"StructureLogicRocketDownlink","879058460":"StructureSign1x1","882301399":"ItemKitLocker","882307910":"StructureCompositeFloorGratingOpenRotated","887383294":"StructureWaterPurifier","890106742":"ItemIgniter","892110467":"ItemFern","893514943":"ItemBreadLoaf","894390004":"StructureCableJunction5","897176943":"ItemInsulation","898708250":"StructureWallFlatCornerRound","900366130":"ItemHardMiningBackPack","902565329":"ItemDirtCanister","908320837":"StructureSign2x1","912176135":"CircuitboardAirlockControl","912453390":"Landingpad_BlankPiece","920411066":"ItemKitPipeRadiator","929022276":"StructureLogicMinMax","930865127":"StructureSolarPanel45Reinforced","938836756":"StructurePoweredVent","944530361":"ItemPureIceHydrogen","944685608":"StructureHeatExchangeLiquidtoGas","947705066":"StructureCompositeCladdingAngledCornerInnerLongL","950004659":"StructurePictureFrameThickMountLandscapeLarge","955744474":"StructureTankSmallAir","958056199":"StructureHarvie","958476921":"StructureFridgeBig","964043875":"ItemKitAirlock","966959649":"EntityRoosterBlack","969522478":"ItemKitSorter","976699731":"ItemEmergencyCrowbar","977899131":"Landingpad_DiagonalPiece01","980054869":"ReagentColorBlue","980469101":"StructureCableCorner3","982514123":"ItemNVG","989835703":"StructurePlinth","995468116":"ItemSprayCanYellow","997453927":"StructureRocketCelestialTracker","998653377":"ItemHighVolumeGasCanisterEmpty","1005397063":"ItemKitLogicTransmitter","1005491513":"StructureIgniter","1005571172":"SeedBag_Potato","1005843700":"ItemDataDisk","1008295833":"ItemBatteryChargerSmall","1010807532":"EntityChickenWhite","1013244511":"ItemKitStacker","1013514688":"StructureTankSmall","1013818348":"ItemEmptyCan","1021053608":"ItemKitTankInsulated","1025254665":"ItemKitChute","1033024712":"StructureFuselageTypeA1","1036015121":"StructureCableAnalysizer","1036780772":"StructureCableJunctionH6","1037507240":"ItemGasFilterVolatilesM","1041148999":"ItemKitPortablesConnector","1048813293":"StructureFloorDrain","1049735537":"StructureWallGeometryStreight","1054059374":"StructureTransformerSmallReversed","1055173191":"ItemMiningDrill","1058547521":"ItemConstantanIngot","1061164284":"StructureInsulatedPipeCrossJunction6","1070143159":"Landingpad_CenterPiece01","1070427573":"StructureHorizontalAutoMiner","1072914031":"ItemDynamicAirCon","1073631646":"ItemMarineHelmet","1076425094":"StructureDaylightSensor","1077151132":"StructureCompositeCladdingCylindricalPanel","1083675581":"ItemRocketMiningDrillHeadMineral","1088892825":"ItemKitSuitStorage","1094895077":"StructurePictureFrameThinMountPortraitLarge","1098900430":"StructureLiquidTankBig","1101296153":"Landingpad_CrossPiece","1101328282":"CartridgePlantAnalyser","1103972403":"ItemSiliconOre","1108423476":"ItemWallLight","1112047202":"StructureCableJunction4","1118069417":"ItemPillHeal","1139887531":"SeedBag_Cocoa","1143639539":"StructureMediumRocketLiquidFuelTank","1151864003":"StructureCargoStorageMedium","1154745374":"WeaponRifleEnergy","1155865682":"StructureSDBSilo","1159126354":"Flag_ODA_4m","1161510063":"ItemCannedPowderedEggs","1162905029":"ItemKitFurniture","1165997963":"StructureGasGenerator","1167659360":"StructureChair","1171987947":"StructureWallPaddedArchLightFittingTop","1172114950":"StructureShelf","1174360780":"ApplianceDeskLampRight","1181371795":"ItemKitRegulator","1182412869":"ItemKitCompositeFloorGrating","1182510648":"StructureWallArchPlating","1183203913":"StructureWallPaddedCornerThin","1195820278":"StructurePowerTransmitterReceiver","1207939683":"ItemPipeMeter","1212777087":"StructurePictureFrameThinPortraitLarge","1213495833":"StructureSleeperLeft","1217489948":"ItemIce","1220484876":"StructureLogicSwitch","1220870319":"StructureLiquidUmbilicalFemaleSide","1222286371":"ItemKitAtmospherics","1224819963":"ItemChemLightYellow","1225836666":"ItemIronFrames","1228794916":"CompositeRollCover","1237302061":"StructureCompositeWall","1238905683":"StructureCombustionCentrifuge","1253102035":"ItemVolatiles","1254383185":"HandgunMagazine","1255156286":"ItemGasFilterVolatilesL","1258187304":"ItemMiningDrillPneumatic","1260651529":"StructureSmallTableDinnerSingle","1260918085":"ApplianceReagentProcessor","1269458680":"StructurePressurePlateMedium","1277828144":"ItemPumpkin","1277979876":"ItemPumpkinSoup","1280378227":"StructureTankBigInsulated","1281911841":"StructureWallArchCornerTriangle","1282191063":"StructureTurbineGenerator","1286441942":"StructurePipeIgniter","1287324802":"StructureWallIron","1289723966":"ItemSprayGun","1293995736":"ItemKitSolidGenerator","1298920475":"StructureAccessBridge","1305252611":"StructurePipeOrgan","1307165496":"StructureElectronicsPrinter","1308115015":"StructureFuselageTypeA4","1310303582":"StructureSmallDirectHeatExchangeGastoGas","1310794736":"StructureTurboVolumePump","1312166823":"ItemChemLightWhite","1327248310":"ItemMilk","1328210035":"StructureInsulatedPipeCrossJunction3","1330754486":"StructureShortCornerLocker","1331802518":"StructureTankConnectorLiquid","1344257263":"ItemSprayCanPink","1344368806":"CircuitboardGraphDisplay","1344576960":"ItemWreckageStructureWeatherStation006","1344773148":"ItemCookedCorn","1353449022":"ItemCookedSoybean","1360330136":"StructureChuteCorner","1360925836":"DynamicGasCanisterOxygen","1363077139":"StructurePassiveVentInsulated","1365789392":"ApplianceChemistryStation","1366030599":"ItemPipeIgniter","1371786091":"ItemFries","1382098999":"StructureSleeperVerticalDroid","1385062886":"ItemArcWelder","1387403148":"ItemSoyOil","1396305045":"ItemKitRocketAvionics","1399098998":"ItemMarineBodyArmor","1405018945":"StructureStairs4x2","1406656973":"ItemKitBattery","1412338038":"StructureLargeDirectHeatExchangeGastoLiquid","1412428165":"AccessCardBrown","1415396263":"StructureCapsuleTankLiquid","1415443359":"StructureLogicBatchWriter","1420719315":"StructureCondensationChamber","1423199840":"SeedBag_Pumpkin","1428477399":"ItemPureIceLiquidNitrous","1432512808":"StructureFrame","1433754995":"StructureWaterBottleFillerBottom","1436121888":"StructureLightRoundSmall","1440678625":"ItemRocketMiningDrillHeadHighSpeedMineral","1440775434":"ItemMKIICrowbar","1441767298":"StructureHydroponicsStation","1443059329":"StructureCryoTubeHorizontal","1452100517":"StructureInsulatedInLineTankLiquid1x2","1453961898":"ItemKitPassiveLargeRadiatorLiquid","1459985302":"ItemKitReinforcedWindows","1464424921":"ItemWreckageStructureWeatherStation002","1464854517":"StructureHydroponicsTray","1467558064":"ItemMkIIToolbelt","1468249454":"StructureOverheadShortLocker","1470787934":"ItemMiningBeltMKII","1473807953":"StructureTorpedoRack","1485834215":"StructureWallIron02","1492930217":"StructureWallLargePanel","1512322581":"ItemKitLogicCircuit","1514393921":"ItemSprayCanRed","1514476632":"StructureLightRound","1517856652":"Fertilizer","1529453938":"StructurePowerUmbilicalMale","1530764483":"ItemRocketMiningDrillHeadDurable","1531087544":"DecayedFood","1531272458":"LogicStepSequencer8","1533501495":"ItemKitDynamicGasTankAdvanced","1535854074":"ItemWireCutters","1541734993":"StructureLadderEnd","1544275894":"ItemGrenade","1545286256":"StructureCableJunction5Burnt","1559586682":"StructurePlatformLadderOpen","1570931620":"StructureTraderWaypoint","1571996765":"ItemKitLiquidUmbilical","1574321230":"StructureCompositeWall03","1574688481":"ItemKitRespawnPointWallMounted","1579842814":"ItemHastelloyIngot","1580412404":"StructurePipeOneWayValve","1585641623":"StructureStackerReverse","1587787610":"ItemKitEvaporationChamber","1588896491":"ItemGlassSheets","1590330637":"StructureWallPaddedArch","1592905386":"StructureLightRoundAngled","1602758612":"StructureWallGeometryT","1603046970":"ItemKitElectricUmbilical","1605130615":"Lander","1606989119":"CartridgeNetworkAnalyser","1618019559":"CircuitboardAirControl","1622183451":"StructureUprightWindTurbine","1622567418":"StructureFairingTypeA1","1625214531":"ItemKitWallArch","1628087508":"StructurePipeLiquidCrossJunction3","1632165346":"StructureGasTankStorage","1633074601":"CircuitboardHashDisplay","1633663176":"CircuitboardAdvAirlockControl","1635000764":"ItemGasFilterCarbonDioxide","1635864154":"StructureWallFlat","1640720378":"StructureChairBoothMiddle","1649708822":"StructureWallArchArrow","1654694384":"StructureInsulatedPipeLiquidCrossJunction5","1657691323":"StructureLogicMath","1661226524":"ItemKitFridgeSmall","1661270830":"ItemScanner","1661941301":"ItemEmergencyToolBelt","1668452680":"StructureEmergencyButton","1668815415":"ItemKitAutoMinerSmall","1672275150":"StructureChairBacklessSingle","1674576569":"ItemPureIceLiquidNitrogen","1677018918":"ItemEvaSuit","1684488658":"StructurePictureFrameThinPortraitSmall","1687692899":"StructureLiquidDrain","1691898022":"StructureLiquidTankStorage","1696603168":"StructurePipeRadiator","1697196770":"StructureSolarPanelFlatReinforced","1700018136":"ToolPrinterMod","1701593300":"StructureCableJunctionH5Burnt","1701764190":"ItemKitFlagODA","1709994581":"StructureWallSmallPanelsTwoTone","1712822019":"ItemFlowerYellow","1713710802":"StructureInsulatedPipeLiquidCorner","1715917521":"ItemCookedCondensedMilk","1717593480":"ItemGasSensor","1722785341":"ItemAdvancedTablet","1724793494":"ItemCoalOre","1730165908":"EntityChick","1734723642":"StructureLiquidUmbilicalFemale","1736080881":"StructureAirlockGate","1738236580":"CartridgeOreScannerColor","1750375230":"StructureBench4","1751355139":"StructureCompositeCladdingSphericalCorner","1753647154":"ItemKitRocketScanner","1757673317":"ItemAreaPowerControl","1758427767":"ItemIronOre","1762696475":"DeviceStepUnit","1769527556":"StructureWallPaddedThinNoBorderCorner","1779979754":"ItemKitWindowShutter","1781051034":"StructureRocketManufactory","1783004244":"SeedBag_Soybean","1791306431":"ItemEmergencyEvaSuit","1794588890":"StructureWallArchCornerRound","1800622698":"ItemCoffeeMug","1811979158":"StructureAngledBench","1812364811":"StructurePassiveLiquidDrain","1817007843":"ItemKitLandingPadAtmos","1817645803":"ItemRTGSurvival","1818267386":"StructureInsulatedInLineTankGas1x1","1819167057":"ItemPlantThermogenic_Genepool2","1822736084":"StructureLogicSelect","1824284061":"ItemGasFilterNitrousOxideM","1825212016":"StructureSmallDirectHeatExchangeLiquidtoGas","1827215803":"ItemKitRoverFrame","1830218956":"ItemNickelOre","1835796040":"StructurePictureFrameThinMountPortraitSmall","1840108251":"H2Combustor","1845441951":"Flag_ODA_10m","1847265835":"StructureLightLongAngled","1848735691":"StructurePipeLiquidCrossJunction","1849281546":"ItemCookedPumpkin","1849974453":"StructureLiquidValve","1853941363":"ApplianceTabletDock","1854404029":"StructureCableJunction6HBurnt","1862001680":"ItemMKIIWrench","1871048978":"ItemAdhesiveInsulation","1876847024":"ItemGasFilterCarbonDioxideL","1880134612":"ItemWallHeater","1898243702":"StructureNitrolyzer","1913391845":"StructureLargeSatelliteDish","1915566057":"ItemGasFilterPollutants","1918456047":"ItemSprayCanKhaki","1921918951":"ItemKitPumpedLiquidEngine","1922506192":"StructurePowerUmbilicalFemaleSide","1924673028":"ItemSoybean","1926651727":"StructureInsulatedPipeLiquidCrossJunction","1927790321":"ItemWreckageTurbineGenerator3","1928991265":"StructurePassthroughHeatExchangerGasToLiquid","1929046963":"ItemPotato","1931412811":"StructureCableCornerHBurnt","1932952652":"KitSDBSilo","1934508338":"ItemKitPipeUtility","1935945891":"ItemKitInteriorDoors","1938254586":"StructureCryoTube","1939061729":"StructureReinforcedWallPaddedWindow","1941079206":"DynamicCrate","1942143074":"StructureLogicGate","1944485013":"StructureDiode","1944858936":"StructureChairBacklessDouble","1945930022":"StructureBatteryCharger","1947944864":"StructureFurnace","1949076595":"ItemLightSword","1951126161":"ItemKitLiquidRegulator","1951525046":"StructureCompositeCladdingRoundedCorner","1959564765":"ItemGasFilterPollutantsL","1960952220":"ItemKitSmallSatelliteDish","1968102968":"StructureSolarPanelFlat","1968371847":"StructureDrinkingFountain","1969189000":"ItemJetpackBasic","1969312177":"ItemKitEngineMedium","1979212240":"StructureWallGeometryCorner","1981698201":"StructureInteriorDoorPaddedThin","1986658780":"StructureWaterBottleFillerPoweredBottom","1988118157":"StructureLiquidTankSmall","1990225489":"ItemKitComputer","1997212478":"StructureWeatherStation","1997293610":"ItemKitLogicInputOutput","1997436771":"StructureCompositeCladdingPanel","1998354978":"StructureElevatorShaftIndustrial","1998377961":"ReagentColorRed","1998634960":"Flag_ODA_6m","1999523701":"StructureAreaPowerControl","2004969680":"ItemGasFilterWaterL","2009673399":"ItemDrill","2011191088":"ItemFlagSmall","2013539020":"ItemCookedRice","2014252591":"StructureRocketScanner","2015439334":"ItemKitPoweredVent","2020180320":"CircuitboardSolarControl","2024754523":"StructurePipeRadiatorFlatLiquid","2024882687":"StructureWallPaddingLightFitting","2027713511":"StructureReinforcedCompositeWindow","2032027950":"ItemKitRocketLiquidFuelTank","2035781224":"StructureEngineMountTypeA1","2036225202":"ItemLiquidDrain","2037427578":"ItemLiquidTankStorage","2038427184":"StructurePipeCrossJunction3","2042955224":"ItemPeaceLily","2043318949":"PortableSolarPanel","2044798572":"ItemMushroom","2049879875":"StructureStairwellNoDoors","2056377335":"StructureWindowShutter","2057179799":"ItemKitHydroponicStation","2060134443":"ItemCableCoilHeavy","2060648791":"StructureElevatorLevelIndustrial","2066977095":"StructurePassiveLargeRadiatorGas","2067655311":"ItemKitInsulatedLiquidPipe","2072805863":"StructureLiquidPipeRadiator","2077593121":"StructureLogicHashGen","2079959157":"AccessCardWhite","2085762089":"StructureCableStraightHBurnt","2087628940":"StructureWallPaddedWindow","2096189278":"StructureLogicMirror","2097419366":"StructureWallFlatCornerTriangle","2099900163":"StructureBackLiquidPressureRegulator","2102454415":"StructureTankSmallFuel","2102803952":"ItemEmergencyWireCutters","2104106366":"StructureGasMixer","2109695912":"StructureCompositeFloorGratingOpen","2109945337":"ItemRocketMiningDrillHead","2111910840":"ItemSugar","2130739600":"DynamicMKIILiquidCanisterEmpty","2131916219":"ItemSpaceOre","2133035682":"ItemKitStandardChute","2134172356":"StructureInsulatedPipeStraight","2134647745":"ItemLeadIngot","2145068424":"ItemGasCanisterNitrogen"},"structures":["CompositeRollCover","DeviceLfoVolume","DeviceStepUnit","Flag_ODA_10m","Flag_ODA_4m","Flag_ODA_6m","Flag_ODA_8m","H2Combustor","KitchenTableShort","KitchenTableSimpleShort","KitchenTableSimpleTall","KitchenTableTall","Landingpad_2x2CenterPiece01","Landingpad_BlankPiece","Landingpad_CenterPiece01","Landingpad_CrossPiece","Landingpad_DataConnectionPiece","Landingpad_DiagonalPiece01","Landingpad_GasConnectorInwardPiece","Landingpad_GasConnectorOutwardPiece","Landingpad_GasCylinderTankPiece","Landingpad_LiquidConnectorInwardPiece","Landingpad_LiquidConnectorOutwardPiece","Landingpad_StraightPiece01","Landingpad_TaxiPieceCorner","Landingpad_TaxiPieceHold","Landingpad_TaxiPieceStraight","Landingpad_ThreshholdPiece","LogicStepSequencer8","PassiveSpeaker","RailingElegant01","RailingElegant02","RailingIndustrial02","RespawnPoint","RespawnPointWallMounted","Rover_MkI_build_states","StopWatch","StructureAccessBridge","StructureActiveVent","StructureAdvancedComposter","StructureAdvancedFurnace","StructureAdvancedPackagingMachine","StructureAirConditioner","StructureAirlock","StructureAirlockGate","StructureAngledBench","StructureArcFurnace","StructureAreaPowerControl","StructureAreaPowerControlReversed","StructureAutoMinerSmall","StructureAutolathe","StructureAutomatedOven","StructureBackLiquidPressureRegulator","StructureBackPressureRegulator","StructureBasketHoop","StructureBattery","StructureBatteryCharger","StructureBatteryChargerSmall","StructureBatteryLarge","StructureBatteryMedium","StructureBatterySmall","StructureBeacon","StructureBench","StructureBench1","StructureBench2","StructureBench3","StructureBench4","StructureBlastDoor","StructureBlockBed","StructureBlocker","StructureCableAnalysizer","StructureCableCorner","StructureCableCorner3","StructureCableCorner3Burnt","StructureCableCorner3HBurnt","StructureCableCorner4","StructureCableCorner4Burnt","StructureCableCorner4HBurnt","StructureCableCornerBurnt","StructureCableCornerH","StructureCableCornerH3","StructureCableCornerH4","StructureCableCornerHBurnt","StructureCableFuse100k","StructureCableFuse1k","StructureCableFuse50k","StructureCableFuse5k","StructureCableJunction","StructureCableJunction4","StructureCableJunction4Burnt","StructureCableJunction4HBurnt","StructureCableJunction5","StructureCableJunction5Burnt","StructureCableJunction6","StructureCableJunction6Burnt","StructureCableJunction6HBurnt","StructureCableJunctionBurnt","StructureCableJunctionH","StructureCableJunctionH4","StructureCableJunctionH5","StructureCableJunctionH5Burnt","StructureCableJunctionH6","StructureCableJunctionHBurnt","StructureCableStraight","StructureCableStraightBurnt","StructureCableStraightH","StructureCableStraightHBurnt","StructureCamera","StructureCapsuleTankGas","StructureCapsuleTankLiquid","StructureCargoStorageMedium","StructureCargoStorageSmall","StructureCentrifuge","StructureChair","StructureChairBacklessDouble","StructureChairBacklessSingle","StructureChairBoothCornerLeft","StructureChairBoothMiddle","StructureChairRectangleDouble","StructureChairRectangleSingle","StructureChairThickDouble","StructureChairThickSingle","StructureChuteBin","StructureChuteCorner","StructureChuteDigitalFlipFlopSplitterLeft","StructureChuteDigitalFlipFlopSplitterRight","StructureChuteDigitalValveLeft","StructureChuteDigitalValveRight","StructureChuteFlipFlopSplitter","StructureChuteInlet","StructureChuteJunction","StructureChuteOutlet","StructureChuteOverflow","StructureChuteStraight","StructureChuteUmbilicalFemale","StructureChuteUmbilicalFemaleSide","StructureChuteUmbilicalMale","StructureChuteValve","StructureChuteWindow","StructureCircuitHousing","StructureCombustionCentrifuge","StructureCompositeCladdingAngled","StructureCompositeCladdingAngledCorner","StructureCompositeCladdingAngledCornerInner","StructureCompositeCladdingAngledCornerInnerLong","StructureCompositeCladdingAngledCornerInnerLongL","StructureCompositeCladdingAngledCornerInnerLongR","StructureCompositeCladdingAngledCornerLong","StructureCompositeCladdingAngledCornerLongR","StructureCompositeCladdingAngledLong","StructureCompositeCladdingCylindrical","StructureCompositeCladdingCylindricalPanel","StructureCompositeCladdingPanel","StructureCompositeCladdingRounded","StructureCompositeCladdingRoundedCorner","StructureCompositeCladdingRoundedCornerInner","StructureCompositeCladdingSpherical","StructureCompositeCladdingSphericalCap","StructureCompositeCladdingSphericalCorner","StructureCompositeDoor","StructureCompositeFloorGrating","StructureCompositeFloorGrating2","StructureCompositeFloorGrating3","StructureCompositeFloorGrating4","StructureCompositeFloorGratingOpen","StructureCompositeFloorGratingOpenRotated","StructureCompositeWall","StructureCompositeWall02","StructureCompositeWall03","StructureCompositeWall04","StructureCompositeWindow","StructureCompositeWindowIron","StructureComputer","StructureCondensationChamber","StructureCondensationValve","StructureConsole","StructureConsoleDual","StructureConsoleLED1x2","StructureConsoleLED1x3","StructureConsoleLED5","StructureConsoleMonitor","StructureControlChair","StructureCornerLocker","StructureCrateMount","StructureCryoTube","StructureCryoTubeHorizontal","StructureCryoTubeVertical","StructureDaylightSensor","StructureDeepMiner","StructureDigitalValve","StructureDiode","StructureDiodeSlide","StructureDockPortSide","StructureDrinkingFountain","StructureElectrolyzer","StructureElectronicsPrinter","StructureElevatorLevelFront","StructureElevatorLevelIndustrial","StructureElevatorShaft","StructureElevatorShaftIndustrial","StructureEmergencyButton","StructureEngineMountTypeA1","StructureEvaporationChamber","StructureExpansionValve","StructureFairingTypeA1","StructureFairingTypeA2","StructureFairingTypeA3","StructureFiltration","StructureFlagSmall","StructureFlashingLight","StructureFlatBench","StructureFloorDrain","StructureFrame","StructureFrameCorner","StructureFrameCornerCut","StructureFrameIron","StructureFrameSide","StructureFridgeBig","StructureFridgeSmall","StructureFurnace","StructureFuselageTypeA1","StructureFuselageTypeA2","StructureFuselageTypeA4","StructureFuselageTypeC5","StructureGasGenerator","StructureGasMixer","StructureGasSensor","StructureGasTankStorage","StructureGasUmbilicalFemale","StructureGasUmbilicalFemaleSide","StructureGasUmbilicalMale","StructureGlassDoor","StructureGovernedGasEngine","StructureGroundBasedTelescope","StructureGrowLight","StructureHarvie","StructureHeatExchangeLiquidtoGas","StructureHeatExchangerGastoGas","StructureHeatExchangerLiquidtoLiquid","StructureHorizontalAutoMiner","StructureHydraulicPipeBender","StructureHydroponicsStation","StructureHydroponicsTray","StructureHydroponicsTrayData","StructureIceCrusher","StructureIgniter","StructureInLineTankGas1x1","StructureInLineTankGas1x2","StructureInLineTankLiquid1x1","StructureInLineTankLiquid1x2","StructureInsulatedInLineTankGas1x1","StructureInsulatedInLineTankGas1x2","StructureInsulatedInLineTankLiquid1x1","StructureInsulatedInLineTankLiquid1x2","StructureInsulatedPipeCorner","StructureInsulatedPipeCrossJunction","StructureInsulatedPipeCrossJunction3","StructureInsulatedPipeCrossJunction4","StructureInsulatedPipeCrossJunction5","StructureInsulatedPipeCrossJunction6","StructureInsulatedPipeLiquidCorner","StructureInsulatedPipeLiquidCrossJunction","StructureInsulatedPipeLiquidCrossJunction4","StructureInsulatedPipeLiquidCrossJunction5","StructureInsulatedPipeLiquidCrossJunction6","StructureInsulatedPipeLiquidStraight","StructureInsulatedPipeLiquidTJunction","StructureInsulatedPipeStraight","StructureInsulatedPipeTJunction","StructureInsulatedTankConnector","StructureInsulatedTankConnectorLiquid","StructureInteriorDoorGlass","StructureInteriorDoorPadded","StructureInteriorDoorPaddedThin","StructureInteriorDoorTriangle","StructureKlaxon","StructureLadder","StructureLadderEnd","StructureLargeDirectHeatExchangeGastoGas","StructureLargeDirectHeatExchangeGastoLiquid","StructureLargeDirectHeatExchangeLiquidtoLiquid","StructureLargeExtendableRadiator","StructureLargeHangerDoor","StructureLargeSatelliteDish","StructureLaunchMount","StructureLightLong","StructureLightLongAngled","StructureLightLongWide","StructureLightRound","StructureLightRoundAngled","StructureLightRoundSmall","StructureLiquidDrain","StructureLiquidPipeAnalyzer","StructureLiquidPipeHeater","StructureLiquidPipeOneWayValve","StructureLiquidPipeRadiator","StructureLiquidPressureRegulator","StructureLiquidTankBig","StructureLiquidTankBigInsulated","StructureLiquidTankSmall","StructureLiquidTankSmallInsulated","StructureLiquidTankStorage","StructureLiquidTurboVolumePump","StructureLiquidUmbilicalFemale","StructureLiquidUmbilicalFemaleSide","StructureLiquidUmbilicalMale","StructureLiquidValve","StructureLiquidVolumePump","StructureLockerSmall","StructureLogicBatchReader","StructureLogicBatchSlotReader","StructureLogicBatchWriter","StructureLogicButton","StructureLogicCompare","StructureLogicDial","StructureLogicGate","StructureLogicHashGen","StructureLogicMath","StructureLogicMathUnary","StructureLogicMemory","StructureLogicMinMax","StructureLogicMirror","StructureLogicReader","StructureLogicReagentReader","StructureLogicRocketDownlink","StructureLogicRocketUplink","StructureLogicSelect","StructureLogicSlotReader","StructureLogicSorter","StructureLogicSwitch","StructureLogicSwitch2","StructureLogicTransmitter","StructureLogicWriter","StructureLogicWriterSwitch","StructureManualHatch","StructureMediumConvectionRadiator","StructureMediumConvectionRadiatorLiquid","StructureMediumHangerDoor","StructureMediumRadiator","StructureMediumRadiatorLiquid","StructureMediumRocketGasFuelTank","StructureMediumRocketLiquidFuelTank","StructureMotionSensor","StructureNitrolyzer","StructureOccupancySensor","StructureOverheadShortCornerLocker","StructureOverheadShortLocker","StructurePassiveLargeRadiatorGas","StructurePassiveLargeRadiatorLiquid","StructurePassiveLiquidDrain","StructurePassiveVent","StructurePassiveVentInsulated","StructurePassthroughHeatExchangerGasToGas","StructurePassthroughHeatExchangerGasToLiquid","StructurePassthroughHeatExchangerLiquidToLiquid","StructurePictureFrameThickLandscapeLarge","StructurePictureFrameThickLandscapeSmall","StructurePictureFrameThickMountLandscapeLarge","StructurePictureFrameThickMountLandscapeSmall","StructurePictureFrameThickMountPortraitLarge","StructurePictureFrameThickMountPortraitSmall","StructurePictureFrameThickPortraitLarge","StructurePictureFrameThickPortraitSmall","StructurePictureFrameThinLandscapeLarge","StructurePictureFrameThinLandscapeSmall","StructurePictureFrameThinMountLandscapeLarge","StructurePictureFrameThinMountLandscapeSmall","StructurePictureFrameThinMountPortraitLarge","StructurePictureFrameThinMountPortraitSmall","StructurePictureFrameThinPortraitLarge","StructurePictureFrameThinPortraitSmall","StructurePipeAnalysizer","StructurePipeCorner","StructurePipeCowl","StructurePipeCrossJunction","StructurePipeCrossJunction3","StructurePipeCrossJunction4","StructurePipeCrossJunction5","StructurePipeCrossJunction6","StructurePipeHeater","StructurePipeIgniter","StructurePipeInsulatedLiquidCrossJunction","StructurePipeLabel","StructurePipeLiquidCorner","StructurePipeLiquidCrossJunction","StructurePipeLiquidCrossJunction3","StructurePipeLiquidCrossJunction4","StructurePipeLiquidCrossJunction5","StructurePipeLiquidCrossJunction6","StructurePipeLiquidStraight","StructurePipeLiquidTJunction","StructurePipeMeter","StructurePipeOneWayValve","StructurePipeOrgan","StructurePipeRadiator","StructurePipeRadiatorFlat","StructurePipeRadiatorFlatLiquid","StructurePipeStraight","StructurePipeTJunction","StructurePlanter","StructurePlatformLadderOpen","StructurePlinth","StructurePortablesConnector","StructurePowerConnector","StructurePowerTransmitter","StructurePowerTransmitterOmni","StructurePowerTransmitterReceiver","StructurePowerUmbilicalFemale","StructurePowerUmbilicalFemaleSide","StructurePowerUmbilicalMale","StructurePoweredVent","StructurePoweredVentLarge","StructurePressurantValve","StructurePressureFedGasEngine","StructurePressureFedLiquidEngine","StructurePressurePlateLarge","StructurePressurePlateMedium","StructurePressurePlateSmall","StructurePressureRegulator","StructureProximitySensor","StructurePumpedLiquidEngine","StructurePurgeValve","StructureRailing","StructureRecycler","StructureRefrigeratedVendingMachine","StructureReinforcedCompositeWindow","StructureReinforcedCompositeWindowSteel","StructureReinforcedWallPaddedWindow","StructureReinforcedWallPaddedWindowThin","StructureRocketAvionics","StructureRocketCelestialTracker","StructureRocketCircuitHousing","StructureRocketEngineTiny","StructureRocketManufactory","StructureRocketMiner","StructureRocketScanner","StructureRocketTower","StructureRocketTransformerSmall","StructureRover","StructureSDBHopper","StructureSDBHopperAdvanced","StructureSDBSilo","StructureSatelliteDish","StructureSecurityPrinter","StructureShelf","StructureShelfMedium","StructureShortCornerLocker","StructureShortLocker","StructureShower","StructureShowerPowered","StructureSign1x1","StructureSign2x1","StructureSingleBed","StructureSleeper","StructureSleeperLeft","StructureSleeperRight","StructureSleeperVertical","StructureSleeperVerticalDroid","StructureSmallDirectHeatExchangeGastoGas","StructureSmallDirectHeatExchangeLiquidtoGas","StructureSmallDirectHeatExchangeLiquidtoLiquid","StructureSmallSatelliteDish","StructureSmallTableBacklessDouble","StructureSmallTableBacklessSingle","StructureSmallTableDinnerSingle","StructureSmallTableRectangleDouble","StructureSmallTableRectangleSingle","StructureSmallTableThickDouble","StructureSmallTableThickSingle","StructureSolarPanel","StructureSolarPanel45","StructureSolarPanel45Reinforced","StructureSolarPanelDual","StructureSolarPanelDualReinforced","StructureSolarPanelFlat","StructureSolarPanelFlatReinforced","StructureSolarPanelReinforced","StructureSolidFuelGenerator","StructureSorter","StructureStacker","StructureStackerReverse","StructureStairs4x2","StructureStairs4x2RailL","StructureStairs4x2RailR","StructureStairs4x2Rails","StructureStairwellBackLeft","StructureStairwellBackPassthrough","StructureStairwellBackRight","StructureStairwellFrontLeft","StructureStairwellFrontPassthrough","StructureStairwellFrontRight","StructureStairwellNoDoors","StructureStirlingEngine","StructureStorageLocker","StructureSuitStorage","StructureTankBig","StructureTankBigInsulated","StructureTankConnector","StructureTankConnectorLiquid","StructureTankSmall","StructureTankSmallAir","StructureTankSmallFuel","StructureTankSmallInsulated","StructureToolManufactory","StructureTorpedoRack","StructureTraderWaypoint","StructureTransformer","StructureTransformerMedium","StructureTransformerMediumReversed","StructureTransformerSmall","StructureTransformerSmallReversed","StructureTurbineGenerator","StructureTurboVolumePump","StructureUnloader","StructureUprightWindTurbine","StructureValve","StructureVendingMachine","StructureVolumePump","StructureWallArch","StructureWallArchArrow","StructureWallArchCornerRound","StructureWallArchCornerSquare","StructureWallArchCornerTriangle","StructureWallArchPlating","StructureWallArchTwoTone","StructureWallCooler","StructureWallFlat","StructureWallFlatCornerRound","StructureWallFlatCornerSquare","StructureWallFlatCornerTriangle","StructureWallFlatCornerTriangleFlat","StructureWallGeometryCorner","StructureWallGeometryStreight","StructureWallGeometryT","StructureWallGeometryTMirrored","StructureWallHeater","StructureWallIron","StructureWallIron02","StructureWallIron03","StructureWallIron04","StructureWallLargePanel","StructureWallLargePanelArrow","StructureWallLight","StructureWallLightBattery","StructureWallPaddedArch","StructureWallPaddedArchCorner","StructureWallPaddedArchLightFittingTop","StructureWallPaddedArchLightsFittings","StructureWallPaddedCorner","StructureWallPaddedCornerThin","StructureWallPaddedNoBorder","StructureWallPaddedNoBorderCorner","StructureWallPaddedThinNoBorder","StructureWallPaddedThinNoBorderCorner","StructureWallPaddedWindow","StructureWallPaddedWindowThin","StructureWallPadding","StructureWallPaddingArchVent","StructureWallPaddingLightFitting","StructureWallPaddingThin","StructureWallPlating","StructureWallSmallPanelsAndHatch","StructureWallSmallPanelsArrow","StructureWallSmallPanelsMonoChrome","StructureWallSmallPanelsOpen","StructureWallSmallPanelsTwoTone","StructureWallVent","StructureWaterBottleFiller","StructureWaterBottleFillerBottom","StructureWaterBottleFillerPowered","StructureWaterBottleFillerPoweredBottom","StructureWaterDigitalValve","StructureWaterPipeMeter","StructureWaterPurifier","StructureWaterWallCooler","StructureWeatherStation","StructureWindTurbine","StructureWindowShutter"],"devices":["CompositeRollCover","DeviceLfoVolume","DeviceStepUnit","H2Combustor","Landingpad_DataConnectionPiece","Landingpad_GasConnectorInwardPiece","Landingpad_GasConnectorOutwardPiece","Landingpad_LiquidConnectorInwardPiece","Landingpad_LiquidConnectorOutwardPiece","Landingpad_ThreshholdPiece","LogicStepSequencer8","PassiveSpeaker","StopWatch","StructureAccessBridge","StructureActiveVent","StructureAdvancedComposter","StructureAdvancedFurnace","StructureAdvancedPackagingMachine","StructureAirConditioner","StructureAirlock","StructureAirlockGate","StructureAngledBench","StructureArcFurnace","StructureAreaPowerControl","StructureAreaPowerControlReversed","StructureAutoMinerSmall","StructureAutolathe","StructureAutomatedOven","StructureBackLiquidPressureRegulator","StructureBackPressureRegulator","StructureBasketHoop","StructureBattery","StructureBatteryCharger","StructureBatteryChargerSmall","StructureBatteryLarge","StructureBatteryMedium","StructureBatterySmall","StructureBeacon","StructureBench","StructureBench1","StructureBench2","StructureBench3","StructureBench4","StructureBlastDoor","StructureBlockBed","StructureCableAnalysizer","StructureCableFuse100k","StructureCableFuse1k","StructureCableFuse50k","StructureCableFuse5k","StructureCamera","StructureCapsuleTankGas","StructureCapsuleTankLiquid","StructureCargoStorageMedium","StructureCargoStorageSmall","StructureCentrifuge","StructureChair","StructureChairBacklessDouble","StructureChairBacklessSingle","StructureChairBoothCornerLeft","StructureChairBoothMiddle","StructureChairRectangleDouble","StructureChairRectangleSingle","StructureChairThickDouble","StructureChairThickSingle","StructureChuteBin","StructureChuteDigitalFlipFlopSplitterLeft","StructureChuteDigitalFlipFlopSplitterRight","StructureChuteDigitalValveLeft","StructureChuteDigitalValveRight","StructureChuteInlet","StructureChuteOutlet","StructureChuteUmbilicalFemale","StructureChuteUmbilicalFemaleSide","StructureChuteUmbilicalMale","StructureCircuitHousing","StructureCombustionCentrifuge","StructureCompositeDoor","StructureComputer","StructureCondensationChamber","StructureCondensationValve","StructureConsole","StructureConsoleDual","StructureConsoleLED1x2","StructureConsoleLED1x3","StructureConsoleLED5","StructureConsoleMonitor","StructureControlChair","StructureCornerLocker","StructureCryoTube","StructureCryoTubeHorizontal","StructureCryoTubeVertical","StructureDaylightSensor","StructureDeepMiner","StructureDigitalValve","StructureDiode","StructureDiodeSlide","StructureDockPortSide","StructureDrinkingFountain","StructureElectrolyzer","StructureElectronicsPrinter","StructureElevatorLevelFront","StructureElevatorLevelIndustrial","StructureElevatorShaft","StructureElevatorShaftIndustrial","StructureEmergencyButton","StructureEvaporationChamber","StructureExpansionValve","StructureFiltration","StructureFlashingLight","StructureFlatBench","StructureFridgeBig","StructureFridgeSmall","StructureFurnace","StructureGasGenerator","StructureGasMixer","StructureGasSensor","StructureGasTankStorage","StructureGasUmbilicalFemale","StructureGasUmbilicalFemaleSide","StructureGasUmbilicalMale","StructureGlassDoor","StructureGovernedGasEngine","StructureGroundBasedTelescope","StructureGrowLight","StructureHarvie","StructureHeatExchangeLiquidtoGas","StructureHeatExchangerGastoGas","StructureHeatExchangerLiquidtoLiquid","StructureHorizontalAutoMiner","StructureHydraulicPipeBender","StructureHydroponicsStation","StructureHydroponicsTrayData","StructureIceCrusher","StructureIgniter","StructureInteriorDoorGlass","StructureInteriorDoorPadded","StructureInteriorDoorPaddedThin","StructureInteriorDoorTriangle","StructureKlaxon","StructureLargeDirectHeatExchangeGastoGas","StructureLargeDirectHeatExchangeGastoLiquid","StructureLargeDirectHeatExchangeLiquidtoLiquid","StructureLargeExtendableRadiator","StructureLargeHangerDoor","StructureLargeSatelliteDish","StructureLightLong","StructureLightLongAngled","StructureLightLongWide","StructureLightRound","StructureLightRoundAngled","StructureLightRoundSmall","StructureLiquidDrain","StructureLiquidPipeAnalyzer","StructureLiquidPipeHeater","StructureLiquidPipeOneWayValve","StructureLiquidPipeRadiator","StructureLiquidPressureRegulator","StructureLiquidTankBig","StructureLiquidTankBigInsulated","StructureLiquidTankSmall","StructureLiquidTankSmallInsulated","StructureLiquidTankStorage","StructureLiquidTurboVolumePump","StructureLiquidUmbilicalFemale","StructureLiquidUmbilicalFemaleSide","StructureLiquidUmbilicalMale","StructureLiquidValve","StructureLiquidVolumePump","StructureLockerSmall","StructureLogicBatchReader","StructureLogicBatchSlotReader","StructureLogicBatchWriter","StructureLogicButton","StructureLogicCompare","StructureLogicDial","StructureLogicGate","StructureLogicHashGen","StructureLogicMath","StructureLogicMathUnary","StructureLogicMemory","StructureLogicMinMax","StructureLogicMirror","StructureLogicReader","StructureLogicReagentReader","StructureLogicRocketDownlink","StructureLogicRocketUplink","StructureLogicSelect","StructureLogicSlotReader","StructureLogicSorter","StructureLogicSwitch","StructureLogicSwitch2","StructureLogicTransmitter","StructureLogicWriter","StructureLogicWriterSwitch","StructureManualHatch","StructureMediumConvectionRadiator","StructureMediumConvectionRadiatorLiquid","StructureMediumHangerDoor","StructureMediumRadiator","StructureMediumRadiatorLiquid","StructureMediumRocketGasFuelTank","StructureMediumRocketLiquidFuelTank","StructureMotionSensor","StructureNitrolyzer","StructureOccupancySensor","StructureOverheadShortCornerLocker","StructureOverheadShortLocker","StructurePassiveLargeRadiatorGas","StructurePassiveLargeRadiatorLiquid","StructurePassiveLiquidDrain","StructurePassthroughHeatExchangerGasToGas","StructurePassthroughHeatExchangerGasToLiquid","StructurePassthroughHeatExchangerLiquidToLiquid","StructurePipeAnalysizer","StructurePipeHeater","StructurePipeIgniter","StructurePipeLabel","StructurePipeMeter","StructurePipeOneWayValve","StructurePipeRadiator","StructurePipeRadiatorFlat","StructurePipeRadiatorFlatLiquid","StructurePortablesConnector","StructurePowerConnector","StructurePowerTransmitter","StructurePowerTransmitterOmni","StructurePowerTransmitterReceiver","StructurePowerUmbilicalFemale","StructurePowerUmbilicalFemaleSide","StructurePowerUmbilicalMale","StructurePoweredVent","StructurePoweredVentLarge","StructurePressurantValve","StructurePressureFedGasEngine","StructurePressureFedLiquidEngine","StructurePressurePlateLarge","StructurePressurePlateMedium","StructurePressurePlateSmall","StructurePressureRegulator","StructureProximitySensor","StructurePumpedLiquidEngine","StructurePurgeValve","StructureRecycler","StructureRefrigeratedVendingMachine","StructureRocketAvionics","StructureRocketCelestialTracker","StructureRocketCircuitHousing","StructureRocketEngineTiny","StructureRocketManufactory","StructureRocketMiner","StructureRocketScanner","StructureRocketTransformerSmall","StructureSDBHopper","StructureSDBHopperAdvanced","StructureSDBSilo","StructureSatelliteDish","StructureSecurityPrinter","StructureShelfMedium","StructureShortCornerLocker","StructureShortLocker","StructureShower","StructureShowerPowered","StructureSign1x1","StructureSign2x1","StructureSingleBed","StructureSleeper","StructureSleeperLeft","StructureSleeperRight","StructureSleeperVertical","StructureSleeperVerticalDroid","StructureSmallDirectHeatExchangeGastoGas","StructureSmallDirectHeatExchangeLiquidtoGas","StructureSmallDirectHeatExchangeLiquidtoLiquid","StructureSmallSatelliteDish","StructureSolarPanel","StructureSolarPanel45","StructureSolarPanel45Reinforced","StructureSolarPanelDual","StructureSolarPanelDualReinforced","StructureSolarPanelFlat","StructureSolarPanelFlatReinforced","StructureSolarPanelReinforced","StructureSolidFuelGenerator","StructureSorter","StructureStacker","StructureStackerReverse","StructureStirlingEngine","StructureStorageLocker","StructureSuitStorage","StructureTankBig","StructureTankBigInsulated","StructureTankSmall","StructureTankSmallAir","StructureTankSmallFuel","StructureTankSmallInsulated","StructureToolManufactory","StructureTraderWaypoint","StructureTransformer","StructureTransformerMedium","StructureTransformerMediumReversed","StructureTransformerSmall","StructureTransformerSmallReversed","StructureTurbineGenerator","StructureTurboVolumePump","StructureUnloader","StructureUprightWindTurbine","StructureValve","StructureVendingMachine","StructureVolumePump","StructureWallCooler","StructureWallHeater","StructureWallLight","StructureWallLightBattery","StructureWaterBottleFiller","StructureWaterBottleFillerBottom","StructureWaterBottleFillerPowered","StructureWaterBottleFillerPoweredBottom","StructureWaterDigitalValve","StructureWaterPipeMeter","StructureWaterPurifier","StructureWaterWallCooler","StructureWeatherStation","StructureWindTurbine","StructureWindowShutter"],"items":["AccessCardBlack","AccessCardBlue","AccessCardBrown","AccessCardGray","AccessCardGreen","AccessCardKhaki","AccessCardOrange","AccessCardPink","AccessCardPurple","AccessCardRed","AccessCardWhite","AccessCardYellow","ApplianceChemistryStation","ApplianceDeskLampLeft","ApplianceDeskLampRight","ApplianceMicrowave","AppliancePackagingMachine","AppliancePaintMixer","AppliancePlantGeneticAnalyzer","AppliancePlantGeneticSplicer","AppliancePlantGeneticStabilizer","ApplianceReagentProcessor","ApplianceSeedTray","ApplianceTabletDock","AutolathePrinterMod","Battery_Wireless_cell","Battery_Wireless_cell_Big","CardboardBox","CartridgeAccessController","CartridgeAtmosAnalyser","CartridgeConfiguration","CartridgeElectronicReader","CartridgeGPS","CartridgeGuide","CartridgeMedicalAnalyser","CartridgeNetworkAnalyser","CartridgeOreScanner","CartridgeOreScannerColor","CartridgePlantAnalyser","CartridgeTracker","CircuitboardAdvAirlockControl","CircuitboardAirControl","CircuitboardAirlockControl","CircuitboardCameraDisplay","CircuitboardDoorControl","CircuitboardGasDisplay","CircuitboardGraphDisplay","CircuitboardHashDisplay","CircuitboardModeControl","CircuitboardPowerControl","CircuitboardShipDisplay","CircuitboardSolarControl","CrateMkII","DecayedFood","DynamicAirConditioner","DynamicCrate","DynamicGPR","DynamicGasCanisterAir","DynamicGasCanisterCarbonDioxide","DynamicGasCanisterEmpty","DynamicGasCanisterFuel","DynamicGasCanisterNitrogen","DynamicGasCanisterNitrousOxide","DynamicGasCanisterOxygen","DynamicGasCanisterPollutants","DynamicGasCanisterRocketFuel","DynamicGasCanisterVolatiles","DynamicGasCanisterWater","DynamicGasTankAdvanced","DynamicGasTankAdvancedOxygen","DynamicGenerator","DynamicHydroponics","DynamicLight","DynamicLiquidCanisterEmpty","DynamicMKIILiquidCanisterEmpty","DynamicMKIILiquidCanisterWater","DynamicScrubber","DynamicSkeleton","ElectronicPrinterMod","ElevatorCarrage","EntityChick","EntityChickenBrown","EntityChickenWhite","EntityRoosterBlack","EntityRoosterBrown","Fertilizer","FireArmSMG","FlareGun","Handgun","HandgunMagazine","HumanSkull","ImGuiCircuitboardAirlockControl","ItemActiveVent","ItemAdhesiveInsulation","ItemAdvancedTablet","ItemAlienMushroom","ItemAmmoBox","ItemAngleGrinder","ItemArcWelder","ItemAreaPowerControl","ItemAstroloyIngot","ItemAstroloySheets","ItemAuthoringTool","ItemAuthoringToolRocketNetwork","ItemBasketBall","ItemBatteryCell","ItemBatteryCellLarge","ItemBatteryCellNuclear","ItemBatteryCharger","ItemBatteryChargerSmall","ItemBeacon","ItemBiomass","ItemBreadLoaf","ItemCableAnalyser","ItemCableCoil","ItemCableCoilHeavy","ItemCableFuse","ItemCannedCondensedMilk","ItemCannedEdamame","ItemCannedMushroom","ItemCannedPowderedEggs","ItemCannedRicePudding","ItemCerealBar","ItemCharcoal","ItemChemLightBlue","ItemChemLightGreen","ItemChemLightRed","ItemChemLightWhite","ItemChemLightYellow","ItemChocolateBar","ItemChocolateCake","ItemChocolateCerealBar","ItemCoalOre","ItemCobaltOre","ItemCocoaPowder","ItemCocoaTree","ItemCoffeeMug","ItemConstantanIngot","ItemCookedCondensedMilk","ItemCookedCorn","ItemCookedMushroom","ItemCookedPowderedEggs","ItemCookedPumpkin","ItemCookedRice","ItemCookedSoybean","ItemCookedTomato","ItemCopperIngot","ItemCopperOre","ItemCorn","ItemCornSoup","ItemCreditCard","ItemCropHay","ItemCrowbar","ItemDataDisk","ItemDirtCanister","ItemDirtyOre","ItemDisposableBatteryCharger","ItemDrill","ItemDuctTape","ItemDynamicAirCon","ItemDynamicScrubber","ItemEggCarton","ItemElectronicParts","ItemElectrumIngot","ItemEmergencyAngleGrinder","ItemEmergencyArcWelder","ItemEmergencyCrowbar","ItemEmergencyDrill","ItemEmergencyEvaSuit","ItemEmergencyPickaxe","ItemEmergencyScrewdriver","ItemEmergencySpaceHelmet","ItemEmergencyToolBelt","ItemEmergencyWireCutters","ItemEmergencyWrench","ItemEmptyCan","ItemEvaSuit","ItemExplosive","ItemFern","ItemFertilizedEgg","ItemFilterFern","ItemFlagSmall","ItemFlashingLight","ItemFlashlight","ItemFlour","ItemFlowerBlue","ItemFlowerGreen","ItemFlowerOrange","ItemFlowerRed","ItemFlowerYellow","ItemFrenchFries","ItemFries","ItemGasCanisterCarbonDioxide","ItemGasCanisterEmpty","ItemGasCanisterFuel","ItemGasCanisterNitrogen","ItemGasCanisterNitrousOxide","ItemGasCanisterOxygen","ItemGasCanisterPollutants","ItemGasCanisterSmart","ItemGasCanisterVolatiles","ItemGasCanisterWater","ItemGasFilterCarbonDioxide","ItemGasFilterCarbonDioxideInfinite","ItemGasFilterCarbonDioxideL","ItemGasFilterCarbonDioxideM","ItemGasFilterNitrogen","ItemGasFilterNitrogenInfinite","ItemGasFilterNitrogenL","ItemGasFilterNitrogenM","ItemGasFilterNitrousOxide","ItemGasFilterNitrousOxideInfinite","ItemGasFilterNitrousOxideL","ItemGasFilterNitrousOxideM","ItemGasFilterOxygen","ItemGasFilterOxygenInfinite","ItemGasFilterOxygenL","ItemGasFilterOxygenM","ItemGasFilterPollutants","ItemGasFilterPollutantsInfinite","ItemGasFilterPollutantsL","ItemGasFilterPollutantsM","ItemGasFilterVolatiles","ItemGasFilterVolatilesInfinite","ItemGasFilterVolatilesL","ItemGasFilterVolatilesM","ItemGasFilterWater","ItemGasFilterWaterInfinite","ItemGasFilterWaterL","ItemGasFilterWaterM","ItemGasSensor","ItemGasTankStorage","ItemGlassSheets","ItemGlasses","ItemGoldIngot","ItemGoldOre","ItemGrenade","ItemHEMDroidRepairKit","ItemHardBackpack","ItemHardJetpack","ItemHardMiningBackPack","ItemHardSuit","ItemHardsuitHelmet","ItemHastelloyIngot","ItemHat","ItemHighVolumeGasCanisterEmpty","ItemHorticultureBelt","ItemHydroponicTray","ItemIce","ItemIgniter","ItemInconelIngot","ItemInsulation","ItemIntegratedCircuit10","ItemInvarIngot","ItemIronFrames","ItemIronIngot","ItemIronOre","ItemIronSheets","ItemJetpackBasic","ItemKitAIMeE","ItemKitAccessBridge","ItemKitAdvancedComposter","ItemKitAdvancedFurnace","ItemKitAdvancedPackagingMachine","ItemKitAirlock","ItemKitAirlockGate","ItemKitArcFurnace","ItemKitAtmospherics","ItemKitAutoMinerSmall","ItemKitAutolathe","ItemKitAutomatedOven","ItemKitBasket","ItemKitBattery","ItemKitBatteryLarge","ItemKitBeacon","ItemKitBeds","ItemKitBlastDoor","ItemKitCentrifuge","ItemKitChairs","ItemKitChute","ItemKitChuteUmbilical","ItemKitCompositeCladding","ItemKitCompositeFloorGrating","ItemKitComputer","ItemKitConsole","ItemKitCrate","ItemKitCrateMkII","ItemKitCrateMount","ItemKitCryoTube","ItemKitDeepMiner","ItemKitDockingPort","ItemKitDoor","ItemKitDrinkingFountain","ItemKitDynamicCanister","ItemKitDynamicGasTankAdvanced","ItemKitDynamicGenerator","ItemKitDynamicHydroponics","ItemKitDynamicLiquidCanister","ItemKitDynamicMKIILiquidCanister","ItemKitElectricUmbilical","ItemKitElectronicsPrinter","ItemKitElevator","ItemKitEngineLarge","ItemKitEngineMedium","ItemKitEngineSmall","ItemKitEvaporationChamber","ItemKitFlagODA","ItemKitFridgeBig","ItemKitFridgeSmall","ItemKitFurnace","ItemKitFurniture","ItemKitFuselage","ItemKitGasGenerator","ItemKitGasUmbilical","ItemKitGovernedGasRocketEngine","ItemKitGroundTelescope","ItemKitGrowLight","ItemKitHarvie","ItemKitHeatExchanger","ItemKitHorizontalAutoMiner","ItemKitHydraulicPipeBender","ItemKitHydroponicAutomated","ItemKitHydroponicStation","ItemKitIceCrusher","ItemKitInsulatedLiquidPipe","ItemKitInsulatedPipe","ItemKitInsulatedPipeUtility","ItemKitInsulatedPipeUtilityLiquid","ItemKitInteriorDoors","ItemKitLadder","ItemKitLandingPadAtmos","ItemKitLandingPadBasic","ItemKitLandingPadWaypoint","ItemKitLargeDirectHeatExchanger","ItemKitLargeExtendableRadiator","ItemKitLargeSatelliteDish","ItemKitLaunchMount","ItemKitLaunchTower","ItemKitLiquidRegulator","ItemKitLiquidTank","ItemKitLiquidTankInsulated","ItemKitLiquidTurboVolumePump","ItemKitLiquidUmbilical","ItemKitLocker","ItemKitLogicCircuit","ItemKitLogicInputOutput","ItemKitLogicMemory","ItemKitLogicProcessor","ItemKitLogicSwitch","ItemKitLogicTransmitter","ItemKitMotherShipCore","ItemKitMusicMachines","ItemKitPassiveLargeRadiatorGas","ItemKitPassiveLargeRadiatorLiquid","ItemKitPassthroughHeatExchanger","ItemKitPictureFrame","ItemKitPipe","ItemKitPipeLiquid","ItemKitPipeOrgan","ItemKitPipeRadiator","ItemKitPipeRadiatorLiquid","ItemKitPipeUtility","ItemKitPipeUtilityLiquid","ItemKitPlanter","ItemKitPortablesConnector","ItemKitPowerTransmitter","ItemKitPowerTransmitterOmni","ItemKitPoweredVent","ItemKitPressureFedGasEngine","ItemKitPressureFedLiquidEngine","ItemKitPressurePlate","ItemKitPumpedLiquidEngine","ItemKitRailing","ItemKitRecycler","ItemKitRegulator","ItemKitReinforcedWindows","ItemKitResearchMachine","ItemKitRespawnPointWallMounted","ItemKitRocketAvionics","ItemKitRocketBattery","ItemKitRocketCargoStorage","ItemKitRocketCelestialTracker","ItemKitRocketCircuitHousing","ItemKitRocketDatalink","ItemKitRocketGasFuelTank","ItemKitRocketLiquidFuelTank","ItemKitRocketManufactory","ItemKitRocketMiner","ItemKitRocketScanner","ItemKitRocketTransformerSmall","ItemKitRoverFrame","ItemKitRoverMKI","ItemKitSDBHopper","ItemKitSatelliteDish","ItemKitSecurityPrinter","ItemKitSensor","ItemKitShower","ItemKitSign","ItemKitSleeper","ItemKitSmallDirectHeatExchanger","ItemKitSmallSatelliteDish","ItemKitSolarPanel","ItemKitSolarPanelBasic","ItemKitSolarPanelBasicReinforced","ItemKitSolarPanelReinforced","ItemKitSolidGenerator","ItemKitSorter","ItemKitSpeaker","ItemKitStacker","ItemKitStairs","ItemKitStairwell","ItemKitStandardChute","ItemKitStirlingEngine","ItemKitSuitStorage","ItemKitTables","ItemKitTank","ItemKitTankInsulated","ItemKitToolManufactory","ItemKitTransformer","ItemKitTransformerSmall","ItemKitTurbineGenerator","ItemKitTurboVolumePump","ItemKitUprightWindTurbine","ItemKitVendingMachine","ItemKitVendingMachineRefrigerated","ItemKitWall","ItemKitWallArch","ItemKitWallFlat","ItemKitWallGeometry","ItemKitWallIron","ItemKitWallPadded","ItemKitWaterBottleFiller","ItemKitWaterPurifier","ItemKitWeatherStation","ItemKitWindTurbine","ItemKitWindowShutter","ItemLabeller","ItemLaptop","ItemLeadIngot","ItemLeadOre","ItemLightSword","ItemLiquidCanisterEmpty","ItemLiquidCanisterSmart","ItemLiquidDrain","ItemLiquidPipeAnalyzer","ItemLiquidPipeHeater","ItemLiquidPipeValve","ItemLiquidPipeVolumePump","ItemLiquidTankStorage","ItemMKIIAngleGrinder","ItemMKIIArcWelder","ItemMKIICrowbar","ItemMKIIDrill","ItemMKIIDuctTape","ItemMKIIMiningDrill","ItemMKIIScrewdriver","ItemMKIIWireCutters","ItemMKIIWrench","ItemMarineBodyArmor","ItemMarineHelmet","ItemMilk","ItemMiningBackPack","ItemMiningBelt","ItemMiningBeltMKII","ItemMiningCharge","ItemMiningDrill","ItemMiningDrillHeavy","ItemMiningDrillPneumatic","ItemMkIIToolbelt","ItemMuffin","ItemMushroom","ItemNVG","ItemNickelIngot","ItemNickelOre","ItemNitrice","ItemOxite","ItemPassiveVent","ItemPassiveVentInsulated","ItemPeaceLily","ItemPickaxe","ItemPillHeal","ItemPillStun","ItemPipeAnalyizer","ItemPipeCowl","ItemPipeDigitalValve","ItemPipeGasMixer","ItemPipeHeater","ItemPipeIgniter","ItemPipeLabel","ItemPipeLiquidRadiator","ItemPipeMeter","ItemPipeRadiator","ItemPipeValve","ItemPipeVolumePump","ItemPlainCake","ItemPlantEndothermic_Creative","ItemPlantEndothermic_Genepool1","ItemPlantEndothermic_Genepool2","ItemPlantSampler","ItemPlantSwitchGrass","ItemPlantThermogenic_Creative","ItemPlantThermogenic_Genepool1","ItemPlantThermogenic_Genepool2","ItemPlasticSheets","ItemPotato","ItemPotatoBaked","ItemPowerConnector","ItemPumpkin","ItemPumpkinPie","ItemPumpkinSoup","ItemPureIce","ItemPureIceCarbonDioxide","ItemPureIceHydrogen","ItemPureIceLiquidCarbonDioxide","ItemPureIceLiquidHydrogen","ItemPureIceLiquidNitrogen","ItemPureIceLiquidNitrous","ItemPureIceLiquidOxygen","ItemPureIceLiquidPollutant","ItemPureIceLiquidVolatiles","ItemPureIceNitrogen","ItemPureIceNitrous","ItemPureIceOxygen","ItemPureIcePollutant","ItemPureIcePollutedWater","ItemPureIceSteam","ItemPureIceVolatiles","ItemRTG","ItemRTGSurvival","ItemReagentMix","ItemRemoteDetonator","ItemReusableFireExtinguisher","ItemRice","ItemRoadFlare","ItemRocketMiningDrillHead","ItemRocketMiningDrillHeadDurable","ItemRocketMiningDrillHeadHighSpeedIce","ItemRocketMiningDrillHeadHighSpeedMineral","ItemRocketMiningDrillHeadIce","ItemRocketMiningDrillHeadLongTerm","ItemRocketMiningDrillHeadMineral","ItemRocketScanningHead","ItemScanner","ItemScrewdriver","ItemSecurityCamera","ItemSensorLenses","ItemSensorProcessingUnitCelestialScanner","ItemSensorProcessingUnitMesonScanner","ItemSensorProcessingUnitOreScanner","ItemSiliconIngot","ItemSiliconOre","ItemSilverIngot","ItemSilverOre","ItemSolderIngot","ItemSolidFuel","ItemSoundCartridgeBass","ItemSoundCartridgeDrums","ItemSoundCartridgeLeads","ItemSoundCartridgeSynth","ItemSoyOil","ItemSoybean","ItemSpaceCleaner","ItemSpaceHelmet","ItemSpaceIce","ItemSpaceOre","ItemSpacepack","ItemSprayCanBlack","ItemSprayCanBlue","ItemSprayCanBrown","ItemSprayCanGreen","ItemSprayCanGrey","ItemSprayCanKhaki","ItemSprayCanOrange","ItemSprayCanPink","ItemSprayCanPurple","ItemSprayCanRed","ItemSprayCanWhite","ItemSprayCanYellow","ItemSprayGun","ItemSteelFrames","ItemSteelIngot","ItemSteelSheets","ItemStelliteGlassSheets","ItemStelliteIngot","ItemSugar","ItemSugarCane","ItemSuitModCryogenicUpgrade","ItemTablet","ItemTerrainManipulator","ItemTomato","ItemTomatoSoup","ItemToolBelt","ItemTropicalPlant","ItemUraniumOre","ItemVolatiles","ItemWallCooler","ItemWallHeater","ItemWallLight","ItemWaspaloyIngot","ItemWaterBottle","ItemWaterPipeDigitalValve","ItemWaterPipeMeter","ItemWaterWallCooler","ItemWearLamp","ItemWeldingTorch","ItemWheat","ItemWireCutters","ItemWirelessBatteryCellExtraLarge","ItemWreckageAirConditioner1","ItemWreckageAirConditioner2","ItemWreckageHydroponicsTray1","ItemWreckageLargeExtendableRadiator01","ItemWreckageStructureRTG1","ItemWreckageStructureWeatherStation001","ItemWreckageStructureWeatherStation002","ItemWreckageStructureWeatherStation003","ItemWreckageStructureWeatherStation004","ItemWreckageStructureWeatherStation005","ItemWreckageStructureWeatherStation006","ItemWreckageStructureWeatherStation007","ItemWreckageStructureWeatherStation008","ItemWreckageTurbineGenerator1","ItemWreckageTurbineGenerator2","ItemWreckageTurbineGenerator3","ItemWreckageWallCooler1","ItemWreckageWallCooler2","ItemWrench","KitSDBSilo","KitStructureCombustionCentrifuge","Lander","Meteorite","MonsterEgg","MotherboardComms","MotherboardLogic","MotherboardMissionControl","MotherboardProgrammableChip","MotherboardRockets","MotherboardSorter","MothershipCore","NpcChick","NpcChicken","PipeBenderMod","PortableComposter","PortableSolarPanel","ReagentColorBlue","ReagentColorGreen","ReagentColorOrange","ReagentColorRed","ReagentColorYellow","Robot","RoverCargo","Rover_MkI","SMGMagazine","SeedBag_Cocoa","SeedBag_Corn","SeedBag_Fern","SeedBag_Mushroom","SeedBag_Potato","SeedBag_Pumpkin","SeedBag_Rice","SeedBag_Soybean","SeedBag_SugarCane","SeedBag_Switchgrass","SeedBag_Tomato","SeedBag_Wheet","SpaceShuttle","ToolPrinterMod","ToyLuna","UniformCommander","UniformMarine","UniformOrangeJumpSuit","WeaponEnergy","WeaponPistolEnergy","WeaponRifleEnergy","WeaponTorpedo"],"logicableItems":["Battery_Wireless_cell","Battery_Wireless_cell_Big","DynamicGPR","DynamicLight","ItemAdvancedTablet","ItemAngleGrinder","ItemArcWelder","ItemBatteryCell","ItemBatteryCellLarge","ItemBatteryCellNuclear","ItemBeacon","ItemDrill","ItemEmergencyAngleGrinder","ItemEmergencyArcWelder","ItemEmergencyDrill","ItemEmergencySpaceHelmet","ItemFlashlight","ItemHardBackpack","ItemHardJetpack","ItemHardSuit","ItemHardsuitHelmet","ItemIntegratedCircuit10","ItemJetpackBasic","ItemLabeller","ItemLaptop","ItemMKIIAngleGrinder","ItemMKIIArcWelder","ItemMKIIDrill","ItemMKIIMiningDrill","ItemMiningBeltMKII","ItemMiningDrill","ItemMiningDrillHeavy","ItemMkIIToolbelt","ItemNVG","ItemPlantSampler","ItemRemoteDetonator","ItemSensorLenses","ItemSpaceHelmet","ItemSpacepack","ItemTablet","ItemTerrainManipulator","ItemWearLamp","ItemWirelessBatteryCellExtraLarge","PortableSolarPanel","Robot","RoverCargo","Rover_MkI","WeaponEnergy","WeaponPistolEnergy","WeaponRifleEnergy"]} \ No newline at end of file +{"prefabs":{"AccessCardBlack":{"prefab":{"prefab_name":"AccessCardBlack","prefab_hash":-1330388999,"desc":"","name":"Access Card (Black)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"AccessCard","sorting_class":"Default"}},"AccessCardBlue":{"prefab":{"prefab_name":"AccessCardBlue","prefab_hash":-1411327657,"desc":"","name":"Access Card (Blue)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"AccessCard","sorting_class":"Default"}},"AccessCardBrown":{"prefab":{"prefab_name":"AccessCardBrown","prefab_hash":1412428165,"desc":"","name":"Access Card (Brown)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"AccessCard","sorting_class":"Default"}},"AccessCardGray":{"prefab":{"prefab_name":"AccessCardGray","prefab_hash":-1339479035,"desc":"","name":"Access Card (Gray)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"AccessCard","sorting_class":"Default"}},"AccessCardGreen":{"prefab":{"prefab_name":"AccessCardGreen","prefab_hash":-374567952,"desc":"","name":"Access Card (Green)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"AccessCard","sorting_class":"Default"}},"AccessCardKhaki":{"prefab":{"prefab_name":"AccessCardKhaki","prefab_hash":337035771,"desc":"","name":"Access Card (Khaki)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"AccessCard","sorting_class":"Default"}},"AccessCardOrange":{"prefab":{"prefab_name":"AccessCardOrange","prefab_hash":-332896929,"desc":"","name":"Access Card (Orange)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"AccessCard","sorting_class":"Default"}},"AccessCardPink":{"prefab":{"prefab_name":"AccessCardPink","prefab_hash":431317557,"desc":"","name":"Access Card (Pink)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"AccessCard","sorting_class":"Default"}},"AccessCardPurple":{"prefab":{"prefab_name":"AccessCardPurple","prefab_hash":459843265,"desc":"","name":"Access Card (Purple)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"AccessCard","sorting_class":"Default"}},"AccessCardRed":{"prefab":{"prefab_name":"AccessCardRed","prefab_hash":-1713748313,"desc":"","name":"Access Card (Red)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"AccessCard","sorting_class":"Default"}},"AccessCardWhite":{"prefab":{"prefab_name":"AccessCardWhite","prefab_hash":2079959157,"desc":"","name":"Access Card (White)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"AccessCard","sorting_class":"Default"}},"AccessCardYellow":{"prefab":{"prefab_name":"AccessCardYellow","prefab_hash":568932536,"desc":"","name":"Access Card (Yellow)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"AccessCard","sorting_class":"Default"}},"ApplianceChemistryStation":{"prefab":{"prefab_name":"ApplianceChemistryStation","prefab_hash":1365789392,"desc":"","name":"Chemistry Station"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Appliance","sorting_class":"Appliances"},"slots":[{"name":"Output","typ":"None"}]},"ApplianceDeskLampLeft":{"prefab":{"prefab_name":"ApplianceDeskLampLeft","prefab_hash":-1683849799,"desc":"","name":"Appliance Desk Lamp Left"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Appliance","sorting_class":"Appliances"}},"ApplianceDeskLampRight":{"prefab":{"prefab_name":"ApplianceDeskLampRight","prefab_hash":1174360780,"desc":"","name":"Appliance Desk Lamp Right"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Appliance","sorting_class":"Appliances"}},"ApplianceMicrowave":{"prefab":{"prefab_name":"ApplianceMicrowave","prefab_hash":-1136173965,"desc":"While countless 'better' ways of cooking Food have been invented in the last few hundred years, few are as durable or easy to fabricate as the OK-Zoomer microwave. Licensed from Xigo, the plans are based on a classic model from the mid-21st century, giving it a charmingly retro feel. But don't worry, it oscillates Water molecules more than adequately. \nJust bolt it to a Powered Bench using a Wrench to power it, follow the recipe, and you're cooking.","name":"Microwave"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Appliance","sorting_class":"Appliances"},"slots":[{"name":"Output","typ":"None"}]},"AppliancePackagingMachine":{"prefab":{"prefab_name":"AppliancePackagingMachine","prefab_hash":-749191906,"desc":"The Xigo Cannifier requires Empty Can and cooked food to create long-lasting, easily stored sustenance. Note that the Cannifier must be bolted to a Powered Bench for power, and only accepts cooked food and tin cans.\n\nOPERATION\n\n1. Add the correct ingredients to the device via the hopper in the TOP.\n\n2. Close the device using the dropdown handle.\n\n3. Activate the device.\n\n4. Remove canned goods from the outlet in the FRONT.\n\nNote: the Cannifier will flash an error on its activation switch if you attempt to activate it before closing it.\n\n\n ","name":"Basic Packaging Machine"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Appliance","sorting_class":"Appliances"},"slots":[{"name":"Export","typ":"None"}]},"AppliancePaintMixer":{"prefab":{"prefab_name":"AppliancePaintMixer","prefab_hash":-1339716113,"desc":"","name":"Paint Mixer"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Appliance","sorting_class":"Appliances"},"slots":[{"name":"Output","typ":"Bottle"}]},"AppliancePlantGeneticAnalyzer":{"prefab":{"prefab_name":"AppliancePlantGeneticAnalyzer","prefab_hash":-1303038067,"desc":"The Genetic Analyzer can be used to process samples from the Plant Sampler. Once processed, the genetic information of the sampled plant can be viewed by clicking on the search button.\n\nIndividual Gene Value Widgets: \nMost gene values will appear as a sliding bar between a minimum value on the left and a maximum value on the right. The actual value of the gene is in the middle of the bar, in orange.\n\nMultiple Gene Value Widgets: \nFor temperature and pressure ranges, four genes appear on the same widget. The orange values underneath the bar are the minimum and maximum thresholds for growth. Outside of this range, the plant will stop growing and eventually die. The blue values underneath the bar are the minimum and maximum thresholds for ideal growth. Inside of this range, the plant will grow at maximum speed. The white values above the bar are the minimum and maximum achievable values for the growth threshold.","name":"Plant Genetic Analyzer"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Appliance","sorting_class":"Appliances"},"slots":[{"name":"Input","typ":"Tool"}]},"AppliancePlantGeneticSplicer":{"prefab":{"prefab_name":"AppliancePlantGeneticSplicer","prefab_hash":-1094868323,"desc":"The Genetic Splicer can be used to copy a single gene from one 'source' plant to another 'target' plant of the same type. After copying, the source plant will be destroyed.\n \nTo begin splicing, place a plant or seed bag in the left slot (source) and place another plant or seed bag of the same type in the right slot (target). You can select a gene using the arrow buttons. Close the sliding door and press the green activate button. Once splicing has begun, the device will be locked until the process has finished (which will take approximately twenty minutes). If you want to cancel splicing you can power off the bench or detach the appliance as a last resort.","name":"Plant Genetic Splicer"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Appliance","sorting_class":"Appliances"},"slots":[{"name":"Source Plant","typ":"Plant"},{"name":"Target Plant","typ":"Plant"}]},"AppliancePlantGeneticStabilizer":{"prefab":{"prefab_name":"AppliancePlantGeneticStabilizer","prefab_hash":871432335,"desc":"The Genetic Stabilizer can be used to manipulate gene stability on a specific Plants or Seeds. It has two modes Stabilize and Destabilize.\nStabilize: Increases all genes stability by 50%.\nDestabilize: Decreases all gene stability by 10% other than a chosen gene which will received decreased stability by 50%.\n ","name":"Plant Genetic Stabilizer"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Appliance","sorting_class":"Appliances"},"slots":[{"name":"Plant","typ":"Plant"}]},"ApplianceReagentProcessor":{"prefab":{"prefab_name":"ApplianceReagentProcessor","prefab_hash":1260918085,"desc":"Sitting somewhere between a high powered juicer and an alchemist's alembic, the Xigo reagent processor turns certain raw materials and food items into cooking and crafting ingredients. Indispensible in any space kitchen, just bolt it to the bench, and you're ready to go.","name":"Reagent Processor"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Appliance","sorting_class":"Appliances"},"slots":[{"name":"Input","typ":"None"},{"name":"Output","typ":"None"}]},"ApplianceSeedTray":{"prefab":{"prefab_name":"ApplianceSeedTray","prefab_hash":142831994,"desc":"The seed tray can hold up to twelve plants or seeds and can be used to facilitate fast experimentation and testing of plant genetics.","name":"Appliance Seed Tray"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Appliance","sorting_class":"Appliances"},"slots":[{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"}]},"ApplianceTabletDock":{"prefab":{"prefab_name":"ApplianceTabletDock","prefab_hash":1853941363,"desc":"","name":"Tablet Dock"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Appliance","sorting_class":"Appliances"},"slots":[{"name":"","typ":"Tool"}]},"AutolathePrinterMod":{"prefab":{"prefab_name":"AutolathePrinterMod","prefab_hash":221058307,"desc":"Apply to an Autolathe with a Welding Torch or Arc Welder to upgrade for increased processing speed and more recipe options.","name":"Autolathe Printer Mod"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Default"}},"Battery_Wireless_cell":{"prefab":{"prefab_name":"Battery_Wireless_cell","prefab_hash":-462415758,"desc":"0.Empty\n1.Critical\n2.VeryLow\n3.Low\n4.Medium\n5.High\n6.Full","name":"Battery Wireless Cell"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Battery","sorting_class":"Default"},"logic":{"logic_slot_types":{},"logic_types":{"Mode":"ReadWrite","ReferenceId":"Read"},"modes":{"0":"Empty","1":"Critical","2":"VeryLow","3":"Low","4":"Medium","5":"High","6":"Full"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[]},"Battery_Wireless_cell_Big":{"prefab":{"prefab_name":"Battery_Wireless_cell_Big","prefab_hash":-41519077,"desc":"0.Empty\n1.Critical\n2.VeryLow\n3.Low\n4.Medium\n5.High\n6.Full","name":"Battery Wireless Cell (Big)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Battery","sorting_class":"Default"},"logic":{"logic_slot_types":{},"logic_types":{"Mode":"ReadWrite","ReferenceId":"Read"},"modes":{"0":"Empty","1":"Critical","2":"VeryLow","3":"Low","4":"Medium","5":"High","6":"Full"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[]},"CardboardBox":{"prefab":{"prefab_name":"CardboardBox","prefab_hash":-1976947556,"desc":"","name":"Cardboard Box"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Storage"},"slots":[{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"}]},"CartridgeAccessController":{"prefab":{"prefab_name":"CartridgeAccessController","prefab_hash":-1634532552,"desc":"","name":"Cartridge (Access Controller)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Cartridge","sorting_class":"Default"}},"CartridgeAtmosAnalyser":{"prefab":{"prefab_name":"CartridgeAtmosAnalyser","prefab_hash":-1550278665,"desc":"The Lorenz atmos analyzer is a multi-functional mass-spectrometer designed by ExMin for use with the OreCore Handheld Tablet. It displays the pressure, concentration and molar quantity of gas in rooms, tanks, or pipe networks.","name":"Atmos Analyzer"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Cartridge","sorting_class":"Default"}},"CartridgeConfiguration":{"prefab":{"prefab_name":"CartridgeConfiguration","prefab_hash":-932136011,"desc":"","name":"Configuration"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Cartridge","sorting_class":"Default"}},"CartridgeElectronicReader":{"prefab":{"prefab_name":"CartridgeElectronicReader","prefab_hash":-1462180176,"desc":"","name":"eReader"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Cartridge","sorting_class":"Default"}},"CartridgeGPS":{"prefab":{"prefab_name":"CartridgeGPS","prefab_hash":-1957063345,"desc":"","name":"GPS"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Cartridge","sorting_class":"Default"}},"CartridgeGuide":{"prefab":{"prefab_name":"CartridgeGuide","prefab_hash":872720793,"desc":"","name":"Guide"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Cartridge","sorting_class":"Default"}},"CartridgeMedicalAnalyser":{"prefab":{"prefab_name":"CartridgeMedicalAnalyser","prefab_hash":-1116110181,"desc":"When added to the OreCore Handheld Tablet, Asura's's ReadyMed medical analyzer reveals the health, or otherwise, of users various organs. Due to a design flaw, older models were notorious for producing quasar-like levels of x-ray radiation. Recent advances in shielding have more than halved the risk to users.","name":"Medical Analyzer"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Cartridge","sorting_class":"Default"}},"CartridgeNetworkAnalyser":{"prefab":{"prefab_name":"CartridgeNetworkAnalyser","prefab_hash":1606989119,"desc":"A minor masterpiece of micro-electronic engineering, the network analyzer displays the current, voltage and wattage of a cable network, as well as any devices connected to it. Based on a widely-copied Sinotai design, it's used in conjunction with the OreCore Handheld Tablet.","name":"Network Analyzer"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Cartridge","sorting_class":"Default"}},"CartridgeOreScanner":{"prefab":{"prefab_name":"CartridgeOreScanner","prefab_hash":-1768732546,"desc":"When inserted into a Handheld Tablet the scanner will display minerals hidden underground on the tablet.","name":"Ore Scanner"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Cartridge","sorting_class":"Default"}},"CartridgeOreScannerColor":{"prefab":{"prefab_name":"CartridgeOreScannerColor","prefab_hash":1738236580,"desc":"When inserted into a Handheld Tablet the scanner will display minerals hidden underground in different colors on the tablet.","name":"Ore Scanner (Color)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Cartridge","sorting_class":"Default"}},"CartridgePlantAnalyser":{"prefab":{"prefab_name":"CartridgePlantAnalyser","prefab_hash":1101328282,"desc":"","name":"Cartridge Plant Analyser"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Cartridge","sorting_class":"Default"}},"CartridgeTracker":{"prefab":{"prefab_name":"CartridgeTracker","prefab_hash":81488783,"desc":"","name":"Tracker"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Cartridge","sorting_class":"Default"}},"CircuitboardAdvAirlockControl":{"prefab":{"prefab_name":"CircuitboardAdvAirlockControl","prefab_hash":1633663176,"desc":"","name":"Advanced Airlock"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Circuitboard","sorting_class":"Default"}},"CircuitboardAirControl":{"prefab":{"prefab_name":"CircuitboardAirControl","prefab_hash":1618019559,"desc":"When added to a Console, air control circuit boards allow you to program an Active Vent. As with small dogs and 83% of people, air control circuits have only three modes: Pressure, Draft and Offline. Pressure mode maintains a 100kPa atmosphere, switching the active vent between inward and outward flow until target pressure is achieved. Draft mode allows you to pair active vents to circulate air. Offline mode deactivates the vent. ","name":"Air Control"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Circuitboard","sorting_class":"Default"}},"CircuitboardAirlockControl":{"prefab":{"prefab_name":"CircuitboardAirlockControl","prefab_hash":912176135,"desc":"Rumored to have been first sketched on a Norsec toilet wall by a disgruntled engineer, the Exgress airlock control circuit board’s versatility and ease of fabrication has made it the Stationeers control system of choice for Airlock cycling protocols. \n\nTo enter setup mode, insert the board into a Console along with a data disk. In this mode, you can see all data-accessible objects currently connected to the Console. Doors, lights, gas sensors and slave consoles can be selected (highlighted green), and will be controlled once the data disk is removed.","name":"Airlock"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Circuitboard","sorting_class":"Default"}},"CircuitboardCameraDisplay":{"prefab":{"prefab_name":"CircuitboardCameraDisplay","prefab_hash":-412104504,"desc":"Surveillance is sometimes necessary when building bases in highly hostile environments. The camera display circuit board allows wary Stationeers to turn a Console into a security display when connected to a Camera.","name":"Camera Display"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Circuitboard","sorting_class":"Default"}},"CircuitboardDoorControl":{"prefab":{"prefab_name":"CircuitboardDoorControl","prefab_hash":855694771,"desc":"A basic tool of Stationeer base construction, this circuit board provides a way to open and close a Composite Door, Blast Door or Glass Door remotely, when connected to a Console. This system can be further linked to Motion Sensor to create automatic doors.","name":"Door Control"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Circuitboard","sorting_class":"Default"}},"CircuitboardGasDisplay":{"prefab":{"prefab_name":"CircuitboardGasDisplay","prefab_hash":-82343730,"desc":"Information is power. Place this circuitboard into a Console to create a display that shows gas pressure or temperature of any connected tank, storage cannister, Kit (Pipe Analyzer) or Kit (Gas Sensor).","name":"Gas Display"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Circuitboard","sorting_class":"Default"}},"CircuitboardGraphDisplay":{"prefab":{"prefab_name":"CircuitboardGraphDisplay","prefab_hash":1344368806,"desc":"","name":"Graph Display"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Circuitboard","sorting_class":"Default"}},"CircuitboardHashDisplay":{"prefab":{"prefab_name":"CircuitboardHashDisplay","prefab_hash":1633074601,"desc":"","name":"Hash Display"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Circuitboard","sorting_class":"Default"}},"CircuitboardModeControl":{"prefab":{"prefab_name":"CircuitboardModeControl","prefab_hash":-1134148135,"desc":"Can't decide which mode you love most? This circuit board allows you to switch any connected device between operation modes.","name":"Mode Control"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Circuitboard","sorting_class":"Default"}},"CircuitboardPowerControl":{"prefab":{"prefab_name":"CircuitboardPowerControl","prefab_hash":-1923778429,"desc":"Under distant suns and demanding environments, Stationeer systems need to balance reliability, resilience and versatility. The power control board allows remote enabling and disabling of selected devices, disconnecting manual operation. \n \nThe circuit board has two modes: 'Link' switches all devices on or off; 'Toggle' switches each device to their alternate state. ","name":"Power Control"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Circuitboard","sorting_class":"Default"}},"CircuitboardShipDisplay":{"prefab":{"prefab_name":"CircuitboardShipDisplay","prefab_hash":-2044446819,"desc":"When the original Stationeer Handbook collapsed under its own weight into a singularity, certain information was irretrievably lost. Amongst this mysterious corpus of knowledge is the exact purpose of the ship display board.","name":"Ship Display"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Circuitboard","sorting_class":"Default"}},"CircuitboardSolarControl":{"prefab":{"prefab_name":"CircuitboardSolarControl","prefab_hash":2020180320,"desc":"Adding a solar control board to a Console lets you manually control the horizontal and vertical angles of any connected Solar Panel.","name":"Solar Control"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Circuitboard","sorting_class":"Default"}},"CompositeRollCover":{"prefab":{"prefab_name":"CompositeRollCover","prefab_hash":1228794916,"desc":"0.Operate\n1.Logic","name":"Composite Roll Cover"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Open":"ReadWrite","Mode":"ReadWrite","Lock":"ReadWrite","Setting":"ReadWrite","On":"ReadWrite","Idle":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Operate","1":"Logic"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":true,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"CrateMkII":{"prefab":{"prefab_name":"CrateMkII","prefab_hash":8709219,"desc":"A more heavily reinforced version of the iconic Dynamic Crate, the Crate Mk II is resistant to incredibly high pressures and temperatures. Short of disposing of it in a black hole, the Mk II is about as safe as luggage gets.","name":"Crate Mk II"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Storage"},"slots":[{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"}]},"DecayedFood":{"prefab":{"prefab_name":"DecayedFood","prefab_hash":1531087544,"desc":"When your food decays, it turns into this. ODA scientists have attempted to determine the exact constituents of this substance, but it remains evasive and mysterious. Suffice to say, eating it is a bad idea. Research has determined, however, that The exact speed of decay varies individually by:\n\n- TEMPERATURE - Refrigeration will slow decay, but many foods will be damaged by exposure to extreme low pressure, as well as extreme heat. The optimum temperature is 0 kelvin (-272 C).\n\n- FOOD TYPE - Each food type has its own decay properties. Tomato Soup lasts a lot longer than a Tomato, for instance.\n\n- PRESSURE - Food decays faster when the pressure drops below 1 atmosphere (101kPa). Decay happens exponentially more quickly as the atmosphere approaches a perfect vacuum. There is no effect from higher pressures. \n\n- ATMOSPHERE - Different gases can slow and accelerate the decay process. The process will take account of respective gas ratios in mixed atmospheres in calculating the decay modifier. The following rates apply across all foods:\n\n> Oxygen x 1.3\n> Nitrogen x 0.6\n> Carbon Dioxide x 0.8\n> Volatiles x 1\n> Pollutant x 3\n> Nitrous Oxide x 1.5\n> Steam x 2\n> Vacuum (see PRESSURE above)\n\n","name":"Decayed Food"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":25,"reagents":null,"slot_class":"None","sorting_class":"Default"}},"DeviceLfoVolume":{"prefab":{"prefab_name":"DeviceLfoVolume","prefab_hash":-1844430312,"desc":"The low frequency oscillator (or LFO) makes everything sound dark, twisted and crunchy by altering the shape of the waves output by a Logic Step Sequencer.\n \nTo set up an LFO:\n\n1. Place the LFO unit\n2. Set the LFO output to a Passive Speaker\n2. Set a sequencers' output to LFO - so the sequencer's signal runs through the LFO to a speaker.\n3. Place a Stop Watch or use an existing one, then use a Logic Writer to write it to the LFO.\n4. Use another logic writer to write the BPM to the LFO.\n5. You are ready. This is the future. You're in space. Make it sound cool.\n\nFor more info, check out the music page.","name":"Low frequency oscillator"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Mode":"ReadWrite","Error":"Read","Activate":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","Time":"ReadWrite","Bpm":"ReadWrite","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Whole Note","1":"Half Note","2":"Quarter Note","3":"Eighth Note","4":"Sixteenth Note"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"Input"},{"typ":"Power","role":"Input"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":true,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"DeviceStepUnit":{"prefab":{"prefab_name":"DeviceStepUnit","prefab_hash":1762696475,"desc":"0.C-2\n1.C#-2\n2.D-2\n3.D#-2\n4.E-2\n5.F-2\n6.F#-2\n7.G-2\n8.G#-2\n9.A-2\n10.A#-2\n11.B-2\n12.C-1\n13.C#-1\n14.D-1\n15.D#-1\n16.E-1\n17.F-1\n18.F#-1\n19.G-1\n20.G#-1\n21.A-1\n22.A#-1\n23.B-1\n24.C0\n25.C#0\n26.D0\n27.D#0\n28.E0\n29.F0\n30.F#0\n31.G0\n32.G#0\n33.A0\n34.A#0\n35.B0\n36.C1\n37.C#1\n38.D1\n39.D#1\n40.E1\n41.F1\n42.F#1\n43.G1\n44.G#1\n45.A1\n46.A#1\n47.B1\n48.C2\n49.C#2\n50.D2\n51.D#2\n52.E2\n53.F2\n54.F#2\n55.G2\n56.G#2\n57.A2\n58.A#2\n59.B2\n60.C3\n61.C#3\n62.D3\n63.D#3\n64.E3\n65.F3\n66.F#3\n67.G3\n68.G#3\n69.A3\n70.A#3\n71.B3\n72.C4\n73.C#4\n74.D4\n75.D#4\n76.E4\n77.F4\n78.F#4\n79.G4\n80.G#4\n81.A4\n82.A#4\n83.B4\n84.C5\n85.C#5\n86.D5\n87.D#5\n88.E5\n89.F5\n90.F#5\n91.G5 \n92.G#5\n93.A5\n94.A#5\n95.B5\n96.C6\n97.C#6\n98.D6\n99.D#6\n100.E6\n101.F6\n102.F#6\n103.G6\n104.G#6\n105.A6\n106.A#6\n107.B6\n108.C7\n109.C#7\n110.D7\n111.D#7\n112.E7\n113.F7\n114.F#7\n115.G7\n116.G#7\n117.A7\n118.A#7\n119.B7\n120.C8\n121.C#8\n122.D8\n123.D#8\n124.E8\n125.F8\n126.F#8\n127.G8","name":"Device Step Unit"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Mode":"ReadWrite","Error":"Read","Activate":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","Volume":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"C-2","1":"C#-2","2":"D-2","3":"D#-2","4":"E-2","5":"F-2","6":"F#-2","7":"G-2","8":"G#-2","9":"A-2","10":"A#-2","11":"B-2","12":"C-1","13":"C#-1","14":"D-1","15":"D#-1","16":"E-1","17":"F-1","18":"F#-1","19":"G-1","20":"G#-1","21":"A-1","22":"A#-1","23":"B-1","24":"C0","25":"C#0","26":"D0","27":"D#0","28":"E0","29":"F0","30":"F#0","31":"G0","32":"G#0","33":"A0","34":"A#0","35":"B0","36":"C1","37":"C#1","38":"D1","39":"D#1","40":"E1","41":"F1","42":"F#1","43":"G1","44":"G#1","45":"A1","46":"A#1","47":"B1","48":"C2","49":"C#2","50":"D2","51":"D#2","52":"E2","53":"F2","54":"F#2","55":"G2","56":"G#2","57":"A2","58":"A#2","59":"B2","60":"C3","61":"C#3","62":"D3","63":"D#3","64":"E3","65":"F3","66":"F#3","67":"G3","68":"G#3","69":"A3","70":"A#3","71":"B3","72":"C4","73":"C#4","74":"D4","75":"D#4","76":"E4","77":"F4","78":"F#4","79":"G4","80":"G#4","81":"A4","82":"A#4","83":"B4","84":"C5","85":"C#5","86":"D5","87":"D#5","88":"E5","89":"F5","90":"F#5","91":"G5 ","92":"G#5","93":"A5","94":"A#5","95":"B5","96":"C6","97":"C#6","98":"D6","99":"D#6","100":"E6","101":"F6","102":"F#6","103":"G6","104":"G#6","105":"A6","106":"A#6","107":"B6","108":"C7","109":"C#7","110":"D7","111":"D#7","112":"E7","113":"F7","114":"F#7","115":"G7","116":"G#7","117":"A7","118":"A#7","119":"B7","120":"C8","121":"C#8","122":"D8","123":"D#8","124":"E8","125":"F8","126":"F#8","127":"G8"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"Input"},{"typ":"Power","role":"Input"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":true,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"DynamicAirConditioner":{"prefab":{"prefab_name":"DynamicAirConditioner","prefab_hash":519913639,"desc":"The Sinotai-designed Huxi portable air conditioner cools by drawing heat from the atmosphere and storing it, or adding heat to the atmosphere from its internal tank. With a max internal pressure of 8106kPa, its capacity is relatively limited, physics being clear on this subject. To extend its temperature storage ability, bolt the Huxi to a Tank Connector, then connect it to a pipe network supplying hot or cold gases.","name":"Portable Air Conditioner"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Atmospherics"},"slots":[{"name":"Battery","typ":"Battery"}]},"DynamicCrate":{"prefab":{"prefab_name":"DynamicCrate","prefab_hash":1941079206,"desc":"The humble dynamic crate has become a symbol of Stationeer invention and independence. With twelve slots and handles at either end for ease of carriage, it's both standard issue and critical kit for cadets and Commanders alike.","name":"Dynamic Crate"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Storage"},"slots":[{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"}]},"DynamicGPR":{"prefab":{"prefab_name":"DynamicGPR","prefab_hash":-2085885850,"desc":"","name":""},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Tools"},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Activate":"ReadWrite","On":"ReadWrite","ReferenceId":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"DynamicGasCanisterAir":{"prefab":{"prefab_name":"DynamicGasCanisterAir","prefab_hash":-1713611165,"desc":"Portable gas tanks do one thing: store gas. But there's lots you can do with them. To refill the tank, bolt it to a Kit (Tank Connector), then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or bad things happen. Once it's full, you can refill a Canister (Oxygen) by attaching it to the tank's striped section. Or you could vent the tank's variable flow rate valve into a room and create an atmosphere. They also attach to rovers and rockets. Alternatively, kick it over and practice barrel rolling. The possibilities are endless.","name":"Portable Gas Tank (Air)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Atmospherics"},"slots":[{"name":"Gas Canister","typ":"None"}]},"DynamicGasCanisterCarbonDioxide":{"prefab":{"prefab_name":"DynamicGasCanisterCarbonDioxide","prefab_hash":-322413931,"desc":"Portable gas tanks do one thing: store gas. To refill the tank, bolt it to a Kit (Tank Connector), then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or ... boom. Once it's full, you can refill a Canister (CO2) by attaching it to the tank's striped section. Or you could vent the tank's variable flow rate valve into a room and create an atmosphere ... of sorts.","name":"Portable Gas Tank (CO2)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Default"},"slots":[{"name":"Gas Canister","typ":"None"}]},"DynamicGasCanisterEmpty":{"prefab":{"prefab_name":"DynamicGasCanisterEmpty","prefab_hash":-1741267161,"desc":"Portable gas tanks store gas. To refill one, bolt it to a Kit (Tank Connector), then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or bad things happen. Once it's full, you can refill a Canister by attaching it to the tank's striped section. Or you could vent the tank's variable flow rate valve into a room and create an atmosphere.","name":"Portable Gas Tank"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Default"},"slots":[{"name":"Gas Canister","typ":"None"}]},"DynamicGasCanisterFuel":{"prefab":{"prefab_name":"DynamicGasCanisterFuel","prefab_hash":-817051527,"desc":"Portable tanks store gas. They're good at it. If you need to refill a tank, bolt it to a Kit (Tank Connector), then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or things get messy. You can refill a Canister (Fuel) by attaching it to the tank's striped section. Or you could use a Wrench to attach it to a rover or rocket for later. It's really up to you.","name":"Portable Gas Tank (Fuel)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Default"},"slots":[{"name":"Gas Canister","typ":"None"}]},"DynamicGasCanisterNitrogen":{"prefab":{"prefab_name":"DynamicGasCanisterNitrogen","prefab_hash":121951301,"desc":"Portable tanks store gas. If you need to refill a tank, bolt it to a Kit (Tank Connector) using a Wrench, then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or you'll end up with Nitrogen in places you weren't expecting. You can refill a Canister (Nitrogen) by attaching it to the tank's striped section. Or you could use a Wrench to attach it to a rover or rocket for later.","name":"Portable Gas Tank (Nitrogen)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Default"},"slots":[{"name":"Gas Canister","typ":"None"}]},"DynamicGasCanisterNitrousOxide":{"prefab":{"prefab_name":"DynamicGasCanisterNitrousOxide","prefab_hash":30727200,"desc":"","name":"Portable Gas Tank (Nitrous Oxide)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Default"},"slots":[{"name":"Gas Canister","typ":"None"}]},"DynamicGasCanisterOxygen":{"prefab":{"prefab_name":"DynamicGasCanisterOxygen","prefab_hash":1360925836,"desc":"Portable tanks store gas. If you need to refill a tank, bolt it to a Kit (Tank Connector) using a Wrench, then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or you'll be picking tank shards out of your face. You can refill a Canister (Oxygen) by attaching it to the tank's striped section. Or you could vent it into a sealed room to create an atmosphere. Or even paint it pink, call it Steve and fill that sad space in your heart.","name":"Portable Gas Tank (Oxygen)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Default"},"slots":[{"name":"Gas Canister","typ":"None"}]},"DynamicGasCanisterPollutants":{"prefab":{"prefab_name":"DynamicGasCanisterPollutants","prefab_hash":396065382,"desc":"","name":"Portable Gas Tank (Pollutants)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Default"},"slots":[{"name":"Gas Canister","typ":"None"}]},"DynamicGasCanisterRocketFuel":{"prefab":{"prefab_name":"DynamicGasCanisterRocketFuel","prefab_hash":-8883951,"desc":"","name":"Dynamic Gas Canister Rocket Fuel"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Default"},"slots":[{"name":"Gas Canister","typ":"None"}]},"DynamicGasCanisterVolatiles":{"prefab":{"prefab_name":"DynamicGasCanisterVolatiles","prefab_hash":108086870,"desc":"Portable tanks store gas. To refill one, bolt it to a Kit (Tank Connector) using a Wrench, then connect it to a pipe network. Don't fill it above 10 MPa, unless you're the sort who loves complicated, flammable emergencies. You can refill a Canister (Volatiles) by attaching it to the tank's striped section. Or you could use a Wrench to attach to a rocket and show it around the Solar System.","name":"Portable Gas Tank (Volatiles)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Default"},"slots":[{"name":"Gas Canister","typ":"None"}]},"DynamicGasCanisterWater":{"prefab":{"prefab_name":"DynamicGasCanisterWater","prefab_hash":197293625,"desc":"This portable tank stores liquid, and liquid only. You just have to fill it up. To do this, bolt one to a Kit (Tank Connector) using a Wrench, then connect it to Liquid Pipe (Straight) to supply liquid to a network. \nTry to keep pressure under 10 MPa, or you'll end up wet, hurt and sorry, without any of the fun.\nYou can refill a Liquid Canister (Water) by attaching it to the tank's striped section. Or you could use a Wrench to attach it to a rocket and take it somewhere distant and dry, then feel good about yourself.","name":"Portable Liquid Tank (Water)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Atmospherics"},"slots":[{"name":"Gas Canister","typ":"LiquidCanister"}]},"DynamicGasTankAdvanced":{"prefab":{"prefab_name":"DynamicGasTankAdvanced","prefab_hash":-386375420,"desc":"0.Mode0\n1.Mode1","name":"Gas Tank Mk II"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Default"},"slots":[{"name":"Gas Canister","typ":"None"}]},"DynamicGasTankAdvancedOxygen":{"prefab":{"prefab_name":"DynamicGasTankAdvancedOxygen","prefab_hash":-1264455519,"desc":"0.Mode0\n1.Mode1","name":"Portable Gas Tank Mk II (Oxygen)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Atmospherics"},"slots":[{"name":"Gas Canister","typ":"None"}]},"DynamicGenerator":{"prefab":{"prefab_name":"DynamicGenerator","prefab_hash":-82087220,"desc":"Every Stationeer's best friend, the portable generator gets you up and running, fast. Fill it with a Canister (Fuel) to power up and charge a Battery Cell (Small), or attach it to a Power Connector to link it into your electrical network. It's pressure driven, so functions more efficiently at lower temperatures, and REALLY efficiently if supercooled. Perfecting your fuel mix also makes a big difference.","name":"Portable Generator"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Atmospherics"},"slots":[{"name":"Gas Canister","typ":"GasCanister"},{"name":"Battery","typ":"Battery"}]},"DynamicHydroponics":{"prefab":{"prefab_name":"DynamicHydroponics","prefab_hash":587726607,"desc":"","name":"Portable Hydroponics"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Atmospherics"},"slots":[{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Liquid Canister","typ":"LiquidCanister"},{"name":"Liquid Canister","typ":"Plant"},{"name":"Liquid Canister","typ":"Plant"},{"name":"Liquid Canister","typ":"Plant"},{"name":"Liquid Canister","typ":"Plant"}]},"DynamicLight":{"prefab":{"prefab_name":"DynamicLight","prefab_hash":-21970188,"desc":"Philippe Starck might not applaud, but this battery-powered light source undarkens the corners when illumination's lacking. Powered by any battery, it's a 'no-frills' Xigo design that can be cheaply fabricated with the minimum of fuss. Unless you like fuss. In which case, fuss all you like.","name":"Portable Light"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Tools"},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Open":"ReadWrite","Lock":"ReadWrite","On":"ReadWrite","ReferenceId":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"DynamicLiquidCanisterEmpty":{"prefab":{"prefab_name":"DynamicLiquidCanisterEmpty","prefab_hash":-1939209112,"desc":"This portable tank stores liquid, and liquid only. You can bolt one to a Kit (Liquid Tank Connector) using a Wrench, then connect it to a pipe network to refill it. You can refill a Liquid Canister (Water) by attaching it to the tank's striped section. Or you could use a Wrench to attach it to a rocket and take it somewhere distant and dry, then feel good about yourself.","name":"Portable Liquid Tank"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Atmospherics"},"slots":[{"name":"Liquid Canister","typ":"LiquidCanister"}]},"DynamicMKIILiquidCanisterEmpty":{"prefab":{"prefab_name":"DynamicMKIILiquidCanisterEmpty","prefab_hash":2130739600,"desc":"An empty, insulated liquid Gas Canister.","name":"Portable Liquid Tank Mk II"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Atmospherics"},"slots":[{"name":"Liquid Canister","typ":"LiquidCanister"}]},"DynamicMKIILiquidCanisterWater":{"prefab":{"prefab_name":"DynamicMKIILiquidCanisterWater","prefab_hash":-319510386,"desc":"An insulated version of the Portable Liquid Tank Mk II (Water), for storing liquids without them gaining or losing temperature.","name":"Portable Liquid Tank Mk II (Water)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Atmospherics"},"slots":[{"name":"Liquid Canister","typ":"LiquidCanister"}]},"DynamicScrubber":{"prefab":{"prefab_name":"DynamicScrubber","prefab_hash":755048589,"desc":"A portable scrubber does just what it sounds like: removes specific substances from the air. For instance, attaching a Filter (Carbon Dioxide) will pull Carbon Dioxide from the surrounding atmosphere. Note that the scrubber has room for one battery and two filters, which will double its operating speed. Neat. When it reaches an internal pressure of 8106kPA, an error signal will flash on the switch, indicating it needs to be emptied. Either vent it directly, or attach it to a pipe network via a Kit (Tank Connector) and a Wrench.","name":"Portable Air Scrubber"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Atmospherics"},"slots":[{"name":"Battery","typ":"Battery"},{"name":"Gas Filter","typ":"GasFilter"},{"name":"Gas Filter","typ":"GasFilter"}]},"DynamicSkeleton":{"prefab":{"prefab_name":"DynamicSkeleton","prefab_hash":106953348,"desc":"","name":"Skeleton"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Default"}},"ElectronicPrinterMod":{"prefab":{"prefab_name":"ElectronicPrinterMod","prefab_hash":-311170652,"desc":"Apply to an Electronics Printer with a Welding Torch or Arc Welder to upgrade for increased processing speed and more recipe options.","name":"Electronic Printer Mod"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Default"}},"ElevatorCarrage":{"prefab":{"prefab_name":"ElevatorCarrage","prefab_hash":-110788403,"desc":"","name":"Elevator"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Default"}},"EntityChick":{"prefab":{"prefab_name":"EntityChick","prefab_hash":1730165908,"desc":"Once a chick is hatched, it gets hungry. It will eat soybeans, corn, and wheat, and lay eggs. Some will be fertilized, producing further chickens. Some will not.","name":"Entity Chick"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Default"},"slots":[{"name":"Brain","typ":"Organ"}]},"EntityChickenBrown":{"prefab":{"prefab_name":"EntityChickenBrown","prefab_hash":334097180,"desc":"Like so many of its brethren, this is a chicken. A brown one. It will eat soybeans, corn, and wheat, and lay eggs. Some will be fertilized, producing further chickens. Some will not.","name":"Entity Chicken Brown"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Default"},"slots":[{"name":"Brain","typ":"Organ"}]},"EntityChickenWhite":{"prefab":{"prefab_name":"EntityChickenWhite","prefab_hash":1010807532,"desc":"It's a chicken, as white as moondust. It will eat soybeans, corn, and wheat, and lay eggs. Some will be fertilized, producing further chickens. Some will not.","name":"Entity Chicken White"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Default"},"slots":[{"name":"Brain","typ":"Organ"}]},"EntityRoosterBlack":{"prefab":{"prefab_name":"EntityRoosterBlack","prefab_hash":966959649,"desc":"This is a rooster. It is black. There is dignity in this.","name":"Entity Rooster Black"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Default"},"slots":[{"name":"Brain","typ":"Organ"}]},"EntityRoosterBrown":{"prefab":{"prefab_name":"EntityRoosterBrown","prefab_hash":-583103395,"desc":"The common brown rooster. Don't let it hear you say that.","name":"Entity Rooster Brown"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Default"},"slots":[{"name":"Brain","typ":"Organ"}]},"Fertilizer":{"prefab":{"prefab_name":"Fertilizer","prefab_hash":1517856652,"desc":"Fertilizer alters plant growth processes, and is created by the basic composter and the Advanced Composter using organic matter.\nFertilizer's affects depend on its ingredients:\n\n- Food increases PLANT YIELD up to two times\n- Decayed Food increases plant GROWTH SPEED up to two times\n- Biomass increases the NUMBER OF GROWTH CYCLES the fertilizer lasts for\n\nThe effect of these ingredients depends on their respective proportions in the composter when processing is activated. ","name":"Fertilizer"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"Plant","sorting_class":"Default"}},"FireArmSMG":{"prefab":{"prefab_name":"FireArmSMG","prefab_hash":-86315541,"desc":"0.Single\n1.Auto","name":"Fire Arm SMG"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Tools"},"slots":[{"name":"","typ":"Magazine"}]},"Flag_ODA_10m":{"prefab":{"prefab_name":"Flag_ODA_10m","prefab_hash":1845441951,"desc":"","name":"Flag (ODA 10m)"},"structure":{"small_grid":true}},"Flag_ODA_4m":{"prefab":{"prefab_name":"Flag_ODA_4m","prefab_hash":1159126354,"desc":"","name":"Flag (ODA 4m)"},"structure":{"small_grid":true}},"Flag_ODA_6m":{"prefab":{"prefab_name":"Flag_ODA_6m","prefab_hash":1998634960,"desc":"","name":"Flag (ODA 6m)"},"structure":{"small_grid":true}},"Flag_ODA_8m":{"prefab":{"prefab_name":"Flag_ODA_8m","prefab_hash":-375156130,"desc":"","name":"Flag (ODA 8m)"},"structure":{"small_grid":true}},"FlareGun":{"prefab":{"prefab_name":"FlareGun","prefab_hash":118685786,"desc":"","name":"Flare Gun"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Tool","sorting_class":"Tools"},"slots":[{"name":"Magazine","typ":"Flare"},{"name":"","typ":"Blocked"}]},"H2Combustor":{"prefab":{"prefab_name":"H2Combustor","prefab_hash":1840108251,"desc":"Adapted slightly from its original Recurso design, the Volatiles Combustor does exactly what its name suggests - it burns a mixture of volatiles and Oxygen to create water. Extremely useful in hot or arid environments, users need to be aware that the combustor outputs considerable waste heat. The device is also less than perfectly efficient, resulting in the autoignition of volatiles in the chamber, and the production of waste gases which must be dealt with.","name":"H2 Combustor"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{}},"logic_types":{"Power":"Read","Open":"ReadWrite","Mode":"ReadWrite","Error":"Read","Pressure":"Read","Temperature":"Read","Activate":"ReadWrite","Lock":"ReadWrite","Setting":"ReadWrite","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","TotalMoles":"Read","RatioNitrousOxide":"Read","PrefabHash":"Read","Combustion":"Read","PressureInput":"Read","TemperatureInput":"Read","RatioOxygenInput":"Read","RatioCarbonDioxideInput":"Read","RatioNitrogenInput":"Read","RatioPollutantInput":"Read","RatioVolatilesInput":"Read","RatioWaterInput":"Read","RatioNitrousOxideInput":"Read","TotalMolesInput":"Read","PressureOutput":"Read","TemperatureOutput":"Read","RatioOxygenOutput":"Read","RatioCarbonDioxideOutput":"Read","RatioNitrogenOutput":"Read","RatioPollutantOutput":"Read","RatioVolatilesOutput":"Read","RatioWaterOutput":"Read","RatioNitrousOxideOutput":"Read","TotalMolesOutput":"Read","CombustionInput":"Read","CombustionOutput":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrogenInput":"Read","RatioLiquidNitrogenOutput":"Read","RatioLiquidOxygen":"Read","RatioLiquidOxygenInput":"Read","RatioLiquidOxygenOutput":"Read","RatioLiquidVolatiles":"Read","RatioLiquidVolatilesInput":"Read","RatioLiquidVolatilesOutput":"Read","RatioSteam":"Read","RatioSteamInput":"Read","RatioSteamOutput":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidCarbonDioxideInput":"Read","RatioLiquidCarbonDioxideOutput":"Read","RatioLiquidPollutant":"Read","RatioLiquidPollutantInput":"Read","RatioLiquidPollutantOutput":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidNitrousOxideInput":"Read","RatioLiquidNitrousOxideOutput":"Read","ReferenceId":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read","NameHash":"Read"},"modes":{"0":"Idle","1":"Active"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":true},"slots":[{"name":"Programmable Chip","typ":"ProgrammableChip"}],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Pipe","role":"Input"},{"typ":"Pipe","role":"Output"},{"typ":"Power","role":"None"}],"device_pins_length":2,"has_activate_state":true,"has_atmosphere":true,"has_color_state":false,"has_lock_state":true,"has_mode_state":true,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"Handgun":{"prefab":{"prefab_name":"Handgun","prefab_hash":247238062,"desc":"","name":"Handgun"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Tools"},"slots":[{"name":"Magazine","typ":"Magazine"}]},"HandgunMagazine":{"prefab":{"prefab_name":"HandgunMagazine","prefab_hash":1254383185,"desc":"","name":"Handgun Magazine"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Magazine","sorting_class":"Default"}},"HumanSkull":{"prefab":{"prefab_name":"HumanSkull","prefab_hash":-857713709,"desc":"","name":"Human Skull"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Default"}},"ImGuiCircuitboardAirlockControl":{"prefab":{"prefab_name":"ImGuiCircuitboardAirlockControl","prefab_hash":-73796547,"desc":"","name":"Airlock (Experimental)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Circuitboard","sorting_class":"Default"}},"ItemActiveVent":{"prefab":{"prefab_name":"ItemActiveVent","prefab_hash":-842048328,"desc":"When constructed, this kit places an Active Vent on any support structure.","name":"Kit (Active Vent)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemAdhesiveInsulation":{"prefab":{"prefab_name":"ItemAdhesiveInsulation","prefab_hash":1871048978,"desc":"","name":"Adhesive Insulation"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":20,"reagents":null,"slot_class":"Tool","sorting_class":"Tools"}},"ItemAdvancedTablet":{"prefab":{"prefab_name":"ItemAdvancedTablet","prefab_hash":1722785341,"desc":"The advanced Xigo Padi 2 tablet is an improved version of the basic Handheld Tablet, boasting two cartridge slots. The Padi 2 accepts Atmos Analyzer, Tracker, Medical Analyzer, Ore Scanner, eReader, and various other cartridges.\n\t \n\t With a Integrated Circuit (IC10) in the Programmable Chip, you can access variable slots on the carrying human using the device numbers (d0, d1, etc...), so long as the item can be access via logic, such as the Hardsuit.Connects to Logic Transmitter","name":"Advanced Tablet"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Tool","sorting_class":"Tools"},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"2":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"3":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Mode":"ReadWrite","Error":"Read","On":"ReadWrite","Volume":"ReadWrite","SoundAlert":"ReadWrite","ReferenceId":"Read"},"modes":{"0":"Mode0","1":"Mode1"},"transmission_receiver":false,"wireless_logic":true,"circuit_holder":true},"slots":[{"name":"Battery","typ":"Battery"},{"name":"Cartridge","typ":"Cartridge"},{"name":"Cartridge1","typ":"Cartridge"},{"name":"Programmable Chip","typ":"ProgrammableChip"}]},"ItemAlienMushroom":{"prefab":{"prefab_name":"ItemAlienMushroom","prefab_hash":176446172,"desc":"","name":"Alien Mushroom"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"Plant","sorting_class":"Default"}},"ItemAmmoBox":{"prefab":{"prefab_name":"ItemAmmoBox","prefab_hash":-9559091,"desc":"","name":"Ammo Box"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Default"}},"ItemAngleGrinder":{"prefab":{"prefab_name":"ItemAngleGrinder","prefab_hash":201215010,"desc":"Angles-be-gone with the trusty angle grinder.","name":"Angle Grinder"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Tool","sorting_class":"Tools"},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Activate":"ReadWrite","ReferenceId":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"ItemArcWelder":{"prefab":{"prefab_name":"ItemArcWelder","prefab_hash":1385062886,"desc":"","name":"Arc Welder"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Tool","sorting_class":"Tools"},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Activate":"ReadWrite","ReferenceId":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"ItemAreaPowerControl":{"prefab":{"prefab_name":"ItemAreaPowerControl","prefab_hash":1757673317,"desc":"This kit places a Area Power Control (APC) on any support structure. The APC kit has two options, selecting which direction you would like the APC power to flow.","name":"Kit (Power Controller)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemAstroloyIngot":{"prefab":{"prefab_name":"ItemAstroloyIngot","prefab_hash":412924554,"desc":"Due to the original Stationeer manual collapsing into a singularity, Astroloy recipes have been warped by spacetime contortions. The correct Astroloy recipe, as memorialized for all time in a series of charming plastic icons, is 1.0 Copper, 1.0 Cobalt, and 2.0 Steel.","name":"Ingot (Astroloy)"},"item":{"consumable":true,"filter_type":null,"ingredient":true,"max_quantity":500,"reagents":{"Astroloy":1.0},"slot_class":"Ingot","sorting_class":"Resources"}},"ItemAstroloySheets":{"prefab":{"prefab_name":"ItemAstroloySheets","prefab_hash":-1662476145,"desc":"","name":"Astroloy Sheets"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":50,"reagents":null,"slot_class":"None","sorting_class":"Resources"}},"ItemAuthoringTool":{"prefab":{"prefab_name":"ItemAuthoringTool","prefab_hash":789015045,"desc":"","name":"Authoring Tool"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Tool","sorting_class":"Tools"}},"ItemAuthoringToolRocketNetwork":{"prefab":{"prefab_name":"ItemAuthoringToolRocketNetwork","prefab_hash":-1731627004,"desc":"","name":""},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Tool","sorting_class":"Tools"}},"ItemBasketBall":{"prefab":{"prefab_name":"ItemBasketBall","prefab_hash":-1262580790,"desc":"","name":"Basket Ball"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Default"}},"ItemBatteryCell":{"prefab":{"prefab_name":"ItemBatteryCell","prefab_hash":700133157,"desc":"Harnessing a design pioneered in the early 21st century, the small battery cell is the Stationeer's basic unit of portable electrical power. While it lacks the charge of a Battery Cell (Large) or Battery Cell (Nuclear), it has the humble advantage of being fabricated from basic resources.\n\nPOWER OUTPUT\nThe small cell stores up to 36000 watts of power.","name":"Battery Cell (Small)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Battery","sorting_class":"Default"},"logic":{"logic_slot_types":{},"logic_types":{"Mode":"ReadWrite","ReferenceId":"Read"},"modes":{"0":"Empty","1":"Critical","2":"VeryLow","3":"Low","4":"Medium","5":"High","6":"Full"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[]},"ItemBatteryCellLarge":{"prefab":{"prefab_name":"ItemBatteryCellLarge","prefab_hash":-459827268,"desc":"First mass-produced by Xigo in 2155 on the basis of a unattributed prototype, the classic silicon anode solid-state design extends its optimum temperature range.\n\nPOWER OUTPUT\nThe large power cell can discharge 288kW of power. \n","name":"Battery Cell (Large)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Battery","sorting_class":"Default"},"logic":{"logic_slot_types":{},"logic_types":{"Mode":"ReadWrite","ReferenceId":"Read"},"modes":{"0":"Empty","1":"Critical","2":"VeryLow","3":"Low","4":"Medium","5":"High","6":"Full"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[]},"ItemBatteryCellNuclear":{"prefab":{"prefab_name":"ItemBatteryCellNuclear","prefab_hash":544617306,"desc":"Illegal on Earth since the Chengdu Event, Norsec nuclear power cells found a new and drastically less safety-conscious market offworld.\n\nPOWER OUTPUT\nPushing the power-weight balance to its limits, the 'nuke' has a 2.3 megawatt charge (2304000W), reflecting its reliance on exotic superalloys.","name":"Battery Cell (Nuclear)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Battery","sorting_class":"Default"},"logic":{"logic_slot_types":{},"logic_types":{"Mode":"ReadWrite","ReferenceId":"Read"},"modes":{"0":"Empty","1":"Critical","2":"VeryLow","3":"Low","4":"Medium","5":"High","6":"Full"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[]},"ItemBatteryCharger":{"prefab":{"prefab_name":"ItemBatteryCharger","prefab_hash":-1866880307,"desc":"This kit produces a 5-slot Kit (Battery Charger).","name":"Kit (Battery Charger)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemBatteryChargerSmall":{"prefab":{"prefab_name":"ItemBatteryChargerSmall","prefab_hash":1008295833,"desc":"","name":"Battery Charger Small"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Default"}},"ItemBeacon":{"prefab":{"prefab_name":"ItemBeacon","prefab_hash":-869869491,"desc":"","name":"Tracking Beacon"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Tools"},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Error":"Read","On":"ReadWrite","ReferenceId":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"ItemBiomass":{"prefab":{"prefab_name":"ItemBiomass","prefab_hash":-831480639,"desc":"Diced organic material that is returned when food and organic matter is passed through the Recycler and Centrifuge. Can be burned in a Furnace into Charcoal for use in the Generator (Solid Fuel).","name":"Biomass"},"item":{"consumable":false,"filter_type":null,"ingredient":true,"max_quantity":100,"reagents":{"Biomass":1.0},"slot_class":"Ore","sorting_class":"Resources"}},"ItemBreadLoaf":{"prefab":{"prefab_name":"ItemBreadLoaf","prefab_hash":893514943,"desc":"","name":"Bread Loaf"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Food"}},"ItemCableAnalyser":{"prefab":{"prefab_name":"ItemCableAnalyser","prefab_hash":-1792787349,"desc":"","name":"Kit (Cable Analyzer)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemCableCoil":{"prefab":{"prefab_name":"ItemCableCoil","prefab_hash":-466050668,"desc":"Bodily metaphors are tired and anthropocentric, but it was Frida Stuppen, the first ODA Administrator, who said, 'Let the cabling be as the nerve and the vessel, transmitting power and data alike through systems we forge among the stars.' Later commentators suggested that she was simply putting a romantic gloss on a piece of dubious economy. Whatever the case, standard cabling is where any Stationeer's network begins. \nNormal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy).","name":"Cable Coil"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":50,"reagents":null,"slot_class":"Tool","sorting_class":"Resources"}},"ItemCableCoilHeavy":{"prefab":{"prefab_name":"ItemCableCoilHeavy","prefab_hash":2060134443,"desc":"Use heavy cable coil for power systems with large draws. Unlike , which can only safely conduct 5kW, heavy cables can transmit up to 100kW.","name":"Cable Coil (Heavy)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":50,"reagents":null,"slot_class":"Tool","sorting_class":"Resources"}},"ItemCableFuse":{"prefab":{"prefab_name":"ItemCableFuse","prefab_hash":195442047,"desc":"","name":"Kit (Cable Fuses)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Resources"}},"ItemCannedCondensedMilk":{"prefab":{"prefab_name":"ItemCannedCondensedMilk","prefab_hash":-2104175091,"desc":"Made in an Advanced Packaging Machine or Basic Packaging Machine, using Condensed Milk and an Empty Can, canned condensed milk is fairly high in nutrition, and does not decay.","name":"Canned Condensed Milk"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Food"}},"ItemCannedEdamame":{"prefab":{"prefab_name":"ItemCannedEdamame","prefab_hash":-999714082,"desc":"Made in an Advanced Packaging Machine or Basic Packaging Machine, using Cooked Soybean and an Empty Can, canned edamame beans are fairly high in nutrition, and do not decay.","name":"Canned Edamame"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Food"}},"ItemCannedMushroom":{"prefab":{"prefab_name":"ItemCannedMushroom","prefab_hash":-1344601965,"desc":"Made in an Advanced Packaging Machine or Basic Packaging Machine, using Cooked Mushroom and a Empty Can, delicious mushroom soup is fairly high in nutrition, and does not decay.","name":"Canned Mushroom"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Food"}},"ItemCannedPowderedEggs":{"prefab":{"prefab_name":"ItemCannedPowderedEggs","prefab_hash":1161510063,"desc":"Made in an Advanced Packaging Machine or Basic Packaging Machine, using Powdered Eggs and an Empty Can, canned powdered eggs are an exciting, dynamic food that's fairly high in nutrition, and does not decay.","name":"Canned Powdered Eggs"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Food"}},"ItemCannedRicePudding":{"prefab":{"prefab_name":"ItemCannedRicePudding","prefab_hash":-1185552595,"desc":"Made in an Advanced Packaging Machine or Basic Packaging Machine, using Cooked Rice and an Empty Can, canned rice pudding is a sweet treat, fairly high in nutrition, and does not decay.","name":"Canned Rice Pudding"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Food"}},"ItemCerealBar":{"prefab":{"prefab_name":"ItemCerealBar","prefab_hash":791746840,"desc":"Sustains, without decay. If only all our relationships were so well balanced.","name":"Cereal Bar"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Food"}},"ItemCharcoal":{"prefab":{"prefab_name":"ItemCharcoal","prefab_hash":252561409,"desc":"Charcoal is a lightweight, black carbon residue produced by heating Biomass in a Arc Furnace. It contains less energy potential than Ore (Coal), but can be used as a basic fuel source. Charcoal can also be substituted for coal in alloy recipes.","name":"Charcoal"},"item":{"consumable":false,"filter_type":null,"ingredient":true,"max_quantity":200,"reagents":{"Carbon":1.0},"slot_class":"Ore","sorting_class":"Ores"}},"ItemChemLightBlue":{"prefab":{"prefab_name":"ItemChemLightBlue","prefab_hash":-772542081,"desc":"A safe and slightly rave-some source of blue light. Snap to activate.","name":"Chem Light (Blue)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Default"}},"ItemChemLightGreen":{"prefab":{"prefab_name":"ItemChemLightGreen","prefab_hash":-597479390,"desc":"Enliven the dreariest, airless rock with this glowy green light. Snap to activate.","name":"Chem Light (Green)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Default"}},"ItemChemLightRed":{"prefab":{"prefab_name":"ItemChemLightRed","prefab_hash":-525810132,"desc":"A red glowstick. Snap to activate. Then reach for the lasers.","name":"Chem Light (Red)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Default"}},"ItemChemLightWhite":{"prefab":{"prefab_name":"ItemChemLightWhite","prefab_hash":1312166823,"desc":"Snap the glowstick to activate a pale radiance that keeps the darkness at bay.","name":"Chem Light (White)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Default"}},"ItemChemLightYellow":{"prefab":{"prefab_name":"ItemChemLightYellow","prefab_hash":1224819963,"desc":"Dispel the darkness with this yellow glowstick.","name":"Chem Light (Yellow)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Default"}},"ItemChocolateBar":{"prefab":{"prefab_name":"ItemChocolateBar","prefab_hash":234601764,"desc":"","name":"Chocolate Bar"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Food"}},"ItemChocolateCake":{"prefab":{"prefab_name":"ItemChocolateCake","prefab_hash":-261575861,"desc":"","name":"Chocolate Cake"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Food"}},"ItemChocolateCerealBar":{"prefab":{"prefab_name":"ItemChocolateCerealBar","prefab_hash":860793245,"desc":"","name":"Chocolate Cereal Bar"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Food"}},"ItemCoalOre":{"prefab":{"prefab_name":"ItemCoalOre","prefab_hash":1724793494,"desc":"Humanity wouldn't have got to space without humble, combustible coal. Burn it in a , smelt it in the Furnace to create alloys, or use it in the Reagent Processor to make Spray Paint (Black).","name":"Ore (Coal)"},"item":{"consumable":false,"filter_type":null,"ingredient":true,"max_quantity":50,"reagents":{"Hydrocarbon":1.0},"slot_class":"Ore","sorting_class":"Ores"}},"ItemCobaltOre":{"prefab":{"prefab_name":"ItemCobaltOre","prefab_hash":-983091249,"desc":"Cobalt is a chemical element with the symbol \"Co\" and is typically found in only small deposits. Cobalt is a rare substance, but used create the Heal Pill and several alloys.","name":"Ore (Cobalt)"},"item":{"consumable":false,"filter_type":null,"ingredient":true,"max_quantity":50,"reagents":{"Cobalt":1.0},"slot_class":"Ore","sorting_class":"Ores"}},"ItemCocoaPowder":{"prefab":{"prefab_name":"ItemCocoaPowder","prefab_hash":457286516,"desc":"","name":"Cocoa Powder"},"item":{"consumable":true,"filter_type":null,"ingredient":true,"max_quantity":20,"reagents":{"Cocoa":1.0},"slot_class":"None","sorting_class":"Resources"}},"ItemCocoaTree":{"prefab":{"prefab_name":"ItemCocoaTree","prefab_hash":680051921,"desc":"","name":"Cocoa"},"item":{"consumable":false,"filter_type":null,"ingredient":true,"max_quantity":20,"reagents":{"Cocoa":1.0},"slot_class":"Plant","sorting_class":"Resources"}},"ItemCoffeeMug":{"prefab":{"prefab_name":"ItemCoffeeMug","prefab_hash":1800622698,"desc":"","name":"Coffee Mug"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Default"}},"ItemConstantanIngot":{"prefab":{"prefab_name":"ItemConstantanIngot","prefab_hash":1058547521,"desc":"","name":"Ingot (Constantan)"},"item":{"consumable":true,"filter_type":null,"ingredient":true,"max_quantity":500,"reagents":{"Constantan":1.0},"slot_class":"Ingot","sorting_class":"Resources"}},"ItemCookedCondensedMilk":{"prefab":{"prefab_name":"ItemCookedCondensedMilk","prefab_hash":1715917521,"desc":"A high-nutrient cooked food, which can be canned.","name":"Condensed Milk"},"item":{"consumable":false,"filter_type":null,"ingredient":true,"max_quantity":10,"reagents":{"Milk":100.0},"slot_class":"None","sorting_class":"Food"}},"ItemCookedCorn":{"prefab":{"prefab_name":"ItemCookedCorn","prefab_hash":1344773148,"desc":"A high-nutrient cooked food, which can be canned.","name":"Cooked Corn"},"item":{"consumable":false,"filter_type":null,"ingredient":true,"max_quantity":10,"reagents":{"Corn":1.0},"slot_class":"None","sorting_class":"Food"}},"ItemCookedMushroom":{"prefab":{"prefab_name":"ItemCookedMushroom","prefab_hash":-1076892658,"desc":"A high-nutrient cooked food, which can be canned.","name":"Cooked Mushroom"},"item":{"consumable":false,"filter_type":null,"ingredient":true,"max_quantity":10,"reagents":{"Mushroom":1.0},"slot_class":"None","sorting_class":"Food"}},"ItemCookedPowderedEggs":{"prefab":{"prefab_name":"ItemCookedPowderedEggs","prefab_hash":-1712264413,"desc":"A high-nutrient cooked food, which can be canned.","name":"Powdered Eggs"},"item":{"consumable":false,"filter_type":null,"ingredient":true,"max_quantity":10,"reagents":{"Egg":1.0},"slot_class":"None","sorting_class":"Food"}},"ItemCookedPumpkin":{"prefab":{"prefab_name":"ItemCookedPumpkin","prefab_hash":1849281546,"desc":"A high-nutrient cooked food, which can be canned.","name":"Cooked Pumpkin"},"item":{"consumable":false,"filter_type":null,"ingredient":true,"max_quantity":10,"reagents":{"Pumpkin":1.0},"slot_class":"None","sorting_class":"Food"}},"ItemCookedRice":{"prefab":{"prefab_name":"ItemCookedRice","prefab_hash":2013539020,"desc":"A high-nutrient cooked food, which can be canned.","name":"Cooked Rice"},"item":{"consumable":false,"filter_type":null,"ingredient":true,"max_quantity":10,"reagents":{"Rice":1.0},"slot_class":"None","sorting_class":"Food"}},"ItemCookedSoybean":{"prefab":{"prefab_name":"ItemCookedSoybean","prefab_hash":1353449022,"desc":"A high-nutrient cooked food, which can be canned.","name":"Cooked Soybean"},"item":{"consumable":false,"filter_type":null,"ingredient":true,"max_quantity":10,"reagents":{"Soy":5.0},"slot_class":"None","sorting_class":"Food"}},"ItemCookedTomato":{"prefab":{"prefab_name":"ItemCookedTomato","prefab_hash":-709086714,"desc":"A high-nutrient cooked food, which can be canned.","name":"Cooked Tomato"},"item":{"consumable":false,"filter_type":null,"ingredient":true,"max_quantity":10,"reagents":{"Tomato":1.0},"slot_class":"None","sorting_class":"Food"}},"ItemCopperIngot":{"prefab":{"prefab_name":"ItemCopperIngot","prefab_hash":-404336834,"desc":"Copper ingots are created by smelting Ore (Copper) in the Furnace and Arc Furnace, and used to create a variety of items.","name":"Ingot (Copper)"},"item":{"consumable":true,"filter_type":null,"ingredient":true,"max_quantity":500,"reagents":{"Copper":1.0},"slot_class":"Ingot","sorting_class":"Resources"}},"ItemCopperOre":{"prefab":{"prefab_name":"ItemCopperOre","prefab_hash":-707307845,"desc":"Copper is a chemical element with the symbol \"Cu\". This common and highly conductive material is found on most astronomical bodies and is used in a variety of manufacturing processes including electronic components, alloys, and wires.","name":"Ore (Copper)"},"item":{"consumable":false,"filter_type":null,"ingredient":true,"max_quantity":50,"reagents":{"Copper":1.0},"slot_class":"Ore","sorting_class":"Ores"}},"ItemCorn":{"prefab":{"prefab_name":"ItemCorn","prefab_hash":258339687,"desc":"A long growth time staple crop. Its low requirement for darkness allows for accelerated growing if provided with extra light.","name":"Corn"},"item":{"consumable":false,"filter_type":null,"ingredient":true,"max_quantity":20,"reagents":{"Corn":1.0},"slot_class":"Plant","sorting_class":"Resources"}},"ItemCornSoup":{"prefab":{"prefab_name":"ItemCornSoup","prefab_hash":545034114,"desc":"Made using Cooked Corn and an Empty Can in a Basic Packaging Machine or Advanced Packaging Machine. Faily high in nutrition, canned food does not decay.","name":"Corn Soup"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Food"}},"ItemCreditCard":{"prefab":{"prefab_name":"ItemCreditCard","prefab_hash":-1756772618,"desc":"","name":"Credit Card"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":100000,"reagents":null,"slot_class":"CreditCard","sorting_class":"Tools"}},"ItemCropHay":{"prefab":{"prefab_name":"ItemCropHay","prefab_hash":215486157,"desc":"","name":"Hay"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":100,"reagents":null,"slot_class":"None","sorting_class":"Default"}},"ItemCrowbar":{"prefab":{"prefab_name":"ItemCrowbar","prefab_hash":856108234,"desc":"Recurso's entry-level crowbar is useful in a variety of everyday Stationeer settings, from opening Area Power Controls and unpowered Airlocks, to splatting pan-dimensional headcrabs, should the need arise.","name":"Crowbar"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Tool","sorting_class":"Tools"}},"ItemDataDisk":{"prefab":{"prefab_name":"ItemDataDisk","prefab_hash":1005843700,"desc":"","name":"Data Disk"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"DataDisk","sorting_class":"Default"}},"ItemDirtCanister":{"prefab":{"prefab_name":"ItemDirtCanister","prefab_hash":902565329,"desc":"A container the will fill with Dirt when using a Mining Drill when placed inside a Mining Belt. You can then use this Dirt Canister with the Terrain Manipulator to adjust the terrain to suit your needs.","name":"Dirt Canister"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Ore","sorting_class":"Default"}},"ItemDirtyOre":{"prefab":{"prefab_name":"ItemDirtyOre","prefab_hash":-1234745580,"desc":"Ore mined from bedrock via the Deep Miner which then can be used in the Centrifuge, or Combustion Centrifuge. Once processed, it produces ore in a ratio similar to the average found on the planet's surface. ","name":"Dirty Ore"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":50,"reagents":null,"slot_class":"None","sorting_class":"Ores"}},"ItemDisposableBatteryCharger":{"prefab":{"prefab_name":"ItemDisposableBatteryCharger","prefab_hash":-2124435700,"desc":"Consumable battery the recharges your suit battery. If used on a HEM-Droid it will recharge the HEM-Droids internal battery.","name":"Disposable Battery Charger"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Default"}},"ItemDrill":{"prefab":{"prefab_name":"ItemDrill","prefab_hash":2009673399,"desc":"The ExMin Off-whirled Hand Drill has been a companion to Stationeers for decades. Essential for assembling and deconstructing various items and structures, regardless of gravity, pressure or temperature.","name":"Hand Drill"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Tool","sorting_class":"Tools"},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Activate":"ReadWrite","ReferenceId":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"ItemDuctTape":{"prefab":{"prefab_name":"ItemDuctTape","prefab_hash":-1943134693,"desc":"In the distant past, one of Earth's great champions taught a generation of 'Fix-It People' that duct tape was the answer to any problem. Stationeers have demonstrated that this is truth holds strong, so long as the problem is a damaged Eva Suit, Jetpack Basic, Space Helmet, or even a Solar Panel.\nTo use on yourself: put duct tape in your active hand, hold RIGHT MOUSE BUTTON to automatically repair damage.","name":"Duct Tape"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Tool","sorting_class":"Tools"}},"ItemDynamicAirCon":{"prefab":{"prefab_name":"ItemDynamicAirCon","prefab_hash":1072914031,"desc":"","name":"Kit (Portable Air Conditioner)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemDynamicScrubber":{"prefab":{"prefab_name":"ItemDynamicScrubber","prefab_hash":-971920158,"desc":"","name":"Kit (Portable Scrubber)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemEggCarton":{"prefab":{"prefab_name":"ItemEggCarton","prefab_hash":-524289310,"desc":"Within, eggs reside in mysterious, marmoreal silence.","name":"Egg Carton"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Storage"},"slots":[{"name":"","typ":"Egg"},{"name":"","typ":"Egg"},{"name":"","typ":"Egg"},{"name":"","typ":"Egg"},{"name":"","typ":"Egg"},{"name":"","typ":"Egg"}]},"ItemElectronicParts":{"prefab":{"prefab_name":"ItemElectronicParts","prefab_hash":731250882,"desc":"","name":"Electronic Parts"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":20,"reagents":null,"slot_class":"None","sorting_class":"Resources"}},"ItemElectrumIngot":{"prefab":{"prefab_name":"ItemElectrumIngot","prefab_hash":502280180,"desc":"","name":"Ingot (Electrum)"},"item":{"consumable":true,"filter_type":null,"ingredient":true,"max_quantity":500,"reagents":{"Electrum":1.0},"slot_class":"Ingot","sorting_class":"Resources"}},"ItemEmergencyAngleGrinder":{"prefab":{"prefab_name":"ItemEmergencyAngleGrinder","prefab_hash":-351438780,"desc":"","name":"Emergency Angle Grinder"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Tool","sorting_class":"Tools"},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Activate":"ReadWrite","ReferenceId":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"ItemEmergencyArcWelder":{"prefab":{"prefab_name":"ItemEmergencyArcWelder","prefab_hash":-1056029600,"desc":"","name":"Emergency Arc Welder"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Tool","sorting_class":"Tools"},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Activate":"ReadWrite","ReferenceId":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"ItemEmergencyCrowbar":{"prefab":{"prefab_name":"ItemEmergencyCrowbar","prefab_hash":976699731,"desc":"","name":"Emergency Crowbar"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Tool","sorting_class":"Tools"}},"ItemEmergencyDrill":{"prefab":{"prefab_name":"ItemEmergencyDrill","prefab_hash":-2052458905,"desc":"","name":"Emergency Drill"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Tool","sorting_class":"Tools"},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Activate":"ReadWrite","ReferenceId":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"ItemEmergencyEvaSuit":{"prefab":{"prefab_name":"ItemEmergencyEvaSuit","prefab_hash":1791306431,"desc":"","name":"Emergency Eva Suit"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Suit","sorting_class":"Clothing"},"slots":[{"name":"Air Tank","typ":"GasCanister"},{"name":"Waste Tank","typ":"GasCanister"},{"name":"Life Support","typ":"Battery"},{"name":"Filter","typ":"GasFilter"},{"name":"Filter","typ":"GasFilter"},{"name":"Filter","typ":"GasFilter"}]},"ItemEmergencyPickaxe":{"prefab":{"prefab_name":"ItemEmergencyPickaxe","prefab_hash":-1061510408,"desc":"","name":"Emergency Pickaxe"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Tool","sorting_class":"Tools"}},"ItemEmergencyScrewdriver":{"prefab":{"prefab_name":"ItemEmergencyScrewdriver","prefab_hash":266099983,"desc":"","name":"Emergency Screwdriver"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Tool","sorting_class":"Tools"}},"ItemEmergencySpaceHelmet":{"prefab":{"prefab_name":"ItemEmergencySpaceHelmet","prefab_hash":205916793,"desc":"","name":"Emergency Space Helmet"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Helmet","sorting_class":"Clothing"},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Open":"ReadWrite","Pressure":"Read","Temperature":"Read","Lock":"ReadWrite","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","On":"ReadWrite","TotalMoles":"Read","Volume":"ReadWrite","RatioNitrousOxide":"Read","Combustion":"Read","Flush":"Write","SoundAlert":"ReadWrite","RatioLiquidNitrogen":"Read","RatioLiquidOxygen":"Read","RatioLiquidVolatiles":"Read","RatioSteam":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidPollutant":"Read","RatioLiquidNitrousOxide":"Read","ReferenceId":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[]},"ItemEmergencyToolBelt":{"prefab":{"prefab_name":"ItemEmergencyToolBelt","prefab_hash":1661941301,"desc":"","name":"Emergency Tool Belt"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Belt","sorting_class":"Clothing"},"slots":[{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"}]},"ItemEmergencyWireCutters":{"prefab":{"prefab_name":"ItemEmergencyWireCutters","prefab_hash":2102803952,"desc":"","name":"Emergency Wire Cutters"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Tool","sorting_class":"Tools"}},"ItemEmergencyWrench":{"prefab":{"prefab_name":"ItemEmergencyWrench","prefab_hash":162553030,"desc":"","name":"Emergency Wrench"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Tool","sorting_class":"Tools"}},"ItemEmptyCan":{"prefab":{"prefab_name":"ItemEmptyCan","prefab_hash":1013818348,"desc":"Used for making soups when combined with food in the Basic Packaging Machine or Advanced Packaging Machine. Fairly high in nutrition, canned food does not decay.","name":"Empty Can"},"item":{"consumable":false,"filter_type":null,"ingredient":true,"max_quantity":10,"reagents":{"Steel":1.0},"slot_class":"None","sorting_class":"Default"}},"ItemEvaSuit":{"prefab":{"prefab_name":"ItemEvaSuit","prefab_hash":1677018918,"desc":"The EVA suit is the basic suit Stationeers need to survive in the inhospitable environment of space. For more information on EVA suits, consult the EVA suit guide.","name":"Eva Suit"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Suit","sorting_class":"Clothing"},"slots":[{"name":"Air Tank","typ":"GasCanister"},{"name":"Waste Tank","typ":"GasCanister"},{"name":"Life Support","typ":"Battery"},{"name":"Filter","typ":"GasFilter"},{"name":"Filter","typ":"GasFilter"},{"name":"Filter","typ":"GasFilter"}]},"ItemExplosive":{"prefab":{"prefab_name":"ItemExplosive","prefab_hash":235361649,"desc":"","name":"Remote Explosive"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Default"}},"ItemFern":{"prefab":{"prefab_name":"ItemFern","prefab_hash":892110467,"desc":"There was a time, when Stationeers had to make Fenoxitone Powder using the Reagent Processor. Recent advances in technology allow you to use equivalent quantities of fern directly in recipes.","name":"Fern"},"item":{"consumable":false,"filter_type":null,"ingredient":true,"max_quantity":100,"reagents":{"Fenoxitone":1.0},"slot_class":"Plant","sorting_class":"Resources"}},"ItemFertilizedEgg":{"prefab":{"prefab_name":"ItemFertilizedEgg","prefab_hash":-383972371,"desc":"To hatch it requires an incubation temperature of between 35 and 45 degrees Celsius and will hatch into a Chick. If the egg is exposed to tepratures below 10 degrees it will no longer be viable.","name":"Egg"},"item":{"consumable":false,"filter_type":null,"ingredient":true,"max_quantity":1,"reagents":{"Egg":1.0},"slot_class":"Egg","sorting_class":"Resources"}},"ItemFilterFern":{"prefab":{"prefab_name":"ItemFilterFern","prefab_hash":266654416,"desc":"A fern adapted by Agrizeroto process a much greater volume of Carbon Dioxide into Oxygen than an average plant.","name":"Darga Fern"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"Plant","sorting_class":"Resources"}},"ItemFlagSmall":{"prefab":{"prefab_name":"ItemFlagSmall","prefab_hash":2011191088,"desc":"","name":"Kit (Small Flag)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemFlashingLight":{"prefab":{"prefab_name":"ItemFlashingLight","prefab_hash":-2107840748,"desc":"","name":"Kit (Flashing Light)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemFlashlight":{"prefab":{"prefab_name":"ItemFlashlight","prefab_hash":-838472102,"desc":"A flashlight with a narrow and wide beam options.","name":"Flashlight"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Tool","sorting_class":"Tools"},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Mode":"ReadWrite","On":"ReadWrite","ReferenceId":"Read"},"modes":{"0":"Low Power","1":"High Power"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"ItemFlour":{"prefab":{"prefab_name":"ItemFlour","prefab_hash":-665995854,"desc":"Pulverized Wheat, a key ingredient in many foods created by the Microwave and the Kit (Automated Oven).","name":"Flour"},"item":{"consumable":true,"filter_type":null,"ingredient":true,"max_quantity":500,"reagents":{"Flour":50.0},"slot_class":"None","sorting_class":"Resources"}},"ItemFlowerBlue":{"prefab":{"prefab_name":"ItemFlowerBlue","prefab_hash":-1573623434,"desc":"","name":"Flower (Blue)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":100,"reagents":null,"slot_class":"Plant","sorting_class":"Resources"}},"ItemFlowerGreen":{"prefab":{"prefab_name":"ItemFlowerGreen","prefab_hash":-1513337058,"desc":"","name":"Flower (Green)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":100,"reagents":null,"slot_class":"Plant","sorting_class":"Resources"}},"ItemFlowerOrange":{"prefab":{"prefab_name":"ItemFlowerOrange","prefab_hash":-1411986716,"desc":"","name":"Flower (Orange)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":100,"reagents":null,"slot_class":"Plant","sorting_class":"Resources"}},"ItemFlowerRed":{"prefab":{"prefab_name":"ItemFlowerRed","prefab_hash":-81376085,"desc":"","name":"Flower (Red)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":100,"reagents":null,"slot_class":"Plant","sorting_class":"Resources"}},"ItemFlowerYellow":{"prefab":{"prefab_name":"ItemFlowerYellow","prefab_hash":1712822019,"desc":"","name":"Flower (Yellow)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":100,"reagents":null,"slot_class":"Plant","sorting_class":"Resources"}},"ItemFrenchFries":{"prefab":{"prefab_name":"ItemFrenchFries","prefab_hash":-57608687,"desc":"Because space would suck without 'em.","name":"Canned French Fries"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Food"}},"ItemFries":{"prefab":{"prefab_name":"ItemFries","prefab_hash":1371786091,"desc":"","name":"French Fries"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Food"}},"ItemGasCanisterCarbonDioxide":{"prefab":{"prefab_name":"ItemGasCanisterCarbonDioxide","prefab_hash":-767685874,"desc":"","name":"Canister (CO2)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"GasCanister","sorting_class":"Atmospherics"}},"ItemGasCanisterEmpty":{"prefab":{"prefab_name":"ItemGasCanisterEmpty","prefab_hash":42280099,"desc":"","name":"Canister"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"GasCanister","sorting_class":"Atmospherics"}},"ItemGasCanisterFuel":{"prefab":{"prefab_name":"ItemGasCanisterFuel","prefab_hash":-1014695176,"desc":"","name":"Canister (Fuel)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"GasCanister","sorting_class":"Atmospherics"}},"ItemGasCanisterNitrogen":{"prefab":{"prefab_name":"ItemGasCanisterNitrogen","prefab_hash":2145068424,"desc":"","name":"Canister (Nitrogen)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"GasCanister","sorting_class":"Atmospherics"}},"ItemGasCanisterNitrousOxide":{"prefab":{"prefab_name":"ItemGasCanisterNitrousOxide","prefab_hash":-1712153401,"desc":"","name":"Gas Canister (Sleeping)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"GasCanister","sorting_class":"Atmospherics"}},"ItemGasCanisterOxygen":{"prefab":{"prefab_name":"ItemGasCanisterOxygen","prefab_hash":-1152261938,"desc":"","name":"Canister (Oxygen)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"GasCanister","sorting_class":"Atmospherics"}},"ItemGasCanisterPollutants":{"prefab":{"prefab_name":"ItemGasCanisterPollutants","prefab_hash":-1552586384,"desc":"","name":"Canister (Pollutants)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"GasCanister","sorting_class":"Atmospherics"}},"ItemGasCanisterSmart":{"prefab":{"prefab_name":"ItemGasCanisterSmart","prefab_hash":-668314371,"desc":"0.Mode0\n1.Mode1","name":"Gas Canister (Smart)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"GasCanister","sorting_class":"Atmospherics"}},"ItemGasCanisterVolatiles":{"prefab":{"prefab_name":"ItemGasCanisterVolatiles","prefab_hash":-472094806,"desc":"","name":"Canister (Volatiles)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"GasCanister","sorting_class":"Atmospherics"}},"ItemGasCanisterWater":{"prefab":{"prefab_name":"ItemGasCanisterWater","prefab_hash":-1854861891,"desc":"","name":"Liquid Canister (Water)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"LiquidCanister","sorting_class":"Atmospherics"}},"ItemGasFilterCarbonDioxide":{"prefab":{"prefab_name":"ItemGasFilterCarbonDioxide","prefab_hash":1635000764,"desc":"Given humanity's obsession with exhaling Carbon Dioxide, all Stationeers are issued two basic Sinotai Carbon Dioxide Gas Filter as part of their standard deployment kit (SDK). These filters allow passage of Carbon Dioxide into the suit's waste Canister, but are also critical components of the Portable Air Scrubber and the Filtration. The Medium Filter (Carbon Dioxide) and Heavy Filter (Carbon Dioxide) are also available.","name":"Filter (Carbon Dioxide)"},"item":{"consumable":false,"filter_type":"CarbonDioxide","ingredient":false,"max_quantity":100,"reagents":null,"slot_class":"GasFilter","sorting_class":"Resources"}},"ItemGasFilterCarbonDioxideInfinite":{"prefab":{"prefab_name":"ItemGasFilterCarbonDioxideInfinite","prefab_hash":-185568964,"desc":"A filter that selectively targets Carbon Dioxide. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle.","name":"Catalytic Filter (Carbon Dioxide)"},"item":{"consumable":false,"filter_type":"CarbonDioxide","ingredient":false,"max_quantity":100,"reagents":null,"slot_class":"GasFilter","sorting_class":"Resources"}},"ItemGasFilterCarbonDioxideL":{"prefab":{"prefab_name":"ItemGasFilterCarbonDioxideL","prefab_hash":1876847024,"desc":"","name":"Heavy Filter (Carbon Dioxide)"},"item":{"consumable":false,"filter_type":"CarbonDioxide","ingredient":false,"max_quantity":100,"reagents":null,"slot_class":"GasFilter","sorting_class":"Resources"}},"ItemGasFilterCarbonDioxideM":{"prefab":{"prefab_name":"ItemGasFilterCarbonDioxideM","prefab_hash":416897318,"desc":"","name":"Medium Filter (Carbon Dioxide)"},"item":{"consumable":false,"filter_type":"CarbonDioxide","ingredient":false,"max_quantity":100,"reagents":null,"slot_class":"GasFilter","sorting_class":"Resources"}},"ItemGasFilterNitrogen":{"prefab":{"prefab_name":"ItemGasFilterNitrogen","prefab_hash":632853248,"desc":"Filters are used to capture various gases, which can be disposed of or used elsewhere. Nitrogen is a byproduct of smelting various ores, notably Ice (Nitrice), which may be combined with Oxygen to make a breathable - and considerably less flammable - atmosphere.","name":"Filter (Nitrogen)"},"item":{"consumable":false,"filter_type":"Nitrogen","ingredient":false,"max_quantity":100,"reagents":null,"slot_class":"GasFilter","sorting_class":"Resources"}},"ItemGasFilterNitrogenInfinite":{"prefab":{"prefab_name":"ItemGasFilterNitrogenInfinite","prefab_hash":152751131,"desc":"A filter that selectively targets Nitrogen. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle.","name":"Catalytic Filter (Nitrogen)"},"item":{"consumable":false,"filter_type":"Nitrogen","ingredient":false,"max_quantity":100,"reagents":null,"slot_class":"GasFilter","sorting_class":"Resources"}},"ItemGasFilterNitrogenL":{"prefab":{"prefab_name":"ItemGasFilterNitrogenL","prefab_hash":-1387439451,"desc":"","name":"Heavy Filter (Nitrogen)"},"item":{"consumable":false,"filter_type":"Nitrogen","ingredient":false,"max_quantity":100,"reagents":null,"slot_class":"GasFilter","sorting_class":"Resources"}},"ItemGasFilterNitrogenM":{"prefab":{"prefab_name":"ItemGasFilterNitrogenM","prefab_hash":-632657357,"desc":"","name":"Medium Filter (Nitrogen)"},"item":{"consumable":false,"filter_type":"Nitrogen","ingredient":false,"max_quantity":100,"reagents":null,"slot_class":"GasFilter","sorting_class":"Resources"}},"ItemGasFilterNitrousOxide":{"prefab":{"prefab_name":"ItemGasFilterNitrousOxide","prefab_hash":-1247674305,"desc":"","name":"Filter (Nitrous Oxide)"},"item":{"consumable":false,"filter_type":"NitrousOxide","ingredient":false,"max_quantity":100,"reagents":null,"slot_class":"GasFilter","sorting_class":"Resources"}},"ItemGasFilterNitrousOxideInfinite":{"prefab":{"prefab_name":"ItemGasFilterNitrousOxideInfinite","prefab_hash":-123934842,"desc":"A filter that selectively targets Nitrous Oxide. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle.","name":"Catalytic Filter (Nitrous Oxide)"},"item":{"consumable":false,"filter_type":"NitrousOxide","ingredient":false,"max_quantity":100,"reagents":null,"slot_class":"GasFilter","sorting_class":"Resources"}},"ItemGasFilterNitrousOxideL":{"prefab":{"prefab_name":"ItemGasFilterNitrousOxideL","prefab_hash":465267979,"desc":"","name":"Heavy Filter (Nitrous Oxide)"},"item":{"consumable":false,"filter_type":"NitrousOxide","ingredient":false,"max_quantity":100,"reagents":null,"slot_class":"GasFilter","sorting_class":"Resources"}},"ItemGasFilterNitrousOxideM":{"prefab":{"prefab_name":"ItemGasFilterNitrousOxideM","prefab_hash":1824284061,"desc":"","name":"Medium Filter (Nitrous Oxide)"},"item":{"consumable":false,"filter_type":"NitrousOxide","ingredient":false,"max_quantity":100,"reagents":null,"slot_class":"GasFilter","sorting_class":"Resources"}},"ItemGasFilterOxygen":{"prefab":{"prefab_name":"ItemGasFilterOxygen","prefab_hash":-721824748,"desc":"Sinotai have cornered the market in filter design. Their trademarked templates are simple to print and highly efficient at capturing various gases, which can be disposed of or used elsewhere. Oxygen is a common byproduct of smelting various ores, but must be filtered of such impurities as Nitrogen using this filter and various devices, such as the Kit (Portable Scrubber).","name":"Filter (Oxygen)"},"item":{"consumable":false,"filter_type":"Oxygen","ingredient":false,"max_quantity":100,"reagents":null,"slot_class":"GasFilter","sorting_class":"Resources"}},"ItemGasFilterOxygenInfinite":{"prefab":{"prefab_name":"ItemGasFilterOxygenInfinite","prefab_hash":-1055451111,"desc":"A filter that selectively targets Oxygen. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle.","name":"Catalytic Filter (Oxygen)"},"item":{"consumable":false,"filter_type":"Oxygen","ingredient":false,"max_quantity":100,"reagents":null,"slot_class":"GasFilter","sorting_class":"Resources"}},"ItemGasFilterOxygenL":{"prefab":{"prefab_name":"ItemGasFilterOxygenL","prefab_hash":-1217998945,"desc":"","name":"Heavy Filter (Oxygen)"},"item":{"consumable":false,"filter_type":"Oxygen","ingredient":false,"max_quantity":100,"reagents":null,"slot_class":"GasFilter","sorting_class":"Resources"}},"ItemGasFilterOxygenM":{"prefab":{"prefab_name":"ItemGasFilterOxygenM","prefab_hash":-1067319543,"desc":"","name":"Medium Filter (Oxygen)"},"item":{"consumable":false,"filter_type":"Oxygen","ingredient":false,"max_quantity":100,"reagents":null,"slot_class":"GasFilter","sorting_class":"Resources"}},"ItemGasFilterPollutants":{"prefab":{"prefab_name":"ItemGasFilterPollutants","prefab_hash":1915566057,"desc":"Filters are used to capture various gases, such as waste emissions from a Furnace or Arc Furnace. Adding Sinotai-designed Pollutant filters to a Kit (Portable Scrubber) allows you to isolate this gas, then add it to a pipe network and employ its excellent coolant properties in a Wall Cooler. Try not to inhale.","name":"Filter (Pollutant)"},"item":{"consumable":false,"filter_type":"Pollutant","ingredient":false,"max_quantity":100,"reagents":null,"slot_class":"GasFilter","sorting_class":"Resources"}},"ItemGasFilterPollutantsInfinite":{"prefab":{"prefab_name":"ItemGasFilterPollutantsInfinite","prefab_hash":-503738105,"desc":"A filter that selectively targets Pollutants. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle.","name":"Catalytic Filter (Pollutants)"},"item":{"consumable":false,"filter_type":"Pollutant","ingredient":false,"max_quantity":100,"reagents":null,"slot_class":"GasFilter","sorting_class":"Resources"}},"ItemGasFilterPollutantsL":{"prefab":{"prefab_name":"ItemGasFilterPollutantsL","prefab_hash":1959564765,"desc":"","name":"Heavy Filter (Pollutants)"},"item":{"consumable":false,"filter_type":"Pollutant","ingredient":false,"max_quantity":100,"reagents":null,"slot_class":"GasFilter","sorting_class":"Resources"}},"ItemGasFilterPollutantsM":{"prefab":{"prefab_name":"ItemGasFilterPollutantsM","prefab_hash":63677771,"desc":"","name":"Medium Filter (Pollutants)"},"item":{"consumable":false,"filter_type":"Pollutant","ingredient":false,"max_quantity":100,"reagents":null,"slot_class":"GasFilter","sorting_class":"Resources"}},"ItemGasFilterVolatiles":{"prefab":{"prefab_name":"ItemGasFilterVolatiles","prefab_hash":15011598,"desc":"Filters are used to capture various gases, which can be disposed of or used elsewhere. Volatiles are created by exposing Ice (Volatiles) to heat. The product can then be collected and combined with Oxygen to create fuel, or used within a Furnace to smelt ores and create alloys.","name":"Filter (Volatiles)"},"item":{"consumable":false,"filter_type":"Volatiles","ingredient":false,"max_quantity":100,"reagents":null,"slot_class":"GasFilter","sorting_class":"Resources"}},"ItemGasFilterVolatilesInfinite":{"prefab":{"prefab_name":"ItemGasFilterVolatilesInfinite","prefab_hash":-1916176068,"desc":"A filter that selectively targets Volatiles. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle.","name":"Catalytic Filter (Volatiles)"},"item":{"consumable":false,"filter_type":"Volatiles","ingredient":false,"max_quantity":100,"reagents":null,"slot_class":"GasFilter","sorting_class":"Resources"}},"ItemGasFilterVolatilesL":{"prefab":{"prefab_name":"ItemGasFilterVolatilesL","prefab_hash":1255156286,"desc":"","name":"Heavy Filter (Volatiles)"},"item":{"consumable":false,"filter_type":"Volatiles","ingredient":false,"max_quantity":100,"reagents":null,"slot_class":"GasFilter","sorting_class":"Resources"}},"ItemGasFilterVolatilesM":{"prefab":{"prefab_name":"ItemGasFilterVolatilesM","prefab_hash":1037507240,"desc":"","name":"Medium Filter (Volatiles)"},"item":{"consumable":false,"filter_type":"Volatiles","ingredient":false,"max_quantity":100,"reagents":null,"slot_class":"GasFilter","sorting_class":"Resources"}},"ItemGasFilterWater":{"prefab":{"prefab_name":"ItemGasFilterWater","prefab_hash":-1993197973,"desc":"Sinotai filters are used to capture various gases, which can be disposed of, or used elsewhere. Water can be collected by filtering smelted Ice (Water)","name":"Filter (Water)"},"item":{"consumable":false,"filter_type":"Steam","ingredient":false,"max_quantity":100,"reagents":null,"slot_class":"GasFilter","sorting_class":"Resources"}},"ItemGasFilterWaterInfinite":{"prefab":{"prefab_name":"ItemGasFilterWaterInfinite","prefab_hash":-1678456554,"desc":"A filter that selectively targets Water. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle.","name":"Catalytic Filter (Water)"},"item":{"consumable":false,"filter_type":"Steam","ingredient":false,"max_quantity":100,"reagents":null,"slot_class":"GasFilter","sorting_class":"Resources"}},"ItemGasFilterWaterL":{"prefab":{"prefab_name":"ItemGasFilterWaterL","prefab_hash":2004969680,"desc":"","name":"Heavy Filter (Water)"},"item":{"consumable":false,"filter_type":"Steam","ingredient":false,"max_quantity":100,"reagents":null,"slot_class":"GasFilter","sorting_class":"Resources"}},"ItemGasFilterWaterM":{"prefab":{"prefab_name":"ItemGasFilterWaterM","prefab_hash":8804422,"desc":"","name":"Medium Filter (Water)"},"item":{"consumable":false,"filter_type":"Steam","ingredient":false,"max_quantity":100,"reagents":null,"slot_class":"GasFilter","sorting_class":"Resources"}},"ItemGasSensor":{"prefab":{"prefab_name":"ItemGasSensor","prefab_hash":1717593480,"desc":"","name":"Kit (Gas Sensor)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemGasTankStorage":{"prefab":{"prefab_name":"ItemGasTankStorage","prefab_hash":-2113012215,"desc":"This kit produces a Kit (Canister Storage) for refilling a Canister.","name":"Kit (Canister Storage)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemGlassSheets":{"prefab":{"prefab_name":"ItemGlassSheets","prefab_hash":1588896491,"desc":"A fundamental construction component, glass sheets are created from Silicon. Fabricated on the Autolathe, they are used to make {THING:StructureSolarPanel;Solar Panels}, and many other structures.","name":"Glass Sheets"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":50,"reagents":null,"slot_class":"None","sorting_class":"Resources"}},"ItemGlasses":{"prefab":{"prefab_name":"ItemGlasses","prefab_hash":-1068925231,"desc":"","name":"Glasses"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Glasses","sorting_class":"Clothing"}},"ItemGoldIngot":{"prefab":{"prefab_name":"ItemGoldIngot","prefab_hash":226410516,"desc":"There is an enduring paradox at the heart of the Stationeers project: An initiative conceived as 'cut-price space exploration' uses Gold as a fundamental ingredient in fabricating so much of its equipment and materiel. ","name":"Ingot (Gold)"},"item":{"consumable":true,"filter_type":null,"ingredient":true,"max_quantity":500,"reagents":{"Gold":1.0},"slot_class":"Ingot","sorting_class":"Resources"}},"ItemGoldOre":{"prefab":{"prefab_name":"ItemGoldOre","prefab_hash":-1348105509,"desc":"Surprisingly common throughout the Solar System, Gold is thought to originate in the heart of supernovas, gathering as dust in the early stages of solar formation, then incorporating into the slowly accreting planetary bodies. Now a prized element in Stationeer construction, Gold is valued not for its beauty, but its reliability: inert, durable, conductive and highly stable, gold's strength is that it does nothing.","name":"Ore (Gold)"},"item":{"consumable":false,"filter_type":null,"ingredient":true,"max_quantity":50,"reagents":{"Gold":1.0},"slot_class":"Ore","sorting_class":"Ores"}},"ItemGrenade":{"prefab":{"prefab_name":"ItemGrenade","prefab_hash":1544275894,"desc":"Invented by the Romans, who threw Greek Fire at their enemies in ceramic jars, the word 'grenade' is derived from the Old French word for 'pomegranate', as many modern grenades resemble this round, many-seeded fruit. Also like many grenades before it, this one goes boom and breaks stuff.","name":"Hand Grenade"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Default"}},"ItemHEMDroidRepairKit":{"prefab":{"prefab_name":"ItemHEMDroidRepairKit","prefab_hash":470636008,"desc":"Repairs damaged HEM-Droids to full health.","name":"HEMDroid Repair Kit"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Food"}},"ItemHardBackpack":{"prefab":{"prefab_name":"ItemHardBackpack","prefab_hash":374891127,"desc":"This backpack can be useful when you are working inside and don't need to fly around.","name":"Hardsuit Backpack"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Back","sorting_class":"Clothing"},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"2":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"3":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"4":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"5":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"6":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"7":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"8":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"9":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"10":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"11":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"}},"logic_types":{"ReferenceId":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"}]},"ItemHardJetpack":{"prefab":{"prefab_name":"ItemHardJetpack","prefab_hash":-412551656,"desc":"The Norsec jetpack isn't 'technically' a jetpack at all, it's a gas thruster. It can be powered by any gas, so long as the internal pressure of the canister is higher than the ambient external pressure. If the external pressure is greater, the spacepack will not function. Adjusting the thrust value alters your rate of acceleration, while activating the stablizer causes the spacepack to hover when a given height is reached.\nThe hardsuit jetpack is capable of much higher speeds than the Jetpack Basic - up to 15m/s. Indispensable for building, mining and general movement, it has fourteen storage slots.\nUSE: 'J' to activate; 'space' to fly up; 'left ctrl' to descend; and 'WASD' to move.","name":"Hardsuit Jetpack"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Back","sorting_class":"Clothing"},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Pressure":"Read","Temperature":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"2":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"3":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"4":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"5":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"6":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"7":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"8":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"9":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"10":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"11":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"12":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"13":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"14":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"}},"logic_types":{"Activate":"ReadWrite","On":"ReadWrite","ReferenceId":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Propellant","typ":"GasCanister"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"}]},"ItemHardMiningBackPack":{"prefab":{"prefab_name":"ItemHardMiningBackPack","prefab_hash":900366130,"desc":"","name":"Hard Mining Backpack"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Back","sorting_class":"Clothing"},"slots":[{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"}]},"ItemHardSuit":{"prefab":{"prefab_name":"ItemHardSuit","prefab_hash":-1758310454,"desc":"Connects to Logic Transmitter","name":"Hardsuit"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Suit","sorting_class":"Clothing"},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Pressure":"Read","Temperature":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Pressure":"Read","Temperature":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"2":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"3":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"4":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","FilterType":"Read","ReferenceId":"Read"},"5":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","FilterType":"Read","ReferenceId":"Read"},"6":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","FilterType":"Read","ReferenceId":"Read"},"7":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","FilterType":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Error":"ReadWrite","Pressure":"Read","Temperature":"Read","PressureExternal":"Read","Activate":"ReadWrite","Lock":"ReadWrite","Setting":"ReadWrite","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","On":"ReadWrite","TotalMoles":"Read","Volume":"ReadWrite","PressureSetting":"ReadWrite","TemperatureSetting":"ReadWrite","TemperatureExternal":"Read","Filtration":"ReadWrite","AirRelease":"ReadWrite","PositionX":"Read","PositionY":"Read","PositionZ":"Read","VelocityMagnitude":"Read","VelocityRelativeX":"Read","VelocityRelativeY":"Read","VelocityRelativeZ":"Read","RatioNitrousOxide":"Read","Combustion":"Read","SoundAlert":"ReadWrite","RatioLiquidNitrogen":"Read","RatioLiquidOxygen":"Read","RatioLiquidVolatiles":"Read","RatioSteam":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidPollutant":"Read","RatioLiquidNitrousOxide":"Read","ReferenceId":"Read","ForwardX":"Read","ForwardY":"Read","ForwardZ":"Read","Orientation":"Read","VelocityX":"Read","VelocityY":"Read","VelocityZ":"Read","EntityState":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":true,"circuit_holder":true},"slots":[{"name":"Air Tank","typ":"GasCanister"},{"name":"Waste Tank","typ":"GasCanister"},{"name":"Life Support","typ":"Battery"},{"name":"Programmable Chip","typ":"ProgrammableChip"},{"name":"Filter","typ":"GasFilter"},{"name":"Filter","typ":"GasFilter"},{"name":"Filter","typ":"GasFilter"},{"name":"Filter","typ":"GasFilter"}],"memory":{"instructions":null,"memory_access":"ReadWrite","memory_size":0}},"ItemHardsuitHelmet":{"prefab":{"prefab_name":"ItemHardsuitHelmet","prefab_hash":-84573099,"desc":"The Hardsuit Helmet is similar to the Space Helmet, but can withstand higher temperatures and pressures. It's perfect for enduring harsh environments like Venus and Vulcan.","name":"Hardsuit Helmet"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Helmet","sorting_class":"Clothing"},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Open":"ReadWrite","Pressure":"Read","Temperature":"Read","Lock":"ReadWrite","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","On":"ReadWrite","TotalMoles":"Read","Volume":"ReadWrite","RatioNitrousOxide":"Read","Combustion":"Read","Flush":"Write","SoundAlert":"ReadWrite","RatioLiquidNitrogen":"Read","RatioLiquidOxygen":"Read","RatioLiquidVolatiles":"Read","RatioSteam":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidPollutant":"Read","RatioLiquidNitrousOxide":"Read","ReferenceId":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[]},"ItemHastelloyIngot":{"prefab":{"prefab_name":"ItemHastelloyIngot","prefab_hash":1579842814,"desc":"","name":"Ingot (Hastelloy)"},"item":{"consumable":true,"filter_type":null,"ingredient":true,"max_quantity":500,"reagents":{"Hastelloy":1.0},"slot_class":"Ingot","sorting_class":"Resources"}},"ItemHat":{"prefab":{"prefab_name":"ItemHat","prefab_hash":299189339,"desc":"As the name suggests, this is a hat.","name":"Hat"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Helmet","sorting_class":"Clothing"}},"ItemHighVolumeGasCanisterEmpty":{"prefab":{"prefab_name":"ItemHighVolumeGasCanisterEmpty","prefab_hash":998653377,"desc":"","name":"High Volume Gas Canister"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"GasCanister","sorting_class":"Atmospherics"}},"ItemHorticultureBelt":{"prefab":{"prefab_name":"ItemHorticultureBelt","prefab_hash":-1117581553,"desc":"","name":"Horticulture Belt"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Belt","sorting_class":"Clothing"},"slots":[{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"}]},"ItemHydroponicTray":{"prefab":{"prefab_name":"ItemHydroponicTray","prefab_hash":-1193543727,"desc":"This kits creates a Hydroponics Tray for growing various plants.","name":"Kit (Hydroponic Tray)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemIce":{"prefab":{"prefab_name":"ItemIce","prefab_hash":1217489948,"desc":"Water ice can be found on most planets in the Solar System, though not all worlds visited by Stationeers possess this resource. Highly sensitive to temperature, ice will begin to melt as soon as it is mined, unless kept in the Mining Belt. When melting, ice produces a mixture of Steam and Nitrogen gas.","name":"Ice (Water)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":50,"reagents":null,"slot_class":"Ore","sorting_class":"Ices"}},"ItemIgniter":{"prefab":{"prefab_name":"ItemIgniter","prefab_hash":890106742,"desc":"This kit creates an Kit (Igniter) unit.","name":"Kit (Igniter)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemInconelIngot":{"prefab":{"prefab_name":"ItemInconelIngot","prefab_hash":-787796599,"desc":"","name":"Ingot (Inconel)"},"item":{"consumable":true,"filter_type":null,"ingredient":true,"max_quantity":500,"reagents":{"Inconel":1.0},"slot_class":"Ingot","sorting_class":"Resources"}},"ItemInsulation":{"prefab":{"prefab_name":"ItemInsulation","prefab_hash":897176943,"desc":"Mysterious in the extreme, the function of this item is lost to the ages.","name":"Insulation"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Resources"}},"ItemIntegratedCircuit10":{"prefab":{"prefab_name":"ItemIntegratedCircuit10","prefab_hash":-744098481,"desc":"","name":"Integrated Circuit (IC10)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"ProgrammableChip","sorting_class":"Default"},"logic":{"logic_slot_types":{},"logic_types":{"LineNumber":"Read","ReferenceId":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"memory":{"instructions":null,"memory_access":"ReadWrite","memory_size":512}},"ItemInvarIngot":{"prefab":{"prefab_name":"ItemInvarIngot","prefab_hash":-297990285,"desc":"","name":"Ingot (Invar)"},"item":{"consumable":true,"filter_type":null,"ingredient":true,"max_quantity":500,"reagents":{"Invar":1.0},"slot_class":"Ingot","sorting_class":"Resources"}},"ItemIronFrames":{"prefab":{"prefab_name":"ItemIronFrames","prefab_hash":1225836666,"desc":"","name":"Iron Frames"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":30,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemIronIngot":{"prefab":{"prefab_name":"ItemIronIngot","prefab_hash":-1301215609,"desc":"The most basic unit of construction available to Stationeer-kind, iron ingots are created by smelting Ore (Iron) in the Furnace and Arc Furnace, and used to create a variety of items.","name":"Ingot (Iron)"},"item":{"consumable":true,"filter_type":null,"ingredient":true,"max_quantity":500,"reagents":{"Iron":1.0},"slot_class":"Ingot","sorting_class":"Resources"}},"ItemIronOre":{"prefab":{"prefab_name":"ItemIronOre","prefab_hash":1758427767,"desc":"Abundant throughout the Solar System, iron is the ore most commonly used by Stationeers constructing offworld bases. It can be smelted into both Ingot (Iron)s and Ingot (Steel)s.","name":"Ore (Iron)"},"item":{"consumable":false,"filter_type":null,"ingredient":true,"max_quantity":50,"reagents":{"Iron":1.0},"slot_class":"Ore","sorting_class":"Ores"}},"ItemIronSheets":{"prefab":{"prefab_name":"ItemIronSheets","prefab_hash":-487378546,"desc":"","name":"Iron Sheets"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":50,"reagents":null,"slot_class":"None","sorting_class":"Resources"}},"ItemJetpackBasic":{"prefab":{"prefab_name":"ItemJetpackBasic","prefab_hash":1969189000,"desc":"The basic CHAC jetpack isn't 'technically' a jetpack, it's a gas thruster. It can be powered by any gas, so long as the internal pressure of the canister is higher than the ambient external pressure. If the external pressure is greater, the spacepack will not function.\nIndispensable for building, mining and general movement, it has ten storage slots and lets Stationeers fly at 3m/s, compared to the more powerful Hardsuit Jetpack. Adjusting the thrust value alters your rate of acceleration, while activating the stabilizer causes the spacepack to hover when a given height is reached.\nUSE: 'J' to activate; 'space' to fly up; 'left ctrl' to descend; and 'WASD' to move.","name":"Jetpack Basic"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Back","sorting_class":"Clothing"},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Pressure":"Read","Temperature":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"2":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"3":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"4":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"5":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"6":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"7":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"8":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"9":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"}},"logic_types":{"Activate":"ReadWrite","On":"ReadWrite","ReferenceId":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Propellant","typ":"GasCanister"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"}]},"ItemKitAIMeE":{"prefab":{"prefab_name":"ItemKitAIMeE","prefab_hash":496830914,"desc":"","name":"Kit (AIMeE)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitAccessBridge":{"prefab":{"prefab_name":"ItemKitAccessBridge","prefab_hash":513258369,"desc":"","name":"Kit (Access Bridge)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitAdvancedComposter":{"prefab":{"prefab_name":"ItemKitAdvancedComposter","prefab_hash":-1431998347,"desc":"","name":"Kit (Advanced Composter)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitAdvancedFurnace":{"prefab":{"prefab_name":"ItemKitAdvancedFurnace","prefab_hash":-616758353,"desc":"","name":"Kit (Advanced Furnace)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitAdvancedPackagingMachine":{"prefab":{"prefab_name":"ItemKitAdvancedPackagingMachine","prefab_hash":-598545233,"desc":"","name":"Kit (Advanced Packaging Machine)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitAirlock":{"prefab":{"prefab_name":"ItemKitAirlock","prefab_hash":964043875,"desc":"","name":"Kit (Airlock)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitAirlockGate":{"prefab":{"prefab_name":"ItemKitAirlockGate","prefab_hash":682546947,"desc":"","name":"Kit (Hangar Door)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitArcFurnace":{"prefab":{"prefab_name":"ItemKitArcFurnace","prefab_hash":-98995857,"desc":"","name":"Kit (Arc Furnace)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitAtmospherics":{"prefab":{"prefab_name":"ItemKitAtmospherics","prefab_hash":1222286371,"desc":"","name":"Kit (Atmospherics)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitAutoMinerSmall":{"prefab":{"prefab_name":"ItemKitAutoMinerSmall","prefab_hash":1668815415,"desc":"","name":"Kit (Autominer Small)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitAutolathe":{"prefab":{"prefab_name":"ItemKitAutolathe","prefab_hash":-1753893214,"desc":"","name":"Kit (Autolathe)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitAutomatedOven":{"prefab":{"prefab_name":"ItemKitAutomatedOven","prefab_hash":-1931958659,"desc":"","name":"Kit (Automated Oven)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitBasket":{"prefab":{"prefab_name":"ItemKitBasket","prefab_hash":148305004,"desc":"","name":"Kit (Basket)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitBattery":{"prefab":{"prefab_name":"ItemKitBattery","prefab_hash":1406656973,"desc":"","name":"Kit (Battery)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitBatteryLarge":{"prefab":{"prefab_name":"ItemKitBatteryLarge","prefab_hash":-21225041,"desc":"","name":"Kit (Battery Large)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitBeacon":{"prefab":{"prefab_name":"ItemKitBeacon","prefab_hash":249073136,"desc":"","name":"Kit (Beacon)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitBeds":{"prefab":{"prefab_name":"ItemKitBeds","prefab_hash":-1241256797,"desc":"","name":"Kit (Beds)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitBlastDoor":{"prefab":{"prefab_name":"ItemKitBlastDoor","prefab_hash":-1755116240,"desc":"","name":"Kit (Blast Door)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitCentrifuge":{"prefab":{"prefab_name":"ItemKitCentrifuge","prefab_hash":578182956,"desc":"","name":"Kit (Centrifuge)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitChairs":{"prefab":{"prefab_name":"ItemKitChairs","prefab_hash":-1394008073,"desc":"","name":"Kit (Chairs)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitChute":{"prefab":{"prefab_name":"ItemKitChute","prefab_hash":1025254665,"desc":"","name":"Kit (Basic Chutes)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitChuteUmbilical":{"prefab":{"prefab_name":"ItemKitChuteUmbilical","prefab_hash":-876560854,"desc":"","name":"Kit (Chute Umbilical)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitCompositeCladding":{"prefab":{"prefab_name":"ItemKitCompositeCladding","prefab_hash":-1470820996,"desc":"","name":"Kit (Cladding)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitCompositeFloorGrating":{"prefab":{"prefab_name":"ItemKitCompositeFloorGrating","prefab_hash":1182412869,"desc":"","name":"Kit (Floor Grating)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitComputer":{"prefab":{"prefab_name":"ItemKitComputer","prefab_hash":1990225489,"desc":"","name":"Kit (Computer)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitConsole":{"prefab":{"prefab_name":"ItemKitConsole","prefab_hash":-1241851179,"desc":"","name":"Kit (Consoles)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitCrate":{"prefab":{"prefab_name":"ItemKitCrate","prefab_hash":429365598,"desc":"","name":"Kit (Crate)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitCrateMkII":{"prefab":{"prefab_name":"ItemKitCrateMkII","prefab_hash":-1585956426,"desc":"","name":"Kit (Crate Mk II)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitCrateMount":{"prefab":{"prefab_name":"ItemKitCrateMount","prefab_hash":-551612946,"desc":"","name":"Kit (Container Mount)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitCryoTube":{"prefab":{"prefab_name":"ItemKitCryoTube","prefab_hash":-545234195,"desc":"","name":"Kit (Cryo Tube)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitDeepMiner":{"prefab":{"prefab_name":"ItemKitDeepMiner","prefab_hash":-1935075707,"desc":"","name":"Kit (Deep Miner)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitDockingPort":{"prefab":{"prefab_name":"ItemKitDockingPort","prefab_hash":77421200,"desc":"","name":"Kit (Docking Port)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitDoor":{"prefab":{"prefab_name":"ItemKitDoor","prefab_hash":168615924,"desc":"","name":"Kit (Door)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitDrinkingFountain":{"prefab":{"prefab_name":"ItemKitDrinkingFountain","prefab_hash":-1743663875,"desc":"","name":"Kit (Drinking Fountain)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitDynamicCanister":{"prefab":{"prefab_name":"ItemKitDynamicCanister","prefab_hash":-1061945368,"desc":"","name":"Kit (Portable Gas Tank)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitDynamicGasTankAdvanced":{"prefab":{"prefab_name":"ItemKitDynamicGasTankAdvanced","prefab_hash":1533501495,"desc":"","name":"Kit (Portable Gas Tank Mk II)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Default"}},"ItemKitDynamicGenerator":{"prefab":{"prefab_name":"ItemKitDynamicGenerator","prefab_hash":-732720413,"desc":"","name":"Kit (Portable Generator)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitDynamicHydroponics":{"prefab":{"prefab_name":"ItemKitDynamicHydroponics","prefab_hash":-1861154222,"desc":"","name":"Kit (Portable Hydroponics)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitDynamicLiquidCanister":{"prefab":{"prefab_name":"ItemKitDynamicLiquidCanister","prefab_hash":375541286,"desc":"","name":"Kit (Portable Liquid Tank)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitDynamicMKIILiquidCanister":{"prefab":{"prefab_name":"ItemKitDynamicMKIILiquidCanister","prefab_hash":-638019974,"desc":"","name":"Kit (Portable Liquid Tank Mk II)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitElectricUmbilical":{"prefab":{"prefab_name":"ItemKitElectricUmbilical","prefab_hash":1603046970,"desc":"","name":"Kit (Power Umbilical)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitElectronicsPrinter":{"prefab":{"prefab_name":"ItemKitElectronicsPrinter","prefab_hash":-1181922382,"desc":"","name":"Kit (Electronics Printer)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitElevator":{"prefab":{"prefab_name":"ItemKitElevator","prefab_hash":-945806652,"desc":"","name":"Kit (Elevator)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitEngineLarge":{"prefab":{"prefab_name":"ItemKitEngineLarge","prefab_hash":755302726,"desc":"","name":"Kit (Engine Large)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitEngineMedium":{"prefab":{"prefab_name":"ItemKitEngineMedium","prefab_hash":1969312177,"desc":"","name":"Kit (Engine Medium)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitEngineSmall":{"prefab":{"prefab_name":"ItemKitEngineSmall","prefab_hash":19645163,"desc":"","name":"Kit (Engine Small)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitEvaporationChamber":{"prefab":{"prefab_name":"ItemKitEvaporationChamber","prefab_hash":1587787610,"desc":"","name":"Kit (Phase Change Device)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitFlagODA":{"prefab":{"prefab_name":"ItemKitFlagODA","prefab_hash":1701764190,"desc":"","name":"Kit (ODA Flag)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Default"}},"ItemKitFridgeBig":{"prefab":{"prefab_name":"ItemKitFridgeBig","prefab_hash":-1168199498,"desc":"","name":"Kit (Fridge Large)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitFridgeSmall":{"prefab":{"prefab_name":"ItemKitFridgeSmall","prefab_hash":1661226524,"desc":"","name":"Kit (Fridge Small)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitFurnace":{"prefab":{"prefab_name":"ItemKitFurnace","prefab_hash":-806743925,"desc":"","name":"Kit (Furnace)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitFurniture":{"prefab":{"prefab_name":"ItemKitFurniture","prefab_hash":1162905029,"desc":"","name":"Kit (Furniture)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitFuselage":{"prefab":{"prefab_name":"ItemKitFuselage","prefab_hash":-366262681,"desc":"","name":"Kit (Fuselage)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitGasGenerator":{"prefab":{"prefab_name":"ItemKitGasGenerator","prefab_hash":377745425,"desc":"","name":"Kit (Gas Fuel Generator)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitGasUmbilical":{"prefab":{"prefab_name":"ItemKitGasUmbilical","prefab_hash":-1867280568,"desc":"","name":"Kit (Gas Umbilical)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitGovernedGasRocketEngine":{"prefab":{"prefab_name":"ItemKitGovernedGasRocketEngine","prefab_hash":206848766,"desc":"","name":"Kit (Pumped Gas Rocket Engine)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitGroundTelescope":{"prefab":{"prefab_name":"ItemKitGroundTelescope","prefab_hash":-2140672772,"desc":"","name":"Kit (Telescope)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitGrowLight":{"prefab":{"prefab_name":"ItemKitGrowLight","prefab_hash":341030083,"desc":"","name":"Kit (Grow Light)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitHarvie":{"prefab":{"prefab_name":"ItemKitHarvie","prefab_hash":-1022693454,"desc":"","name":"Kit (Harvie)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitHeatExchanger":{"prefab":{"prefab_name":"ItemKitHeatExchanger","prefab_hash":-1710540039,"desc":"","name":"Kit Heat Exchanger"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitHorizontalAutoMiner":{"prefab":{"prefab_name":"ItemKitHorizontalAutoMiner","prefab_hash":844391171,"desc":"","name":"Kit (OGRE)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitHydraulicPipeBender":{"prefab":{"prefab_name":"ItemKitHydraulicPipeBender","prefab_hash":-2098556089,"desc":"","name":"Kit (Hydraulic Pipe Bender)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitHydroponicAutomated":{"prefab":{"prefab_name":"ItemKitHydroponicAutomated","prefab_hash":-927931558,"desc":"","name":"Kit (Automated Hydroponics)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitHydroponicStation":{"prefab":{"prefab_name":"ItemKitHydroponicStation","prefab_hash":2057179799,"desc":"","name":"Kit (Hydroponic Station)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitIceCrusher":{"prefab":{"prefab_name":"ItemKitIceCrusher","prefab_hash":288111533,"desc":"","name":"Kit (Ice Crusher)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitInsulatedLiquidPipe":{"prefab":{"prefab_name":"ItemKitInsulatedLiquidPipe","prefab_hash":2067655311,"desc":"","name":"Kit (Insulated Liquid Pipe)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":20,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitInsulatedPipe":{"prefab":{"prefab_name":"ItemKitInsulatedPipe","prefab_hash":452636699,"desc":"","name":"Kit (Insulated Pipe)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":20,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitInsulatedPipeUtility":{"prefab":{"prefab_name":"ItemKitInsulatedPipeUtility","prefab_hash":-27284803,"desc":"","name":"Kit (Insulated Pipe Utility Gas)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitInsulatedPipeUtilityLiquid":{"prefab":{"prefab_name":"ItemKitInsulatedPipeUtilityLiquid","prefab_hash":-1831558953,"desc":"","name":"Kit (Insulated Pipe Utility Liquid)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitInteriorDoors":{"prefab":{"prefab_name":"ItemKitInteriorDoors","prefab_hash":1935945891,"desc":"","name":"Kit (Interior Doors)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitLadder":{"prefab":{"prefab_name":"ItemKitLadder","prefab_hash":489494578,"desc":"","name":"Kit (Ladder)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitLandingPadAtmos":{"prefab":{"prefab_name":"ItemKitLandingPadAtmos","prefab_hash":1817007843,"desc":"","name":"Kit (Landing Pad Atmospherics)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitLandingPadBasic":{"prefab":{"prefab_name":"ItemKitLandingPadBasic","prefab_hash":293581318,"desc":"","name":"Kit (Landing Pad Basic)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitLandingPadWaypoint":{"prefab":{"prefab_name":"ItemKitLandingPadWaypoint","prefab_hash":-1267511065,"desc":"","name":"Kit (Landing Pad Runway)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitLargeDirectHeatExchanger":{"prefab":{"prefab_name":"ItemKitLargeDirectHeatExchanger","prefab_hash":450164077,"desc":"","name":"Kit (Large Direct Heat Exchanger)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitLargeExtendableRadiator":{"prefab":{"prefab_name":"ItemKitLargeExtendableRadiator","prefab_hash":847430620,"desc":"","name":"Kit (Large Extendable Radiator)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitLargeSatelliteDish":{"prefab":{"prefab_name":"ItemKitLargeSatelliteDish","prefab_hash":-2039971217,"desc":"","name":"Kit (Large Satellite Dish)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitLaunchMount":{"prefab":{"prefab_name":"ItemKitLaunchMount","prefab_hash":-1854167549,"desc":"","name":"Kit (Launch Mount)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitLaunchTower":{"prefab":{"prefab_name":"ItemKitLaunchTower","prefab_hash":-174523552,"desc":"","name":"Kit (Rocket Launch Tower)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitLiquidRegulator":{"prefab":{"prefab_name":"ItemKitLiquidRegulator","prefab_hash":1951126161,"desc":"","name":"Kit (Liquid Regulator)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitLiquidTank":{"prefab":{"prefab_name":"ItemKitLiquidTank","prefab_hash":-799849305,"desc":"","name":"Kit (Liquid Tank)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitLiquidTankInsulated":{"prefab":{"prefab_name":"ItemKitLiquidTankInsulated","prefab_hash":617773453,"desc":"","name":"Kit (Insulated Liquid Tank)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitLiquidTurboVolumePump":{"prefab":{"prefab_name":"ItemKitLiquidTurboVolumePump","prefab_hash":-1805020897,"desc":"","name":"Kit (Turbo Volume Pump - Liquid)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitLiquidUmbilical":{"prefab":{"prefab_name":"ItemKitLiquidUmbilical","prefab_hash":1571996765,"desc":"","name":"Kit (Liquid Umbilical)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitLocker":{"prefab":{"prefab_name":"ItemKitLocker","prefab_hash":882301399,"desc":"","name":"Kit (Locker)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitLogicCircuit":{"prefab":{"prefab_name":"ItemKitLogicCircuit","prefab_hash":1512322581,"desc":"","name":"Kit (IC Housing)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitLogicInputOutput":{"prefab":{"prefab_name":"ItemKitLogicInputOutput","prefab_hash":1997293610,"desc":"","name":"Kit (Logic I/O)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitLogicMemory":{"prefab":{"prefab_name":"ItemKitLogicMemory","prefab_hash":-2098214189,"desc":"","name":"Kit (Logic Memory)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitLogicProcessor":{"prefab":{"prefab_name":"ItemKitLogicProcessor","prefab_hash":220644373,"desc":"","name":"Kit (Logic Processor)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitLogicSwitch":{"prefab":{"prefab_name":"ItemKitLogicSwitch","prefab_hash":124499454,"desc":"","name":"Kit (Logic Switch)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitLogicTransmitter":{"prefab":{"prefab_name":"ItemKitLogicTransmitter","prefab_hash":1005397063,"desc":"","name":"Kit (Logic Transmitter)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitMotherShipCore":{"prefab":{"prefab_name":"ItemKitMotherShipCore","prefab_hash":-344968335,"desc":"","name":"Kit (Mothership)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitMusicMachines":{"prefab":{"prefab_name":"ItemKitMusicMachines","prefab_hash":-2038889137,"desc":"","name":"Kit (Music Machines)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitPassiveLargeRadiatorGas":{"prefab":{"prefab_name":"ItemKitPassiveLargeRadiatorGas","prefab_hash":-1752768283,"desc":"","name":"Kit (Medium Radiator)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Default"}},"ItemKitPassiveLargeRadiatorLiquid":{"prefab":{"prefab_name":"ItemKitPassiveLargeRadiatorLiquid","prefab_hash":1453961898,"desc":"","name":"Kit (Medium Radiator Liquid)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitPassthroughHeatExchanger":{"prefab":{"prefab_name":"ItemKitPassthroughHeatExchanger","prefab_hash":636112787,"desc":"","name":"Kit (CounterFlow Heat Exchanger)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitPictureFrame":{"prefab":{"prefab_name":"ItemKitPictureFrame","prefab_hash":-2062364768,"desc":"","name":"Kit Picture Frame"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitPipe":{"prefab":{"prefab_name":"ItemKitPipe","prefab_hash":-1619793705,"desc":"","name":"Kit (Pipe)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":20,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitPipeLiquid":{"prefab":{"prefab_name":"ItemKitPipeLiquid","prefab_hash":-1166461357,"desc":"","name":"Kit (Liquid Pipe)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":20,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitPipeOrgan":{"prefab":{"prefab_name":"ItemKitPipeOrgan","prefab_hash":-827125300,"desc":"","name":"Kit (Pipe Organ)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitPipeRadiator":{"prefab":{"prefab_name":"ItemKitPipeRadiator","prefab_hash":920411066,"desc":"","name":"Kit (Pipe Radiator)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Default"}},"ItemKitPipeRadiatorLiquid":{"prefab":{"prefab_name":"ItemKitPipeRadiatorLiquid","prefab_hash":-1697302609,"desc":"","name":"Kit (Pipe Radiator Liquid)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Default"}},"ItemKitPipeUtility":{"prefab":{"prefab_name":"ItemKitPipeUtility","prefab_hash":1934508338,"desc":"","name":"Kit (Pipe Utility Gas)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitPipeUtilityLiquid":{"prefab":{"prefab_name":"ItemKitPipeUtilityLiquid","prefab_hash":595478589,"desc":"","name":"Kit (Pipe Utility Liquid)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitPlanter":{"prefab":{"prefab_name":"ItemKitPlanter","prefab_hash":119096484,"desc":"","name":"Kit (Planter)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitPortablesConnector":{"prefab":{"prefab_name":"ItemKitPortablesConnector","prefab_hash":1041148999,"desc":"","name":"Kit (Portables Connector)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitPowerTransmitter":{"prefab":{"prefab_name":"ItemKitPowerTransmitter","prefab_hash":291368213,"desc":"","name":"Kit (Power Transmitter)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitPowerTransmitterOmni":{"prefab":{"prefab_name":"ItemKitPowerTransmitterOmni","prefab_hash":-831211676,"desc":"","name":"Kit (Power Transmitter Omni)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitPoweredVent":{"prefab":{"prefab_name":"ItemKitPoweredVent","prefab_hash":2015439334,"desc":"","name":"Kit (Powered Vent)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitPressureFedGasEngine":{"prefab":{"prefab_name":"ItemKitPressureFedGasEngine","prefab_hash":-121514007,"desc":"","name":"Kit (Pressure Fed Gas Engine)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitPressureFedLiquidEngine":{"prefab":{"prefab_name":"ItemKitPressureFedLiquidEngine","prefab_hash":-99091572,"desc":"","name":"Kit (Pressure Fed Liquid Engine)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitPressurePlate":{"prefab":{"prefab_name":"ItemKitPressurePlate","prefab_hash":123504691,"desc":"","name":"Kit (Trigger Plate)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitPumpedLiquidEngine":{"prefab":{"prefab_name":"ItemKitPumpedLiquidEngine","prefab_hash":1921918951,"desc":"","name":"Kit (Pumped Liquid Engine)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitRailing":{"prefab":{"prefab_name":"ItemKitRailing","prefab_hash":750176282,"desc":"","name":"Kit (Railing)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitRecycler":{"prefab":{"prefab_name":"ItemKitRecycler","prefab_hash":849148192,"desc":"","name":"Kit (Recycler)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitRegulator":{"prefab":{"prefab_name":"ItemKitRegulator","prefab_hash":1181371795,"desc":"","name":"Kit (Pressure Regulator)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitReinforcedWindows":{"prefab":{"prefab_name":"ItemKitReinforcedWindows","prefab_hash":1459985302,"desc":"","name":"Kit (Reinforced Windows)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitResearchMachine":{"prefab":{"prefab_name":"ItemKitResearchMachine","prefab_hash":724776762,"desc":"","name":"Kit Research Machine"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Default"}},"ItemKitRespawnPointWallMounted":{"prefab":{"prefab_name":"ItemKitRespawnPointWallMounted","prefab_hash":1574688481,"desc":"","name":"Kit (Respawn)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitRocketAvionics":{"prefab":{"prefab_name":"ItemKitRocketAvionics","prefab_hash":1396305045,"desc":"","name":"Kit (Avionics)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitRocketBattery":{"prefab":{"prefab_name":"ItemKitRocketBattery","prefab_hash":-314072139,"desc":"","name":"Kit (Rocket Battery)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitRocketCargoStorage":{"prefab":{"prefab_name":"ItemKitRocketCargoStorage","prefab_hash":479850239,"desc":"","name":"Kit (Rocket Cargo Storage)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitRocketCelestialTracker":{"prefab":{"prefab_name":"ItemKitRocketCelestialTracker","prefab_hash":-303008602,"desc":"","name":"Kit (Rocket Celestial Tracker)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitRocketCircuitHousing":{"prefab":{"prefab_name":"ItemKitRocketCircuitHousing","prefab_hash":721251202,"desc":"","name":"Kit (Rocket Circuit Housing)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitRocketDatalink":{"prefab":{"prefab_name":"ItemKitRocketDatalink","prefab_hash":-1256996603,"desc":"","name":"Kit (Rocket Datalink)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitRocketGasFuelTank":{"prefab":{"prefab_name":"ItemKitRocketGasFuelTank","prefab_hash":-1629347579,"desc":"","name":"Kit (Rocket Gas Fuel Tank)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitRocketLiquidFuelTank":{"prefab":{"prefab_name":"ItemKitRocketLiquidFuelTank","prefab_hash":2032027950,"desc":"","name":"Kit (Rocket Liquid Fuel Tank)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitRocketManufactory":{"prefab":{"prefab_name":"ItemKitRocketManufactory","prefab_hash":-636127860,"desc":"","name":"Kit (Rocket Manufactory)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitRocketMiner":{"prefab":{"prefab_name":"ItemKitRocketMiner","prefab_hash":-867969909,"desc":"","name":"Kit (Rocket Miner)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitRocketScanner":{"prefab":{"prefab_name":"ItemKitRocketScanner","prefab_hash":1753647154,"desc":"","name":"Kit (Rocket Scanner)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitRocketTransformerSmall":{"prefab":{"prefab_name":"ItemKitRocketTransformerSmall","prefab_hash":-932335800,"desc":"","name":"Kit (Transformer Small (Rocket))"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitRoverFrame":{"prefab":{"prefab_name":"ItemKitRoverFrame","prefab_hash":1827215803,"desc":"","name":"Kit (Rover Frame)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitRoverMKI":{"prefab":{"prefab_name":"ItemKitRoverMKI","prefab_hash":197243872,"desc":"","name":"Kit (Rover Mk I)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitSDBHopper":{"prefab":{"prefab_name":"ItemKitSDBHopper","prefab_hash":323957548,"desc":"","name":"Kit (SDB Hopper)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitSatelliteDish":{"prefab":{"prefab_name":"ItemKitSatelliteDish","prefab_hash":178422810,"desc":"","name":"Kit (Medium Satellite Dish)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitSecurityPrinter":{"prefab":{"prefab_name":"ItemKitSecurityPrinter","prefab_hash":578078533,"desc":"","name":"Kit (Security Printer)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitSensor":{"prefab":{"prefab_name":"ItemKitSensor","prefab_hash":-1776897113,"desc":"","name":"Kit (Sensors)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitShower":{"prefab":{"prefab_name":"ItemKitShower","prefab_hash":735858725,"desc":"","name":"Kit (Shower)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitSign":{"prefab":{"prefab_name":"ItemKitSign","prefab_hash":529996327,"desc":"","name":"Kit (Sign)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitSleeper":{"prefab":{"prefab_name":"ItemKitSleeper","prefab_hash":326752036,"desc":"","name":"Kit (Sleeper)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitSmallDirectHeatExchanger":{"prefab":{"prefab_name":"ItemKitSmallDirectHeatExchanger","prefab_hash":-1332682164,"desc":"","name":"Kit (Small Direct Heat Exchanger)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Default"}},"ItemKitSmallSatelliteDish":{"prefab":{"prefab_name":"ItemKitSmallSatelliteDish","prefab_hash":1960952220,"desc":"","name":"Kit (Small Satellite Dish)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitSolarPanel":{"prefab":{"prefab_name":"ItemKitSolarPanel","prefab_hash":-1924492105,"desc":"","name":"Kit (Solar Panel)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitSolarPanelBasic":{"prefab":{"prefab_name":"ItemKitSolarPanelBasic","prefab_hash":844961456,"desc":"","name":"Kit (Solar Panel Basic)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Default"}},"ItemKitSolarPanelBasicReinforced":{"prefab":{"prefab_name":"ItemKitSolarPanelBasicReinforced","prefab_hash":-528695432,"desc":"","name":"Kit (Solar Panel Basic Heavy)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Default"}},"ItemKitSolarPanelReinforced":{"prefab":{"prefab_name":"ItemKitSolarPanelReinforced","prefab_hash":-364868685,"desc":"","name":"Kit (Solar Panel Heavy)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitSolidGenerator":{"prefab":{"prefab_name":"ItemKitSolidGenerator","prefab_hash":1293995736,"desc":"","name":"Kit (Solid Generator)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitSorter":{"prefab":{"prefab_name":"ItemKitSorter","prefab_hash":969522478,"desc":"","name":"Kit (Sorter)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitSpeaker":{"prefab":{"prefab_name":"ItemKitSpeaker","prefab_hash":-126038526,"desc":"","name":"Kit (Speaker)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitStacker":{"prefab":{"prefab_name":"ItemKitStacker","prefab_hash":1013244511,"desc":"","name":"Kit (Stacker)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitStairs":{"prefab":{"prefab_name":"ItemKitStairs","prefab_hash":170878959,"desc":"","name":"Kit (Stairs)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitStairwell":{"prefab":{"prefab_name":"ItemKitStairwell","prefab_hash":-1868555784,"desc":"","name":"Kit (Stairwell)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitStandardChute":{"prefab":{"prefab_name":"ItemKitStandardChute","prefab_hash":2133035682,"desc":"","name":"Kit (Powered Chutes)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitStirlingEngine":{"prefab":{"prefab_name":"ItemKitStirlingEngine","prefab_hash":-1821571150,"desc":"","name":"Kit (Stirling Engine)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitSuitStorage":{"prefab":{"prefab_name":"ItemKitSuitStorage","prefab_hash":1088892825,"desc":"","name":"Kit (Suit Storage)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitTables":{"prefab":{"prefab_name":"ItemKitTables","prefab_hash":-1361598922,"desc":"","name":"Kit (Tables)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitTank":{"prefab":{"prefab_name":"ItemKitTank","prefab_hash":771439840,"desc":"","name":"Kit (Tank)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitTankInsulated":{"prefab":{"prefab_name":"ItemKitTankInsulated","prefab_hash":1021053608,"desc":"","name":"Kit (Tank Insulated)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Default"}},"ItemKitToolManufactory":{"prefab":{"prefab_name":"ItemKitToolManufactory","prefab_hash":529137748,"desc":"","name":"Kit (Tool Manufactory)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitTransformer":{"prefab":{"prefab_name":"ItemKitTransformer","prefab_hash":-453039435,"desc":"","name":"Kit (Transformer Large)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitTransformerSmall":{"prefab":{"prefab_name":"ItemKitTransformerSmall","prefab_hash":665194284,"desc":"","name":"Kit (Transformer Small)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitTurbineGenerator":{"prefab":{"prefab_name":"ItemKitTurbineGenerator","prefab_hash":-1590715731,"desc":"","name":"Kit (Turbine Generator)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitTurboVolumePump":{"prefab":{"prefab_name":"ItemKitTurboVolumePump","prefab_hash":-1248429712,"desc":"","name":"Kit (Turbo Volume Pump - Gas)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Default"}},"ItemKitUprightWindTurbine":{"prefab":{"prefab_name":"ItemKitUprightWindTurbine","prefab_hash":-1798044015,"desc":"","name":"Kit (Upright Wind Turbine)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Default"}},"ItemKitVendingMachine":{"prefab":{"prefab_name":"ItemKitVendingMachine","prefab_hash":-2038384332,"desc":"","name":"Kit (Vending Machine)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitVendingMachineRefrigerated":{"prefab":{"prefab_name":"ItemKitVendingMachineRefrigerated","prefab_hash":-1867508561,"desc":"","name":"Kit (Vending Machine Refrigerated)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitWall":{"prefab":{"prefab_name":"ItemKitWall","prefab_hash":-1826855889,"desc":"","name":"Kit (Wall)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":30,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitWallArch":{"prefab":{"prefab_name":"ItemKitWallArch","prefab_hash":1625214531,"desc":"","name":"Kit (Arched Wall)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":30,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitWallFlat":{"prefab":{"prefab_name":"ItemKitWallFlat","prefab_hash":-846838195,"desc":"","name":"Kit (Flat Wall)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":30,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitWallGeometry":{"prefab":{"prefab_name":"ItemKitWallGeometry","prefab_hash":-784733231,"desc":"","name":"Kit (Geometric Wall)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":30,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitWallIron":{"prefab":{"prefab_name":"ItemKitWallIron","prefab_hash":-524546923,"desc":"","name":"Kit (Iron Wall)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":30,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitWallPadded":{"prefab":{"prefab_name":"ItemKitWallPadded","prefab_hash":-821868990,"desc":"","name":"Kit (Padded Wall)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":30,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitWaterBottleFiller":{"prefab":{"prefab_name":"ItemKitWaterBottleFiller","prefab_hash":159886536,"desc":"","name":"Kit (Water Bottle Filler)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitWaterPurifier":{"prefab":{"prefab_name":"ItemKitWaterPurifier","prefab_hash":611181283,"desc":"","name":"Kit (Water Purifier)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitWeatherStation":{"prefab":{"prefab_name":"ItemKitWeatherStation","prefab_hash":337505889,"desc":"","name":"Kit (Weather Station)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Default"}},"ItemKitWindTurbine":{"prefab":{"prefab_name":"ItemKitWindTurbine","prefab_hash":-868916503,"desc":"","name":"Kit (Wind Turbine)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemKitWindowShutter":{"prefab":{"prefab_name":"ItemKitWindowShutter","prefab_hash":1779979754,"desc":"","name":"Kit (Window Shutter)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemLabeller":{"prefab":{"prefab_name":"ItemLabeller","prefab_hash":-743968726,"desc":"A labeller lets you set names and values on a variety of devices and structures, including Console and Logic.","name":"Labeller"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Tool","sorting_class":"Tools"},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Error":"Read","On":"ReadWrite","ReferenceId":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"ItemLaptop":{"prefab":{"prefab_name":"ItemLaptop","prefab_hash":141535121,"desc":"The Laptop functions as a portable IC editor. To operate the Laptop it must be powered with a battery, have a IC Editor Motherboard in the motherboard slot, and an Integrated Circuit (IC10) in the Programmable Chip Slot.\n\nYou must place the laptop down to interact with the onsreen UI.\n \nConnects to Logic Transmitter","name":"Laptop"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Tool","sorting_class":"Tools"},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"2":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Error":"Read","PressureExternal":"Read","On":"ReadWrite","TemperatureExternal":"Read","PositionX":"Read","PositionY":"Read","PositionZ":"Read","ReferenceId":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":true,"circuit_holder":true},"slots":[{"name":"Programmable Chip","typ":"ProgrammableChip"},{"name":"Battery","typ":"Battery"},{"name":"Motherboard","typ":"Motherboard"}]},"ItemLeadIngot":{"prefab":{"prefab_name":"ItemLeadIngot","prefab_hash":2134647745,"desc":"","name":"Ingot (Lead)"},"item":{"consumable":true,"filter_type":null,"ingredient":true,"max_quantity":500,"reagents":{"Lead":1.0},"slot_class":"Ingot","sorting_class":"Resources"}},"ItemLeadOre":{"prefab":{"prefab_name":"ItemLeadOre","prefab_hash":-190236170,"desc":"Lead is a chemical element with the symbol \"Pb\". It is a dense, heavy metal with a low melting point. Lead is a used to make a variety of things such as alloys like Ingot (Solder) and munitions.","name":"Ore (Lead)"},"item":{"consumable":false,"filter_type":null,"ingredient":true,"max_quantity":50,"reagents":{"Lead":1.0},"slot_class":"Ore","sorting_class":"Ores"}},"ItemLightSword":{"prefab":{"prefab_name":"ItemLightSword","prefab_hash":1949076595,"desc":"A charming, if useless, pseudo-weapon. (Creative only.)","name":"Light Sword"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Default"}},"ItemLiquidCanisterEmpty":{"prefab":{"prefab_name":"ItemLiquidCanisterEmpty","prefab_hash":-185207387,"desc":"","name":"Liquid Canister"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"LiquidCanister","sorting_class":"Atmospherics"}},"ItemLiquidCanisterSmart":{"prefab":{"prefab_name":"ItemLiquidCanisterSmart","prefab_hash":777684475,"desc":"0.Mode0\n1.Mode1","name":"Liquid Canister (Smart)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"LiquidCanister","sorting_class":"Atmospherics"}},"ItemLiquidDrain":{"prefab":{"prefab_name":"ItemLiquidDrain","prefab_hash":2036225202,"desc":"","name":"Kit (Liquid Drain)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemLiquidPipeAnalyzer":{"prefab":{"prefab_name":"ItemLiquidPipeAnalyzer","prefab_hash":226055671,"desc":"","name":"Kit (Liquid Pipe Analyzer)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemLiquidPipeHeater":{"prefab":{"prefab_name":"ItemLiquidPipeHeater","prefab_hash":-248475032,"desc":"Creates a Pipe Heater (Liquid).","name":"Pipe Heater Kit (Liquid)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Default"}},"ItemLiquidPipeValve":{"prefab":{"prefab_name":"ItemLiquidPipeValve","prefab_hash":-2126113312,"desc":"This kit creates a Liquid Valve.","name":"Kit (Liquid Pipe Valve)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Default"}},"ItemLiquidPipeVolumePump":{"prefab":{"prefab_name":"ItemLiquidPipeVolumePump","prefab_hash":-2106280569,"desc":"","name":"Kit (Liquid Volume Pump)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemLiquidTankStorage":{"prefab":{"prefab_name":"ItemLiquidTankStorage","prefab_hash":2037427578,"desc":"This kit produces a Kit (Liquid Canister Storage) for refilling a Liquid Canister.","name":"Kit (Liquid Canister Storage)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemMKIIAngleGrinder":{"prefab":{"prefab_name":"ItemMKIIAngleGrinder","prefab_hash":240174650,"desc":"Angles-be-gone with the trusty angle grinder. The MK II is more resistant to temperature and pressure.","name":"Mk II Angle Grinder"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Tool","sorting_class":"Tools"},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Activate":"ReadWrite","ReferenceId":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"ItemMKIIArcWelder":{"prefab":{"prefab_name":"ItemMKIIArcWelder","prefab_hash":-2061979347,"desc":"","name":"Mk II Arc Welder"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Tool","sorting_class":"Tools"},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Activate":"ReadWrite","ReferenceId":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"ItemMKIICrowbar":{"prefab":{"prefab_name":"ItemMKIICrowbar","prefab_hash":1440775434,"desc":"Recurso's entry-level crowbar is useful in a variety of everyday Stationeer settings, from opening Area Power Controls and unpowered Airlocks, to splatting pan-dimensional headcrabs, should the need arise. The MK II is more resistant to temperature and pressure.","name":"Mk II Crowbar"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Tool","sorting_class":"Tools"}},"ItemMKIIDrill":{"prefab":{"prefab_name":"ItemMKIIDrill","prefab_hash":324791548,"desc":"The ExMin Off-whirled Hand Drill has been a companion to Stationeers for decades. Essential for assembling and deconstructing various items and structures, regardless of gravity, pressure or temperature.","name":"Mk II Drill"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Tool","sorting_class":"Tools"},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Activate":"ReadWrite","ReferenceId":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"ItemMKIIDuctTape":{"prefab":{"prefab_name":"ItemMKIIDuctTape","prefab_hash":388774906,"desc":"In the distant past, one of Earth's great champions taught a generation of 'Fix-It People' that duct tape was the answer to any problem. Stationeers have demonstrated that this is truth holds strong, so long as the problem is a damaged Eva Suit, Jetpack Basic, Space Helmet, or even a Solar Panel.\nTo use on yourself: put duct tape in your active hand, hold RIGHT MOUSE BUTTON to automatically repair damage.","name":"Mk II Duct Tape"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Tool","sorting_class":"Tools"}},"ItemMKIIMiningDrill":{"prefab":{"prefab_name":"ItemMKIIMiningDrill","prefab_hash":-1875271296,"desc":"The handheld 'Topo' tri-cone rotary mining drill was made for one thing: quick digging. Modeled on a classic Recurso zero-g design, it functions equally well in vacuum and atmosphere, with cemented carbide bits to increase resilience and bearing life, and reduce spalling. As Jenk Murtons once said, 'The Topo don't stopo.' The MK II is more resistant to temperature and pressure.","name":"Mk II Mining Drill"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Tool","sorting_class":"Tools"},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Mode":"ReadWrite","Error":"Read","Activate":"ReadWrite","On":"ReadWrite","ReferenceId":"Read"},"modes":{"0":"Default","1":"Flatten"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"ItemMKIIScrewdriver":{"prefab":{"prefab_name":"ItemMKIIScrewdriver","prefab_hash":-2015613246,"desc":"This standard issue frictional adherence adjustor is a top of the line, bi-rotational model with a columnated uni-grip. It's definitely not just a screwdriver. Use it for construction and deconstruction of certain kits, and setting values on logic units. The MK II is more resistant to temperature and pressure.","name":"Mk II Screwdriver"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Tool","sorting_class":"Tools"}},"ItemMKIIWireCutters":{"prefab":{"prefab_name":"ItemMKIIWireCutters","prefab_hash":-178893251,"desc":"Wirecutters allow you to deconstruct various structures, as well as cross-lay cables when held in your non-active hand, and defuse explosives as needed. Wirecutters are stored in the Tool Belt, along with other essential tools.","name":"Mk II Wire Cutters"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Tool","sorting_class":"Tools"}},"ItemMKIIWrench":{"prefab":{"prefab_name":"ItemMKIIWrench","prefab_hash":1862001680,"desc":"One of humanity's enduring contributions to the cosmos, the wrench represents the essence of our species. A simple, effective and spiritually barren tool, use it to build and deconstruct a variety of structures The MK II is more resistant to temperature and pressure.","name":"Mk II Wrench"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Tool","sorting_class":"Tools"}},"ItemMarineBodyArmor":{"prefab":{"prefab_name":"ItemMarineBodyArmor","prefab_hash":1399098998,"desc":"","name":"Marine Armor"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Suit","sorting_class":"Clothing"},"slots":[{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"}]},"ItemMarineHelmet":{"prefab":{"prefab_name":"ItemMarineHelmet","prefab_hash":1073631646,"desc":"","name":"Marine Helmet"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Helmet","sorting_class":"Clothing"},"slots":[{"name":"Battery","typ":"Battery"}]},"ItemMilk":{"prefab":{"prefab_name":"ItemMilk","prefab_hash":1327248310,"desc":"Full disclosure, it's not actually 'milk', but an Agrizero-invented synthesis of 5ml Soy Oil and 5g Fern, delicately blended in the Chemistry Station. Surprisingly filling, it can be used as an ingredient to cook other food in the Microwave or Automated Oven. Think, Muffin.","name":"Milk"},"item":{"consumable":true,"filter_type":null,"ingredient":true,"max_quantity":100,"reagents":{"Milk":1.0},"slot_class":"None","sorting_class":"Resources"}},"ItemMiningBackPack":{"prefab":{"prefab_name":"ItemMiningBackPack","prefab_hash":-1650383245,"desc":"","name":"Mining Backpack"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Back","sorting_class":"Clothing"},"slots":[{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"}]},"ItemMiningBelt":{"prefab":{"prefab_name":"ItemMiningBelt","prefab_hash":-676435305,"desc":"Originally developed by Recurso Espaciais for asteroid mining, the Stationeer's mining belt has room for two tools and eight ore stacks. While wearing the belt, ore is automatically stored there when mined. Volatile and temperature-dependent remain stable in the environmentally controlled unit.","name":"Mining Belt"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Belt","sorting_class":"Clothing"},"slots":[{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"}]},"ItemMiningBeltMKII":{"prefab":{"prefab_name":"ItemMiningBeltMKII","prefab_hash":1470787934,"desc":"A larger and more capacious mining belt, the Mk II is similar to the Mining Belt, but has 13 slots instead of the basic 8, to increase the length of your mining trips. It also has space for two tools. ","name":"Mining Belt MK II"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Belt","sorting_class":"Clothing"},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"2":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"3":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"4":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"5":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"6":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"7":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"8":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"9":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"10":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"11":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"12":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"13":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"14":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"}},"logic_types":{"ReferenceId":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"}]},"ItemMiningCharge":{"prefab":{"prefab_name":"ItemMiningCharge","prefab_hash":15829510,"desc":"A low cost, high yield explosive with a 10 second timer.","name":"Mining Charge"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Default"}},"ItemMiningDrill":{"prefab":{"prefab_name":"ItemMiningDrill","prefab_hash":1055173191,"desc":"The handheld 'Topo' tri-cone rotary mining drill was made for one thing: quick digging. Modeled on a classic Recurso zero-g design, it functions equally well in vacuum and atmosphere, with cemented carbide bits to increase resilience and bearing life, and reduce spalling. As Jenk Murtons once said, 'The Topo don't stopo.'","name":"Mining Drill"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Tool","sorting_class":"Tools"},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Mode":"ReadWrite","Error":"Read","Activate":"ReadWrite","On":"ReadWrite","ReferenceId":"Read"},"modes":{"0":"Default","1":"Flatten"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"ItemMiningDrillHeavy":{"prefab":{"prefab_name":"ItemMiningDrillHeavy","prefab_hash":-1663349918,"desc":"Sometimes mining trips require something a little bigger to bring home the goods. This scaled up version of the Recurso 'Topo' design Mining Drill can literally move mountains. The heavy mining drill will remove more ground and mine ore more quickly than the standard mining drill. The heavy mining drill is also resilient to temperature and pressure. So no matter what planet or extreme weather conditions may be present, the Recurso heavy mining drill will get the job done.","name":"Mining Drill (Heavy)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Tool","sorting_class":"Tools"},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Mode":"ReadWrite","Error":"Read","Activate":"ReadWrite","On":"ReadWrite","ReferenceId":"Read"},"modes":{"0":"Default","1":"Flatten"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"ItemMiningDrillPneumatic":{"prefab":{"prefab_name":"ItemMiningDrillPneumatic","prefab_hash":1258187304,"desc":"0.Default\n1.Flatten","name":"Pneumatic Mining Drill"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Tool","sorting_class":"Tools"},"slots":[{"name":"Gas Canister","typ":"GasCanister"}]},"ItemMkIIToolbelt":{"prefab":{"prefab_name":"ItemMkIIToolbelt","prefab_hash":1467558064,"desc":"A large, ten-slot tool belt with two extra generic slots for carrying whatever takes your fancy.","name":"Tool Belt MK II"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Belt","sorting_class":"Clothing"},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"2":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"3":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"4":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"5":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"6":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"7":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"8":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"9":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"10":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"11":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"}},"logic_types":{"ReferenceId":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"","typ":"None"},{"name":"","typ":"None"}]},"ItemMuffin":{"prefab":{"prefab_name":"ItemMuffin","prefab_hash":-1864982322,"desc":"A delicious, semi-healthful snack, nothing comforts a Stationeer 800 million kilometers from home like a hand-made muffin.","name":"Muffin"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Food"}},"ItemMushroom":{"prefab":{"prefab_name":"ItemMushroom","prefab_hash":2044798572,"desc":"A tasty food item. Unlike normal plants, it consumes Oxygen and outputs Carbon Dioxide. Mushrooms will only mature at a moderate rate in darkness, and prolonged light will kill it.","name":"Mushroom"},"item":{"consumable":false,"filter_type":null,"ingredient":true,"max_quantity":20,"reagents":{"Mushroom":1.0},"slot_class":"Plant","sorting_class":"Resources"}},"ItemNVG":{"prefab":{"prefab_name":"ItemNVG","prefab_hash":982514123,"desc":"","name":"Night Vision Goggles"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Glasses","sorting_class":"Clothing"},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Lock":"ReadWrite","On":"ReadWrite","ReferenceId":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"ItemNickelIngot":{"prefab":{"prefab_name":"ItemNickelIngot","prefab_hash":-1406385572,"desc":"","name":"Ingot (Nickel)"},"item":{"consumable":true,"filter_type":null,"ingredient":true,"max_quantity":500,"reagents":{"Nickel":1.0},"slot_class":"Ingot","sorting_class":"Resources"}},"ItemNickelOre":{"prefab":{"prefab_name":"ItemNickelOre","prefab_hash":1830218956,"desc":"Nickel is a chemical element with the symbol \"Ni\" and is a rare metal commonly used as a plating to prevent corrosion. Sought after by many Stationeers, Nickel is also commonly used to create several alloys.","name":"Ore (Nickel)"},"item":{"consumable":false,"filter_type":null,"ingredient":true,"max_quantity":50,"reagents":{"Nickel":1.0},"slot_class":"Ore","sorting_class":"Ores"}},"ItemNitrice":{"prefab":{"prefab_name":"ItemNitrice","prefab_hash":-1499471529,"desc":"Nitrice is the nickname given to solid Nitrogen Ice, and found on many planets and moons in the Solar System. Given the inert nature of the Nitrogen it produces, the ice is useful when making breathable atmospheres with low flammability.\n\nHighly sensitive to temperature, nitrice will begin to melt as soon as it is mined, unless the temperature is below zero, or it is stored in the Mining Belt, Mining Belt MK II or devices like the Ice Crusher or Fridge Small.","name":"Ice (Nitrice)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":50,"reagents":null,"slot_class":"Ore","sorting_class":"Ices"}},"ItemOxite":{"prefab":{"prefab_name":"ItemOxite","prefab_hash":-1805394113,"desc":"Oxite ice is largely composed of frozen Oxygen, and found on many planets in the Solar System. Highly valuable and sought after, not all planets a Stationeer visits will have some. \n\nHighly sensitive to temperature, oxite will begin to melt as soon as it is mined, unless the temperature is below zero, or it is stored in the Mining Belt, Mining Belt MK II or devices like the Ice Crusher or Fridge Small. When melting, oxite produces a mixture of Oxygen and Nitrogen.","name":"Ice (Oxite)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":50,"reagents":null,"slot_class":"Ore","sorting_class":"Ices"}},"ItemPassiveVent":{"prefab":{"prefab_name":"ItemPassiveVent","prefab_hash":238631271,"desc":"This kit creates a Passive Vent among other variants.","name":"Passive Vent"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemPassiveVentInsulated":{"prefab":{"prefab_name":"ItemPassiveVentInsulated","prefab_hash":-1397583760,"desc":"","name":"Kit (Insulated Passive Vent)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemPeaceLily":{"prefab":{"prefab_name":"ItemPeaceLily","prefab_hash":2042955224,"desc":"A fetching lily with greater resistance to cold temperatures.","name":"Peace Lily"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"Plant","sorting_class":"Resources"}},"ItemPickaxe":{"prefab":{"prefab_name":"ItemPickaxe","prefab_hash":-913649823,"desc":"When the sun sets and the Mining Drill runs dead, its batteries drained and your Solar Panel cold and lifeless, the Autolathe empty, the way forward unclear, one thing holds back the endless night of defeat: the trusty pickaxe.","name":"Pickaxe"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Tool","sorting_class":"Tools"}},"ItemPillHeal":{"prefab":{"prefab_name":"ItemPillHeal","prefab_hash":1118069417,"desc":"Three centuries of pharmaceutical technology compressed into one small, easy to ingest pill: the Heal Pill, aka the Proton Pill, aka Mr Happy contains active enzymes, therapeutic proteins, modified microbial strains, and mammalian cell line analogues in a single-dose boost of high purity, efficacy, and potency that potentiates a swift parasympathetic immune response.","name":"Pill (Medical)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Food"}},"ItemPillStun":{"prefab":{"prefab_name":"ItemPillStun","prefab_hash":418958601,"desc":"Through rarely publicized, the existence of this pill is an open secret. For use when all else has failed, the Sayonara Suppository immobilizes and rapidly ends the average Stationeer. The delivery mode ensures that if a Stationeer chooses to take this pill, they really have to want it.","name":"Pill (Paralysis)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Food"}},"ItemPipeAnalyizer":{"prefab":{"prefab_name":"ItemPipeAnalyizer","prefab_hash":-767597887,"desc":"This kit creates a Pipe Analyzer.","name":"Kit (Pipe Analyzer)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemPipeCowl":{"prefab":{"prefab_name":"ItemPipeCowl","prefab_hash":-38898376,"desc":"This creates a Pipe Cowl that can be placed on the end of pipes to expose them to the world atmospheres.","name":"Pipe Cowl"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":20,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemPipeDigitalValve":{"prefab":{"prefab_name":"ItemPipeDigitalValve","prefab_hash":-1532448832,"desc":"This kit creates a Digital Valve.","name":"Kit (Digital Valve)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemPipeGasMixer":{"prefab":{"prefab_name":"ItemPipeGasMixer","prefab_hash":-1134459463,"desc":"This kit creates a Gas Mixer.","name":"Kit (Gas Mixer)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemPipeHeater":{"prefab":{"prefab_name":"ItemPipeHeater","prefab_hash":-1751627006,"desc":"Creates a Pipe Heater (Gas).","name":"Pipe Heater Kit (Gas)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Default"}},"ItemPipeIgniter":{"prefab":{"prefab_name":"ItemPipeIgniter","prefab_hash":1366030599,"desc":"","name":"Kit (Pipe Igniter)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemPipeLabel":{"prefab":{"prefab_name":"ItemPipeLabel","prefab_hash":391769637,"desc":"This kit creates a Pipe Label.","name":"Kit (Pipe Label)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":20,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemPipeLiquidRadiator":{"prefab":{"prefab_name":"ItemPipeLiquidRadiator","prefab_hash":-906521320,"desc":"This kit creates a Liquid Pipe Convection Radiator.","name":"Kit (Liquid Radiator)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemPipeMeter":{"prefab":{"prefab_name":"ItemPipeMeter","prefab_hash":1207939683,"desc":"This kit creates a Pipe Meter.","name":"Kit (Pipe Meter)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemPipeRadiator":{"prefab":{"prefab_name":"ItemPipeRadiator","prefab_hash":-1796655088,"desc":"This kit creates a Pipe Convection Radiator.","name":"Kit (Radiator)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemPipeValve":{"prefab":{"prefab_name":"ItemPipeValve","prefab_hash":799323450,"desc":"This kit creates a Valve.","name":"Kit (Pipe Valve)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Default"}},"ItemPipeVolumePump":{"prefab":{"prefab_name":"ItemPipeVolumePump","prefab_hash":-1766301997,"desc":"This kit creates a Volume Pump.","name":"Kit (Volume Pump)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemPlainCake":{"prefab":{"prefab_name":"ItemPlainCake","prefab_hash":-1108244510,"desc":"","name":"Cake"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Food"}},"ItemPlantEndothermic_Creative":{"prefab":{"prefab_name":"ItemPlantEndothermic_Creative","prefab_hash":-1159179557,"desc":"","name":"Endothermic Plant Creative"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"Plant","sorting_class":"Resources"}},"ItemPlantEndothermic_Genepool1":{"prefab":{"prefab_name":"ItemPlantEndothermic_Genepool1","prefab_hash":851290561,"desc":"Agrizero's Winterspawn atmospheric bio-processor is a recent addition to their catalog of genespliced environmental decorations. Using ambient heat to split Water into Volatiles and Oxygen, the Winterspawn cools its surroundings, when supplied with sufficient Nitrogen. The alpha variant has a peak cooling and electrolysis capacity of 90Watts and is most efficient operating in air temperatures of 0 to 40 Degrees Celsius.","name":"Winterspawn (Alpha variant)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"Plant","sorting_class":"Resources"}},"ItemPlantEndothermic_Genepool2":{"prefab":{"prefab_name":"ItemPlantEndothermic_Genepool2","prefab_hash":-1414203269,"desc":"Agrizero's Winterspawn atmospheric bio-processor is a recent addition to their catalog of genespliced environmental decorations. Using ambient heat to split Water into Volatiles and Oxygen, the Winterspawn cools its surroundings when supplied with sufficient Nitrogen. The beta variant has a peak cooling and electrolysis capacity of 150Watts and is most efficient operating in air temperatures of 14 to 24 Degrees Celsius.","name":"Winterspawn (Beta variant)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"Plant","sorting_class":"Resources"}},"ItemPlantSampler":{"prefab":{"prefab_name":"ItemPlantSampler","prefab_hash":173023800,"desc":"The Plant Sampler allows you to take a gene sample of a growing plant. The sampler can then be placed in the Plant Genetic Analyzer to attain and interpret the results.","name":"Plant Sampler"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Tool","sorting_class":"Tools"},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Mode":"ReadWrite","Activate":"ReadWrite","On":"ReadWrite","ReferenceId":"Read"},"modes":{"0":"Mode0","1":"Mode1"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"ItemPlantSwitchGrass":{"prefab":{"prefab_name":"ItemPlantSwitchGrass","prefab_hash":-532672323,"desc":"","name":"Switch Grass"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"Plant","sorting_class":"Default"}},"ItemPlantThermogenic_Creative":{"prefab":{"prefab_name":"ItemPlantThermogenic_Creative","prefab_hash":-1208890208,"desc":"","name":"Thermogenic Plant Creative"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"Plant","sorting_class":"Resources"}},"ItemPlantThermogenic_Genepool1":{"prefab":{"prefab_name":"ItemPlantThermogenic_Genepool1","prefab_hash":-177792789,"desc":"The Agrizero's-created Hades Flower is the result of as dubious experiment to combine the allure of tropical plants with the comfort and homeliness of a heat pump. The plant breathes a 1:3 mix of Volatiles and Oxygen, and exhales heated Pollutant.","name":"Hades Flower (Alpha strain)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"Plant","sorting_class":"Resources"}},"ItemPlantThermogenic_Genepool2":{"prefab":{"prefab_name":"ItemPlantThermogenic_Genepool2","prefab_hash":1819167057,"desc":"The Agrizero's-created Hades Flower is the result of as dubious experiment to combine the allure of tropical plants with the comfort and homeliness of a heat pump. The plant breathes a 1:3 mix of Volatiles and Oxygen, and exhales heated Pollutant. The beta strain is notably more efficient than the earlier, more experimental alpha variant.","name":"Hades Flower (Beta strain)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"Plant","sorting_class":"Resources"}},"ItemPlasticSheets":{"prefab":{"prefab_name":"ItemPlasticSheets","prefab_hash":662053345,"desc":"","name":"Plastic Sheets"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":50,"reagents":null,"slot_class":"None","sorting_class":"Resources"}},"ItemPotato":{"prefab":{"prefab_name":"ItemPotato","prefab_hash":1929046963,"desc":" Potatoes are a simple, fast growing crop that can keep Stationeers alive in emergencies.","name":"Potato"},"item":{"consumable":false,"filter_type":null,"ingredient":true,"max_quantity":20,"reagents":{"Potato":1.0},"slot_class":"Plant","sorting_class":"Resources"}},"ItemPotatoBaked":{"prefab":{"prefab_name":"ItemPotatoBaked","prefab_hash":-2111886401,"desc":"","name":"Baked Potato"},"item":{"consumable":true,"filter_type":null,"ingredient":true,"max_quantity":1,"reagents":{"Potato":1.0},"slot_class":"None","sorting_class":"Food"}},"ItemPowerConnector":{"prefab":{"prefab_name":"ItemPowerConnector","prefab_hash":839924019,"desc":"This kit creates a Power Connector.","name":"Kit (Power Connector)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemPumpkin":{"prefab":{"prefab_name":"ItemPumpkin","prefab_hash":1277828144,"desc":"Pumpkins are a perennial plant, with both a long growth time, and a long time between harvests. Its low requirement for darkness allows for accelerated growing if provided with extra light.","name":"Pumpkin"},"item":{"consumable":false,"filter_type":null,"ingredient":true,"max_quantity":20,"reagents":{"Pumpkin":1.0},"slot_class":"Plant","sorting_class":"Resources"}},"ItemPumpkinPie":{"prefab":{"prefab_name":"ItemPumpkinPie","prefab_hash":62768076,"desc":"","name":"Pumpkin Pie"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Food"}},"ItemPumpkinSoup":{"prefab":{"prefab_name":"ItemPumpkinSoup","prefab_hash":1277979876,"desc":"Made using Cooked Pumpkin and an Empty Can in a Basic Packaging Machine or Advanced Packaging Machine. Fairly high in nutrition, canned food does not decay","name":"Pumpkin Soup"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Food"}},"ItemPureIce":{"prefab":{"prefab_name":"ItemPureIce","prefab_hash":-1616308158,"desc":"A frozen chunk of pure Water","name":"Pure Ice Water"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":50,"reagents":null,"slot_class":"Ore","sorting_class":"Ices"}},"ItemPureIceCarbonDioxide":{"prefab":{"prefab_name":"ItemPureIceCarbonDioxide","prefab_hash":-1251009404,"desc":"A frozen chunk of pure Carbon Dioxide","name":"Pure Ice Carbon Dioxide"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":50,"reagents":null,"slot_class":"Ore","sorting_class":"Ices"}},"ItemPureIceHydrogen":{"prefab":{"prefab_name":"ItemPureIceHydrogen","prefab_hash":944530361,"desc":"A frozen chunk of pure Hydrogen","name":"Pure Ice Hydrogen"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":50,"reagents":null,"slot_class":"Ore","sorting_class":"Ices"}},"ItemPureIceLiquidCarbonDioxide":{"prefab":{"prefab_name":"ItemPureIceLiquidCarbonDioxide","prefab_hash":-1715945725,"desc":"A frozen chunk of pure Liquid Carbon Dioxide","name":"Pure Ice Liquid Carbon Dioxide"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":50,"reagents":null,"slot_class":"Ore","sorting_class":"Ices"}},"ItemPureIceLiquidHydrogen":{"prefab":{"prefab_name":"ItemPureIceLiquidHydrogen","prefab_hash":-1044933269,"desc":"A frozen chunk of pure Liquid Hydrogen","name":"Pure Ice Liquid Hydrogen"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":50,"reagents":null,"slot_class":"Ore","sorting_class":"Ices"}},"ItemPureIceLiquidNitrogen":{"prefab":{"prefab_name":"ItemPureIceLiquidNitrogen","prefab_hash":1674576569,"desc":"A frozen chunk of pure Liquid Nitrogen","name":"Pure Ice Liquid Nitrogen"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":50,"reagents":null,"slot_class":"Ore","sorting_class":"Ices"}},"ItemPureIceLiquidNitrous":{"prefab":{"prefab_name":"ItemPureIceLiquidNitrous","prefab_hash":1428477399,"desc":"A frozen chunk of pure Liquid Nitrous Oxide","name":"Pure Ice Liquid Nitrous"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":50,"reagents":null,"slot_class":"Ore","sorting_class":"Ices"}},"ItemPureIceLiquidOxygen":{"prefab":{"prefab_name":"ItemPureIceLiquidOxygen","prefab_hash":541621589,"desc":"A frozen chunk of pure Liquid Oxygen","name":"Pure Ice Liquid Oxygen"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":50,"reagents":null,"slot_class":"Ore","sorting_class":"Ices"}},"ItemPureIceLiquidPollutant":{"prefab":{"prefab_name":"ItemPureIceLiquidPollutant","prefab_hash":-1748926678,"desc":"A frozen chunk of pure Liquid Pollutant","name":"Pure Ice Liquid Pollutant"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":50,"reagents":null,"slot_class":"Ore","sorting_class":"Ices"}},"ItemPureIceLiquidVolatiles":{"prefab":{"prefab_name":"ItemPureIceLiquidVolatiles","prefab_hash":-1306628937,"desc":"A frozen chunk of pure Liquid Volatiles","name":"Pure Ice Liquid Volatiles"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":50,"reagents":null,"slot_class":"Ore","sorting_class":"Ices"}},"ItemPureIceNitrogen":{"prefab":{"prefab_name":"ItemPureIceNitrogen","prefab_hash":-1708395413,"desc":"A frozen chunk of pure Nitrogen","name":"Pure Ice Nitrogen"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":50,"reagents":null,"slot_class":"Ore","sorting_class":"Ices"}},"ItemPureIceNitrous":{"prefab":{"prefab_name":"ItemPureIceNitrous","prefab_hash":386754635,"desc":"A frozen chunk of pure Nitrous Oxide","name":"Pure Ice NitrousOxide"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":50,"reagents":null,"slot_class":"Ore","sorting_class":"Ices"}},"ItemPureIceOxygen":{"prefab":{"prefab_name":"ItemPureIceOxygen","prefab_hash":-1150448260,"desc":"A frozen chunk of pure Oxygen","name":"Pure Ice Oxygen"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":50,"reagents":null,"slot_class":"Ore","sorting_class":"Ices"}},"ItemPureIcePollutant":{"prefab":{"prefab_name":"ItemPureIcePollutant","prefab_hash":-1755356,"desc":"A frozen chunk of pure Pollutant","name":"Pure Ice Pollutant"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":50,"reagents":null,"slot_class":"Ore","sorting_class":"Ices"}},"ItemPureIcePollutedWater":{"prefab":{"prefab_name":"ItemPureIcePollutedWater","prefab_hash":-2073202179,"desc":"A frozen chunk of Polluted Water","name":"Pure Ice Polluted Water"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":50,"reagents":null,"slot_class":"Ore","sorting_class":"Ices"}},"ItemPureIceSteam":{"prefab":{"prefab_name":"ItemPureIceSteam","prefab_hash":-874791066,"desc":"A frozen chunk of pure Steam","name":"Pure Ice Steam"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":50,"reagents":null,"slot_class":"Ore","sorting_class":"Ices"}},"ItemPureIceVolatiles":{"prefab":{"prefab_name":"ItemPureIceVolatiles","prefab_hash":-633723719,"desc":"A frozen chunk of pure Volatiles","name":"Pure Ice Volatiles"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":50,"reagents":null,"slot_class":"Ore","sorting_class":"Ices"}},"ItemRTG":{"prefab":{"prefab_name":"ItemRTG","prefab_hash":495305053,"desc":"This kit creates that miracle of modern science, a Kit (Creative RTG).","name":"Kit (Creative RTG)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemRTGSurvival":{"prefab":{"prefab_name":"ItemRTGSurvival","prefab_hash":1817645803,"desc":"This kit creates a Kit (RTG).","name":"Kit (RTG)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemReagentMix":{"prefab":{"prefab_name":"ItemReagentMix","prefab_hash":-1641500434,"desc":"Reagent mix is pure potential. A slurry of undifferentiated ores, it is output by the Recycler and can be fed into the Centrifuge to separate and recover the individual materials. Reagent mix is also output by the Furnace when the current contents are ejected without smelting a specific ingot.","name":"Reagent Mix"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":50,"reagents":null,"slot_class":"Ore","sorting_class":"Ores"}},"ItemRemoteDetonator":{"prefab":{"prefab_name":"ItemRemoteDetonator","prefab_hash":678483886,"desc":"","name":"Remote Detonator"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Tool","sorting_class":"Tools"},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Error":"Read","On":"ReadWrite","ReferenceId":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"ItemReusableFireExtinguisher":{"prefab":{"prefab_name":"ItemReusableFireExtinguisher","prefab_hash":-1773192190,"desc":"Requires a canister filled with any inert liquid to opperate.","name":"Fire Extinguisher (Reusable)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Tool","sorting_class":"Tools"},"slots":[{"name":"Liquid Canister","typ":"LiquidCanister"}]},"ItemRice":{"prefab":{"prefab_name":"ItemRice","prefab_hash":658916791,"desc":"Rice grows at a moderate rate as long as its supplied with plenty of water. Being more dependant on water, rice plants can easily die during periods of drought.","name":"Rice"},"item":{"consumable":false,"filter_type":null,"ingredient":true,"max_quantity":50,"reagents":{"Rice":1.0},"slot_class":"Plant","sorting_class":"Resources"}},"ItemRoadFlare":{"prefab":{"prefab_name":"ItemRoadFlare","prefab_hash":871811564,"desc":"Designed to burn anywhere in the Solar System, the EZC magnesium fusee supplies its own oxygen to fuel combustion, and dispel the eternal night of space.","name":"Road Flare"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":20,"reagents":null,"slot_class":"Flare","sorting_class":"Default"}},"ItemRocketMiningDrillHead":{"prefab":{"prefab_name":"ItemRocketMiningDrillHead","prefab_hash":2109945337,"desc":"Replaceable drill head for Rocket Miner","name":"Mining-Drill Head (Basic)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":100,"reagents":null,"slot_class":"DrillHead","sorting_class":"Default"}},"ItemRocketMiningDrillHeadDurable":{"prefab":{"prefab_name":"ItemRocketMiningDrillHeadDurable","prefab_hash":1530764483,"desc":"","name":"Mining-Drill Head (Durable)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":100,"reagents":null,"slot_class":"DrillHead","sorting_class":"Default"}},"ItemRocketMiningDrillHeadHighSpeedIce":{"prefab":{"prefab_name":"ItemRocketMiningDrillHeadHighSpeedIce","prefab_hash":653461728,"desc":"","name":"Mining-Drill Head (High Speed Ice)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":100,"reagents":null,"slot_class":"DrillHead","sorting_class":"Default"}},"ItemRocketMiningDrillHeadHighSpeedMineral":{"prefab":{"prefab_name":"ItemRocketMiningDrillHeadHighSpeedMineral","prefab_hash":1440678625,"desc":"","name":"Mining-Drill Head (High Speed Mineral)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":100,"reagents":null,"slot_class":"DrillHead","sorting_class":"Default"}},"ItemRocketMiningDrillHeadIce":{"prefab":{"prefab_name":"ItemRocketMiningDrillHeadIce","prefab_hash":-380904592,"desc":"","name":"Mining-Drill Head (Ice)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":100,"reagents":null,"slot_class":"DrillHead","sorting_class":"Default"}},"ItemRocketMiningDrillHeadLongTerm":{"prefab":{"prefab_name":"ItemRocketMiningDrillHeadLongTerm","prefab_hash":-684020753,"desc":"","name":"Mining-Drill Head (Long Term)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":100,"reagents":null,"slot_class":"DrillHead","sorting_class":"Default"}},"ItemRocketMiningDrillHeadMineral":{"prefab":{"prefab_name":"ItemRocketMiningDrillHeadMineral","prefab_hash":1083675581,"desc":"","name":"Mining-Drill Head (Mineral)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":100,"reagents":null,"slot_class":"DrillHead","sorting_class":"Default"}},"ItemRocketScanningHead":{"prefab":{"prefab_name":"ItemRocketScanningHead","prefab_hash":-1198702771,"desc":"","name":"Rocket Scanner Head"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"ScanningHead","sorting_class":"Default"}},"ItemScanner":{"prefab":{"prefab_name":"ItemScanner","prefab_hash":1661270830,"desc":"A mysterious piece of technology, rumored to have Zrillian origins.","name":"Handheld Scanner"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Default"}},"ItemScrewdriver":{"prefab":{"prefab_name":"ItemScrewdriver","prefab_hash":687940869,"desc":"This standard issue frictional adherence adjustor is a top of the line, bi-rotational model with a columnated uni-grip. It's definitely not just a screwdriver. Use it for construction and deconstruction of certain kits, and setting values on logic units.","name":"Screwdriver"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Tool","sorting_class":"Tools"}},"ItemSecurityCamera":{"prefab":{"prefab_name":"ItemSecurityCamera","prefab_hash":-1981101032,"desc":"Security cameras can be paired with a Motion Sensor, then connected to a Console fitted with a Camera Display for that 'always watched' feeling.","name":"Security Camera"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Default"}},"ItemSensorLenses":{"prefab":{"prefab_name":"ItemSensorLenses","prefab_hash":-1176140051,"desc":"These Norsec glasses might not be the most fashionable thing, but when a Sensor Processing Unit (Ore Scanner) is inserted, Stationeers can use these handy glasses to x-ray the ground and find ores that are hidden beneath the surface.","name":"Sensor Lenses"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Glasses","sorting_class":"Clothing"},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","On":"ReadWrite","ReferenceId":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Battery","typ":"Battery"},{"name":"Sensor Processing Unit","typ":"SensorProcessingUnit"}]},"ItemSensorProcessingUnitCelestialScanner":{"prefab":{"prefab_name":"ItemSensorProcessingUnitCelestialScanner","prefab_hash":-1154200014,"desc":"","name":"Sensor Processing Unit (Celestial Scanner)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"SensorProcessingUnit","sorting_class":"Default"}},"ItemSensorProcessingUnitMesonScanner":{"prefab":{"prefab_name":"ItemSensorProcessingUnitMesonScanner","prefab_hash":-1730464583,"desc":"The T-Ray Scanner Sensor Processing Unit can be inserted into the Sensor Lenses to show an overlay of pipes and cables. This can be useful when building behind walls or other structures.","name":"Sensor Processing Unit (T-Ray Scanner)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"SensorProcessingUnit","sorting_class":"Default"}},"ItemSensorProcessingUnitOreScanner":{"prefab":{"prefab_name":"ItemSensorProcessingUnitOreScanner","prefab_hash":-1219128491,"desc":"The Sensor Processing unit can be inserted into Sensor Lenses to reveal underground minerals in a HUD.","name":"Sensor Processing Unit (Ore Scanner)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"SensorProcessingUnit","sorting_class":"Default"}},"ItemSiliconIngot":{"prefab":{"prefab_name":"ItemSiliconIngot","prefab_hash":-290196476,"desc":"","name":"Ingot (Silicon)"},"item":{"consumable":true,"filter_type":null,"ingredient":true,"max_quantity":500,"reagents":{"Silicon":1.0},"slot_class":"Ingot","sorting_class":"Resources"}},"ItemSiliconOre":{"prefab":{"prefab_name":"ItemSiliconOre","prefab_hash":1103972403,"desc":"Silicon is a chemical element with the symbol \"Si\" and is one of the most useful elements to Stationeers. Readily available throughout the universe, silicon is used in a range of alloys, glass, plastics and various electronic components a Stationeer may need to complete their mission.","name":"Ore (Silicon)"},"item":{"consumable":false,"filter_type":null,"ingredient":true,"max_quantity":50,"reagents":{"Silicon":1.0},"slot_class":"Ore","sorting_class":"Ores"}},"ItemSilverIngot":{"prefab":{"prefab_name":"ItemSilverIngot","prefab_hash":-929742000,"desc":"","name":"Ingot (Silver)"},"item":{"consumable":true,"filter_type":null,"ingredient":true,"max_quantity":500,"reagents":{"Silver":1.0},"slot_class":"Ingot","sorting_class":"Resources"}},"ItemSilverOre":{"prefab":{"prefab_name":"ItemSilverOre","prefab_hash":-916518678,"desc":"Silver is a chemical element with the symbol \"Ag\". Valued by many Stationeers for its attractive luster and sheen, it is also used in a variety of electronics components and alloys.","name":"Ore (Silver)"},"item":{"consumable":false,"filter_type":null,"ingredient":true,"max_quantity":50,"reagents":{"Silver":1.0},"slot_class":"Ore","sorting_class":"Ores"}},"ItemSolderIngot":{"prefab":{"prefab_name":"ItemSolderIngot","prefab_hash":-82508479,"desc":"","name":"Ingot (Solder)"},"item":{"consumable":true,"filter_type":null,"ingredient":true,"max_quantity":500,"reagents":{"Solder":1.0},"slot_class":"Ingot","sorting_class":"Resources"}},"ItemSolidFuel":{"prefab":{"prefab_name":"ItemSolidFuel","prefab_hash":-365253871,"desc":"","name":"Solid Fuel (Hydrocarbon)"},"item":{"consumable":true,"filter_type":null,"ingredient":true,"max_quantity":500,"reagents":{"Hydrocarbon":1.0},"slot_class":"Ore","sorting_class":"Resources"}},"ItemSoundCartridgeBass":{"prefab":{"prefab_name":"ItemSoundCartridgeBass","prefab_hash":-1883441704,"desc":"","name":"Sound Cartridge Bass"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"SoundCartridge","sorting_class":"Default"}},"ItemSoundCartridgeDrums":{"prefab":{"prefab_name":"ItemSoundCartridgeDrums","prefab_hash":-1901500508,"desc":"","name":"Sound Cartridge Drums"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"SoundCartridge","sorting_class":"Default"}},"ItemSoundCartridgeLeads":{"prefab":{"prefab_name":"ItemSoundCartridgeLeads","prefab_hash":-1174735962,"desc":"","name":"Sound Cartridge Leads"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"SoundCartridge","sorting_class":"Default"}},"ItemSoundCartridgeSynth":{"prefab":{"prefab_name":"ItemSoundCartridgeSynth","prefab_hash":-1971419310,"desc":"","name":"Sound Cartridge Synth"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"SoundCartridge","sorting_class":"Default"}},"ItemSoyOil":{"prefab":{"prefab_name":"ItemSoyOil","prefab_hash":1387403148,"desc":"","name":"Soy Oil"},"item":{"consumable":true,"filter_type":null,"ingredient":true,"max_quantity":100,"reagents":{"Oil":1.0},"slot_class":"None","sorting_class":"Resources"}},"ItemSoybean":{"prefab":{"prefab_name":"ItemSoybean","prefab_hash":1924673028,"desc":" Soybeans grow at a moderate rate, but require atmospheric Nitrogen to grow. Its main use is to create Soy Oil","name":"Soybean"},"item":{"consumable":false,"filter_type":null,"ingredient":true,"max_quantity":100,"reagents":{"Soy":1.0},"slot_class":"Plant","sorting_class":"Resources"}},"ItemSpaceCleaner":{"prefab":{"prefab_name":"ItemSpaceCleaner","prefab_hash":-1737666461,"desc":"There was a time when humanity really wanted to keep space clean. That time has passed.","name":"Space Cleaner"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Default"}},"ItemSpaceHelmet":{"prefab":{"prefab_name":"ItemSpaceHelmet","prefab_hash":714830451,"desc":"The basic space helmet insulates Stationeers against everything from hard vacuum to weird cooking smells. Providing a pressure-controlled, breathable atmosphere, it comes with a built-in light powered by your Eva Suit Battery Cell (Small).\nIt also incorporates a lock/unlock feature to avoid accidental opening, as well as a flush function to expel and replace the internal atmosphere. If damaged, use Duct Tape to fix it, or paint it any color you like using the Paint Mixer.","name":"Space Helmet"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Helmet","sorting_class":"Clothing"},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Open":"ReadWrite","Pressure":"Read","Temperature":"Read","Lock":"ReadWrite","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","On":"ReadWrite","TotalMoles":"Read","Volume":"ReadWrite","RatioNitrousOxide":"Read","Combustion":"Read","Flush":"Write","SoundAlert":"ReadWrite","RatioLiquidNitrogen":"Read","RatioLiquidOxygen":"Read","RatioLiquidVolatiles":"Read","RatioSteam":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidPollutant":"Read","RatioLiquidNitrousOxide":"Read","ReferenceId":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[]},"ItemSpaceIce":{"prefab":{"prefab_name":"ItemSpaceIce","prefab_hash":675686937,"desc":"","name":"Space Ice"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":100,"reagents":null,"slot_class":"Ore","sorting_class":"Ores"}},"ItemSpaceOre":{"prefab":{"prefab_name":"ItemSpaceOre","prefab_hash":2131916219,"desc":"Ore mined from asteroids via the Rocket Miner which then must be processed in the Centrifuge, or Combustion Centrifuge to produce smeltable ores.","name":"Dirty Ore"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":100,"reagents":null,"slot_class":"Ore","sorting_class":"Ores"}},"ItemSpacepack":{"prefab":{"prefab_name":"ItemSpacepack","prefab_hash":-1260618380,"desc":"The basic CHAC spacepack isn't 'technically' a jetpack, it's a gas thruster. It can be powered by any gas, so long as the internal pressure of the canister is higher than the ambient external pressure. If the external pressure is greater, the spacepack will not function.\nIndispensable for building, mining and general movement, it has ten storage slots and lets Stationeers fly at 3m/s, compared to the more powerful Jetpack Basic or Hardsuit Jetpack. Adjusting the thrust value alters your rate of acceleration, while activating the stablizer causes the spacepack to hover when a given height is reached.\nUSE: 'J' to activate; 'space' to fly up; 'left ctrl' to descend; and 'WASD' to move.","name":"Spacepack"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Back","sorting_class":"Clothing"},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Pressure":"Read","Temperature":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"2":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"3":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"4":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"5":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"6":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"7":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"8":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"9":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"}},"logic_types":{"Activate":"ReadWrite","On":"ReadWrite","ReferenceId":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Propellant","typ":"GasCanister"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"}]},"ItemSprayCanBlack":{"prefab":{"prefab_name":"ItemSprayCanBlack","prefab_hash":-688107795,"desc":"Go classic, clandestine or just plain Gothic with black paint, which can be applied to most items. Each can has 20 uses.","name":"Spray Paint (Black)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Bottle","sorting_class":"Default"}},"ItemSprayCanBlue":{"prefab":{"prefab_name":"ItemSprayCanBlue","prefab_hash":-498464883,"desc":"What kind of a color is blue? The kind of of color that says, 'Hey, what about me?'","name":"Spray Paint (Blue)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Bottle","sorting_class":"Default"}},"ItemSprayCanBrown":{"prefab":{"prefab_name":"ItemSprayCanBrown","prefab_hash":845176977,"desc":"In more artistic Stationeers circles, the absence of brown is often lamented, but seldom changed.","name":"Spray Paint (Brown)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Bottle","sorting_class":"Default"}},"ItemSprayCanGreen":{"prefab":{"prefab_name":"ItemSprayCanGreen","prefab_hash":-1880941852,"desc":"Green is the color of life, and longing. Paradoxically, it's also the color of envy, and tolerance. It denotes sickness, youth, and wealth. But really, it's just what light does at around 500 billionths of a meter.","name":"Spray Paint (Green)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Bottle","sorting_class":"Default"}},"ItemSprayCanGrey":{"prefab":{"prefab_name":"ItemSprayCanGrey","prefab_hash":-1645266981,"desc":"Arguably the most popular color in the universe, grey was invented so designers had something to do.","name":"Spray Paint (Grey)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Bottle","sorting_class":"Default"}},"ItemSprayCanKhaki":{"prefab":{"prefab_name":"ItemSprayCanKhaki","prefab_hash":1918456047,"desc":"Not so much a single color, as a category of boredom, khaki is the pigmentation equivalent of a mild depressive episode.","name":"Spray Paint (Khaki)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Bottle","sorting_class":"Default"}},"ItemSprayCanOrange":{"prefab":{"prefab_name":"ItemSprayCanOrange","prefab_hash":-158007629,"desc":"Orange is fun, but also suggestive of hazards. Sitting proudly in the middle of the visual spectrum, it has nothing to prove.","name":"Spray Paint (Orange)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Bottle","sorting_class":"Default"}},"ItemSprayCanPink":{"prefab":{"prefab_name":"ItemSprayCanPink","prefab_hash":1344257263,"desc":"With the invention of enduring chemical dyes, the 20th century bestowed associations with innocence and tenderness upon this pale tint of red. Yet classically, it was the color of seduction and eroticism. Things change.","name":"Spray Paint (Pink)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Bottle","sorting_class":"Default"}},"ItemSprayCanPurple":{"prefab":{"prefab_name":"ItemSprayCanPurple","prefab_hash":30686509,"desc":"Purple is a curious color. You need to be careful with purple. It can be very good, or go horribly, horribly wrong.","name":"Spray Paint (Purple)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Bottle","sorting_class":"Default"}},"ItemSprayCanRed":{"prefab":{"prefab_name":"ItemSprayCanRed","prefab_hash":1514393921,"desc":"The king of colors, red is perhaps the defining tone of the universe. Linked to blood, royalty, fire and damnation, it is the chromatic expression of power.","name":"Spray Paint (Red)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Bottle","sorting_class":"Default"}},"ItemSprayCanWhite":{"prefab":{"prefab_name":"ItemSprayCanWhite","prefab_hash":498481505,"desc":"White looks clean, sharp and nice. But Stationeering can be a dirty job. White tends to scuff.","name":"Spray Paint (White)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Bottle","sorting_class":"Default"}},"ItemSprayCanYellow":{"prefab":{"prefab_name":"ItemSprayCanYellow","prefab_hash":995468116,"desc":"A caricature of light itself, yellow lacks the self-confidence of red, or the swagger of purple. It's less fun than orange, but less emotionally limp than khaki. It's hard to know when yellow is appropriate, but it persists as a primary color regardless. Suggesting that yellow gonna yellow, no matter what anyone thinks.","name":"Spray Paint (Yellow)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Bottle","sorting_class":"Default"}},"ItemSprayGun":{"prefab":{"prefab_name":"ItemSprayGun","prefab_hash":1289723966,"desc":"Use with Spray cans in the Spray Can to paint structures, cables and pipes. Much more efficient and faster than doing it with individual spray cans.","name":"Spray Gun"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Tool","sorting_class":"Tools"},"slots":[{"name":"Spray Can","typ":"Bottle"}]},"ItemSteelFrames":{"prefab":{"prefab_name":"ItemSteelFrames","prefab_hash":-1448105779,"desc":"An advanced and stronger version of Iron Frames, steel frames are placed by right-clicking. To complete construction, use Steel Sheets and a Welding Torch in your active hand.","name":"Steel Frames"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":30,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemSteelIngot":{"prefab":{"prefab_name":"ItemSteelIngot","prefab_hash":-654790771,"desc":"Steel ingots are a metal alloy, crafted in a Furnace by smelting Ore (Iron) and Ore (Coal) at a ratio of 3:1.\nIt may not be elegant, but Ice (Oxite) and Ice (Volatiles) can be combined at a ratio of 1:2 in a furnace to create the necessary gas mixture for smelting.","name":"Ingot (Steel)"},"item":{"consumable":true,"filter_type":null,"ingredient":true,"max_quantity":500,"reagents":{"Steel":1.0},"slot_class":"Ingot","sorting_class":"Resources"}},"ItemSteelSheets":{"prefab":{"prefab_name":"ItemSteelSheets","prefab_hash":38555961,"desc":"An advanced building material, Ingot (Steel) sheets are used when constructing a Steel Frame and several other wall types.","name":"Steel Sheets"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":50,"reagents":null,"slot_class":"None","sorting_class":"Resources"}},"ItemStelliteGlassSheets":{"prefab":{"prefab_name":"ItemStelliteGlassSheets","prefab_hash":-2038663432,"desc":"A stronger glass substitute.","name":"Stellite Glass Sheets"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":50,"reagents":null,"slot_class":"None","sorting_class":"Resources"}},"ItemStelliteIngot":{"prefab":{"prefab_name":"ItemStelliteIngot","prefab_hash":-1897868623,"desc":"","name":"Ingot (Stellite)"},"item":{"consumable":true,"filter_type":null,"ingredient":true,"max_quantity":500,"reagents":{"Stellite":1.0},"slot_class":"Ingot","sorting_class":"Resources"}},"ItemSugar":{"prefab":{"prefab_name":"ItemSugar","prefab_hash":2111910840,"desc":"","name":"Sugar"},"item":{"consumable":true,"filter_type":null,"ingredient":true,"max_quantity":500,"reagents":{"Sugar":10.0},"slot_class":"None","sorting_class":"Resources"}},"ItemSugarCane":{"prefab":{"prefab_name":"ItemSugarCane","prefab_hash":-1335056202,"desc":"","name":"Sugarcane"},"item":{"consumable":false,"filter_type":null,"ingredient":true,"max_quantity":100,"reagents":{"Sugar":1.0},"slot_class":"Plant","sorting_class":"Resources"}},"ItemSuitModCryogenicUpgrade":{"prefab":{"prefab_name":"ItemSuitModCryogenicUpgrade","prefab_hash":-1274308304,"desc":"Enables suits with basic cooling functionality to work with cryogenic liquid.","name":"Cryogenic Suit Upgrade"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"SuitMod","sorting_class":"Default"}},"ItemTablet":{"prefab":{"prefab_name":"ItemTablet","prefab_hash":-229808600,"desc":"The Xigo handheld 'Padi' tablet is an all-purpose data platform, provided as standard issue to all Stationeers. A dynamic multi-tool that accepts a range of cartridges, the Padi becomes an Atmos Analyzer or Tracker, Medical Analyzer, Ore Scanner, eReader, and various other functions.","name":"Handheld Tablet"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Tool","sorting_class":"Tools"},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Error":"Read","On":"ReadWrite","ReferenceId":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Battery","typ":"Battery"},{"name":"Cartridge","typ":"Cartridge"}]},"ItemTerrainManipulator":{"prefab":{"prefab_name":"ItemTerrainManipulator","prefab_hash":111280987,"desc":"0.Mode0\n1.Mode1","name":"Terrain Manipulator"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Tool","sorting_class":"Default"},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Mode":"ReadWrite","Error":"Read","Activate":"ReadWrite","On":"ReadWrite","ReferenceId":"Read"},"modes":{"0":"Mode0","1":"Mode1"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Battery","typ":"Battery"},{"name":"Dirt Canister","typ":"Ore"}]},"ItemTomato":{"prefab":{"prefab_name":"ItemTomato","prefab_hash":-998592080,"desc":"Tomato plants are perennial, and will produce multiple harvests without needing to be replanted. Once the plant is mature, it will fruit at a moderate pace.","name":"Tomato"},"item":{"consumable":false,"filter_type":null,"ingredient":true,"max_quantity":20,"reagents":{"Tomato":1.0},"slot_class":"Plant","sorting_class":"Resources"}},"ItemTomatoSoup":{"prefab":{"prefab_name":"ItemTomatoSoup","prefab_hash":688734890,"desc":"Made using Cooked Tomatos and an Empty Can in a Basic Packaging Machine or Advanced Packaging Machine.","name":"Tomato Soup"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Food"}},"ItemToolBelt":{"prefab":{"prefab_name":"ItemToolBelt","prefab_hash":-355127880,"desc":"If there's one piece of equipment that embodies Stationeer life above all else, it's the humble toolbelt (Editor's note: a recent ODA survey of iconic Stationeer equipment also rated the smoking, toxic ruins of an over-pressurized Furnace lying amid the charred remains of your latest base very highly).\nDesigned to meet the most strict-ish ODA safety standards, the toolbelt's eight slots hold one thing: tools, and Cable Coil. Not to be confused with the Mining Belt.","name":"Tool Belt"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Belt","sorting_class":"Clothing"},"slots":[{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"},{"name":"Tool","typ":"Tool"}]},"ItemTropicalPlant":{"prefab":{"prefab_name":"ItemTropicalPlant","prefab_hash":-800947386,"desc":"An anthurium, evolved in the jungles of South America, which will tolerate higher temperatures than most plants.","name":"Tropical Lily"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"Plant","sorting_class":"Resources"}},"ItemUraniumOre":{"prefab":{"prefab_name":"ItemUraniumOre","prefab_hash":-1516581844,"desc":"In 1934, Enrico Fermi noticed that bombarding uranium with neutrons produced a burst of beta rays, and a new material. This process was named 'nuclear fission', and resulted in cheap energy, the Cold War, and countless thousand deaths. While reasonably common throughout the Solar System, Stationeers are wary of the material.","name":"Ore (Uranium)"},"item":{"consumable":false,"filter_type":null,"ingredient":true,"max_quantity":50,"reagents":{"Uranium":1.0},"slot_class":"Ore","sorting_class":"Ores"}},"ItemVolatiles":{"prefab":{"prefab_name":"ItemVolatiles","prefab_hash":1253102035,"desc":"An extremely reactive ice with numerous hydrocarbons trapped inside. For simplicity's sake, these are often displayed as H2 by devices like the Atmos Analyzer.\n \nVolatiles combust in a 2:1 ratio with Oxygen, creating Carbon Dioxide and pollutants. However when catalysed via devices such as the H2 Combustor in the presence of Oxygen, they produce\n Steam and heat with a modicum of Carbon Dioxide and Pollutant due to the autoignition of the volatiles in the chamber. Along with Oxygen, volatiles gas is also the major component of fuel for such devices as the Welding Torch.\n","name":"Ice (Volatiles)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":50,"reagents":null,"slot_class":"Ore","sorting_class":"Ices"}},"ItemWallCooler":{"prefab":{"prefab_name":"ItemWallCooler","prefab_hash":-1567752627,"desc":"This kit creates a Wall Cooler.","name":"Kit (Wall Cooler)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemWallHeater":{"prefab":{"prefab_name":"ItemWallHeater","prefab_hash":1880134612,"desc":"This kit creates a Kit (Wall Heater).","name":"Kit (Wall Heater)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemWallLight":{"prefab":{"prefab_name":"ItemWallLight","prefab_hash":1108423476,"desc":"This kit creates any one of ten Kit (Lights) variants.","name":"Kit (Lights)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemWaspaloyIngot":{"prefab":{"prefab_name":"ItemWaspaloyIngot","prefab_hash":156348098,"desc":"","name":"Ingot (Waspaloy)"},"item":{"consumable":true,"filter_type":null,"ingredient":true,"max_quantity":500,"reagents":{"Waspaloy":1.0},"slot_class":"Ingot","sorting_class":"Resources"}},"ItemWaterBottle":{"prefab":{"prefab_name":"ItemWaterBottle","prefab_hash":107741229,"desc":"Delicious and pure H20, refined from local sources as varied as Venusian ice and trans-Solar comets. Empty bottles can be refilled using the Water Bottle Filler.","name":"Water Bottle"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"LiquidBottle","sorting_class":"Default"}},"ItemWaterPipeDigitalValve":{"prefab":{"prefab_name":"ItemWaterPipeDigitalValve","prefab_hash":309693520,"desc":"","name":"Kit (Liquid Digital Valve)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemWaterPipeMeter":{"prefab":{"prefab_name":"ItemWaterPipeMeter","prefab_hash":-90898877,"desc":"","name":"Kit (Liquid Pipe Meter)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemWaterWallCooler":{"prefab":{"prefab_name":"ItemWaterWallCooler","prefab_hash":-1721846327,"desc":"","name":"Kit (Liquid Wall Cooler)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":5,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"ItemWearLamp":{"prefab":{"prefab_name":"ItemWearLamp","prefab_hash":-598730959,"desc":"","name":"Headlamp"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Helmet","sorting_class":"Clothing"},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","On":"ReadWrite","ReferenceId":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"ItemWeldingTorch":{"prefab":{"prefab_name":"ItemWeldingTorch","prefab_hash":-2066892079,"desc":"Stored in the standard issue Stationeers Tool Belt, the Arlite welding torch is used to construct a range of essential structures.\nAn upgraded version of the classic 'Zairo' model first manufactured by ExMin for modular space habitat assembly, the Arlite is powered by a single Canister (Fuel) and designed to function equally well in deep space and deep gravity wells.","name":"Welding Torch"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Tool","sorting_class":"Tools"},"slots":[{"name":"Gas Canister","typ":"GasCanister"}]},"ItemWheat":{"prefab":{"prefab_name":"ItemWheat","prefab_hash":-1057658015,"desc":"A classical symbol of growth and new life, wheat takes a moderate time to grow. Its main use is to create flour using the Reagent Processor.","name":"Wheat"},"item":{"consumable":false,"filter_type":null,"ingredient":true,"max_quantity":100,"reagents":{"Carbon":1.0},"slot_class":"Plant","sorting_class":"Default"}},"ItemWireCutters":{"prefab":{"prefab_name":"ItemWireCutters","prefab_hash":1535854074,"desc":"Wirecutters allow you to deconstruct various structures, as well as cross-lay cables when held in your non-active hand, and defuse explosives as needed. Wirecutters are stored in the Tool Belt, along with other essential tools.","name":"Wire Cutters"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Tool","sorting_class":"Tools"}},"ItemWirelessBatteryCellExtraLarge":{"prefab":{"prefab_name":"ItemWirelessBatteryCellExtraLarge","prefab_hash":-504717121,"desc":"0.Empty\n1.Critical\n2.VeryLow\n3.Low\n4.Medium\n5.High\n6.Full","name":"Wireless Battery Cell Extra Large"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Battery","sorting_class":"Default"},"logic":{"logic_slot_types":{},"logic_types":{"Mode":"ReadWrite","ReferenceId":"Read"},"modes":{"0":"Empty","1":"Critical","2":"VeryLow","3":"Low","4":"Medium","5":"High","6":"Full"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[]},"ItemWreckageAirConditioner1":{"prefab":{"prefab_name":"ItemWreckageAirConditioner1","prefab_hash":-1826023284,"desc":"","name":"Wreckage Air Conditioner"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"Wreckage","sorting_class":"Default"}},"ItemWreckageAirConditioner2":{"prefab":{"prefab_name":"ItemWreckageAirConditioner2","prefab_hash":169888054,"desc":"","name":"Wreckage Air Conditioner"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"Wreckage","sorting_class":"Default"}},"ItemWreckageHydroponicsTray1":{"prefab":{"prefab_name":"ItemWreckageHydroponicsTray1","prefab_hash":-310178617,"desc":"","name":"Wreckage Hydroponics Tray"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"Wreckage","sorting_class":"Default"}},"ItemWreckageLargeExtendableRadiator01":{"prefab":{"prefab_name":"ItemWreckageLargeExtendableRadiator01","prefab_hash":-997763,"desc":"","name":"Wreckage Large Extendable Radiator"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"Wreckage","sorting_class":"Default"}},"ItemWreckageStructureRTG1":{"prefab":{"prefab_name":"ItemWreckageStructureRTG1","prefab_hash":391453348,"desc":"","name":"Wreckage Structure RTG"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"Wreckage","sorting_class":"Default"}},"ItemWreckageStructureWeatherStation001":{"prefab":{"prefab_name":"ItemWreckageStructureWeatherStation001","prefab_hash":-834664349,"desc":"","name":"Wreckage Structure Weather Station"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"Wreckage","sorting_class":"Default"}},"ItemWreckageStructureWeatherStation002":{"prefab":{"prefab_name":"ItemWreckageStructureWeatherStation002","prefab_hash":1464424921,"desc":"","name":"Wreckage Structure Weather Station"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"Wreckage","sorting_class":"Default"}},"ItemWreckageStructureWeatherStation003":{"prefab":{"prefab_name":"ItemWreckageStructureWeatherStation003","prefab_hash":542009679,"desc":"","name":"Wreckage Structure Weather Station"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"Wreckage","sorting_class":"Default"}},"ItemWreckageStructureWeatherStation004":{"prefab":{"prefab_name":"ItemWreckageStructureWeatherStation004","prefab_hash":-1104478996,"desc":"","name":"Wreckage Structure Weather Station"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"Wreckage","sorting_class":"Default"}},"ItemWreckageStructureWeatherStation005":{"prefab":{"prefab_name":"ItemWreckageStructureWeatherStation005","prefab_hash":-919745414,"desc":"","name":"Wreckage Structure Weather Station"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"Wreckage","sorting_class":"Default"}},"ItemWreckageStructureWeatherStation006":{"prefab":{"prefab_name":"ItemWreckageStructureWeatherStation006","prefab_hash":1344576960,"desc":"","name":"Wreckage Structure Weather Station"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"Wreckage","sorting_class":"Default"}},"ItemWreckageStructureWeatherStation007":{"prefab":{"prefab_name":"ItemWreckageStructureWeatherStation007","prefab_hash":656649558,"desc":"","name":"Wreckage Structure Weather Station"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"Wreckage","sorting_class":"Default"}},"ItemWreckageStructureWeatherStation008":{"prefab":{"prefab_name":"ItemWreckageStructureWeatherStation008","prefab_hash":-1214467897,"desc":"","name":"Wreckage Structure Weather Station"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"Wreckage","sorting_class":"Default"}},"ItemWreckageTurbineGenerator1":{"prefab":{"prefab_name":"ItemWreckageTurbineGenerator1","prefab_hash":-1662394403,"desc":"","name":"Wreckage Turbine Generator"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"Wreckage","sorting_class":"Default"}},"ItemWreckageTurbineGenerator2":{"prefab":{"prefab_name":"ItemWreckageTurbineGenerator2","prefab_hash":98602599,"desc":"","name":"Wreckage Turbine Generator"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"Wreckage","sorting_class":"Default"}},"ItemWreckageTurbineGenerator3":{"prefab":{"prefab_name":"ItemWreckageTurbineGenerator3","prefab_hash":1927790321,"desc":"","name":"Wreckage Turbine Generator"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"Wreckage","sorting_class":"Default"}},"ItemWreckageWallCooler1":{"prefab":{"prefab_name":"ItemWreckageWallCooler1","prefab_hash":-1682930158,"desc":"","name":"Wreckage Wall Cooler"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"Wreckage","sorting_class":"Default"}},"ItemWreckageWallCooler2":{"prefab":{"prefab_name":"ItemWreckageWallCooler2","prefab_hash":45733800,"desc":"","name":"Wreckage Wall Cooler"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"Wreckage","sorting_class":"Default"}},"ItemWrench":{"prefab":{"prefab_name":"ItemWrench","prefab_hash":-1886261558,"desc":"One of humanity's enduring contributions to the cosmos, the wrench represents the essence of our species. A simple, effective and spiritually barren tool, use it to build and deconstruct a variety of structures","name":"Wrench"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Tool","sorting_class":"Tools"}},"KitSDBSilo":{"prefab":{"prefab_name":"KitSDBSilo","prefab_hash":1932952652,"desc":"This kit creates a SDB Silo.","name":"Kit (SDB Silo)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"KitStructureCombustionCentrifuge":{"prefab":{"prefab_name":"KitStructureCombustionCentrifuge","prefab_hash":231903234,"desc":"","name":"Kit (Combustion Centrifuge)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Kits"}},"KitchenTableShort":{"prefab":{"prefab_name":"KitchenTableShort","prefab_hash":-1427415566,"desc":"","name":"Kitchen Table (Short)"},"structure":{"small_grid":true}},"KitchenTableSimpleShort":{"prefab":{"prefab_name":"KitchenTableSimpleShort","prefab_hash":-78099334,"desc":"","name":"Kitchen Table (Simple Short)"},"structure":{"small_grid":true}},"KitchenTableSimpleTall":{"prefab":{"prefab_name":"KitchenTableSimpleTall","prefab_hash":-1068629349,"desc":"","name":"Kitchen Table (Simple Tall)"},"structure":{"small_grid":true}},"KitchenTableTall":{"prefab":{"prefab_name":"KitchenTableTall","prefab_hash":-1386237782,"desc":"","name":"Kitchen Table (Tall)"},"structure":{"small_grid":true}},"Lander":{"prefab":{"prefab_name":"Lander","prefab_hash":1605130615,"desc":"","name":"Lander"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Default"},"slots":[{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"Entity","typ":"Entity"}]},"Landingpad_2x2CenterPiece01":{"prefab":{"prefab_name":"Landingpad_2x2CenterPiece01","prefab_hash":-1295222317,"desc":"Recommended for larger traders. This allows for the creation of 4x4 and 6x6 landing areas with symetrical doors","name":"Landingpad 2x2 Center Piece"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[]},"Landingpad_BlankPiece":{"prefab":{"prefab_name":"Landingpad_BlankPiece","prefab_hash":912453390,"desc":"","name":"Landingpad"},"structure":{"small_grid":true}},"Landingpad_CenterPiece01":{"prefab":{"prefab_name":"Landingpad_CenterPiece01","prefab_hash":1070143159,"desc":"The target point where the trader shuttle will land. Requires a clear view of the sky.","name":"Landingpad Center"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{},"modes":{"0":"None","1":"NoContact","2":"Moving","3":"Holding","4":"Landed"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[]},"Landingpad_CrossPiece":{"prefab":{"prefab_name":"Landingpad_CrossPiece","prefab_hash":1101296153,"desc":"Extends the size of the landing pad area. A basic trader shuttle requires a 3x3 clear landing area.","name":"Landingpad Cross"},"structure":{"small_grid":true}},"Landingpad_DataConnectionPiece":{"prefab":{"prefab_name":"Landingpad_DataConnectionPiece","prefab_hash":-2066405918,"desc":"Provides power to the landing pad. The data port must be connected to the data port of a computer with a communications motherboard for a trader to be called in to land.","name":"Landingpad Data And Power"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Mode":"Read","Error":"Read","Pressure":"Read","Temperature":"Read","Activate":"ReadWrite","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","Vertical":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","TotalMoles":"Read","RatioNitrousOxide":"Read","PrefabHash":"Read","Combustion":"Read","RatioLiquidNitrogen":"Read","RatioLiquidOxygen":"Read","RatioLiquidVolatiles":"Read","RatioSteam":"Read","ContactTypeId":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidPollutant":"Read","RatioLiquidNitrousOxide":"Read","ReferenceId":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read","NameHash":"Read"},"modes":{"0":"None","1":"NoContact","2":"Moving","3":"Holding","4":"Landed"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"},{"typ":"LandingPad","role":"Input"},{"typ":"LandingPad","role":"Input"},{"typ":"LandingPad","role":"Input"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":true,"has_color_state":false,"has_lock_state":false,"has_mode_state":true,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"Landingpad_DiagonalPiece01":{"prefab":{"prefab_name":"Landingpad_DiagonalPiece01","prefab_hash":977899131,"desc":"Extends the size of the landing pad area. A basic trader shuttle requires a 3x3 clear landing area.","name":"Landingpad Diagonal"},"structure":{"small_grid":true}},"Landingpad_GasConnectorInwardPiece":{"prefab":{"prefab_name":"Landingpad_GasConnectorInwardPiece","prefab_hash":817945707,"desc":"","name":"Landingpad Gas Input"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","Pressure":"Read","Temperature":"Read","Setting":"ReadWrite","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","TotalMoles":"Read","RatioNitrousOxide":"Read","PrefabHash":"Read","Combustion":"Read","RatioLiquidNitrogen":"Read","RatioLiquidOxygen":"Read","RatioLiquidVolatiles":"Read","RatioSteam":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidPollutant":"Read","RatioLiquidNitrousOxide":"Read","ReferenceId":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"LandingPad","role":"Input"},{"typ":"LandingPad","role":"Input"},{"typ":"LandingPad","role":"Input"},{"typ":"Data","role":"None"},{"typ":"Pipe","role":"Input"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":true,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"Landingpad_GasConnectorOutwardPiece":{"prefab":{"prefab_name":"Landingpad_GasConnectorOutwardPiece","prefab_hash":-1100218307,"desc":"Pumps gas purchased from a trader out of the landing pad. You can increase the landing pad's gas storage capacity by adding more Landingpad Gas Storage to the landing pad.","name":"Landingpad Gas Output"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","Pressure":"Read","Temperature":"Read","Setting":"ReadWrite","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","TotalMoles":"Read","RatioNitrousOxide":"Read","PrefabHash":"Read","Combustion":"Read","RatioLiquidNitrogen":"Read","RatioLiquidOxygen":"Read","RatioLiquidVolatiles":"Read","RatioSteam":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidPollutant":"Read","RatioLiquidNitrousOxide":"Read","ReferenceId":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"LandingPad","role":"Input"},{"typ":"LandingPad","role":"Input"},{"typ":"LandingPad","role":"Input"},{"typ":"Data","role":"None"},{"typ":"Pipe","role":"Output"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":true,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"Landingpad_GasCylinderTankPiece":{"prefab":{"prefab_name":"Landingpad_GasCylinderTankPiece","prefab_hash":170818567,"desc":"Increases the volume of the landing pads gas storage capacity. This volume is used for buying and selling gas to traders.","name":"Landingpad Gas Storage"},"structure":{"small_grid":true}},"Landingpad_LiquidConnectorInwardPiece":{"prefab":{"prefab_name":"Landingpad_LiquidConnectorInwardPiece","prefab_hash":-1216167727,"desc":"","name":"Landingpad Liquid Input"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","Pressure":"Read","Temperature":"Read","Setting":"ReadWrite","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","TotalMoles":"Read","RatioNitrousOxide":"Read","PrefabHash":"Read","Combustion":"Read","RatioLiquidNitrogen":"Read","RatioLiquidOxygen":"Read","RatioLiquidVolatiles":"Read","RatioSteam":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidPollutant":"Read","RatioLiquidNitrousOxide":"Read","ReferenceId":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"LandingPad","role":"Input"},{"typ":"LandingPad","role":"Input"},{"typ":"LandingPad","role":"Input"},{"typ":"Data","role":"None"},{"typ":"PipeLiquid","role":"Input"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":true,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"Landingpad_LiquidConnectorOutwardPiece":{"prefab":{"prefab_name":"Landingpad_LiquidConnectorOutwardPiece","prefab_hash":-1788929869,"desc":"Pumps liquid purchased from a trader out of the landing pad. You can increase the landing pad's liquid storage capacity by adding more Landingpad Gas Storage to the landing pad.","name":"Landingpad Liquid Output"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","Pressure":"Read","Temperature":"Read","Setting":"ReadWrite","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","TotalMoles":"Read","RatioNitrousOxide":"Read","PrefabHash":"Read","Combustion":"Read","RatioLiquidNitrogen":"Read","RatioLiquidOxygen":"Read","RatioLiquidVolatiles":"Read","RatioSteam":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidPollutant":"Read","RatioLiquidNitrousOxide":"Read","ReferenceId":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"LandingPad","role":"Input"},{"typ":"LandingPad","role":"Input"},{"typ":"LandingPad","role":"Input"},{"typ":"Data","role":"None"},{"typ":"PipeLiquid","role":"Output"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":true,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"Landingpad_StraightPiece01":{"prefab":{"prefab_name":"Landingpad_StraightPiece01","prefab_hash":-976273247,"desc":"Extends the size of the landing pad area. A basic trader shuttle requires a 3x3 clear landing area.","name":"Landingpad Straight"},"structure":{"small_grid":true}},"Landingpad_TaxiPieceCorner":{"prefab":{"prefab_name":"Landingpad_TaxiPieceCorner","prefab_hash":-1872345847,"desc":"","name":"Landingpad Taxi Corner"},"structure":{"small_grid":true}},"Landingpad_TaxiPieceHold":{"prefab":{"prefab_name":"Landingpad_TaxiPieceHold","prefab_hash":146051619,"desc":"","name":"Landingpad Taxi Hold"},"structure":{"small_grid":true}},"Landingpad_TaxiPieceStraight":{"prefab":{"prefab_name":"Landingpad_TaxiPieceStraight","prefab_hash":-1477941080,"desc":"","name":"Landingpad Taxi Straight"},"structure":{"small_grid":true}},"Landingpad_ThreshholdPiece":{"prefab":{"prefab_name":"Landingpad_ThreshholdPiece","prefab_hash":-1514298582,"desc":"","name":"Landingpad Threshhold"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"LandingPad","role":"Input"},{"typ":"LandingPad","role":"Input"},{"typ":"LandingPad","role":"Input"},{"typ":"Data","role":"Input"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"LogicStepSequencer8":{"prefab":{"prefab_name":"LogicStepSequencer8","prefab_hash":1531272458,"desc":"The ODA does not approve of soundtracks or other distractions.\nAs such, Stationeers have had to create their own musical accompaniment to the demanding labor of building and maintaining off-world infrastructure.\nCentral to this pastime is the step sequencer, which allows Stationeers to sequence short musical patterns or loops. \n\nDIY MUSIC - GETTING STARTED\n\n1: Connect 8 Device Step Units to your step sequencer via the data port on the left hand side.\n\n2: Label each step unit, then assign step units 1 through 8 on the step sequencer using the screwdriver.\n\n3: Select the output speaker (eg Passive Speaker) where the sequencer will play the sounds. This needs to be connected to the logic network on the right hand side of the sequencer.\n\n4: Place a Stop Watch and use a Logic Reader and Logic Writer to write the time to the time variable on the sequencer.\n\n5: Set the BPM on the sequencer using a Dial and a Logic Writer to write to the sequencer's BPM variable. A higher bpm will play the sequence faster. \n\n6: Insert a sound cartridge of your choosing and select which variant of sound you wish to play by pushing the arrow buttons located above and below the sound cartridge slot.\n\n7: Choose the pitch of the sounds to play by setting the dial on each of your 8 step units to the desired note. With drums, each note is a different drum sounds. You can trial your sounds by pushing the activate button on each step unit (with the sequencer inactive).\n\n8: Get freaky with the Low frequency oscillator.\n\n9: Finally, activate the sequencer, Vibeoneer.","name":"Logic Step Sequencer"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Mode":"ReadWrite","Error":"Read","Activate":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","Time":"ReadWrite","Bpm":"ReadWrite","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Whole Note","1":"Half Note","2":"Quarter Note","3":"Eighth Note","4":"Sixteenth Note"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Sound Cartridge","typ":"SoundCartridge"}],"device":{"connection_list":[{"typ":"Data","role":"Input"},{"typ":"Data","role":"Input"},{"typ":"Power","role":"Input"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":true,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"Meteorite":{"prefab":{"prefab_name":"Meteorite","prefab_hash":-99064335,"desc":"","name":"Meteorite"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Default"}},"MonsterEgg":{"prefab":{"prefab_name":"MonsterEgg","prefab_hash":-1667675295,"desc":"","name":""},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Default"}},"MotherboardComms":{"prefab":{"prefab_name":"MotherboardComms","prefab_hash":-337075633,"desc":"When placed in a Computer and connected to a Landingpad Data And Power, a Medium Satellite Dish, and a Vending Machine allows Stationeers to trade with suppliers. Adjust the horizontal and vertical attributes of the Medium Satellite Dish either directly or through logic. You need a communications signal of 95% or above to establish reliable communications with a trader. A minimum of a 3x3 clear pad area with a Landingpad Center at the center is required for a trader to land.","name":"Communications Motherboard"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Motherboard","sorting_class":"Default"}},"MotherboardLogic":{"prefab":{"prefab_name":"MotherboardLogic","prefab_hash":502555944,"desc":"Motherboards are connected to Computers to perform various technical functions.\nThe Norsec-designed K-cops logic motherboard allows Stationeers to set variables and actions on specific logic-controlled items.","name":"Logic Motherboard"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Motherboard","sorting_class":"Default"}},"MotherboardMissionControl":{"prefab":{"prefab_name":"MotherboardMissionControl","prefab_hash":-127121474,"desc":"","name":""},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Motherboard","sorting_class":"Default"}},"MotherboardProgrammableChip":{"prefab":{"prefab_name":"MotherboardProgrammableChip","prefab_hash":-161107071,"desc":"When placed in a Computer, the IC Editor allows players to write and edit IC code, which can then be uploaded to a Integrated Circuit (IC10) if housed in an IC Housing.","name":"IC Editor Motherboard"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Motherboard","sorting_class":"Default"}},"MotherboardRockets":{"prefab":{"prefab_name":"MotherboardRockets","prefab_hash":-806986392,"desc":"","name":"Rocket Control Motherboard"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Motherboard","sorting_class":"Default"}},"MotherboardSorter":{"prefab":{"prefab_name":"MotherboardSorter","prefab_hash":-1908268220,"desc":"Motherboards are connected to Computers to perform various technical functions.\nThe Norsec-designed K-cops 10-10 sorter motherboard permits Stationeers to control which items a Sorter does, and does not, permit to pass.","name":"Sorter Motherboard"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Motherboard","sorting_class":"Default"}},"MothershipCore":{"prefab":{"prefab_name":"MothershipCore","prefab_hash":-1930442922,"desc":"A relic of from an earlier era of space ambition, Sinotai's mothership cores formed the central element of a generation's space-going creations. While Sinotai's pivot to smaller, modular craft upset some purists, motherships continue to be built and maintained by dedicated enthusiasts.","name":"Mothership Core"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Default"}},"NpcChick":{"prefab":{"prefab_name":"NpcChick","prefab_hash":155856647,"desc":"","name":"Chick"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Default"},"slots":[{"name":"Brain","typ":"Organ"},{"name":"Lungs","typ":"Organ"}]},"NpcChicken":{"prefab":{"prefab_name":"NpcChicken","prefab_hash":399074198,"desc":"","name":"Chicken"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Default"},"slots":[{"name":"Brain","typ":"Organ"},{"name":"Lungs","typ":"Organ"}]},"PassiveSpeaker":{"prefab":{"prefab_name":"PassiveSpeaker","prefab_hash":248893646,"desc":"","name":"Passive Speaker"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Volume":"ReadWrite","PrefabHash":"ReadWrite","SoundAlert":"ReadWrite","ReferenceId":"ReadWrite","NameHash":"ReadWrite"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"Input"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"PipeBenderMod":{"prefab":{"prefab_name":"PipeBenderMod","prefab_hash":443947415,"desc":"Apply to an Hydraulic Pipe Bender with a Welding Torch or Arc Welder to upgrade for increased processing speed and more recipe options.","name":"Pipe Bender Mod"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Default"}},"PortableComposter":{"prefab":{"prefab_name":"PortableComposter","prefab_hash":-1958705204,"desc":"A simple composting device, the basic composter creates Fertilizer out of organic matter. It accepts food, Decayed Food or Biomass. It requires a full Liquid Canister and a battery to operate, accelerating the natural composting process.\nWhen processing, it releases nitrogen and volatiles, as well a small amount of heat.\n\nCompost composition\nFertilizer is produced at a 1:3 ratio of fertilizer to ingredients. The fertilizer's effects on plants will vary depending on the respective proportions of its ingredients.\n\n- food increases PLANT YIELD up to two times\n- Decayed Food increases plant GROWTH SPEED up to two times\n- Biomass increases the NUMBER OF GROWTH CYCLES the fertilizer lasts for","name":"Portable Composter"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Default"},"slots":[{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"Battery"},{"name":"Liquid Canister","typ":"LiquidCanister"}]},"PortableSolarPanel":{"prefab":{"prefab_name":"PortableSolarPanel","prefab_hash":2043318949,"desc":"","name":"Portable Solar Panel"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Tools"},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"}},"logic_types":{"Open":"ReadWrite","ReferenceId":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"RailingElegant01":{"prefab":{"prefab_name":"RailingElegant01","prefab_hash":399661231,"desc":"","name":"Railing Elegant (Type 1)"},"structure":{"small_grid":false}},"RailingElegant02":{"prefab":{"prefab_name":"RailingElegant02","prefab_hash":-1898247915,"desc":"","name":"Railing Elegant (Type 2)"},"structure":{"small_grid":false}},"RailingIndustrial02":{"prefab":{"prefab_name":"RailingIndustrial02","prefab_hash":-2072792175,"desc":"","name":"Railing Industrial (Type 2)"},"structure":{"small_grid":false}},"ReagentColorBlue":{"prefab":{"prefab_name":"ReagentColorBlue","prefab_hash":980054869,"desc":"","name":"Color Dye (Blue)"},"item":{"consumable":true,"filter_type":null,"ingredient":true,"max_quantity":100,"reagents":{"ColorBlue":10.0},"slot_class":"None","sorting_class":"Resources"}},"ReagentColorGreen":{"prefab":{"prefab_name":"ReagentColorGreen","prefab_hash":120807542,"desc":"","name":"Color Dye (Green)"},"item":{"consumable":true,"filter_type":null,"ingredient":true,"max_quantity":100,"reagents":{"ColorGreen":10.0},"slot_class":"None","sorting_class":"Resources"}},"ReagentColorOrange":{"prefab":{"prefab_name":"ReagentColorOrange","prefab_hash":-400696159,"desc":"","name":"Color Dye (Orange)"},"item":{"consumable":true,"filter_type":null,"ingredient":true,"max_quantity":100,"reagents":{"ColorOrange":10.0},"slot_class":"None","sorting_class":"Resources"}},"ReagentColorRed":{"prefab":{"prefab_name":"ReagentColorRed","prefab_hash":1998377961,"desc":"","name":"Color Dye (Red)"},"item":{"consumable":true,"filter_type":null,"ingredient":true,"max_quantity":100,"reagents":{"ColorRed":10.0},"slot_class":"None","sorting_class":"Resources"}},"ReagentColorYellow":{"prefab":{"prefab_name":"ReagentColorYellow","prefab_hash":635208006,"desc":"","name":"Color Dye (Yellow)"},"item":{"consumable":true,"filter_type":null,"ingredient":true,"max_quantity":100,"reagents":{"ColorYellow":10.0},"slot_class":"None","sorting_class":"Resources"}},"RespawnPoint":{"prefab":{"prefab_name":"RespawnPoint","prefab_hash":-788672929,"desc":"Place a respawn point to set a player entry point to your base when loading in, or returning from the dead.","name":"Respawn Point"},"structure":{"small_grid":true}},"RespawnPointWallMounted":{"prefab":{"prefab_name":"RespawnPointWallMounted","prefab_hash":-491247370,"desc":"","name":"Respawn Point (Mounted)"},"structure":{"small_grid":true}},"Robot":{"prefab":{"prefab_name":"Robot","prefab_hash":434786784,"desc":"Designed by - presumably drunk - Norsec roboticists, AIMeE (or Automated Independent Mechanical Entity) can be a Stationeer's best friend, or tiresome nemesis, or both several times in the same day. \n \nIntended to unearth and retrieve ores automatically, the unit requires basic programming knowledge to operate, and IC Editor Motherboard.\n\nAIMEe has 7 modes:\n\nRobotMode.None = 0 = Do nothing\nRobotMode.None = 1 = Follow nearest player\nRobotMode.None = 2 = Move to target in straight line\nRobotMode.None = 3 = Wander around looking for ores in 15 co-ords radius\nRobotMode.None = 4 = Unload in chute input or chute bin within 3 meters / 1.5 large grids\nRobotMode.None = 5 = Path(find) to target\nRobotMode.None = 6 = Automatic assigned state, shows when storage slots are fullConnects to Logic Transmitter","name":"AIMeE Bot"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Default"},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"2":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"3":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"4":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"5":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"6":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"7":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"8":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"9":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Mode":"ReadWrite","Error":"Read","PressureExternal":"Read","On":"ReadWrite","TemperatureExternal":"Read","PositionX":"Read","PositionY":"Read","PositionZ":"Read","VelocityMagnitude":"Read","VelocityRelativeX":"Read","VelocityRelativeY":"Read","VelocityRelativeZ":"Read","TargetX":"Write","TargetY":"Write","TargetZ":"Write","MineablesInVicinity":"Read","MineablesInQueue":"Read","ReferenceId":"Read","ForwardX":"Read","ForwardY":"Read","ForwardZ":"Read","Orientation":"Read","VelocityX":"Read","VelocityY":"Read","VelocityZ":"Read"},"modes":{"0":"None","1":"Follow","2":"MoveToTarget","3":"Roam","4":"Unload","5":"PathToTarget","6":"StorageFull"},"transmission_receiver":false,"wireless_logic":true,"circuit_holder":true},"slots":[{"name":"Battery","typ":"Battery"},{"name":"Programmable Chip","typ":"ProgrammableChip"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"},{"name":"Ore","typ":"Ore"}]},"RoverCargo":{"prefab":{"prefab_name":"RoverCargo","prefab_hash":350726273,"desc":"Connects to Logic Transmitter","name":"Rover (Cargo)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Default"},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"2":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","FilterType":"Read","ReferenceId":"Read"},"3":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","FilterType":"Read","ReferenceId":"Read"},"4":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","FilterType":"Read","ReferenceId":"Read"},"5":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Pressure":"Read","Temperature":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"6":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Pressure":"Read","Temperature":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"7":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Pressure":"Read","Temperature":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"8":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Pressure":"Read","Temperature":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"9":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"10":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"11":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"12":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"13":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"14":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"15":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Pressure":"Read","Temperature":"Read","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","On":"ReadWrite","TotalMoles":"Read","RatioNitrousOxide":"Read","Combustion":"Read","RatioLiquidNitrogen":"Read","RatioLiquidOxygen":"Read","RatioLiquidVolatiles":"Read","RatioSteam":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidPollutant":"Read","RatioLiquidNitrousOxide":"Read","ReferenceId":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":true,"circuit_holder":false},"slots":[{"name":"Entity","typ":"Entity"},{"name":"Entity","typ":"Entity"},{"name":"Gas Filter","typ":"GasFilter"},{"name":"Gas Filter","typ":"GasFilter"},{"name":"Gas Filter","typ":"GasFilter"},{"name":"Gas Canister","typ":"GasCanister"},{"name":"Gas Canister","typ":"GasCanister"},{"name":"Gas Canister","typ":"GasCanister"},{"name":"Gas Canister","typ":"GasCanister"},{"name":"Battery","typ":"Battery"},{"name":"Battery","typ":"Battery"},{"name":"Battery","typ":"Battery"},{"name":"Container Slot","typ":"None"},{"name":"Container Slot","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"}]},"Rover_MkI":{"prefab":{"prefab_name":"Rover_MkI","prefab_hash":-2049946335,"desc":"A distant cousin of the jeep, the Mk I {Sinotai electric rover is one of the most simple and durable light vehicles in the known universe. Able to carry two passengers and cargo such as the Portable Gas Tank (Air) or , it is powered by up to three batteries, accepting everything including Battery Cell (Nuclear).\nA quad-array of hub-mounted electric engines propels the reinforced aluminium frame over most terrain and modest obstacles. While the Mk I is designed for stability in low-horizontality circumstances, if it rolls, try using your Crowbar to put it right way up.Connects to Logic Transmitter","name":"Rover MkI"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Default"},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"2":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"3":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"4":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"5":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"6":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"7":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"8":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"9":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"},"10":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Pressure":"Read","Temperature":"Read","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","On":"ReadWrite","TotalMoles":"Read","RatioNitrousOxide":"Read","Combustion":"Read","RatioLiquidNitrogen":"Read","RatioLiquidOxygen":"Read","RatioLiquidVolatiles":"Read","RatioSteam":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidPollutant":"Read","RatioLiquidNitrousOxide":"Read","ReferenceId":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":true,"circuit_holder":false},"slots":[{"name":"Entity","typ":"Entity"},{"name":"Entity","typ":"Entity"},{"name":"Battery","typ":"Battery"},{"name":"Battery","typ":"Battery"},{"name":"Battery","typ":"Battery"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"}]},"Rover_MkI_build_states":{"prefab":{"prefab_name":"Rover_MkI_build_states","prefab_hash":861674123,"desc":"","name":"Rover MKI"},"structure":{"small_grid":false}},"SMGMagazine":{"prefab":{"prefab_name":"SMGMagazine","prefab_hash":-256607540,"desc":"","name":"SMG Magazine"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Magazine","sorting_class":"Default"}},"SeedBag_Cocoa":{"prefab":{"prefab_name":"SeedBag_Cocoa","prefab_hash":1139887531,"desc":"","name":"Cocoa Seeds"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"Plant","sorting_class":"Food"}},"SeedBag_Corn":{"prefab":{"prefab_name":"SeedBag_Corn","prefab_hash":-1290755415,"desc":"Grow a Corn.","name":"Corn Seeds"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"Plant","sorting_class":"Food"}},"SeedBag_Fern":{"prefab":{"prefab_name":"SeedBag_Fern","prefab_hash":-1990600883,"desc":"Grow a Fern.","name":"Fern Seeds"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"Plant","sorting_class":"Food"}},"SeedBag_Mushroom":{"prefab":{"prefab_name":"SeedBag_Mushroom","prefab_hash":311593418,"desc":"Grow a Mushroom.","name":"Mushroom Seeds"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"Plant","sorting_class":"Food"}},"SeedBag_Potato":{"prefab":{"prefab_name":"SeedBag_Potato","prefab_hash":1005571172,"desc":"Grow a Potato.","name":"Potato Seeds"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"Plant","sorting_class":"Food"}},"SeedBag_Pumpkin":{"prefab":{"prefab_name":"SeedBag_Pumpkin","prefab_hash":1423199840,"desc":"Grow a Pumpkin.","name":"Pumpkin Seeds"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"Plant","sorting_class":"Food"}},"SeedBag_Rice":{"prefab":{"prefab_name":"SeedBag_Rice","prefab_hash":-1691151239,"desc":"Grow some Rice.","name":"Rice Seeds"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"Plant","sorting_class":"Food"}},"SeedBag_Soybean":{"prefab":{"prefab_name":"SeedBag_Soybean","prefab_hash":1783004244,"desc":"Grow some Soybean.","name":"Soybean Seeds"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"Plant","sorting_class":"Food"}},"SeedBag_SugarCane":{"prefab":{"prefab_name":"SeedBag_SugarCane","prefab_hash":-1884103228,"desc":"","name":"Sugarcane Seeds"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"Plant","sorting_class":"Food"}},"SeedBag_Switchgrass":{"prefab":{"prefab_name":"SeedBag_Switchgrass","prefab_hash":488360169,"desc":"","name":"Switchgrass Seed"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"Plant","sorting_class":"Food"}},"SeedBag_Tomato":{"prefab":{"prefab_name":"SeedBag_Tomato","prefab_hash":-1922066841,"desc":"Grow a Tomato.","name":"Tomato Seeds"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"Plant","sorting_class":"Food"}},"SeedBag_Wheet":{"prefab":{"prefab_name":"SeedBag_Wheet","prefab_hash":-654756733,"desc":"Grow some Wheat.","name":"Wheat Seeds"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":10,"reagents":null,"slot_class":"Plant","sorting_class":"Food"}},"SpaceShuttle":{"prefab":{"prefab_name":"SpaceShuttle","prefab_hash":-1991297271,"desc":"An antiquated Sinotai transport craft, long since decommissioned.","name":"Space Shuttle"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Default"},"slots":[{"name":"Captain's Seat","typ":"Entity"},{"name":"Passenger Seat Left","typ":"Entity"},{"name":"Passenger Seat Right","typ":"Entity"}]},"StopWatch":{"prefab":{"prefab_name":"StopWatch","prefab_hash":-1527229051,"desc":"","name":"Stop Watch"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","Activate":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","Time":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"Input"},{"typ":"Power","role":"Input"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureAccessBridge":{"prefab":{"prefab_name":"StructureAccessBridge","prefab_hash":1298920475,"desc":"Extendable bridge that spans three grids","name":"Access Bridge"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Open":"ReadWrite","Activate":"ReadWrite","Lock":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureActiveVent":{"prefab":{"prefab_name":"StructureActiveVent","prefab_hash":-1129453144,"desc":"The active vent is a powered device for maintaining gas pressure by pumping gas into (or out of) a pipe network. The vent has two modes: 'Outward' sets it to pump gas into a space until pressure is reached; 'Inward' sets it to pump gas out until pressure is reached. The pressure parameter can be set on a connected Console. Default pressure is 101kPa for Outward; 0kPa for Inward ...","name":"Active Vent"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Open":"ReadWrite","Mode":"ReadWrite","Error":"Read","PressureExternal":"ReadWrite","PressureInternal":"ReadWrite","Lock":"ReadWrite","Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Outward","1":"Inward"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"","typ":"DataDisk"}],"device":{"connection_list":[{"typ":"PowerAndData","role":"None"},{"typ":"Pipe","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":true,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureAdvancedComposter":{"prefab":{"prefab_name":"StructureAdvancedComposter","prefab_hash":446212963,"desc":"The advanced composter creates Fertilizer out of organic matter. It accepts food, Decayed Food or Biomass. It requires Water and power to operate, accelerating the natural composting process.\nWhen processing, it releases nitrogen and volatiles, as well a small amount of heat. \n\nCompost composition\nFertilizer is produced at a 1:3 ratio of fertilizer to ingredients. The fertilizer's effects on plants will vary depending on the respective proportions of its ingredients.\n\n- Food increases PLANT YIELD up to two times\n- Decayed Food increases plant GROWTH SPEED up to two times\n- Biomass increases the NUMBER OF GROWTH CYCLES the fertilizer lasts for up to five times\n","name":"Advanced Composter"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{},"1":{}},"logic_types":{"Power":"Read","Open":"ReadWrite","Mode":"ReadWrite","Error":"Read","Activate":"ReadWrite","Lock":"ReadWrite","Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","Quantity":"Read","On":"ReadWrite","RequiredPower":"Read","ClearMemory":"Write","ExportCount":"Read","ImportCount":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Mode0","1":"Mode1"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Import","typ":"None"},{"name":"Export","typ":"None"}],"device":{"connection_list":[{"typ":"Chute","role":"Output"},{"typ":"Data","role":"None"},{"typ":"PipeLiquid","role":"Input"},{"typ":"Power","role":"None"},{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":true,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureAdvancedFurnace":{"prefab":{"prefab_name":"StructureAdvancedFurnace","prefab_hash":545937711,"desc":"The advanced furnace comes with integrated inlet and outlet pumps for controlling the unit's internal pressure.","name":"Advanced Furnace"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{},"1":{}},"logic_types":{"Power":"Read","Open":"ReadWrite","Mode":"ReadWrite","Error":"Read","Pressure":"Read","Temperature":"Read","Activate":"ReadWrite","Lock":"ReadWrite","Setting":"ReadWrite","Reagents":"Read","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","RecipeHash":"Read","ClearMemory":"Write","ExportCount":"Read","ImportCount":"Read","TotalMoles":"Read","RatioNitrousOxide":"Read","PrefabHash":"Read","SettingInput":"ReadWrite","SettingOutput":"ReadWrite","Combustion":"Read","RatioLiquidNitrogen":"Read","RatioLiquidOxygen":"Read","RatioLiquidVolatiles":"Read","RatioSteam":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidPollutant":"Read","RatioLiquidNitrousOxide":"Read","ReferenceId":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read","NameHash":"Read"},"modes":{"0":"Mode0","1":"Mode1"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Import","typ":"None"},{"name":"Export","typ":"None"}],"device":{"connection_list":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"Data","role":"None"},{"typ":"Power","role":"None"},{"typ":"Pipe","role":"Input"},{"typ":"Pipe","role":"Output"},{"typ":"PipeLiquid","role":"Output2"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":true,"has_color_state":false,"has_lock_state":true,"has_mode_state":true,"has_on_off_state":true,"has_open_state":true,"has_reagents":true}},"StructureAdvancedPackagingMachine":{"prefab":{"prefab_name":"StructureAdvancedPackagingMachine","prefab_hash":-463037670,"desc":"The Xigo Advanced Cannifier Multi-Plus Pro is an automateable packaging machine that uses Empty Cans and cooked food to create canned sustenance that does not decay. Note that the ACMPP only accepts cooked food and tin cans.","name":"Advanced Packaging Machine"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{},"1":{}},"logic_types":{"Power":"Read","Open":"ReadWrite","Error":"Read","Activate":"ReadWrite","Lock":"ReadWrite","Reagents":"Read","On":"ReadWrite","RequiredPower":"Read","RecipeHash":"ReadWrite","CompletionRatio":"Read","ClearMemory":"Write","ExportCount":"Read","ImportCount":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Import","typ":"None"},{"name":"Export","typ":"None"}],"device":{"connection_list":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":true,"has_reagents":true},"memory":{"instructions":{"DeviceSetLock":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |","typ":"PrinterInstruction","value":6},"EjectAllReagents":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |","typ":"PrinterInstruction","value":8},"EjectReagent":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |","typ":"PrinterInstruction","value":7},"ExecuteRecipe":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |","typ":"PrinterInstruction","value":2},"JumpIfNextInvalid":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":4},"JumpToAddress":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":5},"MissingRecipeReagent":{"description":"| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |","typ":"PrinterInstruction","value":9},"StackPointer":{"description":"| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":1},"WaitUntilNextValid":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |","typ":"PrinterInstruction","value":3}},"memory_access":"ReadWrite","memory_size":64}},"StructureAirConditioner":{"prefab":{"prefab_name":"StructureAirConditioner","prefab_hash":-2087593337,"desc":"Built using the Kit (Atmospherics), the ExMin-designed air conditioner is used to raise or lower input gas temperature.\n\t \nThe unit has three pipe connections: input, output, and waste. Gas fed into the input will be heated or cooled to reach the target temperature, while the opposite will happen to gas on the waste network.\n\nMultiple Efficiency Multipliers can effect the amount of energy the Air Conditioner uses, and these can be view on the unit's green Information Panel. As the temperature difference between input and waste increases, the Temperature Differential Efficiency Multiplier will decrease. If input or waste temperature is extremely hot or cold, the Operational Temperature Efficiency will decrease. If the input or waste pipe has approach low pressures, the Pressure Efficiency will decrease.\n\nPipe Convection Radiators may be useful in bringing extreme pipe temperatures back towards normal world temperatures. \n \nFor more information on using the air conditioner, consult the temperature control Guides page.","name":"Air Conditioner"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{}},"logic_types":{"Power":"Read","Open":"ReadWrite","Mode":"ReadWrite","Error":"Read","Lock":"ReadWrite","Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","PressureInput":"Read","TemperatureInput":"Read","RatioOxygenInput":"Read","RatioCarbonDioxideInput":"Read","RatioNitrogenInput":"Read","RatioPollutantInput":"Read","RatioVolatilesInput":"Read","RatioWaterInput":"Read","RatioNitrousOxideInput":"Read","TotalMolesInput":"Read","PressureOutput":"Read","TemperatureOutput":"Read","RatioOxygenOutput":"Read","RatioCarbonDioxideOutput":"Read","RatioNitrogenOutput":"Read","RatioPollutantOutput":"Read","RatioVolatilesOutput":"Read","RatioWaterOutput":"Read","RatioNitrousOxideOutput":"Read","TotalMolesOutput":"Read","PressureOutput2":"Read","TemperatureOutput2":"Read","RatioOxygenOutput2":"Read","RatioCarbonDioxideOutput2":"Read","RatioNitrogenOutput2":"Read","RatioPollutantOutput2":"Read","RatioVolatilesOutput2":"Read","RatioWaterOutput2":"Read","RatioNitrousOxideOutput2":"Read","TotalMolesOutput2":"Read","CombustionInput":"Read","CombustionOutput":"Read","CombustionOutput2":"Read","OperationalTemperatureEfficiency":"Read","TemperatureDifferentialEfficiency":"Read","PressureEfficiency":"Read","RatioLiquidNitrogenInput":"Read","RatioLiquidNitrogenOutput":"Read","RatioLiquidNitrogenOutput2":"Read","RatioLiquidOxygenInput":"Read","RatioLiquidOxygenOutput":"Read","RatioLiquidOxygenOutput2":"Read","RatioLiquidVolatilesInput":"Read","RatioLiquidVolatilesOutput":"Read","RatioLiquidVolatilesOutput2":"Read","RatioSteamInput":"Read","RatioSteamOutput":"Read","RatioSteamOutput2":"Read","RatioLiquidCarbonDioxideInput":"Read","RatioLiquidCarbonDioxideOutput":"Read","RatioLiquidCarbonDioxideOutput2":"Read","RatioLiquidPollutantInput":"Read","RatioLiquidPollutantOutput":"Read","RatioLiquidPollutantOutput2":"Read","RatioLiquidNitrousOxideInput":"Read","RatioLiquidNitrousOxideOutput":"Read","RatioLiquidNitrousOxideOutput2":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Idle","1":"Active"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":true},"slots":[{"name":"Programmable Chip","typ":"ProgrammableChip"}],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Pipe","role":"Input"},{"typ":"Pipe","role":"Output"},{"typ":"Pipe","role":"Waste"},{"typ":"Power","role":"None"}],"device_pins_length":2,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":true,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureAirlock":{"prefab":{"prefab_name":"StructureAirlock","prefab_hash":-2105052344,"desc":"The standard airlock is a powered portal that forms the main component of an airlock chamber. As long as the airlock is not locked, it can be manually opened using a crowbar.","name":"Airlock"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Open":"ReadWrite","Mode":"ReadWrite","Lock":"ReadWrite","Setting":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","Idle":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Operate","1":"Logic"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":true,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureAirlockGate":{"prefab":{"prefab_name":"StructureAirlockGate","prefab_hash":1736080881,"desc":"1 x 1 modular door piece for building hangar doors.","name":"Small Hangar Door"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Open":"ReadWrite","Mode":"ReadWrite","Lock":"ReadWrite","Setting":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","Idle":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Operate","1":"Logic"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":true,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureAngledBench":{"prefab":{"prefab_name":"StructureAngledBench","prefab_hash":1811979158,"desc":"","name":"Bench (Angled)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Seat","typ":"Entity"}],"device":{"connection_list":[],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureArcFurnace":{"prefab":{"prefab_name":"StructureArcFurnace","prefab_hash":-247344692,"desc":"The simplest smelting system available to the average Stationeer, Recurso's arc furnace was forged itself in the depths of the Solar System to help explorational geologists determine the purity of potential asteroidal mining targets.\nCo-opted by the ODA, it now provides Stationeers with a way to produce pure ingots of various resources.\nThe smelting process also releases a range of by product gases, principally Nitrogen, Carbon Dioxide, Volatiles and Oxygen in differing ratios. These can be recaptured from the atmosphere by filtering, but also make the arc furnace a risk in closed environments. \nUnlike the more advanced Furnace, the arc furnace cannot create alloys.","name":"Arc Furnace"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Error":"Read","Activate":"ReadWrite","Lock":"ReadWrite","Reagents":"Read","On":"ReadWrite","RequiredPower":"Read","Idle":"Read","RecipeHash":"Read","ClearMemory":"Write","ExportCount":"Read","ImportCount":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Import","typ":"Ore"},{"name":"Export","typ":"Ingot"}],"device":{"connection_list":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":true}},"StructureAreaPowerControl":{"prefab":{"prefab_name":"StructureAreaPowerControl","prefab_hash":1999523701,"desc":"An Area Power Control (APC) has three main functions: \nIts primary purpose is to regulate power flow, ensuring uninterrupted performance from devices and machinery, especially those with a fluctuating draw. \nAPCs also create sub-networks, as no devices on the far side of an APC are visible on the main network.\nLastly, an APC charges batteries, which can provide backup power to the sub-network in the case of an outage. Note that an APC requires a battery to stabilize power draw. It also has two variants, each allowing power to flow in one direction only.","name":"Area Power Control"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Open":"ReadWrite","Mode":"ReadWrite","Error":"Read","Lock":"ReadWrite","Charge":"Read","Maximum":"Read","Ratio":"Read","PowerPotential":"Read","PowerActual":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Idle","1":"Discharged","2":"Discharging","3":"Charging","4":"Charged"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Battery","typ":"Battery"},{"name":"Data Disk","typ":"DataDisk"}],"device":{"connection_list":[{"typ":"PowerAndData","role":"Input"},{"typ":"Power","role":"Output"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":true,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureAreaPowerControlReversed":{"prefab":{"prefab_name":"StructureAreaPowerControlReversed","prefab_hash":-1032513487,"desc":"An Area Power Control (APC) has three main functions. \nIts primary purpose is to regulate power flow, ensuring uninterrupted performance from devices and machinery, especially those with a fluctuating draw. \nAPCs also create sub-networks, as no devices on the far side of an APC are visible on the main network. \nLastly, an APC charges batteries, which can provide backup power to the sub-network in the case of an outage. Note that an APC requires a battery to stabilize power draw. It also has two variants, each allowing power to flow in one direction only.","name":"Area Power Control"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Open":"ReadWrite","Mode":"ReadWrite","Error":"Read","Lock":"ReadWrite","Charge":"Read","Maximum":"Read","Ratio":"Read","PowerPotential":"Read","PowerActual":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Idle","1":"Discharged","2":"Discharging","3":"Charging","4":"Charged"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Battery","typ":"Battery"},{"name":"Data Disk","typ":"DataDisk"}],"device":{"connection_list":[{"typ":"PowerAndData","role":"Input"},{"typ":"Power","role":"Output"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":true,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureAutoMinerSmall":{"prefab":{"prefab_name":"StructureAutoMinerSmall","prefab_hash":7274344,"desc":"The Recurso SquareDig autominer is a structure that when built will mine a vertical 2x2 shaft until it hits bedrock. The autominer can be connected to a chute system, and is controllable by a logic network. Note that the autominer outputs more ore than a conventional Mining Drill over the same area.","name":"Autominer (Small)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{},"1":{}},"logic_types":{"Power":"Read","Open":"ReadWrite","Error":"Read","Activate":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","ClearMemory":"Write","ExportCount":"Read","ImportCount":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Import","typ":"None"},{"name":"Export","typ":"None"}],"device":{"connection_list":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureAutolathe":{"prefab":{"prefab_name":"StructureAutolathe","prefab_hash":336213101,"desc":"The foundation of most Stationeer fabrication systems, the ExMin autolathe is a multi-axis molecular compositional system. Its complexity demands considerable time to assemble, but it remains an indispensable creation tool. Upgrade the device using a Autolathe Printer Mod for additional recipes and faster processing speeds.\n\t ","name":"Autolathe"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{},"1":{}},"logic_types":{"Power":"Read","Open":"ReadWrite","Error":"Read","Activate":"ReadWrite","Lock":"ReadWrite","Reagents":"Read","On":"ReadWrite","RequiredPower":"Read","RecipeHash":"ReadWrite","CompletionRatio":"Read","ClearMemory":"Write","ExportCount":"Read","ImportCount":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Import","typ":"Ingot"},{"name":"Export","typ":"None"}],"device":{"connection_list":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":true,"has_reagents":true},"memory":{"instructions":{"DeviceSetLock":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |","typ":"PrinterInstruction","value":6},"EjectAllReagents":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |","typ":"PrinterInstruction","value":8},"EjectReagent":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |","typ":"PrinterInstruction","value":7},"ExecuteRecipe":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |","typ":"PrinterInstruction","value":2},"JumpIfNextInvalid":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":4},"JumpToAddress":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":5},"MissingRecipeReagent":{"description":"| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |","typ":"PrinterInstruction","value":9},"StackPointer":{"description":"| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":1},"WaitUntilNextValid":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |","typ":"PrinterInstruction","value":3}},"memory_access":"ReadWrite","memory_size":64}},"StructureAutomatedOven":{"prefab":{"prefab_name":"StructureAutomatedOven","prefab_hash":-1672404896,"desc":"","name":"Automated Oven"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{},"1":{}},"logic_types":{"Power":"Read","Open":"ReadWrite","Error":"Read","Activate":"ReadWrite","Lock":"ReadWrite","Reagents":"Read","On":"ReadWrite","RequiredPower":"Read","RecipeHash":"ReadWrite","CompletionRatio":"Read","ClearMemory":"Write","ExportCount":"Read","ImportCount":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Import","typ":"None"},{"name":"Export","typ":"None"}],"device":{"connection_list":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":true,"has_reagents":true},"memory":{"instructions":{"DeviceSetLock":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |","typ":"PrinterInstruction","value":6},"EjectAllReagents":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |","typ":"PrinterInstruction","value":8},"EjectReagent":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |","typ":"PrinterInstruction","value":7},"ExecuteRecipe":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |","typ":"PrinterInstruction","value":2},"JumpIfNextInvalid":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":4},"JumpToAddress":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":5},"MissingRecipeReagent":{"description":"| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |","typ":"PrinterInstruction","value":9},"StackPointer":{"description":"| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":1},"WaitUntilNextValid":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |","typ":"PrinterInstruction","value":3}},"memory_access":"ReadWrite","memory_size":64}},"StructureBackLiquidPressureRegulator":{"prefab":{"prefab_name":"StructureBackLiquidPressureRegulator","prefab_hash":2099900163,"desc":"Regulates the volume ratio of liquid in the input Liquid pipe. This is expressed as percentage where 100 is totally full and 0 is empty.","name":"Liquid Back Volume Regulator"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","Lock":"ReadWrite","Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PipeLiquid","role":"Input"},{"typ":"PipeLiquid","role":"Output"},{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureBackPressureRegulator":{"prefab":{"prefab_name":"StructureBackPressureRegulator","prefab_hash":-1149857558,"desc":"Unlike the Pressure Regulator, which closes when the input exceeds a given pressure, the back pressure regulator opens when input pressure reaches a given value.","name":"Back Pressure Regulator"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","Lock":"ReadWrite","Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Pipe","role":"Input"},{"typ":"Pipe","role":"Output"},{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureBasketHoop":{"prefab":{"prefab_name":"StructureBasketHoop","prefab_hash":-1613497288,"desc":"","name":"Basket Hoop"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Lock":"ReadWrite","Setting":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureBattery":{"prefab":{"prefab_name":"StructureBattery","prefab_hash":-400115994,"desc":"Providing large-scale, reliable power storage, the Sinotai 'Dianzi' station battery is the heart of most Stationeer bases. \nThere are a variety of cautions to the design of electrical systems using batteries, and every experienced Stationeer has a story to tell, hence the Stationeer adage: 'Dianzi cooks, but it also frys.' \nPOWER OUTPUT\nAble to store up to 3600000W of power, there are no practical limits to its throughput, hence it is wise to use Cable Coil (Heavy). Seasoned electrical engineers will also laugh in the face of those who fail to separate out their power generation networks using an Area Power Control and Transformer (Large).","name":"Station Battery"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Mode":"Read","Error":"Read","Lock":"ReadWrite","Charge":"Read","Maximum":"Read","Ratio":"Read","PowerPotential":"Read","PowerActual":"Read","On":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Empty","1":"Critical","2":"VeryLow","3":"Low","4":"Medium","5":"High","6":"Full"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"Input"},{"typ":"Power","role":"Output"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":true,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureBatteryCharger":{"prefab":{"prefab_name":"StructureBatteryCharger","prefab_hash":1945930022,"desc":"The 5-slot Xigo battery charger fits the Battery Cell (Small), Battery Cell (Large) and Battery Cell (Nuclear), providing up to 500W to any connected cell. Note: the older design means this device has minor power draw (10W) even when not charging.","name":"Battery Cell Charger"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"2":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"3":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"4":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Error":"Read","Activate":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Battery","typ":"Battery"},{"name":"Battery","typ":"Battery"},{"name":"Battery","typ":"Battery"},{"name":"Battery","typ":"Battery"},{"name":"Battery","typ":"Battery"}],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureBatteryChargerSmall":{"prefab":{"prefab_name":"StructureBatteryChargerSmall","prefab_hash":-761772413,"desc":"","name":"Battery Charger Small"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Error":"Read","Activate":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Battery","typ":"Battery"},{"name":"Battery","typ":"Battery"}],"device":{"connection_list":[{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureBatteryLarge":{"prefab":{"prefab_name":"StructureBatteryLarge","prefab_hash":-1388288459,"desc":"Providing even better large-scale, reliable power storage than the {THING;StructureBattery}, the Sinotai 'Da Dianchi' large station battery is the heart of most Stationeer bases. \nThere are a variety of cautions to the design of electrical systems using batteries, and every experienced Stationeer has a story to tell, hence the Stationeer adage: 'Dianzi cooks, but it also frys.' \nPOWER OUTPUT\nAble to store up to 9000001 watts of power, there are no practical limits to its throughput, hence it is wise to use Cable Coil (Heavy). Seasoned electrical engineers will also laugh in the face of those who fail to separate out their power generation networks using an Area Power Control and Transformer (Large). ","name":"Station Battery (Large)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Mode":"Read","Error":"Read","Lock":"ReadWrite","Charge":"Read","Maximum":"Read","Ratio":"Read","PowerPotential":"Read","PowerActual":"Read","On":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Empty","1":"Critical","2":"VeryLow","3":"Low","4":"Medium","5":"High","6":"Full"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"Input"},{"typ":"Power","role":"Output"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":true,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureBatteryMedium":{"prefab":{"prefab_name":"StructureBatteryMedium","prefab_hash":-1125305264,"desc":"0.Empty\n1.Critical\n2.VeryLow\n3.Low\n4.Medium\n5.High\n6.Full","name":"Battery (Medium)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Mode":"Read","Charge":"Read","Maximum":"Read","Ratio":"Read","PowerPotential":"Read","PowerActual":"Read","On":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Empty","1":"Critical","2":"VeryLow","3":"Low","4":"Medium","5":"High","6":"Full"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Power","role":"Input"},{"typ":"Power","role":"Output"},{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":true,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureBatterySmall":{"prefab":{"prefab_name":"StructureBatterySmall","prefab_hash":-2123455080,"desc":"0.Empty\n1.Critical\n2.VeryLow\n3.Low\n4.Medium\n5.High\n6.Full","name":"Auxiliary Rocket Battery "},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Mode":"Read","Charge":"Read","Maximum":"Read","Ratio":"Read","PowerPotential":"Read","PowerActual":"Read","On":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Empty","1":"Critical","2":"VeryLow","3":"Low","4":"Medium","5":"High","6":"Full"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Power","role":"Input"},{"typ":"Power","role":"Output"},{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":true,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureBeacon":{"prefab":{"prefab_name":"StructureBeacon","prefab_hash":-188177083,"desc":"","name":"Beacon"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","Lock":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","Color":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":true,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureBench":{"prefab":{"prefab_name":"StructureBench","prefab_hash":-2042448192,"desc":"When it's time to sit, nothing supports you like a bench. This bench is powered, so you can use appliances like the Microwave.","name":"Powered Bench"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","On":"ReadWrite","SortingClass":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","On":"ReadWrite","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Error":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Appliance 1","typ":"Appliance"},{"name":"Appliance 2","typ":"Appliance"}],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureBench1":{"prefab":{"prefab_name":"StructureBench1","prefab_hash":406745009,"desc":"","name":"Bench (Counter Style)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","On":"ReadWrite","SortingClass":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","On":"ReadWrite","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Error":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Appliance 1","typ":"Appliance"},{"name":"Appliance 2","typ":"Appliance"}],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureBench2":{"prefab":{"prefab_name":"StructureBench2","prefab_hash":-2127086069,"desc":"","name":"Bench (High Tech Style)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","On":"ReadWrite","SortingClass":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","On":"ReadWrite","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Error":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Appliance 1","typ":"Appliance"},{"name":"Appliance 2","typ":"Appliance"}],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureBench3":{"prefab":{"prefab_name":"StructureBench3","prefab_hash":-164622691,"desc":"","name":"Bench (Frame Style)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","On":"ReadWrite","SortingClass":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","On":"ReadWrite","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Error":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Appliance 1","typ":"Appliance"},{"name":"Appliance 2","typ":"Appliance"}],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureBench4":{"prefab":{"prefab_name":"StructureBench4","prefab_hash":1750375230,"desc":"","name":"Bench (Workbench Style)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","On":"ReadWrite","SortingClass":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","On":"ReadWrite","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Error":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Appliance 1","typ":"Appliance"},{"name":"Appliance 2","typ":"Appliance"}],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureBlastDoor":{"prefab":{"prefab_name":"StructureBlastDoor","prefab_hash":337416191,"desc":"Airtight and almost undamageable, the original 'Millmar' series of blast door was designed by off-world mining giant Recurso to protect asteroid-mining facilities from nuclear-incident-level explosive decompression.\nShort of a pocket-sized singularity blinking into the local space-time frame, there is effectively no limit to the pressure these blast doors can contain - ideal for constructing airlocks in pressure-sensitive environments.","name":"Blast Door"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Open":"ReadWrite","Mode":"ReadWrite","Lock":"ReadWrite","Setting":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","Idle":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Operate","1":"Logic"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":true,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureBlockBed":{"prefab":{"prefab_name":"StructureBlockBed","prefab_hash":697908419,"desc":"Description coming.","name":"Block Bed"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Error":"Read","Activate":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Bed","typ":"Entity"}],"device":{"connection_list":[{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureBlocker":{"prefab":{"prefab_name":"StructureBlocker","prefab_hash":378084505,"desc":"","name":"Blocker"},"structure":{"small_grid":false}},"StructureCableAnalysizer":{"prefab":{"prefab_name":"StructureCableAnalysizer","prefab_hash":1036015121,"desc":"","name":"Cable Analyzer"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"PowerPotential":"Read","PowerActual":"Read","PowerRequired":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureCableCorner":{"prefab":{"prefab_name":"StructureCableCorner","prefab_hash":-889269388,"desc":"Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of Stationeer life - so essential, the ODA designated it an official 'tool' during the 3rd Decannual Stationeer Solar Conference.\nNormal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy).","name":"Cable (Corner)"},"structure":{"small_grid":true}},"StructureCableCorner3":{"prefab":{"prefab_name":"StructureCableCorner3","prefab_hash":980469101,"desc":"Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of Stationeer life - so essential, the ODA designated it an official 'tool' during the 3rd Decannual Stationeer Solar Conference.\nNormal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy).","name":"Cable (3-Way Corner)"},"structure":{"small_grid":true}},"StructureCableCorner3Burnt":{"prefab":{"prefab_name":"StructureCableCorner3Burnt","prefab_hash":318437449,"desc":"","name":"Burnt Cable (3-Way Corner)"},"structure":{"small_grid":true}},"StructureCableCorner3HBurnt":{"prefab":{"prefab_name":"StructureCableCorner3HBurnt","prefab_hash":2393826,"desc":"","name":""},"structure":{"small_grid":true}},"StructureCableCorner4":{"prefab":{"prefab_name":"StructureCableCorner4","prefab_hash":-1542172466,"desc":"","name":"Cable (4-Way Corner)"},"structure":{"small_grid":true}},"StructureCableCorner4Burnt":{"prefab":{"prefab_name":"StructureCableCorner4Burnt","prefab_hash":268421361,"desc":"","name":"Burnt Cable (4-Way Corner)"},"structure":{"small_grid":true}},"StructureCableCorner4HBurnt":{"prefab":{"prefab_name":"StructureCableCorner4HBurnt","prefab_hash":-981223316,"desc":"","name":"Burnt Heavy Cable (4-Way Corner)"},"structure":{"small_grid":true}},"StructureCableCornerBurnt":{"prefab":{"prefab_name":"StructureCableCornerBurnt","prefab_hash":-177220914,"desc":"","name":"Burnt Cable (Corner)"},"structure":{"small_grid":true}},"StructureCableCornerH":{"prefab":{"prefab_name":"StructureCableCornerH","prefab_hash":-39359015,"desc":"","name":"Heavy Cable (Corner)"},"structure":{"small_grid":true}},"StructureCableCornerH3":{"prefab":{"prefab_name":"StructureCableCornerH3","prefab_hash":-1843379322,"desc":"","name":"Heavy Cable (3-Way Corner)"},"structure":{"small_grid":true}},"StructureCableCornerH4":{"prefab":{"prefab_name":"StructureCableCornerH4","prefab_hash":205837861,"desc":"","name":"Heavy Cable (4-Way Corner)"},"structure":{"small_grid":true}},"StructureCableCornerHBurnt":{"prefab":{"prefab_name":"StructureCableCornerHBurnt","prefab_hash":1931412811,"desc":"","name":"Burnt Cable (Corner)"},"structure":{"small_grid":true}},"StructureCableFuse100k":{"prefab":{"prefab_name":"StructureCableFuse100k","prefab_hash":281380789,"desc":"","name":"Fuse (100kW)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureCableFuse1k":{"prefab":{"prefab_name":"StructureCableFuse1k","prefab_hash":-1103727120,"desc":"","name":"Fuse (1kW)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureCableFuse50k":{"prefab":{"prefab_name":"StructureCableFuse50k","prefab_hash":-349716617,"desc":"","name":"Fuse (50kW)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureCableFuse5k":{"prefab":{"prefab_name":"StructureCableFuse5k","prefab_hash":-631590668,"desc":"","name":"Fuse (5kW)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureCableJunction":{"prefab":{"prefab_name":"StructureCableJunction","prefab_hash":-175342021,"desc":"Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of Stationeer life - so much so, the ODA designated it an official 'tool' during the 3rd Decannual Stationeer Solar Conference.\nNormal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy).","name":"Cable (Junction)"},"structure":{"small_grid":true}},"StructureCableJunction4":{"prefab":{"prefab_name":"StructureCableJunction4","prefab_hash":1112047202,"desc":"Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of Stationeer life - so much so, the ODA designated it an official 'tool' during the 3rd Decannual Stationeer Solar Conference.\nNormal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy).","name":"Cable (4-Way Junction)"},"structure":{"small_grid":true}},"StructureCableJunction4Burnt":{"prefab":{"prefab_name":"StructureCableJunction4Burnt","prefab_hash":-1756896811,"desc":"","name":"Burnt Cable (4-Way Junction)"},"structure":{"small_grid":true}},"StructureCableJunction4HBurnt":{"prefab":{"prefab_name":"StructureCableJunction4HBurnt","prefab_hash":-115809132,"desc":"","name":"Burnt Cable (4-Way Junction)"},"structure":{"small_grid":true}},"StructureCableJunction5":{"prefab":{"prefab_name":"StructureCableJunction5","prefab_hash":894390004,"desc":"","name":"Cable (5-Way Junction)"},"structure":{"small_grid":true}},"StructureCableJunction5Burnt":{"prefab":{"prefab_name":"StructureCableJunction5Burnt","prefab_hash":1545286256,"desc":"","name":"Burnt Cable (5-Way Junction)"},"structure":{"small_grid":true}},"StructureCableJunction6":{"prefab":{"prefab_name":"StructureCableJunction6","prefab_hash":-1404690610,"desc":"Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of Stationeer duty - so much so, the ODA designated it an official 'tool' during the 3rd Decannual Stationeer Solar Conference.\nNormal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy).","name":"Cable (6-Way Junction)"},"structure":{"small_grid":true}},"StructureCableJunction6Burnt":{"prefab":{"prefab_name":"StructureCableJunction6Burnt","prefab_hash":-628145954,"desc":"","name":"Burnt Cable (6-Way Junction)"},"structure":{"small_grid":true}},"StructureCableJunction6HBurnt":{"prefab":{"prefab_name":"StructureCableJunction6HBurnt","prefab_hash":1854404029,"desc":"","name":"Burnt Cable (6-Way Junction)"},"structure":{"small_grid":true}},"StructureCableJunctionBurnt":{"prefab":{"prefab_name":"StructureCableJunctionBurnt","prefab_hash":-1620686196,"desc":"","name":"Burnt Cable (Junction)"},"structure":{"small_grid":true}},"StructureCableJunctionH":{"prefab":{"prefab_name":"StructureCableJunctionH","prefab_hash":469451637,"desc":"","name":"Heavy Cable (3-Way Junction)"},"structure":{"small_grid":true}},"StructureCableJunctionH4":{"prefab":{"prefab_name":"StructureCableJunctionH4","prefab_hash":-742234680,"desc":"","name":"Heavy Cable (4-Way Junction)"},"structure":{"small_grid":true}},"StructureCableJunctionH5":{"prefab":{"prefab_name":"StructureCableJunctionH5","prefab_hash":-1530571426,"desc":"","name":"Heavy Cable (5-Way Junction)"},"structure":{"small_grid":true}},"StructureCableJunctionH5Burnt":{"prefab":{"prefab_name":"StructureCableJunctionH5Burnt","prefab_hash":1701593300,"desc":"","name":"Burnt Heavy Cable (5-Way Junction)"},"structure":{"small_grid":true}},"StructureCableJunctionH6":{"prefab":{"prefab_name":"StructureCableJunctionH6","prefab_hash":1036780772,"desc":"","name":"Heavy Cable (6-Way Junction)"},"structure":{"small_grid":true}},"StructureCableJunctionHBurnt":{"prefab":{"prefab_name":"StructureCableJunctionHBurnt","prefab_hash":-341365649,"desc":"","name":"Burnt Cable (Junction)"},"structure":{"small_grid":true}},"StructureCableStraight":{"prefab":{"prefab_name":"StructureCableStraight","prefab_hash":605357050,"desc":"Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of Stationeer life - so much so, the ODA designated it an official 'tool'.\nNormal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy).","name":"Cable (Straight)"},"structure":{"small_grid":true}},"StructureCableStraightBurnt":{"prefab":{"prefab_name":"StructureCableStraightBurnt","prefab_hash":-1196981113,"desc":"","name":"Burnt Cable (Straight)"},"structure":{"small_grid":true}},"StructureCableStraightH":{"prefab":{"prefab_name":"StructureCableStraightH","prefab_hash":-146200530,"desc":"","name":"Heavy Cable (Straight)"},"structure":{"small_grid":true}},"StructureCableStraightHBurnt":{"prefab":{"prefab_name":"StructureCableStraightHBurnt","prefab_hash":2085762089,"desc":"","name":"Burnt Cable (Straight)"},"structure":{"small_grid":true}},"StructureCamera":{"prefab":{"prefab_name":"StructureCamera","prefab_hash":-342072665,"desc":"Nothing says 'I care' like a security camera that's been linked a Motion Sensor and a Console fitted with a Camera Display.\nBe there, even when you're not.","name":"Camera"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Mode":"ReadWrite","On":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Mode0","1":"Mode1"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":true,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureCapsuleTankGas":{"prefab":{"prefab_name":"StructureCapsuleTankGas","prefab_hash":-1385712131,"desc":"","name":"Gas Capsule Tank Small"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Pressure":"Read","Temperature":"Read","Setting":"ReadWrite","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","Maximum":"Read","Ratio":"Read","TotalMoles":"Read","Volume":"Read","RatioNitrousOxide":"Read","PrefabHash":"Read","Combustion":"Read","RatioLiquidNitrogen":"Read","VolumeOfLiquid":"Read","RatioLiquidOxygen":"Read","RatioLiquidVolatiles":"Read","RatioSteam":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidPollutant":"Read","RatioLiquidNitrousOxide":"Read","ReferenceId":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Pipe","role":"Input"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":true,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureCapsuleTankLiquid":{"prefab":{"prefab_name":"StructureCapsuleTankLiquid","prefab_hash":1415396263,"desc":"","name":"Liquid Capsule Tank Small"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Pressure":"Read","Temperature":"Read","Setting":"ReadWrite","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","Maximum":"Read","Ratio":"Read","TotalMoles":"Read","Volume":"Read","RatioNitrousOxide":"Read","PrefabHash":"Read","Combustion":"Read","RatioLiquidNitrogen":"Read","VolumeOfLiquid":"Read","RatioLiquidOxygen":"Read","RatioLiquidVolatiles":"Read","RatioSteam":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidPollutant":"Read","RatioLiquidNitrousOxide":"Read","ReferenceId":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"PipeLiquid","role":"Input"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":true,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureCargoStorageMedium":{"prefab":{"prefab_name":"StructureCargoStorageMedium","prefab_hash":1151864003,"desc":"","name":"Cargo Storage (Medium)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{},"1":{},"2":{},"3":{},"4":{},"5":{},"6":{},"7":{},"8":{},"9":{},"10":{},"11":{},"12":{},"13":{},"14":{},"15":{},"16":{},"17":{},"18":{},"19":{},"20":{},"21":{},"22":{},"23":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"42":{},"43":{},"44":{},"45":{},"46":{},"47":{},"48":{},"49":{},"50":{},"51":{},"52":{},"53":{},"54":{},"55":{},"56":{},"57":{},"58":{},"59":{},"60":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"67":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"86":{},"87":{},"88":{},"89":{},"90":{},"91":{},"92":{},"93":{},"94":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"101":{}},"logic_types":{"Power":"Read","Open":"ReadWrite","Error":"Read","Lock":"ReadWrite","Ratio":"Read","Quantity":"Read","On":"ReadWrite","RequiredPower":"Read","ClearMemory":"Write","ExportCount":"Read","ImportCount":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Import","typ":"None"},{"name":"Export","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"}],"device":{"connection_list":[{"typ":"PowerAndData","role":"None"},{"typ":"Chute","role":"Output"},{"typ":"Chute","role":"Input"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureCargoStorageSmall":{"prefab":{"prefab_name":"StructureCargoStorageSmall","prefab_hash":-1493672123,"desc":"","name":"Cargo Storage (Small)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"2":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"3":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"4":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"5":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"6":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"7":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"8":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"9":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"10":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"11":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"12":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"13":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"14":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"15":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"16":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"17":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"18":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"19":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"20":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"21":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"22":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"23":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"24":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"25":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"26":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"27":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"28":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"29":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"30":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"31":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"32":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"33":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"34":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"35":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"36":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"37":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"38":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"39":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"40":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"41":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"42":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"43":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"44":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"45":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"46":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"47":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"48":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"49":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"50":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"51":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Open":"ReadWrite","Error":"Read","Lock":"ReadWrite","Ratio":"Read","Quantity":"Read","On":"ReadWrite","RequiredPower":"Read","ClearMemory":"Write","ExportCount":"Read","ImportCount":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Import","typ":"None"},{"name":"Export","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"}],"device":{"connection_list":[{"typ":"PowerAndData","role":"None"},{"typ":"Chute","role":"Output"},{"typ":"Chute","role":"Input"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureCentrifuge":{"prefab":{"prefab_name":"StructureCentrifuge","prefab_hash":690945935,"desc":"If a Recycler or unbalanced Furnace outputs reagent mixture rather than the desired ingots, a centrifuge allows you to reclaim the raw ore. \n It also refines Dirty Ore produced from the Deep Miner and Dirty Ore produced from the Rocket Miner. \n Its bigger brother Combustion Centrifuge can be used to process items significantly faster. Items processed by the centrifuge will be de-gassed. \n If openned while powered on, the centrifuge will enter an errored state and reduce its rpm to 0 and then export any items.","name":"Centrifuge"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{},"1":{}},"logic_types":{"Power":"Read","Open":"ReadWrite","Error":"Read","Reagents":"Read","On":"ReadWrite","RequiredPower":"Read","ClearMemory":"Write","ExportCount":"Read","ImportCount":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Import","typ":"None"},{"name":"Export","typ":"None"}],"device":{"connection_list":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":true,"has_reagents":true}},"StructureChair":{"prefab":{"prefab_name":"StructureChair","prefab_hash":1167659360,"desc":"One of the universe's many chairs, optimized for bipeds with somewhere between zero and two upper limbs.","name":"Chair"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Seat","typ":"Entity"}],"device":{"connection_list":[],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureChairBacklessDouble":{"prefab":{"prefab_name":"StructureChairBacklessDouble","prefab_hash":1944858936,"desc":"","name":"Chair (Backless Double)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Seat","typ":"Entity"}],"device":{"connection_list":[],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureChairBacklessSingle":{"prefab":{"prefab_name":"StructureChairBacklessSingle","prefab_hash":1672275150,"desc":"","name":"Chair (Backless Single)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Seat","typ":"Entity"}],"device":{"connection_list":[],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureChairBoothCornerLeft":{"prefab":{"prefab_name":"StructureChairBoothCornerLeft","prefab_hash":-367720198,"desc":"","name":"Chair (Booth Corner Left)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Seat","typ":"Entity"}],"device":{"connection_list":[],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureChairBoothMiddle":{"prefab":{"prefab_name":"StructureChairBoothMiddle","prefab_hash":1640720378,"desc":"","name":"Chair (Booth Middle)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Seat","typ":"Entity"}],"device":{"connection_list":[],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureChairRectangleDouble":{"prefab":{"prefab_name":"StructureChairRectangleDouble","prefab_hash":-1152812099,"desc":"","name":"Chair (Rectangle Double)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Seat","typ":"Entity"}],"device":{"connection_list":[],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureChairRectangleSingle":{"prefab":{"prefab_name":"StructureChairRectangleSingle","prefab_hash":-1425428917,"desc":"","name":"Chair (Rectangle Single)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Seat","typ":"Entity"}],"device":{"connection_list":[],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureChairThickDouble":{"prefab":{"prefab_name":"StructureChairThickDouble","prefab_hash":-1245724402,"desc":"","name":"Chair (Thick Double)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Seat","typ":"Entity"}],"device":{"connection_list":[],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureChairThickSingle":{"prefab":{"prefab_name":"StructureChairThickSingle","prefab_hash":-1510009608,"desc":"","name":"Chair (Thick Single)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Seat","typ":"Entity"}],"device":{"connection_list":[],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureChuteBin":{"prefab":{"prefab_name":"StructureChuteBin","prefab_hash":-850484480,"desc":"The Stationeer's goal is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps.\nLike most Recurso-designed systems, chute bins are simple and robust powered items, allowing items to be manually passed into chute networks by pulling a lever. They can also be programmed with logic to operate automatically, although full automation requires the use items such as a SDB Hopper.","name":"Chute Bin"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Open":"ReadWrite","Error":"Read","Lock":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Input","typ":"None"}],"device":{"connection_list":[{"typ":"Chute","role":"Output"},{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureChuteCorner":{"prefab":{"prefab_name":"StructureChuteCorner","prefab_hash":1360330136,"desc":"Chutes act as pipes for items. Use them to connect various import/export equipment together such as the Vending Machine and printers like the Autolathe.\nThe aim for any Stationeer is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps.\nChute corners are fundamental components of chute networks, which allow the transport of items between machines with import/export slots, such as the Furnace and other automatable structures.","name":"Chute (Corner)"},"structure":{"small_grid":true},"slots":[{"name":"Transport Slot","typ":"None"}]},"StructureChuteDigitalFlipFlopSplitterLeft":{"prefab":{"prefab_name":"StructureChuteDigitalFlipFlopSplitterLeft","prefab_hash":-810874728,"desc":"The digital flip flop will toggle between two outputs using a specified ratio (n:1). For example, setting the dial to 2 would allow two items to pass through the primary output before flipping to the secondary output.","name":"Chute Digital Flip Flop Splitter Left"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Mode":"ReadWrite","Setting":"ReadWrite","Quantity":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","SettingOutput":"ReadWrite","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Mode0","1":"Mode1"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Transport Slot","typ":"None"}],"device":{"connection_list":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"Chute","role":"Output2"},{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":true,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureChuteDigitalFlipFlopSplitterRight":{"prefab":{"prefab_name":"StructureChuteDigitalFlipFlopSplitterRight","prefab_hash":163728359,"desc":"The digital flip flop will toggle between two outputs using a specified ratio (n:1). For example, setting the dial to 2 would allow two items to pass through the primary output before flipping to the secondary output.","name":"Chute Digital Flip Flop Splitter Right"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Mode":"ReadWrite","Setting":"ReadWrite","Quantity":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","SettingOutput":"ReadWrite","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Mode0","1":"Mode1"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Transport Slot","typ":"None"}],"device":{"connection_list":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"Chute","role":"Output2"},{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":true,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureChuteDigitalValveLeft":{"prefab":{"prefab_name":"StructureChuteDigitalValveLeft","prefab_hash":648608238,"desc":"The Digital Chute Valve will stop the flow of materials when set to closed and when set to open, will act like a straight chute. The valve will automatically close after a certain number of items have passed through. This threshold can be set using the dial.","name":"Chute Digital Valve Left"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Open":"ReadWrite","Lock":"ReadWrite","Setting":"ReadWrite","Quantity":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Transport Slot","typ":"None"}],"device":{"connection_list":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureChuteDigitalValveRight":{"prefab":{"prefab_name":"StructureChuteDigitalValveRight","prefab_hash":-1337091041,"desc":"The Digital Chute Valve will stop the flow of materials when set to closed and when set to open, will act like a straight chute. The valve will automatically close after a certain number of items have passed through. This threshold can be set using the dial.","name":"Chute Digital Valve Right"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Open":"ReadWrite","Lock":"ReadWrite","Setting":"ReadWrite","Quantity":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Transport Slot","typ":"None"}],"device":{"connection_list":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureChuteFlipFlopSplitter":{"prefab":{"prefab_name":"StructureChuteFlipFlopSplitter","prefab_hash":-1446854725,"desc":"A chute that toggles between two outputs","name":"Chute Flip Flop Splitter"},"structure":{"small_grid":true},"slots":[{"name":"Transport Slot","typ":"None"}]},"StructureChuteInlet":{"prefab":{"prefab_name":"StructureChuteInlet","prefab_hash":-1469588766,"desc":"The aim for any Stationeer is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps.\nThe chute inlet is an aperture by which items can be introduced to import/export networks. Note that its origins in zero-gravity mining means chute inlets are unpowered and permanently open, rather than interactable, allowing objects to be thrown in. They can be connected to logic systems to monitor throughput.","name":"Chute Inlet"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Lock":"ReadWrite","ClearMemory":"Write","ImportCount":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Import","typ":"None"}],"device":{"connection_list":[{"typ":"Chute","role":"Output"},{"typ":"Data","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureChuteJunction":{"prefab":{"prefab_name":"StructureChuteJunction","prefab_hash":-611232514,"desc":"The aim for any Stationeer is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps.\nChute junctions are fundamental components of chute networks, allowing merging or splitting of these networks. When combined with a programmed Sorter, items can be sent down different paths to various machines with import/export slots.","name":"Chute (Junction)"},"structure":{"small_grid":true},"slots":[{"name":"Transport Slot","typ":"None"}]},"StructureChuteOutlet":{"prefab":{"prefab_name":"StructureChuteOutlet","prefab_hash":-1022714809,"desc":"The aim for any Stationeer is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps.\nThe chute outlet is an aperture for exiting items from import/export networks. Note that the outlet's origins in zero-gravity mining means they are permanently open, rather than interactable, but can be connected to logic systems to monitor throughput.","name":"Chute Outlet"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Lock":"ReadWrite","ClearMemory":"Write","ExportCount":"Read","ImportCount":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Export","typ":"None"}],"device":{"connection_list":[{"typ":"Chute","role":"Input"},{"typ":"Data","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureChuteOverflow":{"prefab":{"prefab_name":"StructureChuteOverflow","prefab_hash":225377225,"desc":"The overflow chute will direct materials to its overflow port when the thing connected to its default port is already occupied.","name":"Chute Overflow"},"structure":{"small_grid":true},"slots":[{"name":"Transport Slot","typ":"None"}]},"StructureChuteStraight":{"prefab":{"prefab_name":"StructureChuteStraight","prefab_hash":168307007,"desc":"Chutes act as pipes for items. Use them to connect various import/export equipment together such as the Vending Machine and printers like the Autolathe.\nThe aim for any Stationeer is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps.\nChutes are fundamental components of chute networks, which allow the transport of items between any machine or device with an import/export slot.","name":"Chute (Straight)"},"structure":{"small_grid":true},"slots":[{"name":"Transport Slot","typ":"None"}]},"StructureChuteUmbilicalFemale":{"prefab":{"prefab_name":"StructureChuteUmbilicalFemale","prefab_hash":-1918892177,"desc":"","name":"Umbilical Socket (Chute)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Transport Slot","typ":"None"}],"device":{"connection_list":[{"typ":"Chute","role":"Input"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureChuteUmbilicalFemaleSide":{"prefab":{"prefab_name":"StructureChuteUmbilicalFemaleSide","prefab_hash":-659093969,"desc":"","name":"Umbilical Socket Angle (Chute)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Transport Slot","typ":"None"}],"device":{"connection_list":[{"typ":"Chute","role":"Input"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureChuteUmbilicalMale":{"prefab":{"prefab_name":"StructureChuteUmbilicalMale","prefab_hash":-958884053,"desc":"0.Left\n1.Center\n2.Right","name":"Umbilical (Chute)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Open":"ReadWrite","Mode":"Read","Error":"Read","Lock":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Left","1":"Center","2":"Right"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Transport Slot","typ":"None"}],"device":{"connection_list":[{"typ":"Chute","role":"Input"},{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":true,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureChuteValve":{"prefab":{"prefab_name":"StructureChuteValve","prefab_hash":434875271,"desc":"The Chute Valve will stop the flow of materials when set to closed and when set to open, will act like a straight chute.","name":"Chute Valve"},"structure":{"small_grid":true},"slots":[{"name":"Transport Slot","typ":"None"}]},"StructureChuteWindow":{"prefab":{"prefab_name":"StructureChuteWindow","prefab_hash":-607241919,"desc":"Chute's with windows let you see what's passing through your import/export network. But be warned, they are not insulated as other chutes are. Ices will melt.","name":"Chute (Window)"},"structure":{"small_grid":true},"slots":[{"name":"Transport Slot","typ":"None"}]},"StructureCircuitHousing":{"prefab":{"prefab_name":"StructureCircuitHousing","prefab_hash":-128473777,"desc":"","name":"IC Housing"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","LineNumber":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Error":"Read","Setting":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","LineNumber":"ReadWrite","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":true},"slots":[{"name":"Programmable Chip","typ":"ProgrammableChip"}],"device":{"connection_list":[{"typ":"Data","role":"Input"},{"typ":"Power","role":"None"}],"device_pins_length":6,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false},"memory":{"instructions":null,"memory_access":"ReadWrite","memory_size":0}},"StructureCombustionCentrifuge":{"prefab":{"prefab_name":"StructureCombustionCentrifuge","prefab_hash":1238905683,"desc":"The Combustion Centrifuge is a gas powered version of the Centrifuge. If a Recycler or unbalanced Furnace outputs reagent mixture rather than the desired ingots, a centrifuge allows you to reclaim the raw ore.\n It also refines Dirty Ore produced from the Deep Miner and Dirty Ore produced from the Rocket Miner. A combustible fuel mix should be supplied to the gas input, and waste gasses should be vented from the output. \n The machine's RPMs must be controlled via the throttle and combustion limiter levers. If the Combustion Centrifuge gains, or loses, RPMs too fast it will experience stress, and eventually grind to a halt. Higher RPMs directly result in faster processing speeds. \n The throttle lever controls the amount of fuel being pulled into the machine, increasing the temperature inside the engine, and leading to an increase in RPM. The limiter lever influences the speed of the combustion, and how much uncombusted gas is in the exhaust. \n Ejecting ore from the Combustion Centrifuge while it is at high RPMs will result in additional stress build up. If turned off while not stressed, the machine will automatically start to brake, and reduce RPMs in a controlled manner.\n\t ","name":"Combustion Centrifuge"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{},"1":{},"2":{}},"logic_types":{"Power":"Read","Open":"ReadWrite","Error":"Read","Pressure":"Read","Temperature":"Read","Lock":"ReadWrite","Reagents":"Read","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","On":"ReadWrite","RequiredPower":"Read","ClearMemory":"Write","ExportCount":"Read","ImportCount":"Read","TotalMoles":"Read","RatioNitrousOxide":"Read","PrefabHash":"Read","Combustion":"Read","PressureInput":"Read","TemperatureInput":"Read","RatioOxygenInput":"Read","RatioCarbonDioxideInput":"Read","RatioNitrogenInput":"Read","RatioPollutantInput":"Read","RatioVolatilesInput":"Read","RatioWaterInput":"Read","RatioNitrousOxideInput":"Read","TotalMolesInput":"Read","PressureOutput":"Read","TemperatureOutput":"Read","RatioOxygenOutput":"Read","RatioCarbonDioxideOutput":"Read","RatioNitrogenOutput":"Read","RatioPollutantOutput":"Read","RatioVolatilesOutput":"Read","RatioWaterOutput":"Read","RatioNitrousOxideOutput":"Read","TotalMolesOutput":"Read","CombustionInput":"Read","CombustionOutput":"Read","CombustionLimiter":"ReadWrite","Throttle":"ReadWrite","Rpm":"Read","Stress":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrogenInput":"Read","RatioLiquidNitrogenOutput":"Read","RatioLiquidOxygen":"Read","RatioLiquidOxygenInput":"Read","RatioLiquidOxygenOutput":"Read","RatioLiquidVolatiles":"Read","RatioLiquidVolatilesInput":"Read","RatioLiquidVolatilesOutput":"Read","RatioSteam":"Read","RatioSteamInput":"Read","RatioSteamOutput":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidCarbonDioxideInput":"Read","RatioLiquidCarbonDioxideOutput":"Read","RatioLiquidPollutant":"Read","RatioLiquidPollutantInput":"Read","RatioLiquidPollutantOutput":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidNitrousOxideInput":"Read","RatioLiquidNitrousOxideOutput":"Read","ReferenceId":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":true},"slots":[{"name":"Import","typ":"None"},{"name":"Export","typ":"None"},{"name":"Programmable Chip","typ":"ProgrammableChip"}],"device":{"connection_list":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"Data","role":"None"},{"typ":"Power","role":"None"},{"typ":"Pipe","role":"Input"},{"typ":"Pipe","role":"Output"}],"device_pins_length":2,"has_activate_state":false,"has_atmosphere":true,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":true,"has_reagents":true}},"StructureCompositeCladdingAngled":{"prefab":{"prefab_name":"StructureCompositeCladdingAngled","prefab_hash":-1513030150,"desc":"","name":"Composite Cladding (Angled)"},"structure":{"small_grid":false}},"StructureCompositeCladdingAngledCorner":{"prefab":{"prefab_name":"StructureCompositeCladdingAngledCorner","prefab_hash":-69685069,"desc":"","name":"Composite Cladding (Angled Corner)"},"structure":{"small_grid":false}},"StructureCompositeCladdingAngledCornerInner":{"prefab":{"prefab_name":"StructureCompositeCladdingAngledCornerInner","prefab_hash":-1841871763,"desc":"","name":"Composite Cladding (Angled Corner Inner)"},"structure":{"small_grid":false}},"StructureCompositeCladdingAngledCornerInnerLong":{"prefab":{"prefab_name":"StructureCompositeCladdingAngledCornerInnerLong","prefab_hash":-1417912632,"desc":"","name":"Composite Cladding (Angled Corner Inner Long)"},"structure":{"small_grid":false}},"StructureCompositeCladdingAngledCornerInnerLongL":{"prefab":{"prefab_name":"StructureCompositeCladdingAngledCornerInnerLongL","prefab_hash":947705066,"desc":"","name":"Composite Cladding (Angled Corner Inner Long L)"},"structure":{"small_grid":false}},"StructureCompositeCladdingAngledCornerInnerLongR":{"prefab":{"prefab_name":"StructureCompositeCladdingAngledCornerInnerLongR","prefab_hash":-1032590967,"desc":"","name":"Composite Cladding (Angled Corner Inner Long R)"},"structure":{"small_grid":false}},"StructureCompositeCladdingAngledCornerLong":{"prefab":{"prefab_name":"StructureCompositeCladdingAngledCornerLong","prefab_hash":850558385,"desc":"","name":"Composite Cladding (Long Angled Corner)"},"structure":{"small_grid":false}},"StructureCompositeCladdingAngledCornerLongR":{"prefab":{"prefab_name":"StructureCompositeCladdingAngledCornerLongR","prefab_hash":-348918222,"desc":"","name":"Composite Cladding (Long Angled Mirrored Corner)"},"structure":{"small_grid":false}},"StructureCompositeCladdingAngledLong":{"prefab":{"prefab_name":"StructureCompositeCladdingAngledLong","prefab_hash":-387546514,"desc":"","name":"Composite Cladding (Long Angled)"},"structure":{"small_grid":false}},"StructureCompositeCladdingCylindrical":{"prefab":{"prefab_name":"StructureCompositeCladdingCylindrical","prefab_hash":212919006,"desc":"","name":"Composite Cladding (Cylindrical)"},"structure":{"small_grid":false}},"StructureCompositeCladdingCylindricalPanel":{"prefab":{"prefab_name":"StructureCompositeCladdingCylindricalPanel","prefab_hash":1077151132,"desc":"","name":"Composite Cladding (Cylindrical Panel)"},"structure":{"small_grid":false}},"StructureCompositeCladdingPanel":{"prefab":{"prefab_name":"StructureCompositeCladdingPanel","prefab_hash":1997436771,"desc":"","name":"Composite Cladding (Panel)"},"structure":{"small_grid":false}},"StructureCompositeCladdingRounded":{"prefab":{"prefab_name":"StructureCompositeCladdingRounded","prefab_hash":-259357734,"desc":"","name":"Composite Cladding (Rounded)"},"structure":{"small_grid":false}},"StructureCompositeCladdingRoundedCorner":{"prefab":{"prefab_name":"StructureCompositeCladdingRoundedCorner","prefab_hash":1951525046,"desc":"","name":"Composite Cladding (Rounded Corner)"},"structure":{"small_grid":false}},"StructureCompositeCladdingRoundedCornerInner":{"prefab":{"prefab_name":"StructureCompositeCladdingRoundedCornerInner","prefab_hash":110184667,"desc":"","name":"Composite Cladding (Rounded Corner Inner)"},"structure":{"small_grid":false}},"StructureCompositeCladdingSpherical":{"prefab":{"prefab_name":"StructureCompositeCladdingSpherical","prefab_hash":139107321,"desc":"","name":"Composite Cladding (Spherical)"},"structure":{"small_grid":false}},"StructureCompositeCladdingSphericalCap":{"prefab":{"prefab_name":"StructureCompositeCladdingSphericalCap","prefab_hash":534213209,"desc":"","name":"Composite Cladding (Spherical Cap)"},"structure":{"small_grid":false}},"StructureCompositeCladdingSphericalCorner":{"prefab":{"prefab_name":"StructureCompositeCladdingSphericalCorner","prefab_hash":1751355139,"desc":"","name":"Composite Cladding (Spherical Corner)"},"structure":{"small_grid":false}},"StructureCompositeDoor":{"prefab":{"prefab_name":"StructureCompositeDoor","prefab_hash":-793837322,"desc":"Recurso's composite doors are rated to 300kPa, which is more than sufficient for most purposes they were designed for. However, steep pressure differentials are not your friend.","name":"Composite Door"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Open":"ReadWrite","Mode":"ReadWrite","Lock":"ReadWrite","Setting":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","Idle":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Operate","1":"Logic"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":true,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureCompositeFloorGrating":{"prefab":{"prefab_name":"StructureCompositeFloorGrating","prefab_hash":324868581,"desc":"While aesthetics rank low on the ladder of Stationeer concerns, composite gratings allow the concealment of unsightly cables on floors, walls and ceilings.","name":"Composite Floor Grating"},"structure":{"small_grid":false}},"StructureCompositeFloorGrating2":{"prefab":{"prefab_name":"StructureCompositeFloorGrating2","prefab_hash":-895027741,"desc":"","name":"Composite Floor Grating (Type 2)"},"structure":{"small_grid":false}},"StructureCompositeFloorGrating3":{"prefab":{"prefab_name":"StructureCompositeFloorGrating3","prefab_hash":-1113471627,"desc":"","name":"Composite Floor Grating (Type 3)"},"structure":{"small_grid":false}},"StructureCompositeFloorGrating4":{"prefab":{"prefab_name":"StructureCompositeFloorGrating4","prefab_hash":600133846,"desc":"","name":"Composite Floor Grating (Type 4)"},"structure":{"small_grid":false}},"StructureCompositeFloorGratingOpen":{"prefab":{"prefab_name":"StructureCompositeFloorGratingOpen","prefab_hash":2109695912,"desc":"","name":"Composite Floor Grating Open"},"structure":{"small_grid":false}},"StructureCompositeFloorGratingOpenRotated":{"prefab":{"prefab_name":"StructureCompositeFloorGratingOpenRotated","prefab_hash":882307910,"desc":"","name":"Composite Floor Grating Open Rotated"},"structure":{"small_grid":false}},"StructureCompositeWall":{"prefab":{"prefab_name":"StructureCompositeWall","prefab_hash":1237302061,"desc":"Air-tight and resistant to extreme temperatures, composite walls favor form over function, coming in a range of slightly different, functionally identical varieties.","name":"Composite Wall (Type 1)"},"structure":{"small_grid":false}},"StructureCompositeWall02":{"prefab":{"prefab_name":"StructureCompositeWall02","prefab_hash":718343384,"desc":"","name":"Composite Wall (Type 2)"},"structure":{"small_grid":false}},"StructureCompositeWall03":{"prefab":{"prefab_name":"StructureCompositeWall03","prefab_hash":1574321230,"desc":"","name":"Composite Wall (Type 3)"},"structure":{"small_grid":false}},"StructureCompositeWall04":{"prefab":{"prefab_name":"StructureCompositeWall04","prefab_hash":-1011701267,"desc":"","name":"Composite Wall (Type 4)"},"structure":{"small_grid":false}},"StructureCompositeWindow":{"prefab":{"prefab_name":"StructureCompositeWindow","prefab_hash":-2060571986,"desc":"Air-tight and resistant to extreme temperatures, composite walls come in several charming, near identical varieties - reflecting their designer's focus on form over function.","name":"Composite Window"},"structure":{"small_grid":false}},"StructureCompositeWindowIron":{"prefab":{"prefab_name":"StructureCompositeWindowIron","prefab_hash":-688284639,"desc":"","name":"Iron Window"},"structure":{"small_grid":false}},"StructureComputer":{"prefab":{"prefab_name":"StructureComputer","prefab_hash":-626563514,"desc":"In some ways a relic, the 'Chonk R1' was designed by severely conflicted Norsec technicians, who needed a unit that could operate with a wide range of motherboards, while also enduring the worst a new Cadet could throw at it.\nThe result is a machine described by some as 'the only PC likely to survive our collision with a black hole', while other, less appreciative users regard it as sharing most of its technological DNA with a cheese grater.\nCompatible motherboards:\n- Logic Motherboard\n- Manufacturing Motherboard\n- Sorter Motherboard\n- Communications Motherboard\n- IC Editor Motherboard","name":"Computer"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{},"1":{},"2":{}},"logic_types":{"Power":"Read","Open":"ReadWrite","Error":"Read","Lock":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Data Disk","typ":"DataDisk"},{"name":"Data Disk","typ":"DataDisk"},{"name":"Motherboard","typ":"Motherboard"}],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureCondensationChamber":{"prefab":{"prefab_name":"StructureCondensationChamber","prefab_hash":1420719315,"desc":"A device for safely condensing gasses into liquids. Liquids and Gasses will both exist safely inside the device. The Chamber will pressurise using its in-built pressure regulator to the target set by the setting wheel.\n The secondary gas input on the left is a heat-exchanger input and allows for heat exchange between the secondary input pipe and the internal atmosphere of the Condensation Chamber.\n Paired with Evaporation Chamber Stationeers can exploit the phase change properties of gases to build a DIY air conditioner.","name":"Condensation Chamber"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Open":"ReadWrite","Error":"Read","Pressure":"Read","Temperature":"Read","Lock":"ReadWrite","Setting":"ReadWrite","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","TotalMoles":"Read","RatioNitrousOxide":"Read","PrefabHash":"Read","Combustion":"Read","RatioLiquidNitrogen":"Read","RatioLiquidOxygen":"Read","RatioLiquidVolatiles":"Read","RatioSteam":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidPollutant":"Read","RatioLiquidNitrousOxide":"Read","ReferenceId":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Pipe","role":"Input2"},{"typ":"Pipe","role":"Input"},{"typ":"PipeLiquid","role":"Output"},{"typ":"Data","role":"None"},{"typ":"Power","role":"Input"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":true,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureCondensationValve":{"prefab":{"prefab_name":"StructureCondensationValve","prefab_hash":-965741795,"desc":"Allows for the removal of any liquids from a gas pipe into a liquid pipe. Only allows liquids to pass in one direction.","name":"Condensation Valve"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","On":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PipeLiquid","role":"Output"},{"typ":"Pipe","role":"Input"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureConsole":{"prefab":{"prefab_name":"StructureConsole","prefab_hash":235638270,"desc":"This Norsec-designed control box manages devices such as the Active Vent, Passive Vent, Gas Sensor and Composite Door, depending on which circuitboard is inserted into the unit. It has a shared data/power port.\nA completed console displays all devices connected to the current power network. Any devices not related to the installed circuitboard will be greyed-out and inoperable. Consoles are locked once a Data Disk is removed.","name":"Console"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{},"1":{}},"logic_types":{"Power":"Read","Open":"ReadWrite","Error":"Read","Setting":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Circuit Board","typ":"Circuitboard"},{"name":"Data Disk","typ":"DataDisk"}],"device":{"connection_list":[{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureConsoleDual":{"prefab":{"prefab_name":"StructureConsoleDual","prefab_hash":-722284333,"desc":"This Norsec-designed control box manages devices such as the Active Vent, Gas Sensor, Composite Door and others, depending on which circuitboard is inserted into the unit. It has separate data and power ports.\nA completed console displays all devices connected to the current power network. Any devices not related to the installed circuitboard will be greyed-out and inoperable. Consoles are locked once a Data Disk is removed.","name":"Console Dual"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{},"1":{}},"logic_types":{"Power":"Read","Open":"ReadWrite","Error":"Read","Setting":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Circuit Board","typ":"Circuitboard"},{"name":"Data Disk","typ":"DataDisk"}],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureConsoleLED1x2":{"prefab":{"prefab_name":"StructureConsoleLED1x2","prefab_hash":-53151617,"desc":"0.Default\n1.Percent\n2.Power","name":"LED Display (Medium)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Mode":"ReadWrite","Error":"Read","Setting":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","Color":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Default","1":"Percent","2":"Power"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":true,"has_lock_state":false,"has_mode_state":true,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureConsoleLED1x3":{"prefab":{"prefab_name":"StructureConsoleLED1x3","prefab_hash":-1949054743,"desc":"0.Default\n1.Percent\n2.Power","name":"LED Display (Large)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Mode":"ReadWrite","Error":"Read","Setting":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","Color":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Default","1":"Percent","2":"Power"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":true,"has_lock_state":false,"has_mode_state":true,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureConsoleLED5":{"prefab":{"prefab_name":"StructureConsoleLED5","prefab_hash":-815193061,"desc":"0.Default\n1.Percent\n2.Power","name":"LED Display (Small)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Mode":"ReadWrite","Error":"Read","Setting":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","Color":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Default","1":"Percent","2":"Power"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":true,"has_lock_state":false,"has_mode_state":true,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureConsoleMonitor":{"prefab":{"prefab_name":"StructureConsoleMonitor","prefab_hash":801677497,"desc":"This Norsec-designed control box manages devices such as the Active Vent, Passive Vent, Gas Sensor, Security Camera and Composite Door, depending on which circuitboard is inserted into the unit. It has a shared data/power port, and a charming sloped interface.\nA completed console displays all devices connected to the current power network. Any devices not related to the installed circuitboard will be greyed-out and inoperable. Consoles are locked once a Data Disk is removed.","name":"Console Monitor"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{},"1":{}},"logic_types":{"Power":"Read","Open":"ReadWrite","Error":"Read","Setting":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Circuit Board","typ":"Circuitboard"},{"name":"Data Disk","typ":"DataDisk"}],"device":{"connection_list":[{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureControlChair":{"prefab":{"prefab_name":"StructureControlChair","prefab_hash":-1961153710,"desc":"Once, these chairs were the heart of space-going behemoths. Now, they're items of nostalgia built only by a handful of Stationeers with a sense of history. In other words, kitsch.","name":"Control Chair"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Mode":"ReadWrite","Error":"Read","Pressure":"Read","Temperature":"Read","Setting":"ReadWrite","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","TotalMoles":"Read","PositionX":"Read","PositionY":"Read","PositionZ":"Read","VelocityMagnitude":"Read","VelocityRelativeX":"Read","VelocityRelativeY":"Read","VelocityRelativeZ":"Read","RatioNitrousOxide":"Read","PrefabHash":"Read","Combustion":"Read","RatioLiquidNitrogen":"Read","RatioLiquidOxygen":"Read","RatioLiquidVolatiles":"Read","RatioSteam":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidPollutant":"Read","RatioLiquidNitrousOxide":"Read","ReferenceId":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read","NameHash":"Read"},"modes":{"0":"Mode0","1":"Mode1"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Entity","typ":"Entity"}],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":true,"has_color_state":false,"has_lock_state":false,"has_mode_state":true,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureCornerLocker":{"prefab":{"prefab_name":"StructureCornerLocker","prefab_hash":-1968255729,"desc":"","name":"Corner Locker"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"2":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"3":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"4":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"5":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Open":"ReadWrite","Lock":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"}],"device":{"connection_list":[],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":false,"has_open_state":true,"has_reagents":false}},"StructureCrateMount":{"prefab":{"prefab_name":"StructureCrateMount","prefab_hash":-733500083,"desc":"","name":"Container Mount"},"structure":{"small_grid":true},"slots":[{"name":"Container Slot","typ":"None"}]},"StructureCryoTube":{"prefab":{"prefab_name":"StructureCryoTube","prefab_hash":1938254586,"desc":"The exact operation of the Longsleep cryotube remains a commercial secret, with Norsec merely licensing the design. Able to regenerate organ damage when supplied with power and an atmosphere, the Longsleep is a minor miracle of modern medical technology.","name":"CryoTube"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Open":"ReadWrite","Error":"Read","Pressure":"Read","Temperature":"Read","Activate":"ReadWrite","Lock":"ReadWrite","Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","EntityState":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Bed","typ":"Entity"}],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Pipe","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureCryoTubeHorizontal":{"prefab":{"prefab_name":"StructureCryoTubeHorizontal","prefab_hash":1443059329,"desc":"The horizontal variant of the cryo tube. Will heal players and organs as well as revive dead players when provided with an atmosphere of Nitrogen below -150C.","name":"Cryo Tube Horizontal"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{}},"logic_types":{"Power":"Read","Open":"ReadWrite","Error":"Read","Pressure":"Read","Temperature":"Read","Activate":"ReadWrite","Lock":"ReadWrite","Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","EntityState":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Player","typ":"Entity"}],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Pipe","role":"Input"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureCryoTubeVertical":{"prefab":{"prefab_name":"StructureCryoTubeVertical","prefab_hash":-1381321828,"desc":"The vertical variant of the cryo tube. Will heal players and organs as well as revive dead players when provided with an atmosphere of Nitrogen below -150C.","name":"Cryo Tube Vertical"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{}},"logic_types":{"Power":"Read","Open":"ReadWrite","Error":"Read","Pressure":"Read","Temperature":"Read","Activate":"ReadWrite","Lock":"ReadWrite","Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","EntityState":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Player","typ":"Entity"}],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Pipe","role":"Input"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureDaylightSensor":{"prefab":{"prefab_name":"StructureDaylightSensor","prefab_hash":1076425094,"desc":"Daylight sensors provide data on whether the current region of your base is in sunlight, and report the exact solar angle. Note that the orientation of the sensor alters the reported solar angle, while Logic systems can be used to offset it.","name":"Daylight Sensor"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Mode":"ReadWrite","Activate":"ReadWrite","Horizontal":"Read","Vertical":"Read","SolarAngle":"Read","On":"ReadWrite","PrefabHash":"Read","SolarIrradiance":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Default","1":"Horizontal","2":"Vertical"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":true,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureDeepMiner":{"prefab":{"prefab_name":"StructureDeepMiner","prefab_hash":265720906,"desc":"Drills through terrain until it hits bedrock. Once inside bedrock Dirty Ore is produced roughly every 90s","name":"Deep Miner"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{}},"logic_types":{"Power":"Read","Error":"Read","Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","ClearMemory":"Write","ExportCount":"Read","ImportCount":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Export","typ":"None"}],"device":{"connection_list":[{"typ":"Chute","role":"Output"},{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureDigitalValve":{"prefab":{"prefab_name":"StructureDigitalValve","prefab_hash":-1280984102,"desc":"The digital valve allows Stationeers to create logic-controlled valves and pipe networks.","name":"Digital Valve"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","Lock":"ReadWrite","Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Pipe","role":"Output"},{"typ":"Pipe","role":"Input"},{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureDiode":{"prefab":{"prefab_name":"StructureDiode","prefab_hash":1944485013,"desc":"","name":"LED"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Lock":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","Color":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":true,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureDiodeSlide":{"prefab":{"prefab_name":"StructureDiodeSlide","prefab_hash":576516101,"desc":"","name":"Diode Slide"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Lock":"ReadWrite","Setting":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureDockPortSide":{"prefab":{"prefab_name":"StructureDockPortSide","prefab_hash":-137465079,"desc":"","name":"Dock (Port Side)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Open":"ReadWrite","Lock":"ReadWrite","Setting":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","Idle":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Power","role":"None"},{"typ":"Data","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureDrinkingFountain":{"prefab":{"prefab_name":"StructureDrinkingFountain","prefab_hash":1968371847,"desc":"","name":""},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PipeLiquid","role":"Input"},{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureElectrolyzer":{"prefab":{"prefab_name":"StructureElectrolyzer","prefab_hash":-1668992663,"desc":"The Norsec-designed Electrolyzer splits Water into hydrogen and Oxygen. Employing unknown proprietary technology, the device uses water's latent heat as the energy to drive the electrosis process. If there is a downside to this near-miraculous fission, it's that the device is limited by the quantity of power available, which is used to maintain the temperature output. In other words, the machine works best with hot gas.","name":"Electrolyzer"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{}},"logic_types":{"Power":"Read","Open":"ReadWrite","Mode":"ReadWrite","Error":"Read","Pressure":"Read","Temperature":"Read","Activate":"ReadWrite","Lock":"ReadWrite","Setting":"ReadWrite","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","TotalMoles":"Read","RatioNitrousOxide":"Read","PrefabHash":"Read","Combustion":"Read","PressureInput":"Read","TemperatureInput":"Read","RatioOxygenInput":"Read","RatioCarbonDioxideInput":"Read","RatioNitrogenInput":"Read","RatioPollutantInput":"Read","RatioVolatilesInput":"Read","RatioWaterInput":"Read","RatioNitrousOxideInput":"Read","TotalMolesInput":"Read","PressureOutput":"Read","TemperatureOutput":"Read","RatioOxygenOutput":"Read","RatioCarbonDioxideOutput":"Read","RatioNitrogenOutput":"Read","RatioPollutantOutput":"Read","RatioVolatilesOutput":"Read","RatioWaterOutput":"Read","RatioNitrousOxideOutput":"Read","TotalMolesOutput":"Read","CombustionInput":"Read","CombustionOutput":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrogenInput":"Read","RatioLiquidNitrogenOutput":"Read","RatioLiquidOxygen":"Read","RatioLiquidOxygenInput":"Read","RatioLiquidOxygenOutput":"Read","RatioLiquidVolatiles":"Read","RatioLiquidVolatilesInput":"Read","RatioLiquidVolatilesOutput":"Read","RatioSteam":"Read","RatioSteamInput":"Read","RatioSteamOutput":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidCarbonDioxideInput":"Read","RatioLiquidCarbonDioxideOutput":"Read","RatioLiquidPollutant":"Read","RatioLiquidPollutantInput":"Read","RatioLiquidPollutantOutput":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidNitrousOxideInput":"Read","RatioLiquidNitrousOxideOutput":"Read","ReferenceId":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read","NameHash":"Read"},"modes":{"0":"Idle","1":"Active"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":true},"slots":[{"name":"Programmable Chip","typ":"ProgrammableChip"}],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"PipeLiquid","role":"Input"},{"typ":"Pipe","role":"Output"},{"typ":"Power","role":"None"}],"device_pins_length":2,"has_activate_state":true,"has_atmosphere":true,"has_color_state":false,"has_lock_state":true,"has_mode_state":true,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureElectronicsPrinter":{"prefab":{"prefab_name":"StructureElectronicsPrinter","prefab_hash":1307165496,"desc":"The electronic printer will create any electronic part you need. From circuit boards and electronic devices to solar panels. The choice is yours. Upgrade the device using a Electronic Printer Mod for additional recipes and faster processing speeds.","name":"Electronics Printer"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{},"1":{}},"logic_types":{"Power":"Read","Open":"ReadWrite","Error":"Read","Activate":"ReadWrite","Lock":"ReadWrite","Reagents":"Read","On":"ReadWrite","RequiredPower":"Read","RecipeHash":"ReadWrite","CompletionRatio":"Read","ClearMemory":"Write","ExportCount":"Read","ImportCount":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Import","typ":"Ingot"},{"name":"Export","typ":"None"}],"device":{"connection_list":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":true,"has_reagents":true},"memory":{"instructions":{"DeviceSetLock":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |","typ":"PrinterInstruction","value":6},"EjectAllReagents":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |","typ":"PrinterInstruction","value":8},"EjectReagent":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |","typ":"PrinterInstruction","value":7},"ExecuteRecipe":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |","typ":"PrinterInstruction","value":2},"JumpIfNextInvalid":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":4},"JumpToAddress":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":5},"MissingRecipeReagent":{"description":"| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |","typ":"PrinterInstruction","value":9},"StackPointer":{"description":"| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":1},"WaitUntilNextValid":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |","typ":"PrinterInstruction","value":3}},"memory_access":"ReadWrite","memory_size":64}},"StructureElevatorLevelFront":{"prefab":{"prefab_name":"StructureElevatorLevelFront","prefab_hash":-827912235,"desc":"","name":"Elevator Level (Cabled)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Open":"ReadWrite","Error":"Read","Activate":"ReadWrite","Lock":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","ElevatorSpeed":"ReadWrite","ElevatorLevel":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Elevator","role":"None"},{"typ":"Elevator","role":"None"},{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureElevatorLevelIndustrial":{"prefab":{"prefab_name":"StructureElevatorLevelIndustrial","prefab_hash":2060648791,"desc":"","name":"Elevator Level"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Open":"ReadWrite","Error":"Read","Activate":"ReadWrite","Lock":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","ElevatorSpeed":"ReadWrite","ElevatorLevel":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Elevator","role":"None"},{"typ":"Elevator","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureElevatorShaft":{"prefab":{"prefab_name":"StructureElevatorShaft","prefab_hash":826144419,"desc":"","name":"Elevator Shaft (Cabled)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","On":"ReadWrite","RequiredPower":"Read","ElevatorSpeed":"ReadWrite","ElevatorLevel":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Elevator","role":"None"},{"typ":"Elevator","role":"None"},{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureElevatorShaftIndustrial":{"prefab":{"prefab_name":"StructureElevatorShaftIndustrial","prefab_hash":1998354978,"desc":"","name":"Elevator Shaft"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"ElevatorSpeed":"ReadWrite","ElevatorLevel":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Elevator","role":"None"},{"typ":"Elevator","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureEmergencyButton":{"prefab":{"prefab_name":"StructureEmergencyButton","prefab_hash":1668452680,"desc":"Description coming.","name":"Important Button"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Open":"ReadWrite","Error":"Read","Activate":"ReadWrite","Lock":"ReadWrite","Setting":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureEngineMountTypeA1":{"prefab":{"prefab_name":"StructureEngineMountTypeA1","prefab_hash":2035781224,"desc":"","name":"Engine Mount (Type A1)"},"structure":{"small_grid":false}},"StructureEvaporationChamber":{"prefab":{"prefab_name":"StructureEvaporationChamber","prefab_hash":-1429782576,"desc":"A device for safely evaporating liquids into gasses. Liquids and Gasses will both exist safely inside the device. Lowering the pressure target of the in-built back pressure regulator using the setting wheel will change the boiling temperature of liquids inside.\n The secondary gas input on the left is a heat-exchanger input and allows for heat exchange between the secondary input pipe and the internal atmosphere of the Evaporation Chamber. \n Paired with Condensation Chamber Stationeers can exploit the phase change properties of gases to build a DIY air conditioner.","name":"Evaporation Chamber"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Open":"ReadWrite","Error":"Read","Pressure":"Read","Temperature":"Read","Lock":"ReadWrite","Setting":"ReadWrite","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","TotalMoles":"Read","RatioNitrousOxide":"Read","PrefabHash":"Read","Combustion":"Read","RatioLiquidNitrogen":"Read","RatioLiquidOxygen":"Read","RatioLiquidVolatiles":"Read","RatioSteam":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidPollutant":"Read","RatioLiquidNitrousOxide":"Read","ReferenceId":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Pipe","role":"Input2"},{"typ":"Pipe","role":"Output"},{"typ":"PipeLiquid","role":"Input"},{"typ":"Data","role":"None"},{"typ":"Power","role":"Input"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":true,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureExpansionValve":{"prefab":{"prefab_name":"StructureExpansionValve","prefab_hash":195298587,"desc":"Allows for moving liquids from a liquid pipe into a gas pipe. Only allows liquids to pass in one direction. Typically this is done to allow the liquid to evaporate into a gas as part of an airconditioning loop.","name":"Expansion Valve"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","On":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Pipe","role":"Output"},{"typ":"PipeLiquid","role":"Input"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureFairingTypeA1":{"prefab":{"prefab_name":"StructureFairingTypeA1","prefab_hash":1622567418,"desc":"","name":"Fairing (Type A1)"},"structure":{"small_grid":false}},"StructureFairingTypeA2":{"prefab":{"prefab_name":"StructureFairingTypeA2","prefab_hash":-104908736,"desc":"","name":"Fairing (Type A2)"},"structure":{"small_grid":false}},"StructureFairingTypeA3":{"prefab":{"prefab_name":"StructureFairingTypeA3","prefab_hash":-1900541738,"desc":"","name":"Fairing (Type A3)"},"structure":{"small_grid":false}},"StructureFiltration":{"prefab":{"prefab_name":"StructureFiltration","prefab_hash":-348054045,"desc":"The Filtration Unit is based on a long-standing ExMin system, itself based on older designs of uncertain provenance. It is available in the Kit (Atmospherics).\nThe device has nonetheless proven indispensable for Stationeer atmospheric systems, as it can filter two gases simultaneously from a single pipe network using a dual filter array. The unit has an input, and a filter output as well as an unfiltered outlet for any residual gases.\n","name":"Filtration"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{},"1":{},"2":{}},"logic_types":{"Power":"Read","Open":"ReadWrite","Mode":"ReadWrite","Error":"Read","Lock":"ReadWrite","Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","PressureInput":"Read","TemperatureInput":"Read","RatioOxygenInput":"Read","RatioCarbonDioxideInput":"Read","RatioNitrogenInput":"Read","RatioPollutantInput":"Read","RatioVolatilesInput":"Read","RatioWaterInput":"Read","RatioNitrousOxideInput":"Read","TotalMolesInput":"Read","PressureOutput":"Read","TemperatureOutput":"Read","RatioOxygenOutput":"Read","RatioCarbonDioxideOutput":"Read","RatioNitrogenOutput":"Read","RatioPollutantOutput":"Read","RatioVolatilesOutput":"Read","RatioWaterOutput":"Read","RatioNitrousOxideOutput":"Read","TotalMolesOutput":"Read","PressureOutput2":"Read","TemperatureOutput2":"Read","RatioOxygenOutput2":"Read","RatioCarbonDioxideOutput2":"Read","RatioNitrogenOutput2":"Read","RatioPollutantOutput2":"Read","RatioVolatilesOutput2":"Read","RatioWaterOutput2":"Read","RatioNitrousOxideOutput2":"Read","TotalMolesOutput2":"Read","CombustionInput":"Read","CombustionOutput":"Read","CombustionOutput2":"Read","RatioLiquidNitrogenInput":"Read","RatioLiquidNitrogenOutput":"Read","RatioLiquidNitrogenOutput2":"Read","RatioLiquidOxygenInput":"Read","RatioLiquidOxygenOutput":"Read","RatioLiquidOxygenOutput2":"Read","RatioLiquidVolatilesInput":"Read","RatioLiquidVolatilesOutput":"Read","RatioLiquidVolatilesOutput2":"Read","RatioSteamInput":"Read","RatioSteamOutput":"Read","RatioSteamOutput2":"Read","RatioLiquidCarbonDioxideInput":"Read","RatioLiquidCarbonDioxideOutput":"Read","RatioLiquidCarbonDioxideOutput2":"Read","RatioLiquidPollutantInput":"Read","RatioLiquidPollutantOutput":"Read","RatioLiquidPollutantOutput2":"Read","RatioLiquidNitrousOxideInput":"Read","RatioLiquidNitrousOxideOutput":"Read","RatioLiquidNitrousOxideOutput2":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Idle","1":"Active"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":true},"slots":[{"name":"Gas Filter","typ":"GasFilter"},{"name":"Gas Filter","typ":"GasFilter"},{"name":"Programmable Chip","typ":"ProgrammableChip"}],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Pipe","role":"Input"},{"typ":"Pipe","role":"Output"},{"typ":"Pipe","role":"Waste"},{"typ":"Power","role":"None"}],"device_pins_length":2,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":true,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureFlagSmall":{"prefab":{"prefab_name":"StructureFlagSmall","prefab_hash":-1529819532,"desc":"","name":"Small Flag"},"structure":{"small_grid":true}},"StructureFlashingLight":{"prefab":{"prefab_name":"StructureFlashingLight","prefab_hash":-1535893860,"desc":"Few objects or ideas are as clearly and transparently named as the Flashing Light, although fans of scrupulous accuracy have been known to refer to it by its full, official title: 'Default Yellow Flashing Light'.","name":"Flashing Light"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Lock":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureFlatBench":{"prefab":{"prefab_name":"StructureFlatBench","prefab_hash":839890807,"desc":"","name":"Bench (Flat)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Seat","typ":"Entity"}],"device":{"connection_list":[],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureFloorDrain":{"prefab":{"prefab_name":"StructureFloorDrain","prefab_hash":1048813293,"desc":"A passive liquid floor inlet that quickly removes liquids in one direction from the world into the connected pipe network. It will equalise gasses with the world atmosphere also.","name":"Passive Liquid Inlet"},"structure":{"small_grid":true}},"StructureFrame":{"prefab":{"prefab_name":"StructureFrame","prefab_hash":1432512808,"desc":"More durable than the Iron Frame, steel frames also have several variations for more complex constructions, such as the Steel Frame (Corner) and Steel Frame (Corner Cut). Like iron frames, they are placed then completed by welding Steel Sheets to the open framework.","name":"Steel Frame"},"structure":{"small_grid":false}},"StructureFrameCorner":{"prefab":{"prefab_name":"StructureFrameCorner","prefab_hash":-2112390778,"desc":"More durable than the Iron Frame, steel frames also offer several variations for more complex lattice constructions. \nWith a little patience and maneuvering, the corner frame's Gothic-inspired silhouette allows the creation of ogival arches and even more ambitious architecture, although they are not airtight and cannot be built on.","name":"Steel Frame (Corner)"},"structure":{"small_grid":false}},"StructureFrameCornerCut":{"prefab":{"prefab_name":"StructureFrameCornerCut","prefab_hash":271315669,"desc":"0.Mode0\n1.Mode1","name":"Steel Frame (Corner Cut)"},"structure":{"small_grid":false}},"StructureFrameIron":{"prefab":{"prefab_name":"StructureFrameIron","prefab_hash":-1240951678,"desc":"","name":"Iron Frame"},"structure":{"small_grid":false}},"StructureFrameSide":{"prefab":{"prefab_name":"StructureFrameSide","prefab_hash":-302420053,"desc":"More durable than the Iron Frame, steel frames also provide variations for more ornate constructions.","name":"Steel Frame (Side)"},"structure":{"small_grid":false}},"StructureFridgeBig":{"prefab":{"prefab_name":"StructureFridgeBig","prefab_hash":958476921,"desc":"The Xigo Koolaid fridge is a self-cooling storage device with 15 slots that preserves food when powered and turned on. While many users have complained about the placement of the power switch, its place in the pantheon of off-world whiteware is unquestioned.\n \nWith its own permanent internal atmosphere, the Koolaid fridge slows the decay of food by maintaining an optimal internal temperature. Its power usage varies on the external temperature against which it must balance its internal temperature. As such, it must shed heat to operate, so the Koolaid fridge DOES NOT work in a vacuum.\n \nAlso, don't leave the door open, as it will equalize with the current world temperature. And maybe start to beep.\n\nFor more information about food preservation, visit the food decay section of the Stationpedia.","name":"Fridge (Large)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"2":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"3":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"4":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"5":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"6":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"7":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"8":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"9":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"10":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"11":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"12":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"13":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"14":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Open":"ReadWrite","Error":"Read","Pressure":"Read","Temperature":"Read","Setting":"ReadWrite","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","TotalMoles":"Read","RatioNitrousOxide":"Read","PrefabHash":"Read","Combustion":"Read","RatioLiquidNitrogen":"Read","RatioLiquidOxygen":"Read","RatioLiquidVolatiles":"Read","RatioSteam":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidPollutant":"Read","RatioLiquidNitrousOxide":"Read","ReferenceId":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"}],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":true,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureFridgeSmall":{"prefab":{"prefab_name":"StructureFridgeSmall","prefab_hash":751887598,"desc":"Essentially a heavily insulated box that allows users to pipe in any desired atmosphere, the Recurso Minibar fridge was a simple solution to the problem of food decay. It stores a small number of items, at any temperature you can muster.\n \n For more information about food preservation, visit the food decay section of the Stationpedia.","name":"Fridge Small"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Open":"ReadWrite","Pressure":"Read","Temperature":"Read","Setting":"ReadWrite","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","Maximum":"Read","Ratio":"Read","TotalMoles":"Read","RatioNitrousOxide":"Read","PrefabHash":"Read","Combustion":"Read","RatioLiquidNitrogen":"Read","RatioLiquidOxygen":"Read","RatioLiquidVolatiles":"Read","RatioSteam":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidPollutant":"Read","RatioLiquidNitrousOxide":"Read","ReferenceId":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"","typ":"None"},{"name":"","typ":"None"}],"device":{"connection_list":[{"typ":"Pipe","role":"Input"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":true,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":true,"has_reagents":false}},"StructureFurnace":{"prefab":{"prefab_name":"StructureFurnace","prefab_hash":1947944864,"desc":"The Zhurong furnace employs a high-temperature gas mixture of Oxygen and Volatiles to smelt ingots and a range of alloys as raw materials for fabricators.\nA basic gas mixture can be achieved by adding Ice (Oxite) and Ice (Volatiles) in a 1:2 ratio directly to the furnace, but more complex alloys will require careful management of a dedicated gas mixing network. Exact ingredient ratios must be observed. Likewise, smelting ores at insufficient temperatures will produce reagents, which must be recycled.\nIf liquids are present in the furnace, they will gather there until the furnace is connected to a liquid pipe network.","name":"Furnace"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{},"1":{}},"logic_types":{"Open":"ReadWrite","Mode":"ReadWrite","Pressure":"Read","Temperature":"Read","Activate":"ReadWrite","Lock":"ReadWrite","Setting":"ReadWrite","Reagents":"Read","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","Maximum":"Read","Ratio":"Read","RecipeHash":"Read","ClearMemory":"Write","ExportCount":"Read","ImportCount":"Read","TotalMoles":"Read","RatioNitrousOxide":"Read","PrefabHash":"Read","Combustion":"Read","RatioLiquidNitrogen":"Read","RatioLiquidOxygen":"Read","RatioLiquidVolatiles":"Read","RatioSteam":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidPollutant":"Read","RatioLiquidNitrousOxide":"Read","ReferenceId":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read","NameHash":"Read"},"modes":{"0":"Mode0","1":"Mode1"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Import","typ":"None"},{"name":"Export","typ":"None"}],"device":{"connection_list":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"Pipe","role":"Input"},{"typ":"Pipe","role":"Output"},{"typ":"PipeLiquid","role":"Output2"},{"typ":"Data","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":true,"has_color_state":false,"has_lock_state":true,"has_mode_state":true,"has_on_off_state":false,"has_open_state":true,"has_reagents":true}},"StructureFuselageTypeA1":{"prefab":{"prefab_name":"StructureFuselageTypeA1","prefab_hash":1033024712,"desc":"","name":"Fuselage (Type A1)"},"structure":{"small_grid":false}},"StructureFuselageTypeA2":{"prefab":{"prefab_name":"StructureFuselageTypeA2","prefab_hash":-1533287054,"desc":"","name":"Fuselage (Type A2)"},"structure":{"small_grid":false}},"StructureFuselageTypeA4":{"prefab":{"prefab_name":"StructureFuselageTypeA4","prefab_hash":1308115015,"desc":"","name":"Fuselage (Type A4)"},"structure":{"small_grid":false}},"StructureFuselageTypeC5":{"prefab":{"prefab_name":"StructureFuselageTypeC5","prefab_hash":147395155,"desc":"","name":"Fuselage (Type C5)"},"structure":{"small_grid":false}},"StructureGasGenerator":{"prefab":{"prefab_name":"StructureGasGenerator","prefab_hash":1165997963,"desc":"","name":"Gas Fuel Generator"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","Pressure":"Read","Temperature":"Read","Setting":"ReadWrite","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","PowerGeneration":"Read","TotalMoles":"Read","RatioNitrousOxide":"Read","PrefabHash":"Read","Combustion":"Read","RatioLiquidNitrogen":"Read","RatioLiquidOxygen":"Read","RatioLiquidVolatiles":"Read","RatioSteam":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidPollutant":"Read","RatioLiquidNitrousOxide":"Read","ReferenceId":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Pipe","role":"Input"},{"typ":"Pipe","role":"Output"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":true,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureGasMixer":{"prefab":{"prefab_name":"StructureGasMixer","prefab_hash":2104106366,"desc":"Indispensable for producing precise atmospheric ratios, this gas mixer blends two gases in proportions ranging anywhere from 0-100%.","name":"Gas Mixer"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","Lock":"ReadWrite","Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Pipe","role":"Output"},{"typ":"Pipe","role":"Input2"},{"typ":"Pipe","role":"Input"},{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureGasSensor":{"prefab":{"prefab_name":"StructureGasSensor","prefab_hash":-1252983604,"desc":"Gas sensors are designed to monitor and report basic atmospheric information, including temperature, pressure, and gas ratios. They also make wonderful wedding presents.","name":"Gas Sensor"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Pressure":"Read","Temperature":"Read","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","RatioNitrousOxide":"Read","PrefabHash":"Read","Combustion":"Read","RatioLiquidNitrogen":"Read","RatioLiquidOxygen":"Read","RatioLiquidVolatiles":"Read","RatioSteam":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidPollutant":"Read","RatioLiquidNitrousOxide":"Read","ReferenceId":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureGasTankStorage":{"prefab":{"prefab_name":"StructureGasTankStorage","prefab_hash":1632165346,"desc":"When connected to a pipe network, the tank storage unit allows you to refill a Canister, as well as read various atmospheric data from the Gas Canister.","name":"Gas Tank Storage"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Pressure":"Read","Temperature":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","Volume":"Read","Open":"ReadWrite","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Pressure":"Read","Temperature":"Read","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","Quantity":"Read","RatioNitrousOxide":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Gas Canister","typ":"GasCanister"}],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Pipe","role":"Input"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureGasUmbilicalFemale":{"prefab":{"prefab_name":"StructureGasUmbilicalFemale","prefab_hash":-1680477930,"desc":"","name":"Umbilical Socket (Gas)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Pipe","role":"Input"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureGasUmbilicalFemaleSide":{"prefab":{"prefab_name":"StructureGasUmbilicalFemaleSide","prefab_hash":-648683847,"desc":"","name":"Umbilical Socket Angle (Gas)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Pipe","role":"Input"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureGasUmbilicalMale":{"prefab":{"prefab_name":"StructureGasUmbilicalMale","prefab_hash":-1814939203,"desc":"0.Left\n1.Center\n2.Right","name":"Umbilical (Gas)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Open":"ReadWrite","Mode":"Read","Error":"Read","Lock":"ReadWrite","Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Left","1":"Center","2":"Right"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Pipe","role":"Input"},{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":true,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureGlassDoor":{"prefab":{"prefab_name":"StructureGlassDoor","prefab_hash":-324331872,"desc":"0.Operate\n1.Logic","name":"Glass Door"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Open":"ReadWrite","Mode":"ReadWrite","Lock":"ReadWrite","Setting":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","Idle":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Operate","1":"Logic"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":true,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureGovernedGasEngine":{"prefab":{"prefab_name":"StructureGovernedGasEngine","prefab_hash":-214232602,"desc":"The most reliable of all the rocket engines, the Pumped Gas Engine runs on a 2:1 mix of Volatiles to Oxygen gas.","name":"Pumped Gas Engine"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","Pressure":"Read","Temperature":"Read","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","On":"ReadWrite","RequiredPower":"Read","TotalMoles":"Read","RatioNitrousOxide":"Read","PrefabHash":"Read","Combustion":"Read","Throttle":"ReadWrite","RatioLiquidNitrogen":"Read","RatioLiquidOxygen":"Read","RatioLiquidVolatiles":"Read","RatioSteam":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidPollutant":"Read","RatioLiquidNitrousOxide":"Read","ReferenceId":"Read","PassedMoles":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Pipe","role":"Input"},{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":true,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureGroundBasedTelescope":{"prefab":{"prefab_name":"StructureGroundBasedTelescope","prefab_hash":-619745681,"desc":"A telescope that can be oriented to observe Celestial Bodies. When within full alignment will show orbital information for that celestial object. Atmospheric conditions may disrupt the ability to observe some objects at some times of day. To collect Horizontal and Vertical values you can use a Rocket Celestial Tracker while it is in orbit, or a Daylight Sensor for primary body data.","name":"Telescope"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Open":"ReadWrite","Error":"Read","Activate":"ReadWrite","Lock":"ReadWrite","Horizontal":"ReadWrite","Vertical":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","HorizontalRatio":"ReadWrite","VerticalRatio":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read","CelestialHash":"Read","AlignmentError":"Read","DistanceAu":"Read","OrbitPeriod":"Read","Inclination":"Read","Eccentricity":"Read","SemiMajorAxis":"Read","DistanceKm":"Read","CelestialParentHash":"Read","TrueAnomaly":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureGrowLight":{"prefab":{"prefab_name":"StructureGrowLight","prefab_hash":-1758710260,"desc":"Agrizero's leading hydroponic lighting system, the GrowUp UV light supplements sunshine in low light or sun-distant conditions. The unit adds growability over the space of a grid, so requires proximate placement to work. ","name":"Grow Light"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Lock":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureHarvie":{"prefab":{"prefab_name":"StructureHarvie","prefab_hash":958056199,"desc":"Use above a Hydroponics Tray or Hydroponics Device to manage the planting and harvest of your crops. It contains a button that will allow you to activate it's modes, or connect it to a logic system to do this for you. The modes indicate current growth status of the plant below. Import is used for planting, and harvested plants are sent to export.","name":"Harvie"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"2":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Mode":"ReadWrite","Error":"Read","Activate":"ReadWrite","Lock":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","ClearMemory":"Write","ExportCount":"Read","ImportCount":"Read","Plant":"Write","Harvest":"Write","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Idle","1":"Happy","2":"UnHappy","3":"Dead"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Import","typ":"Plant"},{"name":"Export","typ":"None"},{"name":"Hand","typ":"None"}],"device":{"connection_list":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":true,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureHeatExchangeLiquidtoGas":{"prefab":{"prefab_name":"StructureHeatExchangeLiquidtoGas","prefab_hash":944685608,"desc":"The original specs for the N Series Flow-P heat exchanger were rumored to have been scrawled on the back of a burger receipt by a bored Sinotai designer riding up the Brazilian space elevator, but that hasn't stopped it becoming one of the most widely-copied heat exchanger designs in the Solar System.\nThe 'N Flow-P' has four connections, allowing you to pass separate liquid and gas networks into the unit, which then works to equalize temperature across the two separate networks.\nAs the N Flow-P is a passive system, it equalizes pressure across the entire of each individual network, unless connected to devices like a Volume Pump or a Liquid Back Volume Regulator.","name":"Heat Exchanger - Liquid + Gas"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Pipe","role":"Input"},{"typ":"Pipe","role":"Output"},{"typ":"PipeLiquid","role":"Input"},{"typ":"PipeLiquid","role":"Output"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureHeatExchangerGastoGas":{"prefab":{"prefab_name":"StructureHeatExchangerGastoGas","prefab_hash":21266291,"desc":"The original specs for the N Series Flow-P heat exchanger were rumored to have been scrawled on the back of a burger receipt by a bored Sinotai designer riding up the Brazilian space elevator, but that hasn't stopped it becoming one of the most widely-copied heat exchanger designs in the Solar System.\nThe 'N Flow-P' has four connections, allowing you to pass two gas networks into the unit, which then works to equalize temperature across the two separate networks.\nAs the N Flow-P is a passive system, it equalizes pressure across the entire of each individual network, unless connected to gas management devices like a Volume Pump or a Back Pressure Regulator.","name":"Heat Exchanger - Gas"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Pipe","role":"Input"},{"typ":"Pipe","role":"Input"},{"typ":"Pipe","role":"Output"},{"typ":"Pipe","role":"Output"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureHeatExchangerLiquidtoLiquid":{"prefab":{"prefab_name":"StructureHeatExchangerLiquidtoLiquid","prefab_hash":-613784254,"desc":"The original specs for the N Series Flow-P heat exchanger were rumored to have been scrawled on the back of a burger receipt by a bored Sinotai designer riding up the Brazilian space elevator, but that hasn't stopped it becoming one of the most widely-copied heat exchanger designs in the Solar System.\nThe 'N Flow-P' has four connections, allowing you to pass two liquid networks into the unit, which then works to equalize temperature across the two separate networks.\nAs the N Flow-P is a passive system, it equalizes pressure across the entire of each individual network, unless connected to liquid management devices like a Liquid Volume Pump or a Liquid Back Volume Regulator.\n","name":"Heat Exchanger - Liquid"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PipeLiquid","role":"Input"},{"typ":"PipeLiquid","role":"Input"},{"typ":"PipeLiquid","role":"Output"},{"typ":"PipeLiquid","role":"Output"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureHorizontalAutoMiner":{"prefab":{"prefab_name":"StructureHorizontalAutoMiner","prefab_hash":1070427573,"desc":"The Recurso OGRE (Orthogonal Ground Rotating Excavator) is a base structure with attached mining vehicle, which will mine a horizontal shaft up to X meters long. When full, the mining vehicle will return to the base to empty itself, before returning to dig. If it encounters empty space, it will also return to base and await instruction. The unit will return if deactivated.\n \nThe OGRE can be connected to a chute system, and is controllable by a logic network. Note that the OGRE outputs more ore than a conventional Mining Drill over the same area, due to more efficient processing.\n\nMODES\nIdle - 0\nMining - 1\nReturning - 2\nDepostingOre - 3\nFinished - 4\n","name":"OGRE"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{},"1":{}},"logic_types":{"Power":"Read","Open":"ReadWrite","Mode":"ReadWrite","Error":"Read","Activate":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","ClearMemory":"Write","ExportCount":"Read","ImportCount":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Mode0","1":"Mode1"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Import","typ":"None"},{"name":"Export","typ":"None"}],"device":{"connection_list":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":true,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureHydraulicPipeBender":{"prefab":{"prefab_name":"StructureHydraulicPipeBender","prefab_hash":-1888248335,"desc":"A go-to tool for all your atmospheric and plumbing needs, the ExMin Atmoprinter will create everything from pipes, pumps and tanks, to vents and filters, ensuring your survival in any environment. Upgrade the Atmoprinter using a Pipe Bender Mod for additional recipes and faster processing speeds.","name":"Hydraulic Pipe Bender"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{},"1":{}},"logic_types":{"Power":"Read","Open":"ReadWrite","Error":"Read","Activate":"ReadWrite","Lock":"ReadWrite","Reagents":"Read","On":"ReadWrite","RequiredPower":"Read","RecipeHash":"ReadWrite","CompletionRatio":"Read","ClearMemory":"Write","ExportCount":"Read","ImportCount":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Import","typ":"Ingot"},{"name":"Export","typ":"None"}],"device":{"connection_list":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":true,"has_reagents":true},"memory":{"instructions":{"DeviceSetLock":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |","typ":"PrinterInstruction","value":6},"EjectAllReagents":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |","typ":"PrinterInstruction","value":8},"EjectReagent":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |","typ":"PrinterInstruction","value":7},"ExecuteRecipe":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |","typ":"PrinterInstruction","value":2},"JumpIfNextInvalid":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":4},"JumpToAddress":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":5},"MissingRecipeReagent":{"description":"| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |","typ":"PrinterInstruction","value":9},"StackPointer":{"description":"| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":1},"WaitUntilNextValid":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |","typ":"PrinterInstruction","value":3}},"memory_access":"ReadWrite","memory_size":64}},"StructureHydroponicsStation":{"prefab":{"prefab_name":"StructureHydroponicsStation","prefab_hash":1441767298,"desc":"","name":"Hydroponics Station"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Efficiency":"Read","Health":"Read","Growth":"Read","Class":"Read","MaxQuantity":"Read","Mature":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Efficiency":"Read","Health":"Read","Growth":"Read","Class":"Read","MaxQuantity":"Read","Mature":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"2":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Efficiency":"Read","Health":"Read","Growth":"Read","Class":"Read","MaxQuantity":"Read","Mature":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"3":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Efficiency":"Read","Health":"Read","Growth":"Read","Class":"Read","MaxQuantity":"Read","Mature":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"4":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Efficiency":"Read","Health":"Read","Growth":"Read","Class":"Read","MaxQuantity":"Read","Mature":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"5":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Efficiency":"Read","Health":"Read","Growth":"Read","Class":"Read","MaxQuantity":"Read","Mature":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"6":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Efficiency":"Read","Health":"Read","Growth":"Read","Class":"Read","MaxQuantity":"Read","Mature":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"7":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Efficiency":"Read","Health":"Read","Growth":"Read","Class":"Read","MaxQuantity":"Read","Mature":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Error":"Read","Pressure":"Read","Temperature":"Read","Setting":"ReadWrite","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","TotalMoles":"Read","RatioNitrousOxide":"Read","PrefabHash":"Read","Combustion":"Read","RatioLiquidNitrogen":"Read","RatioLiquidOxygen":"Read","RatioLiquidVolatiles":"Read","RatioSteam":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidPollutant":"Read","RatioLiquidNitrousOxide":"Read","ReferenceId":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"}],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"},{"typ":"PipeLiquid","role":"Input"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":true,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureHydroponicsTray":{"prefab":{"prefab_name":"StructureHydroponicsTray","prefab_hash":1464854517,"desc":"The Agrizero hydroponics tray is the ideal vessel for growing a range of plantlife. It must be supplied with water using a pipe network, and sufficient light to generate photosynthesis. \nIt can be automated using the Harvie.","name":"Hydroponics Tray"},"structure":{"small_grid":true},"slots":[{"name":"Plant","typ":"Plant"},{"name":"Fertiliser","typ":"Plant"}]},"StructureHydroponicsTrayData":{"prefab":{"prefab_name":"StructureHydroponicsTrayData","prefab_hash":-1841632400,"desc":"The Agrizero hydroponics device is the ideal vessel for growing a range of plantlife. It must be supplied with Water using a pipe network, and sufficient light to generate photosynthesis. \nIt can be automated using the Harvie. Note that unlike the Hydroponics Tray, these cannot be placed consecutively as they are considered devices rather than pure pipes. They do, however, allow data interrogation for logic systems.","name":"Hydroponics Device"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Efficiency":"Read","Health":"Read","Growth":"Read","Class":"Read","MaxQuantity":"Read","Mature":"Read","PrefabHash":"Read","Seeding":"Read","SortingClass":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Pressure":"Read","Temperature":"Read","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","TotalMoles":"Read","RatioNitrousOxide":"Read","PrefabHash":"Read","Combustion":"Read","RatioLiquidNitrogen":"Read","RatioLiquidOxygen":"Read","RatioLiquidVolatiles":"Read","RatioSteam":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidPollutant":"Read","RatioLiquidNitrousOxide":"Read","ReferenceId":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Plant","typ":"Plant"},{"name":"Fertiliser","typ":"Plant"}],"device":{"connection_list":[{"typ":"PipeLiquid","role":"None"},{"typ":"PipeLiquid","role":"None"},{"typ":"Data","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":true,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureIceCrusher":{"prefab":{"prefab_name":"StructureIceCrusher","prefab_hash":443849486,"desc":"The Recurso KoolAuger converts various ices into their respective gases and liquids.\nA remarkably smart and compact sublimation-melting unit, it produces gas or liquid depending on the ice being processed. The upper outlet is gas, the lower for liquid, and while you can attach any pipe you like to either outlet, it will only function if the correct network is attached. It will also only pass gas or liquid into a network if it is powered and turned on.\nIf the KoolAuger is full, it will not accept any further ice until the gas or liquid contents is drained. In this state, it will flash a yellow error state on the activation switch.","name":"Ice Crusher"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{}},"logic_types":{"Power":"Read","Error":"Read","Activate":"ReadWrite","Lock":"ReadWrite","Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","ClearMemory":"Write","ImportCount":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Import","typ":"Ore"}],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"},{"typ":"Chute","role":"Input"},{"typ":"Pipe","role":"Output"},{"typ":"PipeLiquid","role":"Output2"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureIgniter":{"prefab":{"prefab_name":"StructureIgniter","prefab_hash":1005491513,"desc":"It gets the party started. Especially if that party is an explosive gas mixture.","name":"Igniter"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"On":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureInLineTankGas1x1":{"prefab":{"prefab_name":"StructureInLineTankGas1x1","prefab_hash":-1693382705,"desc":"A small expansion tank that increases the volume of a pipe network.","name":"In-Line Tank Small Gas"},"structure":{"small_grid":true}},"StructureInLineTankGas1x2":{"prefab":{"prefab_name":"StructureInLineTankGas1x2","prefab_hash":35149429,"desc":"A small expansion tank that increases the volume of a pipe network.","name":"In-Line Tank Gas"},"structure":{"small_grid":true}},"StructureInLineTankLiquid1x1":{"prefab":{"prefab_name":"StructureInLineTankLiquid1x1","prefab_hash":543645499,"desc":"A small expansion tank that increases the volume of a pipe network.","name":"In-Line Tank Small Liquid"},"structure":{"small_grid":true}},"StructureInLineTankLiquid1x2":{"prefab":{"prefab_name":"StructureInLineTankLiquid1x2","prefab_hash":-1183969663,"desc":"A small expansion tank that increases the volume of a pipe network.","name":"In-Line Tank Liquid"},"structure":{"small_grid":true}},"StructureInsulatedInLineTankGas1x1":{"prefab":{"prefab_name":"StructureInsulatedInLineTankGas1x1","prefab_hash":1818267386,"desc":"","name":"Insulated In-Line Tank Small Gas"},"structure":{"small_grid":true}},"StructureInsulatedInLineTankGas1x2":{"prefab":{"prefab_name":"StructureInsulatedInLineTankGas1x2","prefab_hash":-177610944,"desc":"","name":"Insulated In-Line Tank Gas"},"structure":{"small_grid":true}},"StructureInsulatedInLineTankLiquid1x1":{"prefab":{"prefab_name":"StructureInsulatedInLineTankLiquid1x1","prefab_hash":-813426145,"desc":"","name":"Insulated In-Line Tank Small Liquid"},"structure":{"small_grid":true}},"StructureInsulatedInLineTankLiquid1x2":{"prefab":{"prefab_name":"StructureInsulatedInLineTankLiquid1x2","prefab_hash":1452100517,"desc":"","name":"Insulated In-Line Tank Liquid"},"structure":{"small_grid":true}},"StructureInsulatedPipeCorner":{"prefab":{"prefab_name":"StructureInsulatedPipeCorner","prefab_hash":-1967711059,"desc":"Insulated pipes greatly reduce heat loss from gases stored in them.","name":"Insulated Pipe (Corner)"},"structure":{"small_grid":true}},"StructureInsulatedPipeCrossJunction":{"prefab":{"prefab_name":"StructureInsulatedPipeCrossJunction","prefab_hash":-92778058,"desc":"Insulated pipes greatly reduce heat loss from gases stored in them.","name":"Insulated Pipe (Cross Junction)"},"structure":{"small_grid":true}},"StructureInsulatedPipeCrossJunction3":{"prefab":{"prefab_name":"StructureInsulatedPipeCrossJunction3","prefab_hash":1328210035,"desc":"Insulated pipes greatly reduce heat loss from gases stored in them.","name":"Insulated Pipe (3-Way Junction)"},"structure":{"small_grid":true}},"StructureInsulatedPipeCrossJunction4":{"prefab":{"prefab_name":"StructureInsulatedPipeCrossJunction4","prefab_hash":-783387184,"desc":"Insulated pipes greatly reduce heat loss from gases stored in them.","name":"Insulated Pipe (4-Way Junction)"},"structure":{"small_grid":true}},"StructureInsulatedPipeCrossJunction5":{"prefab":{"prefab_name":"StructureInsulatedPipeCrossJunction5","prefab_hash":-1505147578,"desc":"Insulated pipes greatly reduce heat loss from gases stored in them.","name":"Insulated Pipe (5-Way Junction)"},"structure":{"small_grid":true}},"StructureInsulatedPipeCrossJunction6":{"prefab":{"prefab_name":"StructureInsulatedPipeCrossJunction6","prefab_hash":1061164284,"desc":"Insulated pipes greatly reduce heat loss from gases stored in them.","name":"Insulated Pipe (6-Way Junction)"},"structure":{"small_grid":true}},"StructureInsulatedPipeLiquidCorner":{"prefab":{"prefab_name":"StructureInsulatedPipeLiquidCorner","prefab_hash":1713710802,"desc":"Liquid piping with very low temperature loss or gain.","name":"Insulated Liquid Pipe (Corner)"},"structure":{"small_grid":true}},"StructureInsulatedPipeLiquidCrossJunction":{"prefab":{"prefab_name":"StructureInsulatedPipeLiquidCrossJunction","prefab_hash":1926651727,"desc":"Liquid piping with very low temperature loss or gain.","name":"Insulated Liquid Pipe (3-Way Junction)"},"structure":{"small_grid":true}},"StructureInsulatedPipeLiquidCrossJunction4":{"prefab":{"prefab_name":"StructureInsulatedPipeLiquidCrossJunction4","prefab_hash":363303270,"desc":"Liquid piping with very low temperature loss or gain.","name":"Insulated Liquid Pipe (4-Way Junction)"},"structure":{"small_grid":true}},"StructureInsulatedPipeLiquidCrossJunction5":{"prefab":{"prefab_name":"StructureInsulatedPipeLiquidCrossJunction5","prefab_hash":1654694384,"desc":"Liquid piping with very low temperature loss or gain.","name":"Insulated Liquid Pipe (5-Way Junction)"},"structure":{"small_grid":true}},"StructureInsulatedPipeLiquidCrossJunction6":{"prefab":{"prefab_name":"StructureInsulatedPipeLiquidCrossJunction6","prefab_hash":-72748982,"desc":"Liquid piping with very low temperature loss or gain.","name":"Insulated Liquid Pipe (6-Way Junction)"},"structure":{"small_grid":true}},"StructureInsulatedPipeLiquidStraight":{"prefab":{"prefab_name":"StructureInsulatedPipeLiquidStraight","prefab_hash":295678685,"desc":"Liquid piping with very low temperature loss or gain.","name":"Insulated Liquid Pipe (Straight)"},"structure":{"small_grid":true}},"StructureInsulatedPipeLiquidTJunction":{"prefab":{"prefab_name":"StructureInsulatedPipeLiquidTJunction","prefab_hash":-532384855,"desc":"Liquid piping with very low temperature loss or gain.","name":"Insulated Liquid Pipe (T Junction)"},"structure":{"small_grid":true}},"StructureInsulatedPipeStraight":{"prefab":{"prefab_name":"StructureInsulatedPipeStraight","prefab_hash":2134172356,"desc":"Insulated pipes greatly reduce heat loss from gases stored in them.","name":"Insulated Pipe (Straight)"},"structure":{"small_grid":true}},"StructureInsulatedPipeTJunction":{"prefab":{"prefab_name":"StructureInsulatedPipeTJunction","prefab_hash":-2076086215,"desc":"Insulated pipes greatly reduce heat loss from gases stored in them.","name":"Insulated Pipe (T Junction)"},"structure":{"small_grid":true}},"StructureInsulatedTankConnector":{"prefab":{"prefab_name":"StructureInsulatedTankConnector","prefab_hash":-31273349,"desc":"","name":"Insulated Tank Connector"},"structure":{"small_grid":true},"slots":[{"name":"","typ":"None"}]},"StructureInsulatedTankConnectorLiquid":{"prefab":{"prefab_name":"StructureInsulatedTankConnectorLiquid","prefab_hash":-1602030414,"desc":"","name":"Insulated Tank Connector Liquid"},"structure":{"small_grid":true},"slots":[{"name":"Portable Slot","typ":"None"}]},"StructureInteriorDoorGlass":{"prefab":{"prefab_name":"StructureInteriorDoorGlass","prefab_hash":-2096421875,"desc":"0.Operate\n1.Logic","name":"Interior Door Glass"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Open":"ReadWrite","Mode":"ReadWrite","Lock":"ReadWrite","Setting":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","Idle":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Operate","1":"Logic"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":true,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureInteriorDoorPadded":{"prefab":{"prefab_name":"StructureInteriorDoorPadded","prefab_hash":847461335,"desc":"0.Operate\n1.Logic","name":"Interior Door Padded"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Open":"ReadWrite","Mode":"ReadWrite","Lock":"ReadWrite","Setting":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","Idle":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Operate","1":"Logic"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":true,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureInteriorDoorPaddedThin":{"prefab":{"prefab_name":"StructureInteriorDoorPaddedThin","prefab_hash":1981698201,"desc":"0.Operate\n1.Logic","name":"Interior Door Padded Thin"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Open":"ReadWrite","Mode":"ReadWrite","Lock":"ReadWrite","Setting":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","Idle":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Operate","1":"Logic"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":true,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureInteriorDoorTriangle":{"prefab":{"prefab_name":"StructureInteriorDoorTriangle","prefab_hash":-1182923101,"desc":"0.Operate\n1.Logic","name":"Interior Door Triangle"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Open":"ReadWrite","Mode":"ReadWrite","Lock":"ReadWrite","Setting":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","Idle":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Operate","1":"Logic"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":true,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureKlaxon":{"prefab":{"prefab_name":"StructureKlaxon","prefab_hash":-828056979,"desc":"Klaxons allow you to play over 50 announcements and sounds, depending on your Logic set-up. Set the mode to select the output.","name":"Klaxon Speaker"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Mode":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","Volume":"ReadWrite","PrefabHash":"Read","SoundAlert":"ReadWrite","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"None","1":"Alarm2","2":"Alarm3","3":"Alarm4","4":"Alarm5","5":"Alarm6","6":"Alarm7","7":"Music1","8":"Music2","9":"Music3","10":"Alarm8","11":"Alarm9","12":"Alarm10","13":"Alarm11","14":"Alarm12","15":"Danger","16":"Warning","17":"Alert","18":"StormIncoming","19":"IntruderAlert","20":"Depressurising","21":"Pressurising","22":"AirlockCycling","23":"PowerLow","24":"SystemFailure","25":"Welcome","26":"MalfunctionDetected","27":"HaltWhoGoesThere","28":"FireFireFire","29":"One","30":"Two","31":"Three","32":"Four","33":"Five","34":"Floor","35":"RocketLaunching","36":"LiftOff","37":"TraderIncoming","38":"TraderLanded","39":"PressureHigh","40":"PressureLow","41":"TemperatureHigh","42":"TemperatureLow","43":"PollutantsDetected","44":"HighCarbonDioxide","45":"Alarm1"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":true,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureLadder":{"prefab":{"prefab_name":"StructureLadder","prefab_hash":-415420281,"desc":"","name":"Ladder"},"structure":{"small_grid":true}},"StructureLadderEnd":{"prefab":{"prefab_name":"StructureLadderEnd","prefab_hash":1541734993,"desc":"","name":"Ladder End"},"structure":{"small_grid":true}},"StructureLargeDirectHeatExchangeGastoGas":{"prefab":{"prefab_name":"StructureLargeDirectHeatExchangeGastoGas","prefab_hash":-1230658883,"desc":"Direct Heat Exchangers equalize the temperature of the two input networks.","name":"Large Direct Heat Exchanger - Gas + Gas"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Pipe","role":"Input"},{"typ":"Pipe","role":"Input2"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureLargeDirectHeatExchangeGastoLiquid":{"prefab":{"prefab_name":"StructureLargeDirectHeatExchangeGastoLiquid","prefab_hash":1412338038,"desc":"Direct Heat Exchangers equalize the temperature of the two input networks.","name":"Large Direct Heat Exchanger - Gas + Liquid"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PipeLiquid","role":"Input"},{"typ":"Pipe","role":"Input2"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureLargeDirectHeatExchangeLiquidtoLiquid":{"prefab":{"prefab_name":"StructureLargeDirectHeatExchangeLiquidtoLiquid","prefab_hash":792686502,"desc":"Direct Heat Exchangers equalize the temperature of the two input networks.","name":"Large Direct Heat Exchange - Liquid + Liquid"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PipeLiquid","role":"Input"},{"typ":"PipeLiquid","role":"Input2"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureLargeExtendableRadiator":{"prefab":{"prefab_name":"StructureLargeExtendableRadiator","prefab_hash":-566775170,"desc":"Omptimised for radiating heat in vacuum and low pressure environments. If pointed at the sun it will heat its contents rapidly via solar heating. The panels can fold away to stop all heat radiation/solar heating and protect them from storms.","name":"Large Extendable Radiator"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Open":"ReadWrite","Lock":"ReadWrite","Setting":"ReadWrite","Horizontal":"ReadWrite","Maximum":"Read","Ratio":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"PipeLiquid","role":"Input"},{"typ":"PipeLiquid","role":"Output"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":false,"has_open_state":true,"has_reagents":false}},"StructureLargeHangerDoor":{"prefab":{"prefab_name":"StructureLargeHangerDoor","prefab_hash":-1351081801,"desc":"1 x 3 modular door piece for building hangar doors.","name":"Large Hangar Door"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Open":"ReadWrite","Mode":"ReadWrite","Lock":"ReadWrite","Setting":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","Idle":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Operate","1":"Logic"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":true,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureLargeSatelliteDish":{"prefab":{"prefab_name":"StructureLargeSatelliteDish","prefab_hash":1913391845,"desc":"This large communications unit can be used to communicate with nearby trade vessels.\n\n When connected to a Computer containing a Communications Motherboard motherboard, a Landingpad Center, and a Vending Machine, this allows Stationeers to contact traders. Adjust its horizontal and vertical attributes either directly or through logic.","name":"Large Satellite Dish"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","Activate":"ReadWrite","Setting":"ReadWrite","Horizontal":"ReadWrite","Vertical":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","Idle":"Read","PrefabHash":"Read","SignalStrength":"Read","SignalId":"Read","InterrogationProgress":"Read","TargetPadIndex":"ReadWrite","SizeX":"Read","SizeZ":"Read","MinimumWattsToContact":"Read","WattsReachingContact":"Read","ContactTypeId":"Read","ReferenceId":"Read","BestContactFilter":"ReadWrite","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureLaunchMount":{"prefab":{"prefab_name":"StructureLaunchMount","prefab_hash":-558953231,"desc":"The first piece to place whern building a rocket. Rockets can be constructed and/or landed here. Each Launch Mount will be allocated a slot on the Space Map and assigned a Location Code.","name":"Launch Mount"},"structure":{"small_grid":false}},"StructureLightLong":{"prefab":{"prefab_name":"StructureLightLong","prefab_hash":797794350,"desc":"","name":"Wall Light (Long)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Lock":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureLightLongAngled":{"prefab":{"prefab_name":"StructureLightLongAngled","prefab_hash":1847265835,"desc":"","name":"Wall Light (Long Angled)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Lock":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureLightLongWide":{"prefab":{"prefab_name":"StructureLightLongWide","prefab_hash":555215790,"desc":"","name":"Wall Light (Long Wide)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Lock":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureLightRound":{"prefab":{"prefab_name":"StructureLightRound","prefab_hash":1514476632,"desc":"Description coming.","name":"Light Round"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Lock":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureLightRoundAngled":{"prefab":{"prefab_name":"StructureLightRoundAngled","prefab_hash":1592905386,"desc":"Description coming.","name":"Light Round (Angled)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Lock":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureLightRoundSmall":{"prefab":{"prefab_name":"StructureLightRoundSmall","prefab_hash":1436121888,"desc":"Description coming.","name":"Light Round (Small)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Lock":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureLiquidDrain":{"prefab":{"prefab_name":"StructureLiquidDrain","prefab_hash":1687692899,"desc":"When connected to power and activated, it pumps liquid from a liquid network into the world.","name":"Active Liquid Outlet"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","Lock":"ReadWrite","Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PipeLiquid","role":"None"},{"typ":"Data","role":"Input"},{"typ":"Power","role":"Input"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureLiquidPipeAnalyzer":{"prefab":{"prefab_name":"StructureLiquidPipeAnalyzer","prefab_hash":-2113838091,"desc":"","name":"Liquid Pipe Analyzer"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","Pressure":"Read","Temperature":"Read","Lock":"ReadWrite","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","On":"ReadWrite","RequiredPower":"Read","TotalMoles":"Read","Volume":"Read","RatioNitrousOxide":"Read","PrefabHash":"Read","Combustion":"Read","RatioLiquidNitrogen":"Read","VolumeOfLiquid":"Read","RatioLiquidOxygen":"Read","RatioLiquidVolatiles":"Read","RatioSteam":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidPollutant":"Read","RatioLiquidNitrousOxide":"Read","ReferenceId":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureLiquidPipeHeater":{"prefab":{"prefab_name":"StructureLiquidPipeHeater","prefab_hash":-287495560,"desc":"Adds 1000 joules of heat per tick to the contents of your pipe network.","name":"Pipe Heater (Liquid)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","Lock":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureLiquidPipeOneWayValve":{"prefab":{"prefab_name":"StructureLiquidPipeOneWayValve","prefab_hash":-782453061,"desc":"The one way valve moves liquid in one direction only: from input side to output side. It only permits flow if the input pressure is higher than output pressure..","name":"One Way Valve (Liquid)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PipeLiquid","role":"Input"},{"typ":"PipeLiquid","role":"Output"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureLiquidPipeRadiator":{"prefab":{"prefab_name":"StructureLiquidPipeRadiator","prefab_hash":2072805863,"desc":"A simple heat exchanger, pipe radiators can be placed on pipes to shed or gain heat, depending on the temperature of the surrounding atmosphere. If the atmosphere is hotter, heat will be added to the liquid within the pipe network, and visa versa if colder. In a vacuum, heat will be radiated. \nThe speed of heat gain or loss will depend on the liquid in question. Adding multiple radiators will speed up heat transfer.","name":"Liquid Pipe Convection Radiator"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureLiquidPressureRegulator":{"prefab":{"prefab_name":"StructureLiquidPressureRegulator","prefab_hash":482248766,"desc":"Regulates the volume ratio of liquid in the output Liquid pipe. This is expressed as percentage where 100 is totally full and 0 is empty.","name":"Liquid Volume Regulator"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","Lock":"ReadWrite","Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PipeLiquid","role":"Input"},{"typ":"PipeLiquid","role":"Output"},{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureLiquidTankBig":{"prefab":{"prefab_name":"StructureLiquidTankBig","prefab_hash":1098900430,"desc":"","name":"Liquid Tank Big"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Pressure":"Read","Temperature":"Read","Setting":"ReadWrite","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","Maximum":"Read","Ratio":"Read","TotalMoles":"Read","Volume":"Read","RatioNitrousOxide":"Read","PrefabHash":"Read","Combustion":"Read","RatioLiquidNitrogen":"Read","VolumeOfLiquid":"Read","RatioLiquidOxygen":"Read","RatioLiquidVolatiles":"Read","RatioSteam":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidPollutant":"Read","RatioLiquidNitrousOxide":"Read","ReferenceId":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"PipeLiquid","role":"Input"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":true,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureLiquidTankBigInsulated":{"prefab":{"prefab_name":"StructureLiquidTankBigInsulated","prefab_hash":-1430440215,"desc":"","name":"Insulated Liquid Tank Big"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Pressure":"Read","Temperature":"Read","Setting":"ReadWrite","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","Maximum":"Read","Ratio":"Read","TotalMoles":"Read","Volume":"Read","RatioNitrousOxide":"Read","PrefabHash":"Read","Combustion":"Read","RatioLiquidNitrogen":"Read","VolumeOfLiquid":"Read","RatioLiquidOxygen":"Read","RatioLiquidVolatiles":"Read","RatioSteam":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidPollutant":"Read","RatioLiquidNitrousOxide":"Read","ReferenceId":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"PipeLiquid","role":"Input"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":true,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureLiquidTankSmall":{"prefab":{"prefab_name":"StructureLiquidTankSmall","prefab_hash":1988118157,"desc":"","name":"Liquid Tank Small"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Pressure":"Read","Temperature":"Read","Setting":"ReadWrite","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","Maximum":"Read","Ratio":"Read","TotalMoles":"Read","Volume":"Read","RatioNitrousOxide":"Read","PrefabHash":"Read","Combustion":"Read","RatioLiquidNitrogen":"Read","VolumeOfLiquid":"Read","RatioLiquidOxygen":"Read","RatioLiquidVolatiles":"Read","RatioSteam":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidPollutant":"Read","RatioLiquidNitrousOxide":"Read","ReferenceId":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"PipeLiquid","role":"Input"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":true,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureLiquidTankSmallInsulated":{"prefab":{"prefab_name":"StructureLiquidTankSmallInsulated","prefab_hash":608607718,"desc":"","name":"Insulated Liquid Tank Small"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Pressure":"Read","Temperature":"Read","Setting":"ReadWrite","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","Maximum":"Read","Ratio":"Read","TotalMoles":"Read","Volume":"Read","RatioNitrousOxide":"Read","PrefabHash":"Read","Combustion":"Read","RatioLiquidNitrogen":"Read","VolumeOfLiquid":"Read","RatioLiquidOxygen":"Read","RatioLiquidVolatiles":"Read","RatioSteam":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidPollutant":"Read","RatioLiquidNitrousOxide":"Read","ReferenceId":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"PipeLiquid","role":"Input"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":true,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureLiquidTankStorage":{"prefab":{"prefab_name":"StructureLiquidTankStorage","prefab_hash":1691898022,"desc":"When connected to a liquid pipe network, the tank storage unit allows you to refill a Liquid Canister, as well as read various atmospheric data from the Gas Canister. It will not accept gas canisters.","name":"Liquid Tank Storage"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Pressure":"Read","Temperature":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","Volume":"Read","Open":"ReadWrite","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Pressure":"Read","Temperature":"Read","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","Quantity":"Read","RatioNitrousOxide":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Liquid Canister","typ":"LiquidCanister"}],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"PipeLiquid","role":"Input"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureLiquidTurboVolumePump":{"prefab":{"prefab_name":"StructureLiquidTurboVolumePump","prefab_hash":-1051805505,"desc":"Shifts 10 times more liquid than a basic Volume Pump, with a mode that can be set to flow in either direction.","name":"Turbo Volume Pump (Liquid)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Mode":"ReadWrite","Error":"Read","Lock":"ReadWrite","Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Right","1":"Left"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"},{"typ":"PipeLiquid","role":"Input"},{"typ":"PipeLiquid","role":"Output"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":true,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureLiquidUmbilicalFemale":{"prefab":{"prefab_name":"StructureLiquidUmbilicalFemale","prefab_hash":1734723642,"desc":"","name":"Umbilical Socket (Liquid)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PipeLiquid","role":"Input"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureLiquidUmbilicalFemaleSide":{"prefab":{"prefab_name":"StructureLiquidUmbilicalFemaleSide","prefab_hash":1220870319,"desc":"","name":"Umbilical Socket Angle (Liquid)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PipeLiquid","role":"Input"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureLiquidUmbilicalMale":{"prefab":{"prefab_name":"StructureLiquidUmbilicalMale","prefab_hash":-1798420047,"desc":"0.Left\n1.Center\n2.Right","name":"Umbilical (Liquid)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Open":"ReadWrite","Mode":"Read","Error":"Read","Lock":"ReadWrite","Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Left","1":"Center","2":"Right"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PipeLiquid","role":"Input"},{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":true,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureLiquidValve":{"prefab":{"prefab_name":"StructureLiquidValve","prefab_hash":1849974453,"desc":"","name":"Liquid Valve"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","On":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PipeLiquid","role":"None"},{"typ":"PipeLiquid","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureLiquidVolumePump":{"prefab":{"prefab_name":"StructureLiquidVolumePump","prefab_hash":-454028979,"desc":"","name":"Liquid Volume Pump"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","Lock":"ReadWrite","Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PipeLiquid","role":"Output"},{"typ":"PipeLiquid","role":"Input"},{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureLockerSmall":{"prefab":{"prefab_name":"StructureLockerSmall","prefab_hash":-647164662,"desc":"","name":"Locker (Small)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"2":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"3":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Open":"ReadWrite","Lock":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"}],"device":{"connection_list":[],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":false,"has_open_state":true,"has_reagents":false}},"StructureLogicBatchReader":{"prefab":{"prefab_name":"StructureLogicBatchReader","prefab_hash":264413729,"desc":"","name":"Batch Reader"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","Setting":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"Input"},{"typ":"Data","role":"Output"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureLogicBatchSlotReader":{"prefab":{"prefab_name":"StructureLogicBatchSlotReader","prefab_hash":436888930,"desc":"","name":"Batch Slot Reader"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","Setting":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"Input"},{"typ":"Data","role":"Output"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureLogicBatchWriter":{"prefab":{"prefab_name":"StructureLogicBatchWriter","prefab_hash":1415443359,"desc":"","name":"Batch Writer"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ForceWrite":"Write","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"Input"},{"typ":"Data","role":"Output"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureLogicButton":{"prefab":{"prefab_name":"StructureLogicButton","prefab_hash":491845673,"desc":"","name":"Button"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Activate":"ReadWrite","Lock":"ReadWrite","Setting":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Data","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureLogicCompare":{"prefab":{"prefab_name":"StructureLogicCompare","prefab_hash":-1489728908,"desc":"0.Equals\n1.Greater\n2.Less\n3.NotEquals","name":"Logic Compare"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Mode":"ReadWrite","Error":"Read","Setting":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Equals","1":"Greater","2":"Less","3":"NotEquals"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"Input"},{"typ":"Data","role":"Input"},{"typ":"Data","role":"Output"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":true,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureLogicDial":{"prefab":{"prefab_name":"StructureLogicDial","prefab_hash":554524804,"desc":"An assignable dial with up to 1000 modes.","name":"Dial"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Mode":"ReadWrite","Setting":"ReadWrite","Ratio":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":true,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureLogicGate":{"prefab":{"prefab_name":"StructureLogicGate","prefab_hash":1942143074,"desc":"A logic device that performs a logical operation on one or more binary inputs that produces a single binary output. An input greater than zero is considered true for operations.","name":"Logic Gate"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Mode":"ReadWrite","Error":"Read","Setting":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"AND","1":"OR","2":"XOR","3":"NAND","4":"NOR","5":"XNOR"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"Input"},{"typ":"Data","role":"Input"},{"typ":"Data","role":"Output"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":true,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureLogicHashGen":{"prefab":{"prefab_name":"StructureLogicHashGen","prefab_hash":2077593121,"desc":"","name":"Logic Hash Generator"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Setting":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Data","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureLogicMath":{"prefab":{"prefab_name":"StructureLogicMath","prefab_hash":1657691323,"desc":"0.Add\n1.Subtract\n2.Multiply\n3.Divide\n4.Mod\n5.Atan2\n6.Pow\n7.Log","name":"Logic Math"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Mode":"ReadWrite","Error":"Read","Setting":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Add","1":"Subtract","2":"Multiply","3":"Divide","4":"Mod","5":"Atan2","6":"Pow","7":"Log"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"Input"},{"typ":"Data","role":"Input"},{"typ":"Data","role":"Output"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":true,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureLogicMathUnary":{"prefab":{"prefab_name":"StructureLogicMathUnary","prefab_hash":-1160020195,"desc":"0.Ceil\n1.Floor\n2.Abs\n3.Log\n4.Exp\n5.Round\n6.Rand\n7.Sqrt\n8.Sin\n9.Cos\n10.Tan\n11.Asin\n12.Acos\n13.Atan\n14.Not","name":"Math Unary"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Mode":"ReadWrite","Error":"Read","Setting":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Ceil","1":"Floor","2":"Abs","3":"Log","4":"Exp","5":"Round","6":"Rand","7":"Sqrt","8":"Sin","9":"Cos","10":"Tan","11":"Asin","12":"Acos","13":"Atan","14":"Not"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"Input"},{"typ":"Data","role":"Output"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":true,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureLogicMemory":{"prefab":{"prefab_name":"StructureLogicMemory","prefab_hash":-851746783,"desc":"","name":"Logic Memory"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Setting":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Data","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureLogicMinMax":{"prefab":{"prefab_name":"StructureLogicMinMax","prefab_hash":929022276,"desc":"0.Greater\n1.Less","name":"Logic Min/Max"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Mode":"ReadWrite","Error":"Read","Setting":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Greater","1":"Less"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"Input"},{"typ":"Data","role":"Input"},{"typ":"Data","role":"Output"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":true,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureLogicMirror":{"prefab":{"prefab_name":"StructureLogicMirror","prefab_hash":2096189278,"desc":"","name":"Logic Mirror"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"Input"},{"typ":"Data","role":"Output"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureLogicReader":{"prefab":{"prefab_name":"StructureLogicReader","prefab_hash":-345383640,"desc":"","name":"Logic Reader"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","Setting":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"Input"},{"typ":"Data","role":"Output"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureLogicReagentReader":{"prefab":{"prefab_name":"StructureLogicReagentReader","prefab_hash":-124308857,"desc":"","name":"Reagent Reader"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","Setting":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"Input"},{"typ":"Data","role":"Output"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureLogicRocketDownlink":{"prefab":{"prefab_name":"StructureLogicRocketDownlink","prefab_hash":876108549,"desc":"","name":"Logic Rocket Downlink"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PowerAndData","role":"Input"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureLogicRocketUplink":{"prefab":{"prefab_name":"StructureLogicRocketUplink","prefab_hash":546002924,"desc":"","name":"Logic Uplink"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"Input"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureLogicSelect":{"prefab":{"prefab_name":"StructureLogicSelect","prefab_hash":1822736084,"desc":"0.Equals\n1.Greater\n2.Less\n3.NotEquals","name":"Logic Select"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Mode":"ReadWrite","Error":"Read","Setting":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Equals","1":"Greater","2":"Less","3":"NotEquals"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"Input"},{"typ":"Data","role":"Input"},{"typ":"Data","role":"Output"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":true,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureLogicSlotReader":{"prefab":{"prefab_name":"StructureLogicSlotReader","prefab_hash":-767867194,"desc":"","name":"Slot Reader"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","Setting":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"Input"},{"typ":"Data","role":"Output"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureLogicSorter":{"prefab":{"prefab_name":"StructureLogicSorter","prefab_hash":873418029,"desc":"Contains an Internal Memory which is assessed to check whether something should be sorted. When an item is in the Import Slot, the stack is checked and if result is true the thing is moved to the Export 2 slot, otherwise it is moved to the Export slot. The Mode is used in how the stack is assessed, by default the mode is ALL, so every instruction in the stack would need to return true.","name":"Logic Sorter"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"2":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"3":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Mode":"ReadWrite","Error":"Read","Lock":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","ClearMemory":"Write","ExportCount":"Read","ImportCount":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"All","1":"Any","2":"None"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Import","typ":"None"},{"name":"Export","typ":"None"},{"name":"Export 2","typ":"None"},{"name":"Data Disk","typ":"DataDisk"}],"device":{"connection_list":[{"typ":"Chute","role":"Output2"},{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":true,"has_on_off_state":true,"has_open_state":false,"has_reagents":false},"memory":{"instructions":{"FilterPrefabHashEquals":{"description":"| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | PREFAB_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |","typ":"SorterInstruction","value":1},"FilterPrefabHashNotEquals":{"description":"| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | PREFAB_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |","typ":"SorterInstruction","value":2},"FilterQuantityCompare":{"description":"| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | CONDITION_OPERATION | BYTE_8 |\r\n| 16-31 | QUANTITY | USHORT_16 |\r\n| 32-63 | UNUSED | 32 |","typ":"SorterInstruction","value":5},"FilterSlotTypeCompare":{"description":"| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | CONDITION_OPERATION | BYTE_8 |\r\n| 16-31 | SLOT_TYPE | USHORT_16 |\r\n| 32-63 | UNUSED | 32 |","typ":"SorterInstruction","value":4},"FilterSortingClassCompare":{"description":"| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | CONDITION_OPERATION | BYTE_8 |\r\n| 16-31 | SORTING_CLASS | USHORT_16 |\r\n| 32-63 | UNUSED | 32 |","typ":"SorterInstruction","value":3},"LimitNextExecutionByCount":{"description":"| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | COUNT | UINT_32 |\r\n| 40-63 | UNUSED | 24 |","typ":"SorterInstruction","value":6}},"memory_access":"ReadWrite","memory_size":32}},"StructureLogicSwitch":{"prefab":{"prefab_name":"StructureLogicSwitch","prefab_hash":1220484876,"desc":"","name":"Lever"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Open":"ReadWrite","Lock":"ReadWrite","Setting":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Data","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":false,"has_open_state":true,"has_reagents":false}},"StructureLogicSwitch2":{"prefab":{"prefab_name":"StructureLogicSwitch2","prefab_hash":321604921,"desc":"","name":"Switch"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Open":"ReadWrite","Lock":"ReadWrite","Setting":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Data","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":false,"has_open_state":true,"has_reagents":false}},"StructureLogicTransmitter":{"prefab":{"prefab_name":"StructureLogicTransmitter","prefab_hash":-693235651,"desc":"Connects to Logic Transmitter","name":"Logic Transmitter"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{},"modes":{"0":"Passive","1":"Active"},"transmission_receiver":true,"wireless_logic":true,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"Input"},{"typ":"Data","role":"Input"},{"typ":"Data","role":"Input"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":true,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureLogicWriter":{"prefab":{"prefab_name":"StructureLogicWriter","prefab_hash":-1326019434,"desc":"","name":"Logic Writer"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ForceWrite":"Write","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"Input"},{"typ":"Data","role":"Output"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureLogicWriterSwitch":{"prefab":{"prefab_name":"StructureLogicWriterSwitch","prefab_hash":-1321250424,"desc":"","name":"Logic Writer Switch"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","Activate":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ForceWrite":"Write","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"Input"},{"typ":"Data","role":"Output"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureManualHatch":{"prefab":{"prefab_name":"StructureManualHatch","prefab_hash":-1808154199,"desc":"Can be welded using a Welding Torch or Arc Welder to lock it in the current state. Use the welder again to unlock.","name":"Manual Hatch"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Open":"ReadWrite","Mode":"ReadWrite","Lock":"ReadWrite","Setting":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","Idle":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Operate","1":"Logic"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":true,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureMediumConvectionRadiator":{"prefab":{"prefab_name":"StructureMediumConvectionRadiator","prefab_hash":-1918215845,"desc":"A stand-alone radiator unit optimized for exchanging heat with its surrounding atmosphere.","name":"Medium Convection Radiator"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Pipe","role":"Input"},{"typ":"Pipe","role":"Output"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureMediumConvectionRadiatorLiquid":{"prefab":{"prefab_name":"StructureMediumConvectionRadiatorLiquid","prefab_hash":-1169014183,"desc":"A stand-alone liquid radiator unit optimized for exchanging heat with its surrounding atmosphere.","name":"Medium Convection Radiator Liquid"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PipeLiquid","role":"Input"},{"typ":"PipeLiquid","role":"Output"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureMediumHangerDoor":{"prefab":{"prefab_name":"StructureMediumHangerDoor","prefab_hash":-566348148,"desc":"1 x 2 modular door piece for building hangar doors.","name":"Medium Hangar Door"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Open":"ReadWrite","Mode":"ReadWrite","Lock":"ReadWrite","Setting":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","Idle":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Operate","1":"Logic"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":true,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureMediumRadiator":{"prefab":{"prefab_name":"StructureMediumRadiator","prefab_hash":-975966237,"desc":"A stand-alone radiator unit optimized for radiating heat in vacuums.","name":"Medium Radiator"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Pipe","role":"Input"},{"typ":"Pipe","role":"Output"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureMediumRadiatorLiquid":{"prefab":{"prefab_name":"StructureMediumRadiatorLiquid","prefab_hash":-1141760613,"desc":"A stand-alone liquid radiator unit optimized for radiating heat in vacuums.","name":"Medium Radiator Liquid"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PipeLiquid","role":"Input"},{"typ":"PipeLiquid","role":"Output"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureMediumRocketGasFuelTank":{"prefab":{"prefab_name":"StructureMediumRocketGasFuelTank","prefab_hash":-1093860567,"desc":"","name":"Gas Capsule Tank Medium"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Pressure":"Read","Temperature":"Read","Setting":"ReadWrite","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","Maximum":"Read","Ratio":"Read","TotalMoles":"Read","Volume":"Read","RatioNitrousOxide":"Read","PrefabHash":"Read","Combustion":"Read","RatioLiquidNitrogen":"Read","VolumeOfLiquid":"Read","RatioLiquidOxygen":"Read","RatioLiquidVolatiles":"Read","RatioSteam":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidPollutant":"Read","RatioLiquidNitrousOxide":"Read","ReferenceId":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"Output"},{"typ":"Pipe","role":"Input"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":true,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureMediumRocketLiquidFuelTank":{"prefab":{"prefab_name":"StructureMediumRocketLiquidFuelTank","prefab_hash":1143639539,"desc":"","name":"Liquid Capsule Tank Medium"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Pressure":"Read","Temperature":"Read","Setting":"ReadWrite","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","Maximum":"Read","Ratio":"Read","TotalMoles":"Read","Volume":"Read","RatioNitrousOxide":"Read","PrefabHash":"Read","Combustion":"Read","RatioLiquidNitrogen":"Read","VolumeOfLiquid":"Read","RatioLiquidOxygen":"Read","RatioLiquidVolatiles":"Read","RatioSteam":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidPollutant":"Read","RatioLiquidNitrousOxide":"Read","ReferenceId":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"Output"},{"typ":"PipeLiquid","role":"Input"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":true,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureMotionSensor":{"prefab":{"prefab_name":"StructureMotionSensor","prefab_hash":-1713470563,"desc":"Originally developed to monitor dance marathons, the motion sensor can also be connected to Logic systems for security purposes, automatic lighting, doors and various other applications.\nThe sensor activates whenever a player enters the grid it is placed on.","name":"Motion Sensor"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Activate":"ReadWrite","Quantity":"Read","On":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureNitrolyzer":{"prefab":{"prefab_name":"StructureNitrolyzer","prefab_hash":1898243702,"desc":"This device is used to create Nitrous Oxide from Oxygen, Nitrogen, and a large amount of energy. The process does not completely transform all the available gas at once, so the output is a mix of all three gasses, which may need further processing. More NOS will be created, if the gas inside the machine is close to a 1/1 ratio of Oxygen to Nitrogen. The second gas input line in optional, and not required if the gas is pre mixed.","name":"Nitrolyzer"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Open":"ReadWrite","Mode":"ReadWrite","Error":"Read","Pressure":"Read","Temperature":"Read","Activate":"ReadWrite","Setting":"ReadWrite","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","TotalMoles":"Read","RatioNitrousOxide":"Read","PrefabHash":"Read","Combustion":"Read","PressureInput":"Read","TemperatureInput":"Read","RatioOxygenInput":"Read","RatioCarbonDioxideInput":"Read","RatioNitrogenInput":"Read","RatioPollutantInput":"Read","RatioVolatilesInput":"Read","RatioWaterInput":"Read","RatioNitrousOxideInput":"Read","TotalMolesInput":"Read","PressureInput2":"Read","TemperatureInput2":"Read","RatioOxygenInput2":"Read","RatioCarbonDioxideInput2":"Read","RatioNitrogenInput2":"Read","RatioPollutantInput2":"Read","RatioVolatilesInput2":"Read","RatioWaterInput2":"Read","RatioNitrousOxideInput2":"Read","TotalMolesInput2":"Read","PressureOutput":"Read","TemperatureOutput":"Read","RatioOxygenOutput":"Read","RatioCarbonDioxideOutput":"Read","RatioNitrogenOutput":"Read","RatioPollutantOutput":"Read","RatioVolatilesOutput":"Read","RatioWaterOutput":"Read","RatioNitrousOxideOutput":"Read","TotalMolesOutput":"Read","CombustionInput":"Read","CombustionInput2":"Read","CombustionOutput":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrogenInput":"Read","RatioLiquidNitrogenInput2":"Read","RatioLiquidNitrogenOutput":"Read","RatioLiquidOxygen":"Read","RatioLiquidOxygenInput":"Read","RatioLiquidOxygenInput2":"Read","RatioLiquidOxygenOutput":"Read","RatioLiquidVolatiles":"Read","RatioLiquidVolatilesInput":"Read","RatioLiquidVolatilesInput2":"Read","RatioLiquidVolatilesOutput":"Read","RatioSteam":"Read","RatioSteamInput":"Read","RatioSteamInput2":"Read","RatioSteamOutput":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidCarbonDioxideInput":"Read","RatioLiquidCarbonDioxideInput2":"Read","RatioLiquidCarbonDioxideOutput":"Read","RatioLiquidPollutant":"Read","RatioLiquidPollutantInput":"Read","RatioLiquidPollutantInput2":"Read","RatioLiquidPollutantOutput":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidNitrousOxideInput":"Read","RatioLiquidNitrousOxideInput2":"Read","RatioLiquidNitrousOxideOutput":"Read","ReferenceId":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read","NameHash":"Read"},"modes":{"0":"Idle","1":"Active"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":true},"slots":[{"name":"Programmable Chip","typ":"ProgrammableChip"}],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Pipe","role":"Input"},{"typ":"Pipe","role":"Input2"},{"typ":"Pipe","role":"Output"},{"typ":"Power","role":"None"}],"device_pins_length":2,"has_activate_state":true,"has_atmosphere":true,"has_color_state":false,"has_lock_state":false,"has_mode_state":true,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureOccupancySensor":{"prefab":{"prefab_name":"StructureOccupancySensor","prefab_hash":322782515,"desc":"Will be triggered if there is a player in the same room as the sensor. The quantity variable will show the number of players. You can use configure it to only detect players who hold the correct Access Card using a Cartridge (Access Controller) in a Handheld Tablet. This sensor only works when placed in a room.","name":"Occupancy Sensor"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Activate":"Read","Quantity":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureOverheadShortCornerLocker":{"prefab":{"prefab_name":"StructureOverheadShortCornerLocker","prefab_hash":-1794932560,"desc":"","name":"Overhead Corner Locker"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Open":"ReadWrite","Lock":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"","typ":"None"},{"name":"","typ":"None"}],"device":{"connection_list":[],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":false,"has_open_state":true,"has_reagents":false}},"StructureOverheadShortLocker":{"prefab":{"prefab_name":"StructureOverheadShortLocker","prefab_hash":1468249454,"desc":"","name":"Overhead Locker"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"2":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"3":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"4":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"5":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"6":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"7":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"8":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"9":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Open":"ReadWrite","Lock":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"}],"device":{"connection_list":[],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":false,"has_open_state":true,"has_reagents":false}},"StructurePassiveLargeRadiatorGas":{"prefab":{"prefab_name":"StructurePassiveLargeRadiatorGas","prefab_hash":2066977095,"desc":"Has been replaced by Medium Convection Radiator.","name":"Medium Convection Radiator"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Pipe","role":"Input"},{"typ":"Pipe","role":"Output"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructurePassiveLargeRadiatorLiquid":{"prefab":{"prefab_name":"StructurePassiveLargeRadiatorLiquid","prefab_hash":24786172,"desc":"Has been replaced by Medium Convection Radiator Liquid.","name":"Medium Convection Radiator Liquid"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PipeLiquid","role":"Input"},{"typ":"PipeLiquid","role":"Output"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructurePassiveLiquidDrain":{"prefab":{"prefab_name":"StructurePassiveLiquidDrain","prefab_hash":1812364811,"desc":"Moves liquids from a pipe network to the world atmosphere.","name":"Passive Liquid Drain"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructurePassiveVent":{"prefab":{"prefab_name":"StructurePassiveVent","prefab_hash":335498166,"desc":"Passive vents allow gases to move into and out of pipe networks, which are closed systems unless connected to a device or structure. Passive vents are not powered, merely an aperture, essentially turning an enclosed space into part of the pipe network. ","name":"Passive Vent"},"structure":{"small_grid":true}},"StructurePassiveVentInsulated":{"prefab":{"prefab_name":"StructurePassiveVentInsulated","prefab_hash":1363077139,"desc":"","name":"Insulated Passive Vent"},"structure":{"small_grid":true}},"StructurePassthroughHeatExchangerGasToGas":{"prefab":{"prefab_name":"StructurePassthroughHeatExchangerGasToGas","prefab_hash":-1674187440,"desc":"Exchange heat from one pipe network to another. By drawing down the pressure of the outputs with a pump or regulator and regulating input pressures, the temperatures of two counterflowing networks can be effectively exchanged.\n Balancing the throughput of both inputs is key to creating a good exhange of temperatures.","name":"CounterFlow Heat Exchanger - Gas + Gas"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Pipe","role":"Input"},{"typ":"Pipe","role":"Input2"},{"typ":"Pipe","role":"Output"},{"typ":"Pipe","role":"Output2"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructurePassthroughHeatExchangerGasToLiquid":{"prefab":{"prefab_name":"StructurePassthroughHeatExchangerGasToLiquid","prefab_hash":1928991265,"desc":"Exchange heat from one pipe network to another. By drawing down the pressure of the outputs with a pump or regulator and regulating input pressures, the temperatures of two counterflowing networks can be effectively exchanged.\n Balancing the throughput of both inputs is key to creating a good exhange of temperatures.","name":"CounterFlow Heat Exchanger - Gas + Liquid"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Pipe","role":"Input"},{"typ":"PipeLiquid","role":"Input2"},{"typ":"Pipe","role":"Output"},{"typ":"PipeLiquid","role":"Output2"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructurePassthroughHeatExchangerLiquidToLiquid":{"prefab":{"prefab_name":"StructurePassthroughHeatExchangerLiquidToLiquid","prefab_hash":-1472829583,"desc":"Exchange heat from one pipe network to another. By drawing down the pressure of the outputs with a pump or regulator and regulating input pressures, the temperatures of two counterflowing networks can be effectively exchanged.\n Balancing the throughput of both inputs is key to creating a good exchange of temperatures.","name":"CounterFlow Heat Exchanger - Liquid + Liquid"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PipeLiquid","role":"Input"},{"typ":"PipeLiquid","role":"Input2"},{"typ":"PipeLiquid","role":"Output"},{"typ":"PipeLiquid","role":"Output2"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructurePictureFrameThickLandscapeLarge":{"prefab":{"prefab_name":"StructurePictureFrameThickLandscapeLarge","prefab_hash":-1434523206,"desc":"","name":"Picture Frame Thick Landscape Large"},"structure":{"small_grid":true}},"StructurePictureFrameThickLandscapeSmall":{"prefab":{"prefab_name":"StructurePictureFrameThickLandscapeSmall","prefab_hash":-2041566697,"desc":"","name":"Picture Frame Thick Landscape Small"},"structure":{"small_grid":true}},"StructurePictureFrameThickMountLandscapeLarge":{"prefab":{"prefab_name":"StructurePictureFrameThickMountLandscapeLarge","prefab_hash":950004659,"desc":"","name":"Picture Frame Thick Landscape Large"},"structure":{"small_grid":true}},"StructurePictureFrameThickMountLandscapeSmall":{"prefab":{"prefab_name":"StructurePictureFrameThickMountLandscapeSmall","prefab_hash":347154462,"desc":"","name":"Picture Frame Thick Landscape Small"},"structure":{"small_grid":true}},"StructurePictureFrameThickMountPortraitLarge":{"prefab":{"prefab_name":"StructurePictureFrameThickMountPortraitLarge","prefab_hash":-1459641358,"desc":"","name":"Picture Frame Thick Mount Portrait Large"},"structure":{"small_grid":true}},"StructurePictureFrameThickMountPortraitSmall":{"prefab":{"prefab_name":"StructurePictureFrameThickMountPortraitSmall","prefab_hash":-2066653089,"desc":"","name":"Picture Frame Thick Mount Portrait Small"},"structure":{"small_grid":true}},"StructurePictureFrameThickPortraitLarge":{"prefab":{"prefab_name":"StructurePictureFrameThickPortraitLarge","prefab_hash":-1686949570,"desc":"","name":"Picture Frame Thick Portrait Large"},"structure":{"small_grid":true}},"StructurePictureFrameThickPortraitSmall":{"prefab":{"prefab_name":"StructurePictureFrameThickPortraitSmall","prefab_hash":-1218579821,"desc":"","name":"Picture Frame Thick Portrait Small"},"structure":{"small_grid":true}},"StructurePictureFrameThinLandscapeLarge":{"prefab":{"prefab_name":"StructurePictureFrameThinLandscapeLarge","prefab_hash":-1418288625,"desc":"","name":"Picture Frame Thin Landscape Large"},"structure":{"small_grid":true}},"StructurePictureFrameThinLandscapeSmall":{"prefab":{"prefab_name":"StructurePictureFrameThinLandscapeSmall","prefab_hash":-2024250974,"desc":"","name":"Picture Frame Thin Landscape Small"},"structure":{"small_grid":true}},"StructurePictureFrameThinMountLandscapeLarge":{"prefab":{"prefab_name":"StructurePictureFrameThinMountLandscapeLarge","prefab_hash":-1146760430,"desc":"","name":"Picture Frame Thin Landscape Large"},"structure":{"small_grid":true}},"StructurePictureFrameThinMountLandscapeSmall":{"prefab":{"prefab_name":"StructurePictureFrameThinMountLandscapeSmall","prefab_hash":-1752493889,"desc":"","name":"Picture Frame Thin Landscape Small"},"structure":{"small_grid":true}},"StructurePictureFrameThinMountPortraitLarge":{"prefab":{"prefab_name":"StructurePictureFrameThinMountPortraitLarge","prefab_hash":1094895077,"desc":"","name":"Picture Frame Thin Portrait Large"},"structure":{"small_grid":true}},"StructurePictureFrameThinMountPortraitSmall":{"prefab":{"prefab_name":"StructurePictureFrameThinMountPortraitSmall","prefab_hash":1835796040,"desc":"","name":"Picture Frame Thin Portrait Small"},"structure":{"small_grid":true}},"StructurePictureFrameThinPortraitLarge":{"prefab":{"prefab_name":"StructurePictureFrameThinPortraitLarge","prefab_hash":1212777087,"desc":"","name":"Picture Frame Thin Portrait Large"},"structure":{"small_grid":true}},"StructurePictureFrameThinPortraitSmall":{"prefab":{"prefab_name":"StructurePictureFrameThinPortraitSmall","prefab_hash":1684488658,"desc":"","name":"Picture Frame Thin Portrait Small"},"structure":{"small_grid":true}},"StructurePipeAnalysizer":{"prefab":{"prefab_name":"StructurePipeAnalysizer","prefab_hash":435685051,"desc":"Allegedly the outcome of a weekend father-daughter electronics project by an overzealous {ExMin engineer, the pipe analyzer is essentially a more advanced version of the Pipe Meter.\nDisplaying the internal pressure of pipe networks, it also reads out temperature and gas contents, and can be connected to a Console or Computer via a {Logic system.","name":"Pipe Analyzer"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","Pressure":"Read","Temperature":"Read","Lock":"ReadWrite","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","On":"ReadWrite","RequiredPower":"Read","TotalMoles":"Read","Volume":"Read","RatioNitrousOxide":"Read","PrefabHash":"Read","Combustion":"Read","RatioLiquidNitrogen":"Read","VolumeOfLiquid":"Read","RatioLiquidOxygen":"Read","RatioLiquidVolatiles":"Read","RatioSteam":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidPollutant":"Read","RatioLiquidNitrousOxide":"Read","ReferenceId":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructurePipeCorner":{"prefab":{"prefab_name":"StructurePipeCorner","prefab_hash":-1785673561,"desc":"You can upgrade this pipe to an Insulated Pipe (Corner) using an Kit (Insulated Pipe) and a Wrench.","name":"Pipe (Corner)"},"structure":{"small_grid":true}},"StructurePipeCowl":{"prefab":{"prefab_name":"StructurePipeCowl","prefab_hash":465816159,"desc":"","name":"Pipe Cowl"},"structure":{"small_grid":true}},"StructurePipeCrossJunction":{"prefab":{"prefab_name":"StructurePipeCrossJunction","prefab_hash":-1405295588,"desc":"You can upgrade this pipe to an Insulated Pipe (Cross Junction) using an Kit (Insulated Pipe) and a Wrench.","name":"Pipe (Cross Junction)"},"structure":{"small_grid":true}},"StructurePipeCrossJunction3":{"prefab":{"prefab_name":"StructurePipeCrossJunction3","prefab_hash":2038427184,"desc":"You can upgrade this pipe to an Insulated Pipe (3-Way Junction) using an Kit (Insulated Pipe) and a Wrench.","name":"Pipe (3-Way Junction)"},"structure":{"small_grid":true}},"StructurePipeCrossJunction4":{"prefab":{"prefab_name":"StructurePipeCrossJunction4","prefab_hash":-417629293,"desc":"You can upgrade this pipe to an Insulated Pipe (4-Way Junction) using an Kit (Insulated Pipe) and a Wrench.","name":"Pipe (4-Way Junction)"},"structure":{"small_grid":true}},"StructurePipeCrossJunction5":{"prefab":{"prefab_name":"StructurePipeCrossJunction5","prefab_hash":-1877193979,"desc":"You can upgrade this pipe to an Insulated Pipe (5-Way Junction) using an Kit (Insulated Pipe) and a Wrench.","name":"Pipe (5-Way Junction)"},"structure":{"small_grid":true}},"StructurePipeCrossJunction6":{"prefab":{"prefab_name":"StructurePipeCrossJunction6","prefab_hash":152378047,"desc":"You can upgrade this pipe to an Insulated Pipe (6-Way Junction) using an Kit (Insulated Pipe) and a Wrench.","name":"Pipe (6-Way Junction)"},"structure":{"small_grid":true}},"StructurePipeHeater":{"prefab":{"prefab_name":"StructurePipeHeater","prefab_hash":-419758574,"desc":"Adds 1000 joules of heat per tick to the contents of your pipe network.","name":"Pipe Heater (Gas)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","Lock":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructurePipeIgniter":{"prefab":{"prefab_name":"StructurePipeIgniter","prefab_hash":1286441942,"desc":"Ignites the atmosphere inside the attached pipe network.","name":"Pipe Igniter"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","Activate":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructurePipeInsulatedLiquidCrossJunction":{"prefab":{"prefab_name":"StructurePipeInsulatedLiquidCrossJunction","prefab_hash":-2068497073,"desc":"Liquid piping with very low temperature loss or gain.","name":"Insulated Liquid Pipe (Cross Junction)"},"structure":{"small_grid":true}},"StructurePipeLabel":{"prefab":{"prefab_name":"StructurePipeLabel","prefab_hash":-999721119,"desc":"As its perspicacious name suggests, the pipe label is designed to be attached to a straight stretch of pipe. Users can then label the label with the Labeller.","name":"Pipe Label"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructurePipeLiquidCorner":{"prefab":{"prefab_name":"StructurePipeLiquidCorner","prefab_hash":-1856720921,"desc":"You can upgrade this pipe to an Insulated Liquid Pipe (Corner) using an Kit (Insulated Liquid Pipe) and a Wrench.","name":"Liquid Pipe (Corner)"},"structure":{"small_grid":true}},"StructurePipeLiquidCrossJunction":{"prefab":{"prefab_name":"StructurePipeLiquidCrossJunction","prefab_hash":1848735691,"desc":"You can upgrade this pipe to an Insulated Liquid Pipe (Cross Junction) using an Kit (Insulated Liquid Pipe) and a Wrench.","name":"Liquid Pipe (Cross Junction)"},"structure":{"small_grid":true}},"StructurePipeLiquidCrossJunction3":{"prefab":{"prefab_name":"StructurePipeLiquidCrossJunction3","prefab_hash":1628087508,"desc":"You can upgrade this pipe to an using an Kit (Insulated Liquid Pipe) and a Wrench.","name":"Liquid Pipe (3-Way Junction)"},"structure":{"small_grid":true}},"StructurePipeLiquidCrossJunction4":{"prefab":{"prefab_name":"StructurePipeLiquidCrossJunction4","prefab_hash":-9555593,"desc":"You can upgrade this pipe to an Insulated Liquid Pipe (4-Way Junction) using an Kit (Insulated Liquid Pipe) and a Wrench.","name":"Liquid Pipe (4-Way Junction)"},"structure":{"small_grid":true}},"StructurePipeLiquidCrossJunction5":{"prefab":{"prefab_name":"StructurePipeLiquidCrossJunction5","prefab_hash":-2006384159,"desc":"You can upgrade this pipe to an Insulated Liquid Pipe (5-Way Junction) using an Kit (Insulated Liquid Pipe) and a Wrench.","name":"Liquid Pipe (5-Way Junction)"},"structure":{"small_grid":true}},"StructurePipeLiquidCrossJunction6":{"prefab":{"prefab_name":"StructurePipeLiquidCrossJunction6","prefab_hash":291524699,"desc":"You can upgrade this pipe to an Insulated Liquid Pipe (6-Way Junction) using an Kit (Insulated Liquid Pipe) and a Wrench.","name":"Liquid Pipe (6-Way Junction)"},"structure":{"small_grid":true}},"StructurePipeLiquidStraight":{"prefab":{"prefab_name":"StructurePipeLiquidStraight","prefab_hash":667597982,"desc":"You can upgrade this pipe to an Insulated Liquid Pipe (Straight) using an Kit (Insulated Liquid Pipe) and a Wrench.","name":"Liquid Pipe (Straight)"},"structure":{"small_grid":true}},"StructurePipeLiquidTJunction":{"prefab":{"prefab_name":"StructurePipeLiquidTJunction","prefab_hash":262616717,"desc":"You can upgrade this pipe to an Insulated Liquid Pipe (T Junction) using an Kit (Insulated Liquid Pipe) and a Wrench.","name":"Liquid Pipe (T Junction)"},"structure":{"small_grid":true}},"StructurePipeMeter":{"prefab":{"prefab_name":"StructurePipeMeter","prefab_hash":-1798362329,"desc":"While the Stationeers program has, thus far, inspired little in the way of classical poetry, the following haiku was found etched, ironically, on a piece of pipe wreckage found on Vulcan:\n\"Humble pipe meter\nspeaks the truth, transmits pressure\nwithin any pipe\"","name":"Pipe Meter"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructurePipeOneWayValve":{"prefab":{"prefab_name":"StructurePipeOneWayValve","prefab_hash":1580412404,"desc":"The one way valve moves gas in one direction only: from input side to output side. It only permits flow if the input pressure is higher than output pressure.\n","name":"One Way Valve (Gas)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Pipe","role":"Input"},{"typ":"Pipe","role":"Output"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructurePipeOrgan":{"prefab":{"prefab_name":"StructurePipeOrgan","prefab_hash":1305252611,"desc":"The pipe organ can be attached to one end of a Kit (Pipe Valve). The length of the pipe after the pipe organ changes the pitch of the note it will play when the valve is opened. Use Logic to open and close the valves to create some custom tunes for your base or an audible warning.","name":"Pipe Organ"},"structure":{"small_grid":true}},"StructurePipeRadiator":{"prefab":{"prefab_name":"StructurePipeRadiator","prefab_hash":1696603168,"desc":"A simple heat exchanger, pipe radiators can be placed on pipes to shed or gain heat, depending on the temperature of the surrounding atmosphere. If the atmosphere is hotter, heat will be added the gas within the pipe network, and visa versa if colder. In a vacuum, heat will be radiated. \nThe speed of heat gain or loss will depend on the gas in question. Adding multiple radiators will speed up heat transfer.","name":"Pipe Convection Radiator"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructurePipeRadiatorFlat":{"prefab":{"prefab_name":"StructurePipeRadiatorFlat","prefab_hash":-399883995,"desc":"A pipe mounted radiator optimized for radiating heat in vacuums.","name":"Pipe Radiator"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructurePipeRadiatorFlatLiquid":{"prefab":{"prefab_name":"StructurePipeRadiatorFlatLiquid","prefab_hash":2024754523,"desc":"A liquid pipe mounted radiator optimized for radiating heat in vacuums.","name":"Pipe Radiator Liquid"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructurePipeStraight":{"prefab":{"prefab_name":"StructurePipeStraight","prefab_hash":73728932,"desc":"You can upgrade this pipe to an Insulated Pipe (Straight) using an Kit (Insulated Pipe) and a Wrench.","name":"Pipe (Straight)"},"structure":{"small_grid":true}},"StructurePipeTJunction":{"prefab":{"prefab_name":"StructurePipeTJunction","prefab_hash":-913817472,"desc":"You can upgrade this pipe to an Insulated Pipe (T Junction) using an Kit (Insulated Pipe) and a Wrench.","name":"Pipe (T Junction)"},"structure":{"small_grid":true}},"StructurePlanter":{"prefab":{"prefab_name":"StructurePlanter","prefab_hash":-1125641329,"desc":"A small planter for decorative or hydroponic purposes. Can be connected to Water, or watered manually using a Water Bottle or Liquid Canister (Water).","name":"Planter"},"structure":{"small_grid":true},"slots":[{"name":"Plant","typ":"Plant"},{"name":"Plant","typ":"Plant"}]},"StructurePlatformLadderOpen":{"prefab":{"prefab_name":"StructurePlatformLadderOpen","prefab_hash":1559586682,"desc":"","name":"Ladder Platform"},"structure":{"small_grid":false}},"StructurePlinth":{"prefab":{"prefab_name":"StructurePlinth","prefab_hash":989835703,"desc":"","name":"Plinth"},"structure":{"small_grid":true},"slots":[{"name":"","typ":"None"}]},"StructurePortablesConnector":{"prefab":{"prefab_name":"StructurePortablesConnector","prefab_hash":-899013427,"desc":"","name":"Portables Connector"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Open":"ReadWrite","Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"","typ":"None"}],"device":{"connection_list":[{"typ":"Pipe","role":"Input"},{"typ":"PipeLiquid","role":"Input2"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":true,"has_reagents":false}},"StructurePowerConnector":{"prefab":{"prefab_name":"StructurePowerConnector","prefab_hash":-782951720,"desc":"Attaches a Kit (Portable Generator) to a power network.","name":"Power Connector"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Open":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Portable Slot","typ":"None"}],"device":{"connection_list":[{"typ":"Power","role":"Input"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":true,"has_reagents":false}},"StructurePowerTransmitter":{"prefab":{"prefab_name":"StructurePowerTransmitter","prefab_hash":-65087121,"desc":"The Norsec Wireless Power Transmitter is an uni-directional, A-to-B, far field microwave electrical transmission system.The rotatable base transmitter delivers a narrow, non-lethal microwave beam to a dedicated base receiver.\nThe transmitter must be aligned to the base station in order to transmit any power. The brightness of the transmitter's collimator arc provides an indication of transmission intensity. Note that there is an attrition over longer ranges, so the unit requires more power over greater distances to deliver the same output.","name":"Microwave Power Transmitter"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Mode":"Read","Error":"Read","Charge":"Read","Horizontal":"ReadWrite","Vertical":"ReadWrite","PowerPotential":"Read","PowerActual":"Read","On":"ReadWrite","RequiredPower":"Read","PositionX":"Read","PositionY":"Read","PositionZ":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Unlinked","1":"Linked"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"Input"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":true,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructurePowerTransmitterOmni":{"prefab":{"prefab_name":"StructurePowerTransmitterOmni","prefab_hash":-327468845,"desc":"","name":"Power Transmitter Omni"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"Input"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructurePowerTransmitterReceiver":{"prefab":{"prefab_name":"StructurePowerTransmitterReceiver","prefab_hash":1195820278,"desc":"The Norsec Wireless Power Transmitter is an uni-directional, A-to-B, far field microwave electrical transmission system.The rotatable base transmitter delivers a narrow, non-lethal microwave beam to a dedicated base receiver.\nThe transmitter must be aligned to the base station in order to transmit any power. The brightness of the transmitter's collimator arc provides an indication of transmission intensity. Note that there is an attrition over longer ranges, so the unit requires more power over greater distances to deliver the same output.Connects to Logic Transmitter","name":"Microwave Power Receiver"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Mode":"Read","Error":"Read","Charge":"Read","Horizontal":"ReadWrite","Vertical":"ReadWrite","PowerPotential":"Read","PowerActual":"Read","On":"ReadWrite","RequiredPower":"Read","PositionX":"Read","PositionY":"Read","PositionZ":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Unlinked","1":"Linked"},"transmission_receiver":false,"wireless_logic":true,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"Output"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":true,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructurePowerUmbilicalFemale":{"prefab":{"prefab_name":"StructurePowerUmbilicalFemale","prefab_hash":101488029,"desc":"","name":"Umbilical Socket (Power)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Power","role":"Output"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructurePowerUmbilicalFemaleSide":{"prefab":{"prefab_name":"StructurePowerUmbilicalFemaleSide","prefab_hash":1922506192,"desc":"","name":"Umbilical Socket Angle (Power)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Power","role":"Output"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructurePowerUmbilicalMale":{"prefab":{"prefab_name":"StructurePowerUmbilicalMale","prefab_hash":1529453938,"desc":"0.Left\n1.Center\n2.Right","name":"Umbilical (Power)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Open":"ReadWrite","Mode":"Read","Error":"Read","Lock":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Left","1":"Center","2":"Right"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"Input"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":true,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructurePoweredVent":{"prefab":{"prefab_name":"StructurePoweredVent","prefab_hash":938836756,"desc":"Great for moving large quantities of air into a pipe network. Its primary purpose is for the creation of multi-grid airlocks. It can effeciently pull a vacuum on a small to medium sized room.","name":"Powered Vent"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Mode":"ReadWrite","Error":"Read","PressureExternal":"ReadWrite","Lock":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Outward","1":"Inward"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Pipe","role":"Output"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":true,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructurePoweredVentLarge":{"prefab":{"prefab_name":"StructurePoweredVentLarge","prefab_hash":-785498334,"desc":"For building large scale airlock systems and pressurised hangers, a bigger and bolder version of the Powered Vent that can effeciently pull a vacuum in large room.","name":"Powered Vent Large"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Mode":"ReadWrite","Error":"Read","PressureExternal":"ReadWrite","Lock":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Outward","1":"Inward"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Pipe","role":"Output"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":true,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructurePressurantValve":{"prefab":{"prefab_name":"StructurePressurantValve","prefab_hash":23052817,"desc":"Pumps gas into a liquid pipe in order to raise the pressure","name":"Pressurant Valve"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","Lock":"ReadWrite","Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Pipe","role":"Input"},{"typ":"PipeLiquid","role":"Output"},{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructurePressureFedGasEngine":{"prefab":{"prefab_name":"StructurePressureFedGasEngine","prefab_hash":-624011170,"desc":"Inefficient but very powerful, the Pressure Fed Gas Engine moves gas from each of its two inputs based on the pressure of the input pipes. Control the mixing ratio of fuels by tweaking the input pressures to target a 2:1 mix of Volatiles to Oxygen gas. Chilling propellant gasses or using Nitrous Oxide as an oxydizer will result in even higher thrust outputs.","name":"Pressure Fed Gas Engine"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","Pressure":"Read","Temperature":"Read","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","On":"ReadWrite","RequiredPower":"Read","TotalMoles":"Read","RatioNitrousOxide":"Read","PrefabHash":"Read","Combustion":"Read","Throttle":"ReadWrite","RatioLiquidNitrogen":"Read","RatioLiquidOxygen":"Read","RatioLiquidVolatiles":"Read","RatioSteam":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidPollutant":"Read","RatioLiquidNitrousOxide":"Read","ReferenceId":"Read","PassedMoles":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Pipe","role":"Input"},{"typ":"Pipe","role":"Input2"},{"typ":"PowerAndData","role":"Output"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":true,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructurePressureFedLiquidEngine":{"prefab":{"prefab_name":"StructurePressureFedLiquidEngine","prefab_hash":379750958,"desc":"Highly efficient and powerful, the Pressure Fed Liquid Engine is a challenging engine to run in a stable configuration. Liquid is pulled from the input into the engine based on the input gas pressure. Some gas is also moved in this process so Stationeers will need to devise a system to maintain a high gas pressure in the liquid input pipe. The second liquid pipe connection is an optional heat-exchanger connection which exchanges heat between the pipes contents and the engine bell, the Setting variable drives the effectiveness of the heat-exchanger.","name":"Pressure Fed Liquid Engine"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","Pressure":"Read","Temperature":"Read","Setting":"ReadWrite","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","TotalMoles":"Read","RatioNitrousOxide":"Read","PrefabHash":"Read","Combustion":"Read","Throttle":"ReadWrite","RatioLiquidNitrogen":"Read","RatioLiquidOxygen":"Read","RatioLiquidVolatiles":"Read","RatioSteam":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidPollutant":"Read","RatioLiquidNitrousOxide":"Read","ReferenceId":"Read","PassedMoles":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PipeLiquid","role":"Input"},{"typ":"PipeLiquid","role":"Input2"},{"typ":"PowerAndData","role":"Output"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":true,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructurePressurePlateLarge":{"prefab":{"prefab_name":"StructurePressurePlateLarge","prefab_hash":-2008706143,"desc":"","name":"Trigger Plate (Large)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Setting":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Data","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructurePressurePlateMedium":{"prefab":{"prefab_name":"StructurePressurePlateMedium","prefab_hash":1269458680,"desc":"","name":"Trigger Plate (Medium)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Setting":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Data","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructurePressurePlateSmall":{"prefab":{"prefab_name":"StructurePressurePlateSmall","prefab_hash":-1536471028,"desc":"","name":"Trigger Plate (Small)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Setting":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Data","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructurePressureRegulator":{"prefab":{"prefab_name":"StructurePressureRegulator","prefab_hash":209854039,"desc":"Controlling the flow of gas between two pipe networks, pressure regulators shift gas until a set pressure on the outlet side is achieved, or the gas supply is exhausted. The back pressure regulator, by contrast, will only operate when pressure on the intake side exceeds the set value. With a max pressure of over 20,000kPa, it requires power to operate.","name":"Pressure Regulator"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","Lock":"ReadWrite","Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Pipe","role":"Input"},{"typ":"Pipe","role":"Output"},{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureProximitySensor":{"prefab":{"prefab_name":"StructureProximitySensor","prefab_hash":568800213,"desc":"Will be triggered if there is a player in the range of the sensor (as defined by the setting dial). The quantity variable will show the number of players. You can configure the sensor to only detect players who hold the correct Access Card using a Cartridge (Access Controller) in a Handheld Tablet.","name":"Proximity Sensor"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Activate":"Read","Setting":"ReadWrite","Quantity":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructurePumpedLiquidEngine":{"prefab":{"prefab_name":"StructurePumpedLiquidEngine","prefab_hash":-2031440019,"desc":"Liquid propellants bring greater efficiencies with Pumped Liquid Engine. Two inputs are provided so Stationeers can seperate their fuels, the Setting variable controls the mixing ratio of the inputs. The engine is designed to run on Liquid Volatiles and Liquid Oxygen, some Stationeers have reported excessive thrust values by switching to Liquid Nitrous Oxide","name":"Pumped Liquid Engine"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","Pressure":"Read","Temperature":"Read","Setting":"ReadWrite","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","TotalMoles":"Read","RatioNitrousOxide":"Read","PrefabHash":"Read","Combustion":"Read","Throttle":"ReadWrite","RatioLiquidNitrogen":"Read","RatioLiquidOxygen":"Read","RatioLiquidVolatiles":"Read","RatioSteam":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidPollutant":"Read","RatioLiquidNitrousOxide":"Read","ReferenceId":"Read","PassedMoles":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PipeLiquid","role":"None"},{"typ":"PipeLiquid","role":"None"},{"typ":"PowerAndData","role":"Output"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":true,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructurePurgeValve":{"prefab":{"prefab_name":"StructurePurgeValve","prefab_hash":-737232128,"desc":"Allows for removal of pressurant gas and evaporated liquids from a liquid pipe. Similar in function to a Back Pressure Regulator the Purge Valve moves gas from the input liquid pipe to the output gas pipe aiming to keep the pressure of the input at the target setting.","name":"Purge Valve"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","Lock":"ReadWrite","Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PipeLiquid","role":"Input"},{"typ":"Pipe","role":"Output"},{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureRailing":{"prefab":{"prefab_name":"StructureRailing","prefab_hash":-1756913871,"desc":"\"Safety third.\"","name":"Railing Industrial (Type 1)"},"structure":{"small_grid":false}},"StructureRecycler":{"prefab":{"prefab_name":"StructureRecycler","prefab_hash":-1633947337,"desc":"A device for collecting the raw resources while destroying an item. Produces Reagent Mix containing packages of reagents. Pass these through the Centrifuge to gain back the source ores. Plants and organic matter passed through will create Biomass, which when passed through the Centrifuge will produce Biomass.","name":"Recycler"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Error":"Read","Activate":"ReadWrite","Reagents":"Read","On":"ReadWrite","RequiredPower":"Read","ClearMemory":"Write","ExportCount":"Read","ImportCount":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Import","typ":"None"},{"name":"Export","typ":"None"}],"device":{"connection_list":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":true}},"StructureRefrigeratedVendingMachine":{"prefab":{"prefab_name":"StructureRefrigeratedVendingMachine","prefab_hash":-1577831321,"desc":"The refrigerated OmniKool vending machine is an advanced version of the standard Vending Machine, which maintains an optimum pressure and constant temperature of -130 degrees C, to prevent food spoilage. It can hold up to 100 stacks.\nThe OmniKool also has an in-built Stacker, allowing players to set the stack sizes of any items ADDED to the device. The unit's default stack size is 50.\nNOTE: altering stack sizes DOES NOT update existing stacks within the machine, only those subsequently added. ","name":"Refrigerated Vending Machine"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{},"1":{},"2":{},"3":{},"4":{},"5":{},"6":{},"7":{},"8":{},"9":{},"10":{},"11":{},"12":{},"13":{},"14":{},"15":{},"16":{},"17":{},"18":{},"19":{},"20":{},"21":{},"22":{},"23":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"42":{},"43":{},"44":{},"45":{},"46":{},"47":{},"48":{},"49":{},"50":{},"51":{},"52":{},"53":{},"54":{},"55":{},"56":{},"57":{},"58":{},"59":{},"60":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"67":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"86":{},"87":{},"88":{},"89":{},"90":{},"91":{},"92":{},"93":{},"94":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"101":{}},"logic_types":{"Power":"Read","Error":"Read","Pressure":"Read","Temperature":"Read","Activate":"ReadWrite","Lock":"ReadWrite","Setting":"ReadWrite","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","Ratio":"Read","Quantity":"Read","On":"ReadWrite","RequiredPower":"Read","RequestHash":"ReadWrite","ClearMemory":"Write","ExportCount":"Read","ImportCount":"Read","TotalMoles":"Read","RatioNitrousOxide":"Read","PrefabHash":"Read","Combustion":"Read","RatioLiquidNitrogen":"Read","RatioLiquidOxygen":"Read","RatioLiquidVolatiles":"Read","RatioSteam":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidPollutant":"Read","RatioLiquidNitrousOxide":"Read","ReferenceId":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Import","typ":"None"},{"name":"Export","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"}],"device":{"connection_list":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":true,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureReinforcedCompositeWindow":{"prefab":{"prefab_name":"StructureReinforcedCompositeWindow","prefab_hash":2027713511,"desc":"Enjoy vistas of even the most savage, alien landscapes with these heavy duty window frames, which are resistant to pressure differentials up to 1MPa.","name":"Reinforced Window (Composite)"},"structure":{"small_grid":false}},"StructureReinforcedCompositeWindowSteel":{"prefab":{"prefab_name":"StructureReinforcedCompositeWindowSteel","prefab_hash":-816454272,"desc":"Enjoy vistas of even the most savage, alien landscapes with these heavy duty window frames, which are resistant to pressure differentials up to 1MPa.","name":"Reinforced Window (Composite Steel)"},"structure":{"small_grid":false}},"StructureReinforcedWallPaddedWindow":{"prefab":{"prefab_name":"StructureReinforcedWallPaddedWindow","prefab_hash":1939061729,"desc":"Enjoy vistas of even the most savage, alien landscapes with these heavy duty window frames, which are resistant to pressure differentials up to 1MPa.","name":"Reinforced Window (Padded)"},"structure":{"small_grid":false}},"StructureReinforcedWallPaddedWindowThin":{"prefab":{"prefab_name":"StructureReinforcedWallPaddedWindowThin","prefab_hash":158502707,"desc":"Enjoy vistas of even the most savage, alien landscapes with these heavy duty window frames, which are resistant to pressure differentials up to 1MPa.","name":"Reinforced Window (Thin)"},"structure":{"small_grid":false}},"StructureRocketAvionics":{"prefab":{"prefab_name":"StructureRocketAvionics","prefab_hash":808389066,"desc":"","name":"Rocket Avionics"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Mode":"ReadWrite","Error":"Read","Temperature":"Read","Reagents":"Read","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","Quantity":"Read","On":"ReadWrite","RequiredPower":"Read","TotalMoles":"Read","VelocityRelativeY":"Read","RatioNitrousOxide":"Read","PrefabHash":"Read","RatioLiquidNitrogen":"Read","RatioLiquidOxygen":"Read","RatioLiquidVolatiles":"Read","RatioSteam":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidPollutant":"Read","RatioLiquidNitrousOxide":"Read","Progress":"Read","DestinationCode":"ReadWrite","Acceleration":"Read","ReferenceId":"Read","AutoShutOff":"ReadWrite","Mass":"Read","DryMass":"Read","Thrust":"Read","Weight":"Read","ThrustToWeight":"Read","TimeToDestination":"Read","BurnTimeRemaining":"Read","AutoLand":"Write","FlightControlRule":"Read","ReEntryAltitude":"Read","Apex":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read","Discover":"Read","Chart":"Read","Survey":"Read","NavPoints":"Read","ChartedNavPoints":"Read","Sites":"Read","CurrentCode":"Read","Density":"Read","Richness":"Read","Size":"Read","TotalQuantity":"Read","MinedQuantity":"Read","NameHash":"Read"},"modes":{"0":"Invalid","1":"None","2":"Mine","3":"Survey","4":"Discover","5":"Chart"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":true}},"StructureRocketCelestialTracker":{"prefab":{"prefab_name":"StructureRocketCelestialTracker","prefab_hash":997453927,"desc":"The Celestial Tracker can be placed in Rockets and when turned on will provide data that can be used to orientate devices such as the Telescope. The Horizontal and Vertical output is localized to the orientation of the tracker. You can calibrate your alignment by comparing the result for the primary body with the output from the Daylight Sensor. Full functionality will only be available in orbit, but you can configure using the primary body. For aligning with the telescope, have the face plate facing up and the cables facing in the same direction as for the telescope and the output values will be aligned.","name":"Rocket Celestial Tracker"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","Horizontal":"Read","Vertical":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","Index":"ReadWrite","CelestialHash":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false},"memory":{"instructions":{"BodyOrientation":{"description":"| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | CELESTIAL_INDEX | BYTE_8 |\r\n| 16-31 | HORIZONTAL_DECI_DEGREES | SHORT_16 |\r\n| 32-47 | VERTICAL_DECI_DEGREES | SHORT_16 |\r\n| 48-63 | UNUSED | 16 |","typ":"CelestialTracking","value":1}},"memory_access":"Read","memory_size":12}},"StructureRocketCircuitHousing":{"prefab":{"prefab_name":"StructureRocketCircuitHousing","prefab_hash":150135861,"desc":"","name":"Rocket Circuit Housing"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","LineNumber":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Error":"Read","Setting":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","LineNumber":"ReadWrite","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":true},"slots":[{"name":"Programmable Chip","typ":"ProgrammableChip"}],"device":{"connection_list":[{"typ":"PowerAndData","role":"Input"}],"device_pins_length":6,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false},"memory":{"instructions":null,"memory_access":"ReadWrite","memory_size":0}},"StructureRocketEngineTiny":{"prefab":{"prefab_name":"StructureRocketEngineTiny","prefab_hash":178472613,"desc":"","name":"Rocket Engine (Tiny)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","Pressure":"Read","Temperature":"Read","Lock":"ReadWrite","Setting":"ReadWrite","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","TotalMoles":"Read","RatioNitrousOxide":"Read","PrefabHash":"Read","Combustion":"Read","RatioLiquidNitrogen":"Read","RatioLiquidOxygen":"Read","RatioLiquidVolatiles":"Read","RatioSteam":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidPollutant":"Read","RatioLiquidNitrousOxide":"Read","ReferenceId":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Pipe","role":"Input"},{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":true,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureRocketManufactory":{"prefab":{"prefab_name":"StructureRocketManufactory","prefab_hash":1781051034,"desc":"","name":"Rocket Manufactory"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{},"1":{}},"logic_types":{"Power":"Read","Open":"ReadWrite","Error":"Read","Activate":"ReadWrite","Lock":"ReadWrite","Reagents":"Read","On":"ReadWrite","RequiredPower":"Read","RecipeHash":"ReadWrite","CompletionRatio":"Read","ClearMemory":"Write","ExportCount":"Read","ImportCount":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Import","typ":"Ingot"},{"name":"Export","typ":"None"}],"device":{"connection_list":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":true,"has_reagents":true},"memory":{"instructions":{"DeviceSetLock":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |","typ":"PrinterInstruction","value":6},"EjectAllReagents":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |","typ":"PrinterInstruction","value":8},"EjectReagent":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |","typ":"PrinterInstruction","value":7},"ExecuteRecipe":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |","typ":"PrinterInstruction","value":2},"JumpIfNextInvalid":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":4},"JumpToAddress":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":5},"MissingRecipeReagent":{"description":"| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |","typ":"PrinterInstruction","value":9},"StackPointer":{"description":"| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":1},"WaitUntilNextValid":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |","typ":"PrinterInstruction","value":3}},"memory_access":"ReadWrite","memory_size":64}},"StructureRocketMiner":{"prefab":{"prefab_name":"StructureRocketMiner","prefab_hash":-2087223687,"desc":"Gathers available resources at the rocket's current space location.","name":"Rocket Miner"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{},"1":{}},"logic_types":{"Power":"Read","Error":"Read","Lock":"ReadWrite","Quantity":"Read","On":"ReadWrite","RequiredPower":"Read","ClearMemory":"Write","ExportCount":"Read","ImportCount":"Read","PrefabHash":"Read","ReferenceId":"Read","DrillCondition":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Export","typ":"None"},{"name":"Drill Head Slot","typ":"DrillHead"}],"device":{"connection_list":[{"typ":"Chute","role":"Output"},{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureRocketScanner":{"prefab":{"prefab_name":"StructureRocketScanner","prefab_hash":2014252591,"desc":"","name":"Rocket Scanner"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{}},"logic_types":{"Power":"Read","Error":"Read","Lock":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Scanner Head Slot","typ":"ScanningHead"}],"device":{"connection_list":[{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureRocketTower":{"prefab":{"prefab_name":"StructureRocketTower","prefab_hash":-654619479,"desc":"","name":"Launch Tower"},"structure":{"small_grid":false}},"StructureRocketTransformerSmall":{"prefab":{"prefab_name":"StructureRocketTransformerSmall","prefab_hash":518925193,"desc":"","name":"Transformer Small (Rocket)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","Lock":"ReadWrite","Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Power","role":"Input"},{"typ":"Power","role":"Output"},{"typ":"Data","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureRover":{"prefab":{"prefab_name":"StructureRover","prefab_hash":806513938,"desc":"","name":"Rover Frame"},"structure":{"small_grid":false}},"StructureSDBHopper":{"prefab":{"prefab_name":"StructureSDBHopper","prefab_hash":-1875856925,"desc":"","name":"SDB Hopper"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{}},"logic_types":{"Open":"ReadWrite","ClearMemory":"Write","ImportCount":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Import","typ":"None"}],"device":{"connection_list":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":true,"has_reagents":false}},"StructureSDBHopperAdvanced":{"prefab":{"prefab_name":"StructureSDBHopperAdvanced","prefab_hash":467225612,"desc":"","name":"SDB Hopper Advanced"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{}},"logic_types":{"Open":"ReadWrite","Lock":"ReadWrite","ClearMemory":"Write","ImportCount":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Import","typ":"None"}],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"},{"typ":"Chute","role":"Input"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":false,"has_open_state":true,"has_reagents":false}},"StructureSDBSilo":{"prefab":{"prefab_name":"StructureSDBSilo","prefab_hash":1155865682,"desc":"The majestic silo holds large quantities of almost anything. While it is doing that, it cannot be deconstructed. Note also, that any food you put into a silo is likely to decay extremely rapidly. The silo can hold up to 600 stacks.","name":"SDB Silo"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{},"1":{}},"logic_types":{"Power":"Read","Open":"ReadWrite","Mode":"ReadWrite","Error":"Read","Activate":"ReadWrite","Lock":"ReadWrite","Quantity":"Read","On":"ReadWrite","RequiredPower":"Read","ClearMemory":"Write","ExportCount":"Read","ImportCount":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Mode0","1":"Mode1"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Import","typ":"None"},{"name":"Export","typ":"None"}],"device":{"connection_list":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":true,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureSatelliteDish":{"prefab":{"prefab_name":"StructureSatelliteDish","prefab_hash":439026183,"desc":"This medium communications unit can be used to communicate with nearby trade vessels.\n \nWhen connected to a Computer containing a Communications Motherboard motherboard, a Landingpad Center, and a Vending Machine, this allows Stationeers to contact traders. Adjust its horizontal and vertical attributes either directly or through logic.","name":"Medium Satellite Dish"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","Activate":"ReadWrite","Setting":"ReadWrite","Horizontal":"ReadWrite","Vertical":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","Idle":"Read","PrefabHash":"Read","SignalStrength":"Read","SignalId":"Read","InterrogationProgress":"Read","TargetPadIndex":"ReadWrite","SizeX":"Read","SizeZ":"Read","MinimumWattsToContact":"Read","WattsReachingContact":"Read","ContactTypeId":"Read","ReferenceId":"Read","BestContactFilter":"ReadWrite","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureSecurityPrinter":{"prefab":{"prefab_name":"StructureSecurityPrinter","prefab_hash":-641491515,"desc":"Any Stationeer concerned about security needs the Harkwell-designed Vigilant-E security printer. Use the Vigilant-E to create a Cartridge (Access Controller), in order to restrict access to different parts of your base via keycards like the Access Card (Blue). The printer also makes a variety of weapons and ammunitions to defend your base against any hostile, aggressive or just slightly rude entites you encounter as you explore the Solar System.\n","name":"Security Printer"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{},"1":{}},"logic_types":{"Power":"Read","Open":"ReadWrite","Error":"Read","Activate":"ReadWrite","Lock":"ReadWrite","Reagents":"Read","On":"ReadWrite","RequiredPower":"Read","RecipeHash":"ReadWrite","CompletionRatio":"Read","ClearMemory":"Write","ExportCount":"Read","ImportCount":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Import","typ":"Ingot"},{"name":"Export","typ":"None"}],"device":{"connection_list":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":true,"has_reagents":true},"memory":{"instructions":{"DeviceSetLock":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |","typ":"PrinterInstruction","value":6},"EjectAllReagents":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |","typ":"PrinterInstruction","value":8},"EjectReagent":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |","typ":"PrinterInstruction","value":7},"ExecuteRecipe":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |","typ":"PrinterInstruction","value":2},"JumpIfNextInvalid":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":4},"JumpToAddress":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":5},"MissingRecipeReagent":{"description":"| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |","typ":"PrinterInstruction","value":9},"StackPointer":{"description":"| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":1},"WaitUntilNextValid":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |","typ":"PrinterInstruction","value":3}},"memory_access":"ReadWrite","memory_size":64}},"StructureShelf":{"prefab":{"prefab_name":"StructureShelf","prefab_hash":1172114950,"desc":"","name":"Shelf"},"structure":{"small_grid":true},"slots":[{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"}]},"StructureShelfMedium":{"prefab":{"prefab_name":"StructureShelfMedium","prefab_hash":182006674,"desc":"A shelf for putting things on, so you can see them.","name":"Shelf Medium"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"2":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"3":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"4":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"5":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"6":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"7":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"8":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"9":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"10":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"11":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"12":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"13":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"14":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Open":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"}],"device":{"connection_list":[],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":true,"has_reagents":false}},"StructureShortCornerLocker":{"prefab":{"prefab_name":"StructureShortCornerLocker","prefab_hash":1330754486,"desc":"","name":"Short Corner Locker"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Open":"ReadWrite","Lock":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"","typ":"None"},{"name":"","typ":"None"}],"device":{"connection_list":[],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":false,"has_open_state":true,"has_reagents":false}},"StructureShortLocker":{"prefab":{"prefab_name":"StructureShortLocker","prefab_hash":-554553467,"desc":"","name":"Short Locker"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"2":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"3":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"4":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"5":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"6":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"7":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"8":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"9":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Open":"ReadWrite","Lock":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"}],"device":{"connection_list":[],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":false,"has_open_state":true,"has_reagents":false}},"StructureShower":{"prefab":{"prefab_name":"StructureShower","prefab_hash":-775128944,"desc":"","name":"Shower"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Open":"ReadWrite","Activate":"ReadWrite","Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PipeLiquid","role":"Input"},{"typ":"PipeLiquid","role":"Output"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":true,"has_reagents":false}},"StructureShowerPowered":{"prefab":{"prefab_name":"StructureShowerPowered","prefab_hash":-1081797501,"desc":"","name":"Shower (Powered)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Open":"ReadWrite","Error":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"PipeLiquid","role":"Input"},{"typ":"PipeLiquid","role":"Output"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureSign1x1":{"prefab":{"prefab_name":"StructureSign1x1","prefab_hash":879058460,"desc":"","name":"Sign 1x1"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureSign2x1":{"prefab":{"prefab_name":"StructureSign2x1","prefab_hash":908320837,"desc":"","name":"Sign 2x1"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureSingleBed":{"prefab":{"prefab_name":"StructureSingleBed","prefab_hash":-492611,"desc":"Description coming.","name":"Single Bed"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Bed","typ":"Entity"}],"device":{"connection_list":[],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureSleeper":{"prefab":{"prefab_name":"StructureSleeper","prefab_hash":-1467449329,"desc":"","name":"Sleeper"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Open":"ReadWrite","Error":"Read","Activate":"ReadWrite","Lock":"ReadWrite","Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","EntityState":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Bed","typ":"Entity"}],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Pipe","role":"Input"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureSleeperLeft":{"prefab":{"prefab_name":"StructureSleeperLeft","prefab_hash":1213495833,"desc":"A horizontal variant of the sleeper. Will keep players hydrated and fed while they are logged out - as long as a breathable atmosphere is provided.","name":"Sleeper Left"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{}},"logic_types":{"Power":"Read","Open":"ReadWrite","Mode":"ReadWrite","Error":"Read","Activate":"ReadWrite","Lock":"ReadWrite","Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","EntityState":"Read","NameHash":"Read"},"modes":{"0":"Safe","1":"Unsafe","2":"Unpowered"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Player","typ":"Entity"}],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Pipe","role":"Input"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":true,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureSleeperRight":{"prefab":{"prefab_name":"StructureSleeperRight","prefab_hash":-1812330717,"desc":"A horizontal variant of the sleeper. Will keep players hydrated and fed while they are logged out - as long as a breathable atmosphere is provided.","name":"Sleeper Right"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{}},"logic_types":{"Power":"Read","Open":"ReadWrite","Mode":"ReadWrite","Error":"Read","Activate":"ReadWrite","Lock":"ReadWrite","Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","EntityState":"Read","NameHash":"Read"},"modes":{"0":"Safe","1":"Unsafe","2":"Unpowered"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Player","typ":"Entity"}],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Pipe","role":"Input"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":true,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureSleeperVertical":{"prefab":{"prefab_name":"StructureSleeperVertical","prefab_hash":-1300059018,"desc":"The vertical variant of the sleeper. Will keep players hydrated and fed while they are logged out - as long as a breathable atmosphere is provided.","name":"Sleeper Vertical"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{}},"logic_types":{"Power":"Read","Open":"ReadWrite","Mode":"ReadWrite","Error":"Read","Activate":"ReadWrite","Lock":"ReadWrite","Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","EntityState":"Read","NameHash":"Read"},"modes":{"0":"Safe","1":"Unsafe","2":"Unpowered"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Player","typ":"Entity"}],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Pipe","role":"Input"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":true,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureSleeperVerticalDroid":{"prefab":{"prefab_name":"StructureSleeperVerticalDroid","prefab_hash":1382098999,"desc":"The Droid Sleeper will recharge robot batteries and equiped suit batteries if present. This sleeper variant is only safe for robots. Entering as a non robot character will cause you to take damage.","name":"Droid Sleeper Vertical"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{}},"logic_types":{"Power":"Read","Open":"ReadWrite","Error":"Read","Activate":"ReadWrite","Lock":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Player","typ":"Entity"}],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"StructureSmallDirectHeatExchangeGastoGas":{"prefab":{"prefab_name":"StructureSmallDirectHeatExchangeGastoGas","prefab_hash":1310303582,"desc":"Direct Heat Exchangers equalize the temperature of the two input networks.","name":"Small Direct Heat Exchanger - Gas + Gas"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Pipe","role":"Input"},{"typ":"Pipe","role":"Input2"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureSmallDirectHeatExchangeLiquidtoGas":{"prefab":{"prefab_name":"StructureSmallDirectHeatExchangeLiquidtoGas","prefab_hash":1825212016,"desc":"Direct Heat Exchangers equalize the temperature of the two input networks.","name":"Small Direct Heat Exchanger - Liquid + Gas "},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PipeLiquid","role":"Input"},{"typ":"Pipe","role":"Input2"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureSmallDirectHeatExchangeLiquidtoLiquid":{"prefab":{"prefab_name":"StructureSmallDirectHeatExchangeLiquidtoLiquid","prefab_hash":-507770416,"desc":"Direct Heat Exchangers equalize the temperature of the two input networks.","name":"Small Direct Heat Exchanger - Liquid + Liquid"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PipeLiquid","role":"Input"},{"typ":"PipeLiquid","role":"Input2"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureSmallSatelliteDish":{"prefab":{"prefab_name":"StructureSmallSatelliteDish","prefab_hash":-2138748650,"desc":"This small communications unit can be used to communicate with nearby trade vessels.\n\n When connected to a Computer containing a Communications Motherboard motherboard, a Landingpad Center, and a Vending Machine, this allows Stationeers to contact traders. Adjust its horizontal and vertical attributes either directly or through logic.","name":"Small Satellite Dish"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","Activate":"ReadWrite","Setting":"ReadWrite","Horizontal":"ReadWrite","Vertical":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","Idle":"Read","PrefabHash":"Read","SignalStrength":"Read","SignalId":"Read","InterrogationProgress":"Read","TargetPadIndex":"ReadWrite","SizeX":"Read","SizeZ":"Read","MinimumWattsToContact":"Read","WattsReachingContact":"Read","ContactTypeId":"Read","ReferenceId":"Read","BestContactFilter":"ReadWrite","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"Input"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureSmallTableBacklessDouble":{"prefab":{"prefab_name":"StructureSmallTableBacklessDouble","prefab_hash":-1633000411,"desc":"","name":"Small (Table Backless Double)"},"structure":{"small_grid":true}},"StructureSmallTableBacklessSingle":{"prefab":{"prefab_name":"StructureSmallTableBacklessSingle","prefab_hash":-1897221677,"desc":"","name":"Small (Table Backless Single)"},"structure":{"small_grid":true}},"StructureSmallTableDinnerSingle":{"prefab":{"prefab_name":"StructureSmallTableDinnerSingle","prefab_hash":1260651529,"desc":"","name":"Small (Table Dinner Single)"},"structure":{"small_grid":true}},"StructureSmallTableRectangleDouble":{"prefab":{"prefab_name":"StructureSmallTableRectangleDouble","prefab_hash":-660451023,"desc":"","name":"Small (Table Rectangle Double)"},"structure":{"small_grid":true}},"StructureSmallTableRectangleSingle":{"prefab":{"prefab_name":"StructureSmallTableRectangleSingle","prefab_hash":-924678969,"desc":"","name":"Small (Table Rectangle Single)"},"structure":{"small_grid":true}},"StructureSmallTableThickDouble":{"prefab":{"prefab_name":"StructureSmallTableThickDouble","prefab_hash":-19246131,"desc":"","name":"Small (Table Thick Double)"},"structure":{"small_grid":true}},"StructureSmallTableThickSingle":{"prefab":{"prefab_name":"StructureSmallTableThickSingle","prefab_hash":-291862981,"desc":"","name":"Small Table (Thick Single)"},"structure":{"small_grid":true}},"StructureSolarPanel":{"prefab":{"prefab_name":"StructureSolarPanel","prefab_hash":-2045627372,"desc":"Sinotai's standard solar panels are used for generating power from sunlight. They can be connected to Logic systems, in order to track sunlight, but their reduced during storms and when damaged. You can repair these using some trusty Duct Tape.","name":"Solar Panel"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Charge":"Read","Horizontal":"ReadWrite","Vertical":"ReadWrite","Maximum":"Read","Ratio":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureSolarPanel45":{"prefab":{"prefab_name":"StructureSolarPanel45","prefab_hash":-1554349863,"desc":"Sinotai basic solar panels generate power from sunlight, sitting at 45 degrees to the ground. Their efficiency is reduced during storms and when damaged. You can repair these using some trusty Duct Tape.","name":"Solar Panel (Angled)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Charge":"Read","Horizontal":"ReadWrite","Vertical":"ReadWrite","Maximum":"Read","Ratio":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureSolarPanel45Reinforced":{"prefab":{"prefab_name":"StructureSolarPanel45Reinforced","prefab_hash":930865127,"desc":"This solar panel is resistant to storm damage.","name":"Solar Panel (Heavy Angled)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Charge":"Read","Horizontal":"ReadWrite","Vertical":"ReadWrite","Maximum":"Read","Ratio":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureSolarPanelDual":{"prefab":{"prefab_name":"StructureSolarPanelDual","prefab_hash":-539224550,"desc":"Sinotai dual solar panels are used for generating power from sunlight, with dedicated data and power ports. They can be connected to {Logic systems, in order to track sunlight, but their efficiency is reduced during storms and when damaged. You can repair these using some trusty Duct Tape.","name":"Solar Panel (Dual)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Charge":"Read","Horizontal":"ReadWrite","Vertical":"ReadWrite","Maximum":"Read","Ratio":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureSolarPanelDualReinforced":{"prefab":{"prefab_name":"StructureSolarPanelDualReinforced","prefab_hash":-1545574413,"desc":"This solar panel is resistant to storm damage.","name":"Solar Panel (Heavy Dual)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Charge":"Read","Horizontal":"ReadWrite","Vertical":"ReadWrite","Maximum":"Read","Ratio":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureSolarPanelFlat":{"prefab":{"prefab_name":"StructureSolarPanelFlat","prefab_hash":1968102968,"desc":"Sinotai basic solar panels generate power from sunlight. They lie flat to the ground, and their efficiency is reduced during storms and when damaged. You can repair these using some trusty Duct Tape.","name":"Solar Panel (Flat)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Charge":"Read","Horizontal":"ReadWrite","Vertical":"ReadWrite","Maximum":"Read","Ratio":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureSolarPanelFlatReinforced":{"prefab":{"prefab_name":"StructureSolarPanelFlatReinforced","prefab_hash":1697196770,"desc":"This solar panel is resistant to storm damage.","name":"Solar Panel (Heavy Flat)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Charge":"Read","Horizontal":"ReadWrite","Vertical":"ReadWrite","Maximum":"Read","Ratio":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureSolarPanelReinforced":{"prefab":{"prefab_name":"StructureSolarPanelReinforced","prefab_hash":-934345724,"desc":"This solar panel is resistant to storm damage.","name":"Solar Panel (Heavy)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Charge":"Read","Horizontal":"ReadWrite","Vertical":"ReadWrite","Maximum":"Read","Ratio":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureSolidFuelGenerator":{"prefab":{"prefab_name":"StructureSolidFuelGenerator","prefab_hash":813146305,"desc":"The mainstay of power generation for Stationeers, this device provides 20kW of power. Multiple solid resources can be loaded. While operating, the device will output its maximum power regardless of whether you have captured it or not. Watch for blown wires! It will output much more power than your regular Cable Coil can handle.","name":"Generator (Solid Fuel)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Lock":"ReadWrite","On":"ReadWrite","ClearMemory":"Write","ImportCount":"Read","PowerGeneration":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Not Generating","1":"Generating"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Input","typ":"Ore"}],"device":{"connection_list":[{"typ":"Chute","role":"Input"},{"typ":"Data","role":"None"},{"typ":"Power","role":"Output"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":true,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureSorter":{"prefab":{"prefab_name":"StructureSorter","prefab_hash":-1009150565,"desc":"No amount of automation is complete without some way of moving different items to different parts of a system. The Xigo A2B sorter can be programmed via a computer with a Sorter Motherboard to direct various items into different chute networks. Filtered items are always passed out the righthand side of the sorter, while non filtered items continue straight through.","name":"Sorter"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"2":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"3":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Mode":"ReadWrite","Error":"Read","Lock":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","ClearMemory":"Write","ExportCount":"Read","ImportCount":"Read","Output":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Split","1":"Filter","2":"Logic"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Import","typ":"None"},{"name":"Export","typ":"None"},{"name":"Export 2","typ":"None"},{"name":"Data Disk","typ":"DataDisk"}],"device":{"connection_list":[{"typ":"Chute","role":"Output2"},{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":true,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureStacker":{"prefab":{"prefab_name":"StructureStacker","prefab_hash":-2020231820,"desc":"A stacker is an important part of any automated chute network. The Xigo ProKompile can be set manually or via logic, to make sure items passing through the stacker are maximized for your storage needs.\nThe ProKompile can stack a wide variety of things such as ingots, as well as splitting stacks into appropriate sizes as needed.","name":"Stacker"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"2":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Mode":"ReadWrite","Error":"Read","Activate":"ReadWrite","Lock":"ReadWrite","Setting":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","ClearMemory":"Write","ExportCount":"Read","ImportCount":"Read","Output":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Automatic","1":"Logic"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Import","typ":"None"},{"name":"Export","typ":"None"},{"name":"Processing","typ":"None"}],"device":{"connection_list":[{"typ":"PowerAndData","role":"None"},{"typ":"Chute","role":"Output"},{"typ":"Chute","role":"Input"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":true,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureStackerReverse":{"prefab":{"prefab_name":"StructureStackerReverse","prefab_hash":1585641623,"desc":"A stacker is an important part of any automated chute network. The Xigo ProKompile can be set manually or via logic, to make sure items passing through the stacker are maximized for your storage needs. The reversed stacker has power and data on the opposite side.\nThe ProKompile can stack a wide variety of things such as ingots, as well as splitting stacks into appropriate sizes as needed.","name":"Stacker"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"2":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Mode":"ReadWrite","Error":"Read","Activate":"ReadWrite","Lock":"ReadWrite","Setting":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","ClearMemory":"Write","ExportCount":"Read","ImportCount":"Read","Output":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Automatic","1":"Logic"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Import","typ":"None"},{"name":"Export","typ":"None"},{"name":"Export","typ":"None"}],"device":{"connection_list":[{"typ":"PowerAndData","role":"None"},{"typ":"Chute","role":"Output"},{"typ":"Chute","role":"Input"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":true,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureStairs4x2":{"prefab":{"prefab_name":"StructureStairs4x2","prefab_hash":1405018945,"desc":"","name":"Stairs"},"structure":{"small_grid":false}},"StructureStairs4x2RailL":{"prefab":{"prefab_name":"StructureStairs4x2RailL","prefab_hash":155214029,"desc":"","name":"Stairs with Rail (Left)"},"structure":{"small_grid":false}},"StructureStairs4x2RailR":{"prefab":{"prefab_name":"StructureStairs4x2RailR","prefab_hash":-212902482,"desc":"","name":"Stairs with Rail (Right)"},"structure":{"small_grid":false}},"StructureStairs4x2Rails":{"prefab":{"prefab_name":"StructureStairs4x2Rails","prefab_hash":-1088008720,"desc":"","name":"Stairs with Rails"},"structure":{"small_grid":false}},"StructureStairwellBackLeft":{"prefab":{"prefab_name":"StructureStairwellBackLeft","prefab_hash":505924160,"desc":"","name":"Stairwell (Back Left)"},"structure":{"small_grid":false}},"StructureStairwellBackPassthrough":{"prefab":{"prefab_name":"StructureStairwellBackPassthrough","prefab_hash":-862048392,"desc":"","name":"Stairwell (Back Passthrough)"},"structure":{"small_grid":false}},"StructureStairwellBackRight":{"prefab":{"prefab_name":"StructureStairwellBackRight","prefab_hash":-2128896573,"desc":"","name":"Stairwell (Back Right)"},"structure":{"small_grid":false}},"StructureStairwellFrontLeft":{"prefab":{"prefab_name":"StructureStairwellFrontLeft","prefab_hash":-37454456,"desc":"","name":"Stairwell (Front Left)"},"structure":{"small_grid":false}},"StructureStairwellFrontPassthrough":{"prefab":{"prefab_name":"StructureStairwellFrontPassthrough","prefab_hash":-1625452928,"desc":"","name":"Stairwell (Front Passthrough)"},"structure":{"small_grid":false}},"StructureStairwellFrontRight":{"prefab":{"prefab_name":"StructureStairwellFrontRight","prefab_hash":340210934,"desc":"","name":"Stairwell (Front Right)"},"structure":{"small_grid":false}},"StructureStairwellNoDoors":{"prefab":{"prefab_name":"StructureStairwellNoDoors","prefab_hash":2049879875,"desc":"","name":"Stairwell (No Doors)"},"structure":{"small_grid":false}},"StructureStirlingEngine":{"prefab":{"prefab_name":"StructureStirlingEngine","prefab_hash":-260316435,"desc":"Harnessing an ancient thermal exploit, the Recurso 'Libra' Stirling Engine generates power via the expansion and contraction of a working gas to drive pistons operating an electrical generator.\n \nWhen high pressure hot gas is supplied into the input pipe, this gas will heat the hot side of the unit, then pass into the output pipe. The cooler side uses the room's ambient atmosphere, which must be kept at a lower temperature and pressure in order to create a differential. Add a working gas by inserting a Gas Canister. The unit must be deactivated when adding or removing canisters, or the working gas may leak into the surrounding atmosphere.\n \nGases with a low molecular mass make the most efficient working gases. Increasing the moles of working gas can result in a greater potential power output. However, overpressuring the unit may have ... sub-optimal results.","name":"Stirling Engine"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{}},"logic_types":{"Power":"Read","Error":"Read","Pressure":"Read","Temperature":"Read","Setting":"ReadWrite","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","Maximum":"Read","Ratio":"Read","Quantity":"Read","On":"ReadWrite","RequiredPower":"Read","PowerGeneration":"Read","TotalMoles":"Read","Volume":"Read","RatioNitrousOxide":"Read","PrefabHash":"Read","Combustion":"Read","EnvironmentEfficiency":"Read","WorkingGasEfficiency":"Read","RatioLiquidNitrogen":"Read","RatioLiquidOxygen":"Read","RatioLiquidVolatiles":"Read","RatioSteam":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidPollutant":"Read","RatioLiquidNitrousOxide":"Read","ReferenceId":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Gas Canister","typ":"GasCanister"}],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Pipe","role":"Input"},{"typ":"Pipe","role":"Output"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":true,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureStorageLocker":{"prefab":{"prefab_name":"StructureStorageLocker","prefab_hash":-793623899,"desc":"","name":"Locker"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"2":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"3":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"4":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"5":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"6":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"7":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"8":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"9":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"10":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"11":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"12":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"13":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"14":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"15":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"16":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"17":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"18":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"19":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"20":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"21":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"22":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"23":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"24":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"25":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"26":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"27":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"28":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"29":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Open":"ReadWrite","Lock":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"","typ":"None"}],"device":{"connection_list":[],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":false,"has_open_state":true,"has_reagents":false}},"StructureSuitStorage":{"prefab":{"prefab_name":"StructureSuitStorage","prefab_hash":255034731,"desc":"As tidy as it is useful, the suit storage rack holds an Eva Suit, Space Helmet and a Jetpack Basic.\nWhen powered and connected to and , it will recharge the suit's batteries, refill the Canister (Oxygen) and your Filter (Nitrogen) Gas Canister. The wastetank will be pumped out to the pipe connected to the waste outlet.\nAll the rack's pipes must be connected or the unit will show an error state, but it will still charge the battery.","name":"Suit Storage"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Pressure":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","Open":"ReadWrite","On":"ReadWrite","Lock":"ReadWrite","SortingClass":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Pressure":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","PressureWaste":"Read","PressureAir":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"2":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Pressure":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Error":"Read","Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Helmet","typ":"Helmet"},{"name":"Suit","typ":"Suit"},{"name":"Back","typ":"Back"}],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"},{"typ":"Pipe","role":"Input"},{"typ":"Pipe","role":"Input2"},{"typ":"Pipe","role":"Output"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureTankBig":{"prefab":{"prefab_name":"StructureTankBig","prefab_hash":-1606848156,"desc":"","name":"Large Tank"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Open":"ReadWrite","Pressure":"Read","Temperature":"Read","Setting":"ReadWrite","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","Maximum":"Read","Ratio":"Read","TotalMoles":"Read","Volume":"Read","RatioNitrousOxide":"Read","PrefabHash":"Read","Combustion":"Read","RatioLiquidNitrogen":"Read","VolumeOfLiquid":"Read","RatioLiquidOxygen":"Read","RatioLiquidVolatiles":"Read","RatioSteam":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidPollutant":"Read","RatioLiquidNitrousOxide":"Read","ReferenceId":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Pipe","role":"Input"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":true,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":true,"has_reagents":false}},"StructureTankBigInsulated":{"prefab":{"prefab_name":"StructureTankBigInsulated","prefab_hash":1280378227,"desc":"","name":"Tank Big (Insulated)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Open":"ReadWrite","Pressure":"Read","Temperature":"Read","Setting":"ReadWrite","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","Maximum":"Read","Ratio":"Read","TotalMoles":"Read","Volume":"Read","RatioNitrousOxide":"Read","PrefabHash":"Read","Combustion":"Read","RatioLiquidNitrogen":"Read","VolumeOfLiquid":"Read","RatioLiquidOxygen":"Read","RatioLiquidVolatiles":"Read","RatioSteam":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidPollutant":"Read","RatioLiquidNitrousOxide":"Read","ReferenceId":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Pipe","role":"Input"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":true,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":true,"has_reagents":false}},"StructureTankConnector":{"prefab":{"prefab_name":"StructureTankConnector","prefab_hash":-1276379454,"desc":"Tank connectors are basic mounting devices that allow you to attach a Portable Gas Tank to a gas pipe network.","name":"Tank Connector"},"structure":{"small_grid":true},"slots":[{"name":"","typ":"None"}]},"StructureTankConnectorLiquid":{"prefab":{"prefab_name":"StructureTankConnectorLiquid","prefab_hash":1331802518,"desc":"These basic mounting devices allow you to attach a Portable Liquid Tank to a liquid pipe network.","name":"Liquid Tank Connector"},"structure":{"small_grid":true},"slots":[{"name":"Portable Slot","typ":"None"}]},"StructureTankSmall":{"prefab":{"prefab_name":"StructureTankSmall","prefab_hash":1013514688,"desc":"","name":"Small Tank"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Open":"ReadWrite","Pressure":"Read","Temperature":"Read","Setting":"ReadWrite","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","Maximum":"Read","Ratio":"Read","TotalMoles":"Read","Volume":"Read","RatioNitrousOxide":"Read","PrefabHash":"Read","Combustion":"Read","RatioLiquidNitrogen":"Read","VolumeOfLiquid":"Read","RatioLiquidOxygen":"Read","RatioLiquidVolatiles":"Read","RatioSteam":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidPollutant":"Read","RatioLiquidNitrousOxide":"Read","ReferenceId":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Pipe","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":true,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":true,"has_reagents":false}},"StructureTankSmallAir":{"prefab":{"prefab_name":"StructureTankSmallAir","prefab_hash":955744474,"desc":"","name":"Small Tank (Air)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Open":"ReadWrite","Pressure":"Read","Temperature":"Read","Setting":"ReadWrite","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","Maximum":"Read","Ratio":"Read","TotalMoles":"Read","Volume":"Read","RatioNitrousOxide":"Read","PrefabHash":"Read","Combustion":"Read","RatioLiquidNitrogen":"Read","VolumeOfLiquid":"Read","RatioLiquidOxygen":"Read","RatioLiquidVolatiles":"Read","RatioSteam":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidPollutant":"Read","RatioLiquidNitrousOxide":"Read","ReferenceId":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Pipe","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":true,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":true,"has_reagents":false}},"StructureTankSmallFuel":{"prefab":{"prefab_name":"StructureTankSmallFuel","prefab_hash":2102454415,"desc":"","name":"Small Tank (Fuel)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Open":"ReadWrite","Pressure":"Read","Temperature":"Read","Setting":"ReadWrite","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","Maximum":"Read","Ratio":"Read","TotalMoles":"Read","Volume":"Read","RatioNitrousOxide":"Read","PrefabHash":"Read","Combustion":"Read","RatioLiquidNitrogen":"Read","VolumeOfLiquid":"Read","RatioLiquidOxygen":"Read","RatioLiquidVolatiles":"Read","RatioSteam":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidPollutant":"Read","RatioLiquidNitrousOxide":"Read","ReferenceId":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Pipe","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":true,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":true,"has_reagents":false}},"StructureTankSmallInsulated":{"prefab":{"prefab_name":"StructureTankSmallInsulated","prefab_hash":272136332,"desc":"","name":"Tank Small (Insulated)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Open":"ReadWrite","Pressure":"Read","Temperature":"Read","Setting":"ReadWrite","RatioOxygen":"Read","RatioCarbonDioxide":"Read","RatioNitrogen":"Read","RatioPollutant":"Read","RatioVolatiles":"Read","RatioWater":"Read","Maximum":"Read","Ratio":"Read","TotalMoles":"Read","Volume":"Read","RatioNitrousOxide":"Read","PrefabHash":"Read","Combustion":"Read","RatioLiquidNitrogen":"Read","VolumeOfLiquid":"Read","RatioLiquidOxygen":"Read","RatioLiquidVolatiles":"Read","RatioSteam":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidPollutant":"Read","RatioLiquidNitrousOxide":"Read","ReferenceId":"Read","RatioHydrogen":"Read","RatioLiquidHydrogen":"Read","RatioPollutedWater":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Pipe","role":"Input"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":true,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":true,"has_reagents":false}},"StructureToolManufactory":{"prefab":{"prefab_name":"StructureToolManufactory","prefab_hash":-465741100,"desc":"No mission can be completed without the proper tools. The Norsec ThuulDek manufactory can fabricate almost any tool or hand-held device a Stationeer may need to complete their mission, as well as a variety of delightful paints.\nUpgrade the device using a Tool Printer Mod for additional recipes and faster processing speeds.","name":"Tool Manufactory"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{},"1":{}},"logic_types":{"Power":"Read","Open":"ReadWrite","Error":"Read","Activate":"ReadWrite","Lock":"ReadWrite","Reagents":"Read","On":"ReadWrite","RequiredPower":"Read","RecipeHash":"ReadWrite","CompletionRatio":"Read","ClearMemory":"Write","ExportCount":"Read","ImportCount":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Import","typ":"Ingot"},{"name":"Export","typ":"None"}],"device":{"connection_list":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":true,"has_reagents":true},"memory":{"instructions":{"DeviceSetLock":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |","typ":"PrinterInstruction","value":6},"EjectAllReagents":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |","typ":"PrinterInstruction","value":8},"EjectReagent":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |","typ":"PrinterInstruction","value":7},"ExecuteRecipe":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |","typ":"PrinterInstruction","value":2},"JumpIfNextInvalid":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":4},"JumpToAddress":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":5},"MissingRecipeReagent":{"description":"| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |","typ":"PrinterInstruction","value":9},"StackPointer":{"description":"| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |","typ":"PrinterInstruction","value":1},"WaitUntilNextValid":{"description":"| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |","typ":"PrinterInstruction","value":3}},"memory_access":"ReadWrite","memory_size":64}},"StructureTorpedoRack":{"prefab":{"prefab_name":"StructureTorpedoRack","prefab_hash":1473807953,"desc":"","name":"Torpedo Rack"},"structure":{"small_grid":true},"slots":[{"name":"Torpedo","typ":"Torpedo"},{"name":"Torpedo","typ":"Torpedo"},{"name":"Torpedo","typ":"Torpedo"},{"name":"Torpedo","typ":"Torpedo"},{"name":"Torpedo","typ":"Torpedo"},{"name":"Torpedo","typ":"Torpedo"},{"name":"Torpedo","typ":"Torpedo"},{"name":"Torpedo","typ":"Torpedo"}]},"StructureTraderWaypoint":{"prefab":{"prefab_name":"StructureTraderWaypoint","prefab_hash":1570931620,"desc":"","name":"Trader Waypoint"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureTransformer":{"prefab":{"prefab_name":"StructureTransformer","prefab_hash":-1423212473,"desc":"The large Norsec transformer is a critical component of extended electrical networks, controlling the maximum power that will flow down a cable. To prevent overloading, output can be set from 0 to 50,000W. \nNote that transformers operate as data isolators, preventing data flowing into any network beyond it.","name":"Transformer (Large)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","Lock":"ReadWrite","Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"Input"},{"typ":"Power","role":"Output"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureTransformerMedium":{"prefab":{"prefab_name":"StructureTransformerMedium","prefab_hash":-1065725831,"desc":"Transformers control the maximum power that will flow down a sub-network of cables, to prevent overloading electrical systems. \nMedium transformers are used in larger setups where more than 5000W is required, with output that can be set to a maximum of 25000W.\nNote that transformers also operate as data isolators, preventing data flowing into any network beyond it.","name":"Transformer (Medium)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","Lock":"ReadWrite","Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Power","role":"Input"},{"typ":"PowerAndData","role":"Output"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureTransformerMediumReversed":{"prefab":{"prefab_name":"StructureTransformerMediumReversed","prefab_hash":833912764,"desc":"Transformers control the maximum power that will flow down a sub-network of cables, to prevent overloading electrical systems. \nMedium transformers are used in larger setups where more than 5000W is required, with output that can be set to a maximum of 25000W.\nNote that transformers also operate as data isolators, preventing data flowing into any network beyond it.","name":"Transformer Reversed (Medium)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","Lock":"ReadWrite","Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Power","role":"Output"},{"typ":"PowerAndData","role":"Input"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureTransformerSmall":{"prefab":{"prefab_name":"StructureTransformerSmall","prefab_hash":-890946730,"desc":"Transformers control the maximum power that will flow down a cable subnetwork, to prevent overloading electrical systems. Output on small transformers can be set from 0 to 5000W.\nNote that transformers operate as data isolators, preventing data flowing into any network beyond it.","name":"Transformer (Small)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","Lock":"ReadWrite","Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PowerAndData","role":"Input"},{"typ":"Power","role":"Output"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureTransformerSmallReversed":{"prefab":{"prefab_name":"StructureTransformerSmallReversed","prefab_hash":1054059374,"desc":"Transformers control the maximum power that will flow down a cable subnetwork, to prevent overloading electrical systems. Output on small transformers can be set from 0 to 5000W.\nNote that transformers operate as data isolators, preventing data flowing into any network beyond it.","name":"Transformer Reversed (Small)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","Lock":"ReadWrite","Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Power","role":"Output"},{"typ":"PowerAndData","role":"Input"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureTurbineGenerator":{"prefab":{"prefab_name":"StructureTurbineGenerator","prefab_hash":1282191063,"desc":"","name":"Turbine Generator"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"PowerGeneration":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureTurboVolumePump":{"prefab":{"prefab_name":"StructureTurboVolumePump","prefab_hash":1310794736,"desc":"Shifts 10 times more gas than a basic Volume Pump, with a mode that can be set to flow in either direction.","name":"Turbo Volume Pump (Gas)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Mode":"ReadWrite","Error":"Read","Lock":"ReadWrite","Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Right","1":"Left"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"},{"typ":"Pipe","role":"Output"},{"typ":"Pipe","role":"Input"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":true,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureUnloader":{"prefab":{"prefab_name":"StructureUnloader","prefab_hash":750118160,"desc":"The Xigo Re:Gurge is a handy unit for unloading any items inserted into it, and feeding them into a chute network. For instance, if you add a full Mining Belt, the Re:Gurge will empty a mining belt of its contents, insert them into the chute network, then insert the mining belt itself. A Sorter is recommended to reclaim the mining belt.\n\nOutput = 0 exporting the main item\nOutput = 1 exporting items inside and eventually the main item.","name":"Unloader"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Mode":"ReadWrite","Error":"Read","Lock":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","ClearMemory":"Write","ExportCount":"Read","ImportCount":"Read","Output":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Automatic","1":"Logic"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Import","typ":"None"},{"name":"Export","typ":"None"}],"device":{"connection_list":[{"typ":"PowerAndData","role":"None"},{"typ":"Chute","role":"Output"},{"typ":"Chute","role":"Input"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":true,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureUprightWindTurbine":{"prefab":{"prefab_name":"StructureUprightWindTurbine","prefab_hash":1622183451,"desc":"Norsec's basic wind turbine is an easily fabricated, rapidly deployed design that is strong enough to withstand the worst that environments can throw at it. \nWhile the wind turbine is optimized to produce power even on low atmosphere worlds (up to 200W), it performs best in denser environments. Output varies with wind speed, and during storms, may increase dramatically (up to 800W), so be careful to design your power networks with that in mind.","name":"Upright Wind Turbine"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"PowerGeneration":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureValve":{"prefab":{"prefab_name":"StructureValve","prefab_hash":-692036078,"desc":"","name":"Valve"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","On":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Pipe","role":"None"},{"typ":"Pipe","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureVendingMachine":{"prefab":{"prefab_name":"StructureVendingMachine","prefab_hash":-443130773,"desc":"The Xigo-designed 'Slot Mate' vending machine allows storage of almost any item, while also operating as a distribution point for working with Traders. You cannot trade without a vending machine, or its more advanced equivalent, the Refrigerated Vending Machine. Each vending machine can hold up to 100 stacks.","name":"Vending Machine"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{},"1":{},"2":{},"3":{},"4":{},"5":{},"6":{},"7":{},"8":{},"9":{},"10":{},"11":{},"12":{},"13":{},"14":{},"15":{},"16":{},"17":{},"18":{},"19":{},"20":{},"21":{},"22":{},"23":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"42":{},"43":{},"44":{},"45":{},"46":{},"47":{},"48":{},"49":{},"50":{},"51":{},"52":{},"53":{},"54":{},"55":{},"56":{},"57":{},"58":{},"59":{},"60":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"67":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"86":{},"87":{},"88":{},"89":{},"90":{},"91":{},"92":{},"93":{},"94":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"101":{}},"logic_types":{"Power":"Read","Error":"Read","Activate":"ReadWrite","Lock":"ReadWrite","Ratio":"Read","Quantity":"Read","On":"ReadWrite","RequiredPower":"Read","RequestHash":"ReadWrite","ClearMemory":"Write","ExportCount":"Read","ImportCount":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Import","typ":"None"},{"name":"Export","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"},{"name":"Storage","typ":"None"}],"device":{"connection_list":[{"typ":"Chute","role":"Input"},{"typ":"Chute","role":"Output"},{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureVolumePump":{"prefab":{"prefab_name":"StructureVolumePump","prefab_hash":-321403609,"desc":"The volume pump pumps pumpable gases. It also separates out pipe networks into separate networks.","name":"Volume Pump"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","Lock":"ReadWrite","Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Pipe","role":"Output"},{"typ":"Pipe","role":"Input"},{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureWallArch":{"prefab":{"prefab_name":"StructureWallArch","prefab_hash":-858143148,"desc":"","name":"Wall (Arch)"},"structure":{"small_grid":false}},"StructureWallArchArrow":{"prefab":{"prefab_name":"StructureWallArchArrow","prefab_hash":1649708822,"desc":"","name":"Wall (Arch Arrow)"},"structure":{"small_grid":false}},"StructureWallArchCornerRound":{"prefab":{"prefab_name":"StructureWallArchCornerRound","prefab_hash":1794588890,"desc":"","name":"Wall (Arch Corner Round)"},"structure":{"small_grid":true}},"StructureWallArchCornerSquare":{"prefab":{"prefab_name":"StructureWallArchCornerSquare","prefab_hash":-1963016580,"desc":"","name":"Wall (Arch Corner Square)"},"structure":{"small_grid":true}},"StructureWallArchCornerTriangle":{"prefab":{"prefab_name":"StructureWallArchCornerTriangle","prefab_hash":1281911841,"desc":"","name":"Wall (Arch Corner Triangle)"},"structure":{"small_grid":true}},"StructureWallArchPlating":{"prefab":{"prefab_name":"StructureWallArchPlating","prefab_hash":1182510648,"desc":"","name":"Wall (Arch Plating)"},"structure":{"small_grid":false}},"StructureWallArchTwoTone":{"prefab":{"prefab_name":"StructureWallArchTwoTone","prefab_hash":782529714,"desc":"","name":"Wall (Arch Two Tone)"},"structure":{"small_grid":false}},"StructureWallCooler":{"prefab":{"prefab_name":"StructureWallCooler","prefab_hash":-739292323,"desc":"The Xigo Freezy Boi wall cooler complements the wall heater, which can only raise the temperature. The wall cooler functions by drawing heat from the surrounding atmosphere and adding that heat into its pipe network.\nIn order to run the wall cooler properly, you will need to connect pipes to the wall cooler and fill the connected pipe network with any type of gas. The gas's heat capacity and volume will determine how fast it reacts to temperature changes.\n\nEFFICIENCY\nThe higher the difference in temperature between the gas stored in the pipes and the room, the less efficient the wall cooler will be. So to keep the wall cooler running at an acceptable efficiency you will need to get rid of the heat that accumulates in the pipes connected to it. A common practice would be to run the pipes to the outside and use radiators on the outside section of the pipes to get rid of the heat.\nThe less efficient the wall cooler, the less power it consumes. It will consume 1010W at max efficiency. The wall cooler can be controlled by logic chips to run when the temperature hits a certain degree.\nERRORS\nIf the wall cooler is flashing an error then it is missing one of the following:\n\n- Pipe connection to the wall cooler.\n- Gas in the connected pipes, or pressure is too low.\n- Atmosphere in the surrounding environment or pressure is too low.\n\nFor more information about how to control temperatures, consult the temperature control Guides page.","name":"Wall Cooler"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Error":"Read","Lock":"ReadWrite","Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"","typ":"DataDisk"}],"device":{"connection_list":[{"typ":"Pipe","role":"None"},{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureWallFlat":{"prefab":{"prefab_name":"StructureWallFlat","prefab_hash":1635864154,"desc":"","name":"Wall (Flat)"},"structure":{"small_grid":false}},"StructureWallFlatCornerRound":{"prefab":{"prefab_name":"StructureWallFlatCornerRound","prefab_hash":898708250,"desc":"","name":"Wall (Flat Corner Round)"},"structure":{"small_grid":true}},"StructureWallFlatCornerSquare":{"prefab":{"prefab_name":"StructureWallFlatCornerSquare","prefab_hash":298130111,"desc":"","name":"Wall (Flat Corner Square)"},"structure":{"small_grid":true}},"StructureWallFlatCornerTriangle":{"prefab":{"prefab_name":"StructureWallFlatCornerTriangle","prefab_hash":2097419366,"desc":"","name":"Wall (Flat Corner Triangle)"},"structure":{"small_grid":true}},"StructureWallFlatCornerTriangleFlat":{"prefab":{"prefab_name":"StructureWallFlatCornerTriangleFlat","prefab_hash":-1161662836,"desc":"","name":"Wall (Flat Corner Triangle Flat)"},"structure":{"small_grid":true}},"StructureWallGeometryCorner":{"prefab":{"prefab_name":"StructureWallGeometryCorner","prefab_hash":1979212240,"desc":"","name":"Wall (Geometry Corner)"},"structure":{"small_grid":false}},"StructureWallGeometryStreight":{"prefab":{"prefab_name":"StructureWallGeometryStreight","prefab_hash":1049735537,"desc":"","name":"Wall (Geometry Straight)"},"structure":{"small_grid":false}},"StructureWallGeometryT":{"prefab":{"prefab_name":"StructureWallGeometryT","prefab_hash":1602758612,"desc":"","name":"Wall (Geometry T)"},"structure":{"small_grid":false}},"StructureWallGeometryTMirrored":{"prefab":{"prefab_name":"StructureWallGeometryTMirrored","prefab_hash":-1427845483,"desc":"","name":"Wall (Geometry T Mirrored)"},"structure":{"small_grid":false}},"StructureWallHeater":{"prefab":{"prefab_name":"StructureWallHeater","prefab_hash":24258244,"desc":"The Xigo wall heater is a simple device that can be installed on a wall or frame and connected to power. When switched on, it will start heating the surrounding environment. It consumes 1010W of power and can be controlled by logic chips to run when the temperature hits a certain level.","name":"Wall Heater"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Error":"Read","Lock":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"","typ":"DataDisk"}],"device":{"connection_list":[{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureWallIron":{"prefab":{"prefab_name":"StructureWallIron","prefab_hash":1287324802,"desc":"","name":"Iron Wall (Type 1)"},"structure":{"small_grid":false}},"StructureWallIron02":{"prefab":{"prefab_name":"StructureWallIron02","prefab_hash":1485834215,"desc":"","name":"Iron Wall (Type 2)"},"structure":{"small_grid":false}},"StructureWallIron03":{"prefab":{"prefab_name":"StructureWallIron03","prefab_hash":798439281,"desc":"","name":"Iron Wall (Type 3)"},"structure":{"small_grid":false}},"StructureWallIron04":{"prefab":{"prefab_name":"StructureWallIron04","prefab_hash":-1309433134,"desc":"","name":"Iron Wall (Type 4)"},"structure":{"small_grid":false}},"StructureWallLargePanel":{"prefab":{"prefab_name":"StructureWallLargePanel","prefab_hash":1492930217,"desc":"","name":"Wall (Large Panel)"},"structure":{"small_grid":false}},"StructureWallLargePanelArrow":{"prefab":{"prefab_name":"StructureWallLargePanelArrow","prefab_hash":-776581573,"desc":"","name":"Wall (Large Panel Arrow)"},"structure":{"small_grid":false}},"StructureWallLight":{"prefab":{"prefab_name":"StructureWallLight","prefab_hash":-1860064656,"desc":"","name":"Wall Light"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Lock":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureWallLightBattery":{"prefab":{"prefab_name":"StructureWallLightBattery","prefab_hash":-1306415132,"desc":"","name":"Wall Light (Battery)"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Lock":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Battery","typ":"Battery"}],"device":{"connection_list":[{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureWallPaddedArch":{"prefab":{"prefab_name":"StructureWallPaddedArch","prefab_hash":1590330637,"desc":"","name":"Wall (Padded Arch)"},"structure":{"small_grid":false}},"StructureWallPaddedArchCorner":{"prefab":{"prefab_name":"StructureWallPaddedArchCorner","prefab_hash":-1126688298,"desc":"","name":"Wall (Padded Arch Corner)"},"structure":{"small_grid":true}},"StructureWallPaddedArchLightFittingTop":{"prefab":{"prefab_name":"StructureWallPaddedArchLightFittingTop","prefab_hash":1171987947,"desc":"","name":"Wall (Padded Arch Light Fitting Top)"},"structure":{"small_grid":false}},"StructureWallPaddedArchLightsFittings":{"prefab":{"prefab_name":"StructureWallPaddedArchLightsFittings","prefab_hash":-1546743960,"desc":"","name":"Wall (Padded Arch Lights Fittings)"},"structure":{"small_grid":false}},"StructureWallPaddedCorner":{"prefab":{"prefab_name":"StructureWallPaddedCorner","prefab_hash":-155945899,"desc":"","name":"Wall (Padded Corner)"},"structure":{"small_grid":true}},"StructureWallPaddedCornerThin":{"prefab":{"prefab_name":"StructureWallPaddedCornerThin","prefab_hash":1183203913,"desc":"","name":"Wall (Padded Corner Thin)"},"structure":{"small_grid":true}},"StructureWallPaddedNoBorder":{"prefab":{"prefab_name":"StructureWallPaddedNoBorder","prefab_hash":8846501,"desc":"","name":"Wall (Padded No Border)"},"structure":{"small_grid":false}},"StructureWallPaddedNoBorderCorner":{"prefab":{"prefab_name":"StructureWallPaddedNoBorderCorner","prefab_hash":179694804,"desc":"","name":"Wall (Padded No Border Corner)"},"structure":{"small_grid":true}},"StructureWallPaddedThinNoBorder":{"prefab":{"prefab_name":"StructureWallPaddedThinNoBorder","prefab_hash":-1611559100,"desc":"","name":"Wall (Padded Thin No Border)"},"structure":{"small_grid":false}},"StructureWallPaddedThinNoBorderCorner":{"prefab":{"prefab_name":"StructureWallPaddedThinNoBorderCorner","prefab_hash":1769527556,"desc":"","name":"Wall (Padded Thin No Border Corner)"},"structure":{"small_grid":true}},"StructureWallPaddedWindow":{"prefab":{"prefab_name":"StructureWallPaddedWindow","prefab_hash":2087628940,"desc":"","name":"Wall (Padded Window)"},"structure":{"small_grid":false}},"StructureWallPaddedWindowThin":{"prefab":{"prefab_name":"StructureWallPaddedWindowThin","prefab_hash":-37302931,"desc":"","name":"Wall (Padded Window Thin)"},"structure":{"small_grid":false}},"StructureWallPadding":{"prefab":{"prefab_name":"StructureWallPadding","prefab_hash":635995024,"desc":"","name":"Wall (Padding)"},"structure":{"small_grid":false}},"StructureWallPaddingArchVent":{"prefab":{"prefab_name":"StructureWallPaddingArchVent","prefab_hash":-1243329828,"desc":"","name":"Wall (Padding Arch Vent)"},"structure":{"small_grid":false}},"StructureWallPaddingLightFitting":{"prefab":{"prefab_name":"StructureWallPaddingLightFitting","prefab_hash":2024882687,"desc":"","name":"Wall (Padding Light Fitting)"},"structure":{"small_grid":false}},"StructureWallPaddingThin":{"prefab":{"prefab_name":"StructureWallPaddingThin","prefab_hash":-1102403554,"desc":"","name":"Wall (Padding Thin)"},"structure":{"small_grid":false}},"StructureWallPlating":{"prefab":{"prefab_name":"StructureWallPlating","prefab_hash":26167457,"desc":"","name":"Wall (Plating)"},"structure":{"small_grid":false}},"StructureWallSmallPanelsAndHatch":{"prefab":{"prefab_name":"StructureWallSmallPanelsAndHatch","prefab_hash":619828719,"desc":"","name":"Wall (Small Panels And Hatch)"},"structure":{"small_grid":false}},"StructureWallSmallPanelsArrow":{"prefab":{"prefab_name":"StructureWallSmallPanelsArrow","prefab_hash":-639306697,"desc":"","name":"Wall (Small Panels Arrow)"},"structure":{"small_grid":false}},"StructureWallSmallPanelsMonoChrome":{"prefab":{"prefab_name":"StructureWallSmallPanelsMonoChrome","prefab_hash":386820253,"desc":"","name":"Wall (Small Panels Mono Chrome)"},"structure":{"small_grid":false}},"StructureWallSmallPanelsOpen":{"prefab":{"prefab_name":"StructureWallSmallPanelsOpen","prefab_hash":-1407480603,"desc":"","name":"Wall (Small Panels Open)"},"structure":{"small_grid":false}},"StructureWallSmallPanelsTwoTone":{"prefab":{"prefab_name":"StructureWallSmallPanelsTwoTone","prefab_hash":1709994581,"desc":"","name":"Wall (Small Panels Two Tone)"},"structure":{"small_grid":false}},"StructureWallVent":{"prefab":{"prefab_name":"StructureWallVent","prefab_hash":-1177469307,"desc":"Used to mix atmospheres passively between two walls.","name":"Wall Vent"},"structure":{"small_grid":true}},"StructureWaterBottleFiller":{"prefab":{"prefab_name":"StructureWaterBottleFiller","prefab_hash":-1178961954,"desc":"","name":"Water Bottle Filler"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Pressure":"Read","Temperature":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","Volume":"Read","Open":"ReadWrite","SortingClass":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Pressure":"Read","Temperature":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","Volume":"Read","Open":"ReadWrite","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Error":"Read","Activate":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Bottle Slot","typ":"LiquidBottle"},{"name":"Bottle Slot","typ":"LiquidBottle"}],"device":{"connection_list":[{"typ":"PipeLiquid","role":"Input"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureWaterBottleFillerBottom":{"prefab":{"prefab_name":"StructureWaterBottleFillerBottom","prefab_hash":1433754995,"desc":"","name":"Water Bottle Filler Bottom"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Pressure":"Read","Temperature":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","Volume":"Read","Open":"ReadWrite","SortingClass":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Pressure":"Read","Temperature":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","Volume":"Read","Open":"ReadWrite","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Error":"Read","Activate":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Bottle Slot","typ":"LiquidBottle"},{"name":"Bottle Slot","typ":"LiquidBottle"}],"device":{"connection_list":[{"typ":"PipeLiquid","role":"Input"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureWaterBottleFillerPowered":{"prefab":{"prefab_name":"StructureWaterBottleFillerPowered","prefab_hash":-756587791,"desc":"","name":"Waterbottle Filler"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Pressure":"Read","Temperature":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","Volume":"Read","Open":"ReadWrite","SortingClass":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Pressure":"Read","Temperature":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","Volume":"Read","Open":"ReadWrite","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Error":"Read","Activate":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Bottle Slot","typ":"LiquidBottle"},{"name":"Bottle Slot","typ":"LiquidBottle"}],"device":{"connection_list":[{"typ":"PipeLiquid","role":"Input"},{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureWaterBottleFillerPoweredBottom":{"prefab":{"prefab_name":"StructureWaterBottleFillerPoweredBottom","prefab_hash":1986658780,"desc":"","name":"Waterbottle Filler"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Pressure":"Read","Temperature":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","Volume":"Read","Open":"ReadWrite","SortingClass":"Read","ReferenceId":"Read"},"1":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Pressure":"Read","Temperature":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","Volume":"Read","Open":"ReadWrite","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Error":"Read","Activate":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Bottle Slot","typ":"LiquidBottle"},{"name":"Bottle Slot","typ":"LiquidBottle"}],"device":{"connection_list":[{"typ":"PipeLiquid","role":"None"},{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureWaterDigitalValve":{"prefab":{"prefab_name":"StructureWaterDigitalValve","prefab_hash":-517628750,"desc":"","name":"Liquid Digital Valve"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Error":"Read","Lock":"ReadWrite","Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"PipeLiquid","role":"Output"},{"typ":"PipeLiquid","role":"Input"},{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureWaterPipeMeter":{"prefab":{"prefab_name":"StructureWaterPipeMeter","prefab_hash":433184168,"desc":"","name":"Liquid Pipe Meter"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureWaterPurifier":{"prefab":{"prefab_name":"StructureWaterPurifier","prefab_hash":887383294,"desc":"Cleans Polluted Water and outputs Water. The purification process requires Charcoal which can be added to the machine via the import bin. The procesing throughput can be improved by increasing the gas pressure of the input pipe relative to the gas pressure of the output pipe.","name":"Water Purifier"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{}},"logic_types":{"Power":"Read","Error":"Read","Lock":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","ClearMemory":"Write","ImportCount":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Import","typ":"Ore"}],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"PipeLiquid","role":"Input"},{"typ":"PipeLiquid","role":"Output"},{"typ":"Power","role":"None"},{"typ":"Chute","role":"Input"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureWaterWallCooler":{"prefab":{"prefab_name":"StructureWaterWallCooler","prefab_hash":-1369060582,"desc":"","name":"Liquid Wall Cooler"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Class":"Read","MaxQuantity":"Read","PrefabHash":"Read","SortingClass":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Error":"Read","Lock":"ReadWrite","Setting":"ReadWrite","Maximum":"Read","Ratio":"Read","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"","typ":"DataDisk"}],"device":{"connection_list":[{"typ":"PipeLiquid","role":"None"},{"typ":"PowerAndData","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":false,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureWeatherStation":{"prefab":{"prefab_name":"StructureWeatherStation","prefab_hash":1997212478,"desc":"0.NoStorm\n1.StormIncoming\n2.InStorm","name":"Weather Station"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Mode":"Read","Error":"Read","Activate":"ReadWrite","Lock":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","PrefabHash":"Read","NextWeatherEventTime":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"NoStorm","1":"StormIncoming","2":"InStorm"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":true,"has_atmosphere":false,"has_color_state":false,"has_lock_state":true,"has_mode_state":true,"has_on_off_state":true,"has_open_state":false,"has_reagents":false}},"StructureWindTurbine":{"prefab":{"prefab_name":"StructureWindTurbine","prefab_hash":-2082355173,"desc":"The Stationeers wind turbine was first designed by Norsec atmospheric engineers, looking to create a wind-driven power generation system that would operate even on exceedingly low atmosphere worlds. The ultra-light blades respond to exceedingly low atmospheric densities, while being strong enough to function even under huge strain in much more demanding environments.\nWhile the wind turbine is optimized to produce power (up to 500W) even on low atmosphere worlds, it performs best in denser environments. Output varies with wind speed and, during storms, may increase dramatically (up to 10,000W), so be careful to design your power networks with that in mind.","name":"Wind Turbine"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"PowerGeneration":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Power","role":"None"},{"typ":"Data","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":false,"has_on_off_state":false,"has_open_state":false,"has_reagents":false}},"StructureWindowShutter":{"prefab":{"prefab_name":"StructureWindowShutter","prefab_hash":2056377335,"desc":"For those special, private moments, a window that can be closed to prying eyes. \n \nWhen closed, has the heat transfer characteristics of a basic wall. Requires power, and can be connected to logic systems.","name":"Window Shutter"},"structure":{"small_grid":true},"logic":{"logic_slot_types":{},"logic_types":{"Power":"Read","Open":"ReadWrite","Mode":"ReadWrite","Error":"Read","Setting":"ReadWrite","On":"ReadWrite","RequiredPower":"Read","Idle":"Read","PrefabHash":"Read","ReferenceId":"Read","NameHash":"Read"},"modes":{"0":"Operate","1":"Logic"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[],"device":{"connection_list":[{"typ":"Data","role":"None"},{"typ":"Power","role":"None"}],"device_pins_length":null,"has_activate_state":false,"has_atmosphere":false,"has_color_state":false,"has_lock_state":false,"has_mode_state":true,"has_on_off_state":true,"has_open_state":true,"has_reagents":false}},"ToolPrinterMod":{"prefab":{"prefab_name":"ToolPrinterMod","prefab_hash":1700018136,"desc":"Apply to an Tool Manufactory with a Welding Torch or Arc Welder to upgrade for increased processing speed and more recipe options.","name":"Tool Printer Mod"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Default"}},"ToyLuna":{"prefab":{"prefab_name":"ToyLuna","prefab_hash":94730034,"desc":"","name":"Toy Luna"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Default"}},"UniformCommander":{"prefab":{"prefab_name":"UniformCommander","prefab_hash":-2083426457,"desc":"","name":"Uniform Commander"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Uniform","sorting_class":"Clothing"},"slots":[{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"Access Card","typ":"AccessCard"},{"name":"Access Card","typ":"AccessCard"},{"name":"Credit Card","typ":"CreditCard"}]},"UniformMarine":{"prefab":{"prefab_name":"UniformMarine","prefab_hash":-48342840,"desc":"","name":"Marine Uniform"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Uniform","sorting_class":"Clothing"},"slots":[{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"Access Card","typ":"AccessCard"},{"name":"Credit Card","typ":"CreditCard"}]},"UniformOrangeJumpSuit":{"prefab":{"prefab_name":"UniformOrangeJumpSuit","prefab_hash":810053150,"desc":"","name":"Jump Suit (Orange)"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Uniform","sorting_class":"Clothing"},"slots":[{"name":"","typ":"None"},{"name":"","typ":"None"},{"name":"Access Card","typ":"AccessCard"},{"name":"Credit Card","typ":"CreditCard"}]},"WeaponEnergy":{"prefab":{"prefab_name":"WeaponEnergy","prefab_hash":789494694,"desc":"","name":"Weapon Energy"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Tools"},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"}},"logic_types":{"On":"ReadWrite","ReferenceId":"Read"},"modes":null,"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"WeaponPistolEnergy":{"prefab":{"prefab_name":"WeaponPistolEnergy","prefab_hash":-385323479,"desc":"0.Stun\n1.Kill","name":"Energy Pistol"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Tools"},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Open":"ReadWrite","Mode":"ReadWrite","Error":"Read","Lock":"ReadWrite","On":"ReadWrite","ReferenceId":"Read"},"modes":{"0":"Stun","1":"Kill"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"WeaponRifleEnergy":{"prefab":{"prefab_name":"WeaponRifleEnergy","prefab_hash":1154745374,"desc":"0.Stun\n1.Kill","name":"Energy Rifle"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"None","sorting_class":"Tools"},"logic":{"logic_slot_types":{"0":{"Occupied":"Read","OccupantHash":"Read","Quantity":"Read","Damage":"Read","Charge":"Read","ChargeRatio":"Read","Class":"Read","MaxQuantity":"Read","ReferenceId":"Read"}},"logic_types":{"Power":"Read","Open":"ReadWrite","Mode":"ReadWrite","Error":"Read","Lock":"ReadWrite","On":"ReadWrite","ReferenceId":"Read"},"modes":{"0":"Stun","1":"Kill"},"transmission_receiver":false,"wireless_logic":false,"circuit_holder":false},"slots":[{"name":"Battery","typ":"Battery"}]},"WeaponTorpedo":{"prefab":{"prefab_name":"WeaponTorpedo","prefab_hash":-1102977898,"desc":"","name":"Torpedo"},"item":{"consumable":false,"filter_type":null,"ingredient":false,"max_quantity":1,"reagents":null,"slot_class":"Torpedo","sorting_class":"Default"}}},"reagents":{"Alcohol":{"Hash":1565803737,"Unit":"ml","Sources":null},"Astroloy":{"Hash":-1493155787,"Unit":"g","Sources":{"ItemAstroloyIngot":1.0}},"Biomass":{"Hash":925270362,"Unit":"","Sources":{"ItemBiomass":1.0}},"Carbon":{"Hash":1582746610,"Unit":"g","Sources":{"HumanSkull":1.0,"ItemCharcoal":1.0}},"Cobalt":{"Hash":1702246124,"Unit":"g","Sources":{"ItemCobaltOre":1.0}},"Cocoa":{"Hash":678781198,"Unit":"g","Sources":{"ItemCocoaPowder":1.0,"ItemCocoaTree":1.0}},"ColorBlue":{"Hash":557517660,"Unit":"g","Sources":{"ReagentColorBlue":10.0}},"ColorGreen":{"Hash":2129955242,"Unit":"g","Sources":{"ReagentColorGreen":10.0}},"ColorOrange":{"Hash":1728153015,"Unit":"g","Sources":{"ReagentColorOrange":10.0}},"ColorRed":{"Hash":667001276,"Unit":"g","Sources":{"ReagentColorRed":10.0}},"ColorYellow":{"Hash":-1430202288,"Unit":"g","Sources":{"ReagentColorYellow":10.0}},"Constantan":{"Hash":1731241392,"Unit":"g","Sources":{"ItemConstantanIngot":1.0}},"Copper":{"Hash":-1172078909,"Unit":"g","Sources":{"ItemCopperIngot":1.0,"ItemCopperOre":1.0}},"Corn":{"Hash":1550709753,"Unit":"","Sources":{"ItemCookedCorn":1.0,"ItemCorn":1.0}},"Egg":{"Hash":1887084450,"Unit":"","Sources":{"ItemCookedPowderedEggs":1.0,"ItemEgg":1.0,"ItemFertilizedEgg":1.0}},"Electrum":{"Hash":478264742,"Unit":"g","Sources":{"ItemElectrumIngot":1.0}},"Fenoxitone":{"Hash":-865687737,"Unit":"g","Sources":{"ItemFern":1.0}},"Flour":{"Hash":-811006991,"Unit":"g","Sources":{"ItemFlour":50.0}},"Gold":{"Hash":-409226641,"Unit":"g","Sources":{"ItemGoldIngot":1.0,"ItemGoldOre":1.0}},"Hastelloy":{"Hash":2019732679,"Unit":"g","Sources":{"ItemHastelloyIngot":1.0}},"Hydrocarbon":{"Hash":2003628602,"Unit":"g","Sources":{"ItemCoalOre":1.0,"ItemSolidFuel":1.0}},"Inconel":{"Hash":-586072179,"Unit":"g","Sources":{"ItemInconelIngot":1.0}},"Invar":{"Hash":-626453759,"Unit":"g","Sources":{"ItemInvarIngot":1.0}},"Iron":{"Hash":-666742878,"Unit":"g","Sources":{"ItemIronIngot":1.0,"ItemIronOre":1.0}},"Lead":{"Hash":-2002530571,"Unit":"g","Sources":{"ItemLeadIngot":1.0,"ItemLeadOre":1.0}},"Milk":{"Hash":471085864,"Unit":"ml","Sources":{"ItemCookedCondensedMilk":1.0,"ItemMilk":1.0}},"Mushroom":{"Hash":516242109,"Unit":"g","Sources":{"ItemCookedMushroom":1.0,"ItemMushroom":1.0}},"Nickel":{"Hash":556601662,"Unit":"g","Sources":{"ItemNickelIngot":1.0,"ItemNickelOre":1.0}},"Oil":{"Hash":1958538866,"Unit":"ml","Sources":{"ItemSoyOil":1.0}},"Plastic":{"Hash":791382247,"Unit":"g","Sources":null},"Potato":{"Hash":-1657266385,"Unit":"","Sources":{"ItemPotato":1.0,"ItemPotatoBaked":1.0}},"Pumpkin":{"Hash":-1250164309,"Unit":"","Sources":{"ItemCookedPumpkin":1.0,"ItemPumpkin":1.0}},"Rice":{"Hash":1951286569,"Unit":"g","Sources":{"ItemCookedRice":1.0,"ItemRice":1.0}},"SalicylicAcid":{"Hash":-2086114347,"Unit":"g","Sources":null},"Silicon":{"Hash":-1195893171,"Unit":"g","Sources":{"ItemSiliconIngot":0.1,"ItemSiliconOre":1.0}},"Silver":{"Hash":687283565,"Unit":"g","Sources":{"ItemSilverIngot":1.0,"ItemSilverOre":1.0}},"Solder":{"Hash":-1206542381,"Unit":"g","Sources":{"ItemSolderIngot":1.0}},"Soy":{"Hash":1510471435,"Unit":"","Sources":{"ItemCookedSoybean":1.0,"ItemSoybean":1.0}},"Steel":{"Hash":1331613335,"Unit":"g","Sources":{"ItemEmptyCan":1.0,"ItemSteelIngot":1.0}},"Stellite":{"Hash":-500544800,"Unit":"g","Sources":{"ItemStelliteIngot":1.0}},"Sugar":{"Hash":1778746875,"Unit":"g","Sources":{"ItemSugar":10.0,"ItemSugarCane":1.0}},"Tomato":{"Hash":733496620,"Unit":"","Sources":{"ItemCookedTomato":1.0,"ItemTomato":1.0}},"Uranium":{"Hash":-208860272,"Unit":"g","Sources":{"ItemUraniumOre":1.0}},"Waspaloy":{"Hash":1787814293,"Unit":"g","Sources":{"ItemWaspaloyIngot":1.0}},"Wheat":{"Hash":-686695134,"Unit":"","Sources":{"ItemWheat":1.0}}},"enums":{"scriptEnums":{"LogicBatchMethod":{"enumName":"LogicBatchMethod","values":{"Average":{"value":0,"deprecated":false,"description":""},"Maximum":{"value":3,"deprecated":false,"description":""},"Minimum":{"value":2,"deprecated":false,"description":""},"Sum":{"value":1,"deprecated":false,"description":""}}},"LogicReagentMode":{"enumName":"LogicReagentMode","values":{"Contents":{"value":0,"deprecated":false,"description":""},"Recipe":{"value":2,"deprecated":false,"description":""},"Required":{"value":1,"deprecated":false,"description":""},"TotalContents":{"value":3,"deprecated":false,"description":""}}},"LogicSlotType":{"enumName":"LogicSlotType","values":{"Charge":{"value":10,"deprecated":false,"description":"returns current energy charge the slot occupant is holding"},"ChargeRatio":{"value":11,"deprecated":false,"description":"returns current energy charge the slot occupant is holding as a ratio between 0 and 1 of its maximum"},"Class":{"value":12,"deprecated":false,"description":"returns integer representing the class of object"},"Damage":{"value":4,"deprecated":false,"description":"returns the damage state of the item in the slot"},"Efficiency":{"value":5,"deprecated":false,"description":"returns the growth efficiency of the plant in the slot"},"FilterType":{"value":25,"deprecated":false,"description":"No description available"},"Growth":{"value":7,"deprecated":false,"description":"returns the current growth state of the plant in the slot"},"Health":{"value":6,"deprecated":false,"description":"returns the health of the plant in the slot"},"LineNumber":{"value":19,"deprecated":false,"description":"The line number of current execution for an integrated circuit running on this device. While this number can be written, use with caution"},"Lock":{"value":23,"deprecated":false,"description":"No description available"},"Mature":{"value":16,"deprecated":false,"description":"returns 1 if the plant in this slot is mature, 0 when it isn't"},"MaxQuantity":{"value":15,"deprecated":false,"description":"returns the max stack size of the item in the slot"},"None":{"value":0,"deprecated":false,"description":"No description"},"OccupantHash":{"value":2,"deprecated":false,"description":"returns the has of the current occupant, the unique identifier of the thing"},"Occupied":{"value":1,"deprecated":false,"description":"returns 0 when slot is not occupied, 1 when it is"},"On":{"value":22,"deprecated":false,"description":"No description available"},"Open":{"value":21,"deprecated":false,"description":"No description available"},"PrefabHash":{"value":17,"deprecated":false,"description":"returns the hash of the structure in the slot"},"Pressure":{"value":8,"deprecated":false,"description":"returns pressure of the slot occupants internal atmosphere"},"PressureAir":{"value":14,"deprecated":false,"description":"returns pressure in the air tank of the jetpack in this slot"},"PressureWaste":{"value":13,"deprecated":false,"description":"returns pressure in the waste tank of the jetpack in this slot"},"Quantity":{"value":3,"deprecated":false,"description":"returns the current quantity, such as stack size, of the item in the slot"},"ReferenceId":{"value":26,"deprecated":false,"description":"Unique Reference Identifier for this object"},"Seeding":{"value":18,"deprecated":false,"description":"Whether a plant is seeding (ready to harvest seeds from). Returns 1 if seeding or 0 if not."},"SortingClass":{"value":24,"deprecated":false,"description":"No description available"},"Temperature":{"value":9,"deprecated":false,"description":"returns temperature of the slot occupants internal atmosphere"},"Volume":{"value":20,"deprecated":false,"description":"No description available"}}},"LogicType":{"enumName":"LogicType","values":{"Acceleration":{"value":216,"deprecated":false,"description":"Change in velocity. Rockets that are deccelerating when landing will show this as negative value."},"Activate":{"value":9,"deprecated":false,"description":"1 if device is activated (usually means running), otherwise 0"},"AirRelease":{"value":75,"deprecated":false,"description":"The current state of the air release system, for example AirRelease = 1 for a Hardsuit sets Air Release to On"},"AlignmentError":{"value":243,"deprecated":false,"description":"The angular discrepancy between the telescope's current orientation and the target. Indicates how 'off target' the telescope is. Returns NaN when no target."},"Apex":{"value":238,"deprecated":false,"description":"The lowest altitude that the rocket will reach before it starts travelling upwards again."},"AutoLand":{"value":226,"deprecated":false,"description":"Engages the automatic landing algorithm. The rocket will automatically throttle and turn on and off its engines to achieve a smooth landing."},"AutoShutOff":{"value":218,"deprecated":false,"description":"Turns off all devices in the rocket upon reaching destination"},"BestContactFilter":{"value":267,"deprecated":false,"description":"Filters the satellite's auto selection of targets to a single reference ID."},"Bpm":{"value":103,"deprecated":false,"description":"Bpm"},"BurnTimeRemaining":{"value":225,"deprecated":false,"description":"Estimated time in seconds until fuel is depleted. Calculated based on current fuel usage."},"CelestialHash":{"value":242,"deprecated":false,"description":"The current hash of the targeted celestial object."},"CelestialParentHash":{"value":250,"deprecated":false,"description":"The hash for the name of the parent the celestial is orbiting, 0 if there is no parent celestial."},"Channel0":{"value":165,"deprecated":false,"description":"Channel on a cable network which should be considered volatile"},"Channel1":{"value":166,"deprecated":false,"description":"Channel on a cable network which should be considered volatile"},"Channel2":{"value":167,"deprecated":false,"description":"Channel on a cable network which should be considered volatile"},"Channel3":{"value":168,"deprecated":false,"description":"Channel on a cable network which should be considered volatile"},"Channel4":{"value":169,"deprecated":false,"description":"Channel on a cable network which should be considered volatile"},"Channel5":{"value":170,"deprecated":false,"description":"Channel on a cable network which should be considered volatile"},"Channel6":{"value":171,"deprecated":false,"description":"Channel on a cable network which should be considered volatile"},"Channel7":{"value":172,"deprecated":false,"description":"Channel on a cable network which should be considered volatile"},"Charge":{"value":11,"deprecated":false,"description":"The current charge the device has"},"Chart":{"value":256,"deprecated":false,"description":"Progress status of Chart scan at the rocket's target Space Map Location. Returns a clamped normalised value. If Chart scan is not available returns -1."},"ChartedNavPoints":{"value":259,"deprecated":false,"description":"The number of charted NavPoints at the rocket's target Space Map Location."},"ClearMemory":{"value":62,"deprecated":false,"description":"When set to 1, clears the counter memory (e.g. ExportCount). Will set itself back to 0 when actioned"},"CollectableGoods":{"value":101,"deprecated":false,"description":"Gets the cost of fuel to return the rocket to your current world."},"Color":{"value":38,"deprecated":false,"description":"\n Whether driven by concerns for clarity, safety or simple aesthetics, Stationeers have access to a small rainbow of colors for their constructions. These are the color setting for devices, represented as an integer.\n\n0: Blue\n1: Grey\n2: Green\n3: Orange\n4: Red\n5: Yellow\n6: White\n7: Black\n8: Brown\n9: Khaki\n10: Pink\n11: Purple\n\n It is an unwavering universal law that anything higher than 11 will be purple. The ODA is powerless to change this. Similarly, anything lower than 0 will be Blue.\n "},"Combustion":{"value":98,"deprecated":false,"description":"The assess atmosphere is on fire. Returns 1 if atmosphere is on fire, 0 if not."},"CombustionInput":{"value":146,"deprecated":false,"description":"The assess atmosphere is on fire. Returns 1 if device's input network is on fire, 0 if not."},"CombustionInput2":{"value":147,"deprecated":false,"description":"The assess atmosphere is on fire. Returns 1 if device's Input2 network is on fire, 0 if not."},"CombustionLimiter":{"value":153,"deprecated":false,"description":"Retards the rate of combustion inside the machine (range: 0-100), with 0 being the slowest rate of combustion and 100 being the fastest"},"CombustionOutput":{"value":148,"deprecated":false,"description":"The assess atmosphere is on fire. Returns 1 if device's Output network is on fire, 0 if not."},"CombustionOutput2":{"value":149,"deprecated":false,"description":"The assess atmosphere is on fire. Returns 1 if device's Output2 network is on fire, 0 if not."},"CompletionRatio":{"value":61,"deprecated":false,"description":"How complete the current production is for this device, between 0 and 1"},"ContactTypeId":{"value":198,"deprecated":false,"description":"The type id of the contact."},"CurrentCode":{"value":261,"deprecated":false,"description":"The Space Map Address of the rockets current Space Map Location"},"CurrentResearchPodType":{"value":93,"deprecated":false,"description":""},"Density":{"value":262,"deprecated":false,"description":"The density of the rocket's target site's mine-able deposit."},"DestinationCode":{"value":215,"deprecated":false,"description":"The Space Map Address of the rockets target Space Map Location"},"Discover":{"value":255,"deprecated":false,"description":"Progress status of Discovery scan at the rocket's target Space Map Location. Returns a clamped normalised value. If Discovery scan is not available returns -1."},"DistanceAu":{"value":244,"deprecated":false,"description":"The current distance to the celestial object, measured in astronomical units."},"DistanceKm":{"value":249,"deprecated":false,"description":"The current distance to the celestial object, measured in kilometers."},"DrillCondition":{"value":240,"deprecated":false,"description":"The current condition of the drill head in this devices drill slot. Expressed as a ratio between 0 and 1."},"DryMass":{"value":220,"deprecated":false,"description":"The Mass in kilograms of the rocket excluding fuel. The more massive the rocket the more fuel will be required to move to a new location in space."},"Eccentricity":{"value":247,"deprecated":false,"description":"A measure of how elliptical (oval) an orbit is. Ranges from 0 (a perfect circle) to 1 (a parabolic trajectory)."},"ElevatorLevel":{"value":40,"deprecated":false,"description":"Level the elevator is currently at"},"ElevatorSpeed":{"value":39,"deprecated":false,"description":"Current speed of the elevator"},"EntityState":{"value":239,"deprecated":false,"description":"The current entity state, such as whether it is dead, unconscious or alive, expressed as a state integer."},"EnvironmentEfficiency":{"value":104,"deprecated":false,"description":"The Environment Efficiency reported by the machine, as a float between 0 and 1"},"Error":{"value":4,"deprecated":false,"description":"1 if device is in error state, otherwise 0"},"ExhaustVelocity":{"value":235,"deprecated":false,"description":"The velocity of the exhaust gas in m/s"},"ExportCount":{"value":63,"deprecated":false,"description":"How many items exported since last ClearMemory"},"ExportQuantity":{"value":31,"deprecated":true,"description":"Total quantity of items exported by the device"},"ExportSlotHash":{"value":42,"deprecated":true,"description":"DEPRECATED"},"ExportSlotOccupant":{"value":32,"deprecated":true,"description":"DEPRECATED"},"Filtration":{"value":74,"deprecated":false,"description":"The current state of the filtration system, for example Filtration = 1 for a Hardsuit sets filtration to On"},"FlightControlRule":{"value":236,"deprecated":false,"description":"Flight control rule of rocket. None = 0, No AutoPilot. Normal = 1, Target Decent Apex of 60m. Alternate = 2, Velocity to High - Full throttle. Alternate2 = 3, Target an appropriate decent velocity as velocity is too low. FinalApproach = 4, Descend towards launch mount in a controlled manner."},"Flush":{"value":174,"deprecated":false,"description":"Set to 1 to activate the flush function on the device"},"ForceWrite":{"value":85,"deprecated":false,"description":"Forces Logic Writer devices to rewrite value"},"ForwardX":{"value":227,"deprecated":false,"description":"The direction the entity is facing expressed as a normalized vector"},"ForwardY":{"value":228,"deprecated":false,"description":"The direction the entity is facing expressed as a normalized vector"},"ForwardZ":{"value":229,"deprecated":false,"description":"The direction the entity is facing expressed as a normalized vector"},"Fuel":{"value":99,"deprecated":false,"description":"Gets the cost of fuel to return the rocket to your current world."},"Harvest":{"value":69,"deprecated":false,"description":"Performs the harvesting action for any plant based machinery"},"Horizontal":{"value":20,"deprecated":false,"description":"Horizontal setting of the device"},"HorizontalRatio":{"value":34,"deprecated":false,"description":"Radio of horizontal setting for device"},"Idle":{"value":37,"deprecated":false,"description":"Returns 1 if the device is currently idle, otherwise 0"},"ImportCount":{"value":64,"deprecated":false,"description":"How many items imported since last ClearMemory"},"ImportQuantity":{"value":29,"deprecated":true,"description":"Total quantity of items imported by the device"},"ImportSlotHash":{"value":43,"deprecated":true,"description":"DEPRECATED"},"ImportSlotOccupant":{"value":30,"deprecated":true,"description":"DEPRECATED"},"Inclination":{"value":246,"deprecated":false,"description":"The tilt of an orbit's plane relative to the equatorial plane, measured in degrees. Defines the orbital plane's angle."},"Index":{"value":241,"deprecated":false,"description":"The current index for the device."},"InterrogationProgress":{"value":157,"deprecated":false,"description":"Progress of this sattellite dish's interrogation of its current target, as a ratio from 0-1"},"LineNumber":{"value":173,"deprecated":false,"description":"The line number of current execution for an integrated circuit running on this device. While this number can be written, use with caution"},"Lock":{"value":10,"deprecated":false,"description":"1 if device is locked, otherwise 0, can be set in most devices and prevents the user from access the values"},"ManualResearchRequiredPod":{"value":94,"deprecated":false,"description":"Sets the pod type to search for a certain pod when breaking down a pods."},"Mass":{"value":219,"deprecated":false,"description":"The total Mass of the rocket in kilograms including fuel and cargo. The more massive the rocket the more fuel will be required to move to a new location in space."},"Maximum":{"value":23,"deprecated":false,"description":"Maximum setting of the device"},"MineablesInQueue":{"value":96,"deprecated":false,"description":"Returns the amount of mineables AIMEe has queued up to mine."},"MineablesInVicinity":{"value":95,"deprecated":false,"description":"Returns the amount of potential mineables within an extended area around AIMEe."},"MinedQuantity":{"value":266,"deprecated":false,"description":"The total number of resources that have been mined at the rocket's target Space Map Site."},"MinimumWattsToContact":{"value":163,"deprecated":false,"description":"Minimum required amount of watts from the dish hitting the target trader contact to start interrogating the contact"},"Mode":{"value":3,"deprecated":false,"description":"Integer for mode state, different devices will have different mode states available to them"},"NameHash":{"value":268,"deprecated":false,"description":"Provides the hash value for the name of the object as a 32 bit integer."},"NavPoints":{"value":258,"deprecated":false,"description":"The number of NavPoints at the rocket's target Space Map Location."},"NextWeatherEventTime":{"value":97,"deprecated":false,"description":"Returns in seconds when the next weather event is inbound."},"None":{"value":0,"deprecated":true,"description":"No description"},"On":{"value":28,"deprecated":false,"description":"The current state of the device, 0 for off, 1 for on"},"Open":{"value":2,"deprecated":false,"description":"1 if device is open, otherwise 0"},"OperationalTemperatureEfficiency":{"value":150,"deprecated":false,"description":"How the input pipe's temperature effects the machines efficiency"},"OrbitPeriod":{"value":245,"deprecated":false,"description":"The time it takes for an object to complete one full orbit around another object, measured in days. Indicates the duration of the orbital cycle."},"Orientation":{"value":230,"deprecated":false,"description":"The orientation of the entity in degrees in a plane relative towards the north origin"},"Output":{"value":70,"deprecated":false,"description":"The output operation for a sort handling device, such as a stacker or sorter, when in logic mode the device will only action one repetition when set zero or above and then back to -1 and await further instructions"},"PassedMoles":{"value":234,"deprecated":false,"description":"The number of moles that passed through this device on the previous simulation tick"},"Plant":{"value":68,"deprecated":false,"description":"Performs the planting action for any plant based machinery"},"PlantEfficiency1":{"value":52,"deprecated":true,"description":"DEPRECATED"},"PlantEfficiency2":{"value":53,"deprecated":true,"description":"DEPRECATED"},"PlantEfficiency3":{"value":54,"deprecated":true,"description":"DEPRECATED"},"PlantEfficiency4":{"value":55,"deprecated":true,"description":"DEPRECATED"},"PlantGrowth1":{"value":48,"deprecated":true,"description":"DEPRECATED"},"PlantGrowth2":{"value":49,"deprecated":true,"description":"DEPRECATED"},"PlantGrowth3":{"value":50,"deprecated":true,"description":"DEPRECATED"},"PlantGrowth4":{"value":51,"deprecated":true,"description":"DEPRECATED"},"PlantHash1":{"value":56,"deprecated":true,"description":"DEPRECATED"},"PlantHash2":{"value":57,"deprecated":true,"description":"DEPRECATED"},"PlantHash3":{"value":58,"deprecated":true,"description":"DEPRECATED"},"PlantHash4":{"value":59,"deprecated":true,"description":"DEPRECATED"},"PlantHealth1":{"value":44,"deprecated":true,"description":"DEPRECATED"},"PlantHealth2":{"value":45,"deprecated":true,"description":"DEPRECATED"},"PlantHealth3":{"value":46,"deprecated":true,"description":"DEPRECATED"},"PlantHealth4":{"value":47,"deprecated":true,"description":"DEPRECATED"},"PositionX":{"value":76,"deprecated":false,"description":"The current position in X dimension in world coordinates"},"PositionY":{"value":77,"deprecated":false,"description":"The current position in Y dimension in world coordinates"},"PositionZ":{"value":78,"deprecated":false,"description":"The current position in Z dimension in world coordinates"},"Power":{"value":1,"deprecated":false,"description":"Can be read to return if the device is correctly powered or not, set via the power system, return 1 if powered and 0 if not"},"PowerActual":{"value":26,"deprecated":false,"description":"How much energy the device or network is actually using"},"PowerGeneration":{"value":65,"deprecated":false,"description":"Returns how much power is being generated"},"PowerPotential":{"value":25,"deprecated":false,"description":"How much energy the device or network potentially provides"},"PowerRequired":{"value":36,"deprecated":false,"description":"Power requested from the device and/or network"},"PrefabHash":{"value":84,"deprecated":false,"description":"The hash of the structure"},"Pressure":{"value":5,"deprecated":false,"description":"The current pressure reading of the device"},"PressureEfficiency":{"value":152,"deprecated":false,"description":"How the pressure of the input pipe and waste pipe effect the machines efficiency"},"PressureExternal":{"value":7,"deprecated":false,"description":"Setting for external pressure safety, in KPa"},"PressureInput":{"value":106,"deprecated":false,"description":"The current pressure reading of the device's Input Network"},"PressureInput2":{"value":116,"deprecated":false,"description":"The current pressure reading of the device's Input2 Network"},"PressureInternal":{"value":8,"deprecated":false,"description":"Setting for internal pressure safety, in KPa"},"PressureOutput":{"value":126,"deprecated":false,"description":"The current pressure reading of the device's Output Network"},"PressureOutput2":{"value":136,"deprecated":false,"description":"The current pressure reading of the device's Output2 Network"},"PressureSetting":{"value":71,"deprecated":false,"description":"The current setting for the internal pressure of the object (e.g. the Hardsuit Air release), in KPa"},"Progress":{"value":214,"deprecated":false,"description":"Progress of the rocket to the next node on the map expressed as a value between 0-1."},"Quantity":{"value":27,"deprecated":false,"description":"Total quantity on the device"},"Ratio":{"value":24,"deprecated":false,"description":"Context specific value depending on device, 0 to 1 based ratio"},"RatioCarbonDioxide":{"value":15,"deprecated":false,"description":"The ratio of Carbon Dioxide in device atmosphere"},"RatioCarbonDioxideInput":{"value":109,"deprecated":false,"description":"The ratio of Carbon Dioxide in device's input network"},"RatioCarbonDioxideInput2":{"value":119,"deprecated":false,"description":"The ratio of Carbon Dioxide in device's Input2 network"},"RatioCarbonDioxideOutput":{"value":129,"deprecated":false,"description":"The ratio of Carbon Dioxide in device's Output network"},"RatioCarbonDioxideOutput2":{"value":139,"deprecated":false,"description":"The ratio of Carbon Dioxide in device's Output2 network"},"RatioHydrogen":{"value":252,"deprecated":false,"description":"The ratio of Hydrogen in device's Atmopshere"},"RatioLiquidCarbonDioxide":{"value":199,"deprecated":false,"description":"The ratio of Liquid Carbon Dioxide in device's Atmosphere"},"RatioLiquidCarbonDioxideInput":{"value":200,"deprecated":false,"description":"The ratio of Liquid Carbon Dioxide in device's Input Atmosphere"},"RatioLiquidCarbonDioxideInput2":{"value":201,"deprecated":false,"description":"The ratio of Liquid Carbon Dioxide in device's Input2 Atmosphere"},"RatioLiquidCarbonDioxideOutput":{"value":202,"deprecated":false,"description":"The ratio of Liquid Carbon Dioxide in device's device's Output Atmosphere"},"RatioLiquidCarbonDioxideOutput2":{"value":203,"deprecated":false,"description":"The ratio of Liquid Carbon Dioxide in device's Output2 Atmopshere"},"RatioLiquidHydrogen":{"value":253,"deprecated":false,"description":"The ratio of Liquid Hydrogen in device's Atmopshere"},"RatioLiquidNitrogen":{"value":177,"deprecated":false,"description":"The ratio of Liquid Nitrogen in device atmosphere"},"RatioLiquidNitrogenInput":{"value":178,"deprecated":false,"description":"The ratio of Liquid Nitrogen in device's input network"},"RatioLiquidNitrogenInput2":{"value":179,"deprecated":false,"description":"The ratio of Liquid Nitrogen in device's Input2 network"},"RatioLiquidNitrogenOutput":{"value":180,"deprecated":false,"description":"The ratio of Liquid Nitrogen in device's Output network"},"RatioLiquidNitrogenOutput2":{"value":181,"deprecated":false,"description":"The ratio of Liquid Nitrogen in device's Output2 network"},"RatioLiquidNitrousOxide":{"value":209,"deprecated":false,"description":"The ratio of Liquid Nitrous Oxide in device's Atmosphere"},"RatioLiquidNitrousOxideInput":{"value":210,"deprecated":false,"description":"The ratio of Liquid Nitrous Oxide in device's Input Atmosphere"},"RatioLiquidNitrousOxideInput2":{"value":211,"deprecated":false,"description":"The ratio of Liquid Nitrous Oxide in device's Input2 Atmosphere"},"RatioLiquidNitrousOxideOutput":{"value":212,"deprecated":false,"description":"The ratio of Liquid Nitrous Oxide in device's device's Output Atmosphere"},"RatioLiquidNitrousOxideOutput2":{"value":213,"deprecated":false,"description":"The ratio of Liquid Nitrous Oxide in device's Output2 Atmopshere"},"RatioLiquidOxygen":{"value":183,"deprecated":false,"description":"The ratio of Liquid Oxygen in device's Atmosphere"},"RatioLiquidOxygenInput":{"value":184,"deprecated":false,"description":"The ratio of Liquid Oxygen in device's Input Atmosphere"},"RatioLiquidOxygenInput2":{"value":185,"deprecated":false,"description":"The ratio of Liquid Oxygen in device's Input2 Atmosphere"},"RatioLiquidOxygenOutput":{"value":186,"deprecated":false,"description":"The ratio of Liquid Oxygen in device's device's Output Atmosphere"},"RatioLiquidOxygenOutput2":{"value":187,"deprecated":false,"description":"The ratio of Liquid Oxygen in device's Output2 Atmopshere"},"RatioLiquidPollutant":{"value":204,"deprecated":false,"description":"The ratio of Liquid Pollutant in device's Atmosphere"},"RatioLiquidPollutantInput":{"value":205,"deprecated":false,"description":"The ratio of Liquid Pollutant in device's Input Atmosphere"},"RatioLiquidPollutantInput2":{"value":206,"deprecated":false,"description":"The ratio of Liquid Pollutant in device's Input2 Atmosphere"},"RatioLiquidPollutantOutput":{"value":207,"deprecated":false,"description":"The ratio of Liquid Pollutant in device's device's Output Atmosphere"},"RatioLiquidPollutantOutput2":{"value":208,"deprecated":false,"description":"The ratio of Liquid Pollutant in device's Output2 Atmopshere"},"RatioLiquidVolatiles":{"value":188,"deprecated":false,"description":"The ratio of Liquid Volatiles in device's Atmosphere"},"RatioLiquidVolatilesInput":{"value":189,"deprecated":false,"description":"The ratio of Liquid Volatiles in device's Input Atmosphere"},"RatioLiquidVolatilesInput2":{"value":190,"deprecated":false,"description":"The ratio of Liquid Volatiles in device's Input2 Atmosphere"},"RatioLiquidVolatilesOutput":{"value":191,"deprecated":false,"description":"The ratio of Liquid Volatiles in device's device's Output Atmosphere"},"RatioLiquidVolatilesOutput2":{"value":192,"deprecated":false,"description":"The ratio of Liquid Volatiles in device's Output2 Atmopshere"},"RatioNitrogen":{"value":16,"deprecated":false,"description":"The ratio of nitrogen in device atmosphere"},"RatioNitrogenInput":{"value":110,"deprecated":false,"description":"The ratio of nitrogen in device's input network"},"RatioNitrogenInput2":{"value":120,"deprecated":false,"description":"The ratio of nitrogen in device's Input2 network"},"RatioNitrogenOutput":{"value":130,"deprecated":false,"description":"The ratio of nitrogen in device's Output network"},"RatioNitrogenOutput2":{"value":140,"deprecated":false,"description":"The ratio of nitrogen in device's Output2 network"},"RatioNitrousOxide":{"value":83,"deprecated":false,"description":"The ratio of Nitrous Oxide in device atmosphere"},"RatioNitrousOxideInput":{"value":114,"deprecated":false,"description":"The ratio of Nitrous Oxide in device's input network"},"RatioNitrousOxideInput2":{"value":124,"deprecated":false,"description":"The ratio of Nitrous Oxide in device's Input2 network"},"RatioNitrousOxideOutput":{"value":134,"deprecated":false,"description":"The ratio of Nitrous Oxide in device's Output network"},"RatioNitrousOxideOutput2":{"value":144,"deprecated":false,"description":"The ratio of Nitrous Oxide in device's Output2 network"},"RatioOxygen":{"value":14,"deprecated":false,"description":"The ratio of oxygen in device atmosphere"},"RatioOxygenInput":{"value":108,"deprecated":false,"description":"The ratio of oxygen in device's input network"},"RatioOxygenInput2":{"value":118,"deprecated":false,"description":"The ratio of oxygen in device's Input2 network"},"RatioOxygenOutput":{"value":128,"deprecated":false,"description":"The ratio of oxygen in device's Output network"},"RatioOxygenOutput2":{"value":138,"deprecated":false,"description":"The ratio of oxygen in device's Output2 network"},"RatioPollutant":{"value":17,"deprecated":false,"description":"The ratio of pollutant in device atmosphere"},"RatioPollutantInput":{"value":111,"deprecated":false,"description":"The ratio of pollutant in device's input network"},"RatioPollutantInput2":{"value":121,"deprecated":false,"description":"The ratio of pollutant in device's Input2 network"},"RatioPollutantOutput":{"value":131,"deprecated":false,"description":"The ratio of pollutant in device's Output network"},"RatioPollutantOutput2":{"value":141,"deprecated":false,"description":"The ratio of pollutant in device's Output2 network"},"RatioPollutedWater":{"value":254,"deprecated":false,"description":"The ratio of polluted water in device atmosphere"},"RatioSteam":{"value":193,"deprecated":false,"description":"The ratio of Steam in device's Atmosphere"},"RatioSteamInput":{"value":194,"deprecated":false,"description":"The ratio of Steam in device's Input Atmosphere"},"RatioSteamInput2":{"value":195,"deprecated":false,"description":"The ratio of Steam in device's Input2 Atmosphere"},"RatioSteamOutput":{"value":196,"deprecated":false,"description":"The ratio of Steam in device's device's Output Atmosphere"},"RatioSteamOutput2":{"value":197,"deprecated":false,"description":"The ratio of Steam in device's Output2 Atmopshere"},"RatioVolatiles":{"value":18,"deprecated":false,"description":"The ratio of volatiles in device atmosphere"},"RatioVolatilesInput":{"value":112,"deprecated":false,"description":"The ratio of volatiles in device's input network"},"RatioVolatilesInput2":{"value":122,"deprecated":false,"description":"The ratio of volatiles in device's Input2 network"},"RatioVolatilesOutput":{"value":132,"deprecated":false,"description":"The ratio of volatiles in device's Output network"},"RatioVolatilesOutput2":{"value":142,"deprecated":false,"description":"The ratio of volatiles in device's Output2 network"},"RatioWater":{"value":19,"deprecated":false,"description":"The ratio of water in device atmosphere"},"RatioWaterInput":{"value":113,"deprecated":false,"description":"The ratio of water in device's input network"},"RatioWaterInput2":{"value":123,"deprecated":false,"description":"The ratio of water in device's Input2 network"},"RatioWaterOutput":{"value":133,"deprecated":false,"description":"The ratio of water in device's Output network"},"RatioWaterOutput2":{"value":143,"deprecated":false,"description":"The ratio of water in device's Output2 network"},"ReEntryAltitude":{"value":237,"deprecated":false,"description":"The altitude that the rocket will begin its decent to the pad. Must be between 25km and 120km"},"Reagents":{"value":13,"deprecated":false,"description":"Total number of reagents recorded by the device"},"RecipeHash":{"value":41,"deprecated":false,"description":"Current hash of the recipe the device is set to produce"},"ReferenceId":{"value":217,"deprecated":false,"description":"Unique Reference Identifier for this object"},"RequestHash":{"value":60,"deprecated":false,"description":"When set to the unique identifier, requests an item of the provided type from the device"},"RequiredPower":{"value":33,"deprecated":false,"description":"Idle operating power quantity, does not necessarily include extra demand power"},"ReturnFuelCost":{"value":100,"deprecated":false,"description":"Gets the fuel remaining in your rocket's fuel tank."},"Richness":{"value":263,"deprecated":false,"description":"The richness of the rocket's target site's mine-able deposit."},"Rpm":{"value":155,"deprecated":false,"description":"The number of revolutions per minute that the device's spinning mechanism is doing"},"SemiMajorAxis":{"value":248,"deprecated":false,"description":"The longest radius of an elliptical orbit in astronomical units, measuring half the major axis. Determines the size of the orbit."},"Setting":{"value":12,"deprecated":false,"description":"A variable setting that can be read or written, depending on the device"},"SettingInput":{"value":91,"deprecated":false,"description":""},"SettingOutput":{"value":92,"deprecated":false,"description":""},"SignalID":{"value":87,"deprecated":false,"description":"Returns the contact ID of the strongest signal from this Satellite"},"SignalStrength":{"value":86,"deprecated":false,"description":"Returns the degree offset of the strongest contact"},"Sites":{"value":260,"deprecated":false,"description":"The number of Sites that have been discovered at the rockets target Space Map location."},"Size":{"value":264,"deprecated":false,"description":"The size of the rocket's target site's mine-able deposit."},"SizeX":{"value":160,"deprecated":false,"description":"Size on the X (right) axis of the object in largeGrids (a largeGrid is 2meters)"},"SizeY":{"value":161,"deprecated":false,"description":"Size on the Y(Up) axis of the object in largeGrids (a largeGrid is 2meters)"},"SizeZ":{"value":162,"deprecated":false,"description":"Size on the Z(Forward) axis of the object in largeGrids (a largeGrid is 2meters)"},"SolarAngle":{"value":22,"deprecated":false,"description":"Solar angle of the device"},"SolarIrradiance":{"value":176,"deprecated":false,"description":""},"SoundAlert":{"value":175,"deprecated":false,"description":"Plays a sound alert on the devices speaker"},"Stress":{"value":156,"deprecated":false,"description":"Machines get stressed when working hard. When Stress reaches 100 the machine will automatically shut down"},"Survey":{"value":257,"deprecated":false,"description":"Progress status of Survey scan at the rocket's target Space Map Location. Returns a normalised value where 100% surveyed is equal to 1. If Survey scan is not available returns -1."},"TargetPadIndex":{"value":158,"deprecated":false,"description":"The index of the trader landing pad on this devices data network that it will try to call a trader in to land"},"TargetX":{"value":88,"deprecated":false,"description":"The target position in X dimension in world coordinates"},"TargetY":{"value":89,"deprecated":false,"description":"The target position in Y dimension in world coordinates"},"TargetZ":{"value":90,"deprecated":false,"description":"The target position in Z dimension in world coordinates"},"Temperature":{"value":6,"deprecated":false,"description":"The current temperature reading of the device"},"TemperatureDifferentialEfficiency":{"value":151,"deprecated":false,"description":"How the difference between the input pipe and waste pipe temperatures effect the machines efficiency"},"TemperatureExternal":{"value":73,"deprecated":false,"description":"The temperature of the outside of the device, usually the world atmosphere surrounding it"},"TemperatureInput":{"value":107,"deprecated":false,"description":"The current temperature reading of the device's Input Network"},"TemperatureInput2":{"value":117,"deprecated":false,"description":"The current temperature reading of the device's Input2 Network"},"TemperatureOutput":{"value":127,"deprecated":false,"description":"The current temperature reading of the device's Output Network"},"TemperatureOutput2":{"value":137,"deprecated":false,"description":"The current temperature reading of the device's Output2 Network"},"TemperatureSetting":{"value":72,"deprecated":false,"description":"The current setting for the internal temperature of the object (e.g. the Hardsuit A/C)"},"Throttle":{"value":154,"deprecated":false,"description":"Increases the rate at which the machine works (range: 0-100)"},"Thrust":{"value":221,"deprecated":false,"description":"Total current thrust of all rocket engines on the rocket in Newtons."},"ThrustToWeight":{"value":223,"deprecated":false,"description":"Ratio of thrust to weight of rocket. Weight is effected by local body gravity. A rocket with a low thrust to weight will expend more fuel during launch and landing."},"Time":{"value":102,"deprecated":false,"description":"Time"},"TimeToDestination":{"value":224,"deprecated":false,"description":"Estimated time in seconds until rocket arrives at target destination."},"TotalMoles":{"value":66,"deprecated":false,"description":"Returns the total moles of the device"},"TotalMolesInput":{"value":115,"deprecated":false,"description":"Returns the total moles of the device's Input Network"},"TotalMolesInput2":{"value":125,"deprecated":false,"description":"Returns the total moles of the device's Input2 Network"},"TotalMolesOutput":{"value":135,"deprecated":false,"description":"Returns the total moles of the device's Output Network"},"TotalMolesOutput2":{"value":145,"deprecated":false,"description":"Returns the total moles of the device's Output2 Network"},"TotalQuantity":{"value":265,"deprecated":false,"description":"The estimated total quantity of resources available to mine at the rocket's target Space Map Site."},"TrueAnomaly":{"value":251,"deprecated":false,"description":"An angular parameter that defines the position of a body moving along a Keplerian orbit. It is the angle between the direction of periapsis and the current position of the body, as seen from the main focus of the ellipse (the point around which the object orbits)."},"VelocityMagnitude":{"value":79,"deprecated":false,"description":"The current magnitude of the velocity vector"},"VelocityRelativeX":{"value":80,"deprecated":false,"description":"The current velocity X relative to the forward vector of this"},"VelocityRelativeY":{"value":81,"deprecated":false,"description":"The current velocity Y relative to the forward vector of this"},"VelocityRelativeZ":{"value":82,"deprecated":false,"description":"The current velocity Z relative to the forward vector of this"},"VelocityX":{"value":231,"deprecated":false,"description":"The world velocity of the entity in the X axis"},"VelocityY":{"value":232,"deprecated":false,"description":"The world velocity of the entity in the Y axis"},"VelocityZ":{"value":233,"deprecated":false,"description":"The world velocity of the entity in the Z axis"},"Vertical":{"value":21,"deprecated":false,"description":"Vertical setting of the device"},"VerticalRatio":{"value":35,"deprecated":false,"description":"Radio of vertical setting for device"},"Volume":{"value":67,"deprecated":false,"description":"Returns the device atmosphere volume"},"VolumeOfLiquid":{"value":182,"deprecated":false,"description":"The total volume of all liquids in Liters in the atmosphere"},"WattsReachingContact":{"value":164,"deprecated":false,"description":"The amount of watts actually hitting the contact. This is effected by the power of the dish and how far off-axis the dish is from the contact vector"},"Weight":{"value":222,"deprecated":false,"description":"Weight of Rocket in Newtons (Including fuel and cargo). Weight is effected by local body gravity."},"WorkingGasEfficiency":{"value":105,"deprecated":false,"description":"The Working Gas Efficiency reported by the machine, as a float between 0 and 1"}}}},"basicEnums":{"AirCon":{"enumName":"AirConditioningMode","values":{"Cold":{"value":0,"deprecated":false,"description":""},"Hot":{"value":1,"deprecated":false,"description":""}}},"AirControl":{"enumName":"AirControlMode","values":{"Draught":{"value":4,"deprecated":false,"description":""},"None":{"value":0,"deprecated":false,"description":""},"Offline":{"value":1,"deprecated":false,"description":""},"Pressure":{"value":2,"deprecated":false,"description":""}}},"Color":{"enumName":"ColorType","values":{"Black":{"value":7,"deprecated":false,"description":""},"Blue":{"value":0,"deprecated":false,"description":""},"Brown":{"value":8,"deprecated":false,"description":""},"Gray":{"value":1,"deprecated":false,"description":""},"Green":{"value":2,"deprecated":false,"description":""},"Khaki":{"value":9,"deprecated":false,"description":""},"Orange":{"value":3,"deprecated":false,"description":""},"Pink":{"value":10,"deprecated":false,"description":""},"Purple":{"value":11,"deprecated":false,"description":""},"Red":{"value":4,"deprecated":false,"description":""},"White":{"value":6,"deprecated":false,"description":""},"Yellow":{"value":5,"deprecated":false,"description":""}}},"DaylightSensorMode":{"enumName":"DaylightSensorMode","values":{"Default":{"value":0,"deprecated":false,"description":""},"Horizontal":{"value":1,"deprecated":false,"description":""},"Vertical":{"value":2,"deprecated":false,"description":""}}},"ElevatorMode":{"enumName":"ElevatorMode","values":{"Downward":{"value":2,"deprecated":false,"description":""},"Stationary":{"value":0,"deprecated":false,"description":""},"Upward":{"value":1,"deprecated":false,"description":""}}},"EntityState":{"enumName":"EntityState","values":{"Alive":{"value":0,"deprecated":false,"description":""},"Dead":{"value":1,"deprecated":false,"description":""},"Decay":{"value":3,"deprecated":false,"description":""},"Unconscious":{"value":2,"deprecated":false,"description":""}}},"GasType":{"enumName":"GasType","values":{"CarbonDioxide":{"value":4,"deprecated":false,"description":""},"Hydrogen":{"value":16384,"deprecated":false,"description":""},"LiquidCarbonDioxide":{"value":2048,"deprecated":false,"description":""},"LiquidHydrogen":{"value":32768,"deprecated":false,"description":""},"LiquidNitrogen":{"value":128,"deprecated":false,"description":""},"LiquidNitrousOxide":{"value":8192,"deprecated":false,"description":""},"LiquidOxygen":{"value":256,"deprecated":false,"description":""},"LiquidPollutant":{"value":4096,"deprecated":false,"description":""},"LiquidVolatiles":{"value":512,"deprecated":false,"description":""},"Nitrogen":{"value":2,"deprecated":false,"description":""},"NitrousOxide":{"value":64,"deprecated":false,"description":""},"Oxygen":{"value":1,"deprecated":false,"description":""},"Pollutant":{"value":16,"deprecated":false,"description":""},"PollutedWater":{"value":65536,"deprecated":false,"description":""},"Steam":{"value":1024,"deprecated":false,"description":""},"Undefined":{"value":0,"deprecated":false,"description":""},"Volatiles":{"value":8,"deprecated":false,"description":""},"Water":{"value":32,"deprecated":false,"description":""}}},"LogicSlotType":{"enumName":"LogicSlotType","values":{"Charge":{"value":10,"deprecated":false,"description":"returns current energy charge the slot occupant is holding"},"ChargeRatio":{"value":11,"deprecated":false,"description":"returns current energy charge the slot occupant is holding as a ratio between 0 and 1 of its maximum"},"Class":{"value":12,"deprecated":false,"description":"returns integer representing the class of object"},"Damage":{"value":4,"deprecated":false,"description":"returns the damage state of the item in the slot"},"Efficiency":{"value":5,"deprecated":false,"description":"returns the growth efficiency of the plant in the slot"},"FilterType":{"value":25,"deprecated":false,"description":"No description available"},"Growth":{"value":7,"deprecated":false,"description":"returns the current growth state of the plant in the slot"},"Health":{"value":6,"deprecated":false,"description":"returns the health of the plant in the slot"},"LineNumber":{"value":19,"deprecated":false,"description":"The line number of current execution for an integrated circuit running on this device. While this number can be written, use with caution"},"Lock":{"value":23,"deprecated":false,"description":"No description available"},"Mature":{"value":16,"deprecated":false,"description":"returns 1 if the plant in this slot is mature, 0 when it isn't"},"MaxQuantity":{"value":15,"deprecated":false,"description":"returns the max stack size of the item in the slot"},"None":{"value":0,"deprecated":false,"description":"No description"},"OccupantHash":{"value":2,"deprecated":false,"description":"returns the has of the current occupant, the unique identifier of the thing"},"Occupied":{"value":1,"deprecated":false,"description":"returns 0 when slot is not occupied, 1 when it is"},"On":{"value":22,"deprecated":false,"description":"No description available"},"Open":{"value":21,"deprecated":false,"description":"No description available"},"PrefabHash":{"value":17,"deprecated":false,"description":"returns the hash of the structure in the slot"},"Pressure":{"value":8,"deprecated":false,"description":"returns pressure of the slot occupants internal atmosphere"},"PressureAir":{"value":14,"deprecated":false,"description":"returns pressure in the air tank of the jetpack in this slot"},"PressureWaste":{"value":13,"deprecated":false,"description":"returns pressure in the waste tank of the jetpack in this slot"},"Quantity":{"value":3,"deprecated":false,"description":"returns the current quantity, such as stack size, of the item in the slot"},"ReferenceId":{"value":26,"deprecated":false,"description":"Unique Reference Identifier for this object"},"Seeding":{"value":18,"deprecated":false,"description":"Whether a plant is seeding (ready to harvest seeds from). Returns 1 if seeding or 0 if not."},"SortingClass":{"value":24,"deprecated":false,"description":"No description available"},"Temperature":{"value":9,"deprecated":false,"description":"returns temperature of the slot occupants internal atmosphere"},"Volume":{"value":20,"deprecated":false,"description":"No description available"}}},"LogicType":{"enumName":"LogicType","values":{"Acceleration":{"value":216,"deprecated":false,"description":"Change in velocity. Rockets that are deccelerating when landing will show this as negative value."},"Activate":{"value":9,"deprecated":false,"description":"1 if device is activated (usually means running), otherwise 0"},"AirRelease":{"value":75,"deprecated":false,"description":"The current state of the air release system, for example AirRelease = 1 for a Hardsuit sets Air Release to On"},"AlignmentError":{"value":243,"deprecated":false,"description":"The angular discrepancy between the telescope's current orientation and the target. Indicates how 'off target' the telescope is. Returns NaN when no target."},"Apex":{"value":238,"deprecated":false,"description":"The lowest altitude that the rocket will reach before it starts travelling upwards again."},"AutoLand":{"value":226,"deprecated":false,"description":"Engages the automatic landing algorithm. The rocket will automatically throttle and turn on and off its engines to achieve a smooth landing."},"AutoShutOff":{"value":218,"deprecated":false,"description":"Turns off all devices in the rocket upon reaching destination"},"BestContactFilter":{"value":267,"deprecated":false,"description":"Filters the satellite's auto selection of targets to a single reference ID."},"Bpm":{"value":103,"deprecated":false,"description":"Bpm"},"BurnTimeRemaining":{"value":225,"deprecated":false,"description":"Estimated time in seconds until fuel is depleted. Calculated based on current fuel usage."},"CelestialHash":{"value":242,"deprecated":false,"description":"The current hash of the targeted celestial object."},"CelestialParentHash":{"value":250,"deprecated":false,"description":"The hash for the name of the parent the celestial is orbiting, 0 if there is no parent celestial."},"Channel0":{"value":165,"deprecated":false,"description":"Channel on a cable network which should be considered volatile"},"Channel1":{"value":166,"deprecated":false,"description":"Channel on a cable network which should be considered volatile"},"Channel2":{"value":167,"deprecated":false,"description":"Channel on a cable network which should be considered volatile"},"Channel3":{"value":168,"deprecated":false,"description":"Channel on a cable network which should be considered volatile"},"Channel4":{"value":169,"deprecated":false,"description":"Channel on a cable network which should be considered volatile"},"Channel5":{"value":170,"deprecated":false,"description":"Channel on a cable network which should be considered volatile"},"Channel6":{"value":171,"deprecated":false,"description":"Channel on a cable network which should be considered volatile"},"Channel7":{"value":172,"deprecated":false,"description":"Channel on a cable network which should be considered volatile"},"Charge":{"value":11,"deprecated":false,"description":"The current charge the device has"},"Chart":{"value":256,"deprecated":false,"description":"Progress status of Chart scan at the rocket's target Space Map Location. Returns a clamped normalised value. If Chart scan is not available returns -1."},"ChartedNavPoints":{"value":259,"deprecated":false,"description":"The number of charted NavPoints at the rocket's target Space Map Location."},"ClearMemory":{"value":62,"deprecated":false,"description":"When set to 1, clears the counter memory (e.g. ExportCount). Will set itself back to 0 when actioned"},"CollectableGoods":{"value":101,"deprecated":false,"description":"Gets the cost of fuel to return the rocket to your current world."},"Color":{"value":38,"deprecated":false,"description":"\n Whether driven by concerns for clarity, safety or simple aesthetics, Stationeers have access to a small rainbow of colors for their constructions. These are the color setting for devices, represented as an integer.\n\n0: Blue\n1: Grey\n2: Green\n3: Orange\n4: Red\n5: Yellow\n6: White\n7: Black\n8: Brown\n9: Khaki\n10: Pink\n11: Purple\n\n It is an unwavering universal law that anything higher than 11 will be purple. The ODA is powerless to change this. Similarly, anything lower than 0 will be Blue.\n "},"Combustion":{"value":98,"deprecated":false,"description":"The assess atmosphere is on fire. Returns 1 if atmosphere is on fire, 0 if not."},"CombustionInput":{"value":146,"deprecated":false,"description":"The assess atmosphere is on fire. Returns 1 if device's input network is on fire, 0 if not."},"CombustionInput2":{"value":147,"deprecated":false,"description":"The assess atmosphere is on fire. Returns 1 if device's Input2 network is on fire, 0 if not."},"CombustionLimiter":{"value":153,"deprecated":false,"description":"Retards the rate of combustion inside the machine (range: 0-100), with 0 being the slowest rate of combustion and 100 being the fastest"},"CombustionOutput":{"value":148,"deprecated":false,"description":"The assess atmosphere is on fire. Returns 1 if device's Output network is on fire, 0 if not."},"CombustionOutput2":{"value":149,"deprecated":false,"description":"The assess atmosphere is on fire. Returns 1 if device's Output2 network is on fire, 0 if not."},"CompletionRatio":{"value":61,"deprecated":false,"description":"How complete the current production is for this device, between 0 and 1"},"ContactTypeId":{"value":198,"deprecated":false,"description":"The type id of the contact."},"CurrentCode":{"value":261,"deprecated":false,"description":"The Space Map Address of the rockets current Space Map Location"},"CurrentResearchPodType":{"value":93,"deprecated":false,"description":""},"Density":{"value":262,"deprecated":false,"description":"The density of the rocket's target site's mine-able deposit."},"DestinationCode":{"value":215,"deprecated":false,"description":"The Space Map Address of the rockets target Space Map Location"},"Discover":{"value":255,"deprecated":false,"description":"Progress status of Discovery scan at the rocket's target Space Map Location. Returns a clamped normalised value. If Discovery scan is not available returns -1."},"DistanceAu":{"value":244,"deprecated":false,"description":"The current distance to the celestial object, measured in astronomical units."},"DistanceKm":{"value":249,"deprecated":false,"description":"The current distance to the celestial object, measured in kilometers."},"DrillCondition":{"value":240,"deprecated":false,"description":"The current condition of the drill head in this devices drill slot. Expressed as a ratio between 0 and 1."},"DryMass":{"value":220,"deprecated":false,"description":"The Mass in kilograms of the rocket excluding fuel. The more massive the rocket the more fuel will be required to move to a new location in space."},"Eccentricity":{"value":247,"deprecated":false,"description":"A measure of how elliptical (oval) an orbit is. Ranges from 0 (a perfect circle) to 1 (a parabolic trajectory)."},"ElevatorLevel":{"value":40,"deprecated":false,"description":"Level the elevator is currently at"},"ElevatorSpeed":{"value":39,"deprecated":false,"description":"Current speed of the elevator"},"EntityState":{"value":239,"deprecated":false,"description":"The current entity state, such as whether it is dead, unconscious or alive, expressed as a state integer."},"EnvironmentEfficiency":{"value":104,"deprecated":false,"description":"The Environment Efficiency reported by the machine, as a float between 0 and 1"},"Error":{"value":4,"deprecated":false,"description":"1 if device is in error state, otherwise 0"},"ExhaustVelocity":{"value":235,"deprecated":false,"description":"The velocity of the exhaust gas in m/s"},"ExportCount":{"value":63,"deprecated":false,"description":"How many items exported since last ClearMemory"},"ExportQuantity":{"value":31,"deprecated":true,"description":"Total quantity of items exported by the device"},"ExportSlotHash":{"value":42,"deprecated":true,"description":"DEPRECATED"},"ExportSlotOccupant":{"value":32,"deprecated":true,"description":"DEPRECATED"},"Filtration":{"value":74,"deprecated":false,"description":"The current state of the filtration system, for example Filtration = 1 for a Hardsuit sets filtration to On"},"FlightControlRule":{"value":236,"deprecated":false,"description":"Flight control rule of rocket. None = 0, No AutoPilot. Normal = 1, Target Decent Apex of 60m. Alternate = 2, Velocity to High - Full throttle. Alternate2 = 3, Target an appropriate decent velocity as velocity is too low. FinalApproach = 4, Descend towards launch mount in a controlled manner."},"Flush":{"value":174,"deprecated":false,"description":"Set to 1 to activate the flush function on the device"},"ForceWrite":{"value":85,"deprecated":false,"description":"Forces Logic Writer devices to rewrite value"},"ForwardX":{"value":227,"deprecated":false,"description":"The direction the entity is facing expressed as a normalized vector"},"ForwardY":{"value":228,"deprecated":false,"description":"The direction the entity is facing expressed as a normalized vector"},"ForwardZ":{"value":229,"deprecated":false,"description":"The direction the entity is facing expressed as a normalized vector"},"Fuel":{"value":99,"deprecated":false,"description":"Gets the cost of fuel to return the rocket to your current world."},"Harvest":{"value":69,"deprecated":false,"description":"Performs the harvesting action for any plant based machinery"},"Horizontal":{"value":20,"deprecated":false,"description":"Horizontal setting of the device"},"HorizontalRatio":{"value":34,"deprecated":false,"description":"Radio of horizontal setting for device"},"Idle":{"value":37,"deprecated":false,"description":"Returns 1 if the device is currently idle, otherwise 0"},"ImportCount":{"value":64,"deprecated":false,"description":"How many items imported since last ClearMemory"},"ImportQuantity":{"value":29,"deprecated":true,"description":"Total quantity of items imported by the device"},"ImportSlotHash":{"value":43,"deprecated":true,"description":"DEPRECATED"},"ImportSlotOccupant":{"value":30,"deprecated":true,"description":"DEPRECATED"},"Inclination":{"value":246,"deprecated":false,"description":"The tilt of an orbit's plane relative to the equatorial plane, measured in degrees. Defines the orbital plane's angle."},"Index":{"value":241,"deprecated":false,"description":"The current index for the device."},"InterrogationProgress":{"value":157,"deprecated":false,"description":"Progress of this sattellite dish's interrogation of its current target, as a ratio from 0-1"},"LineNumber":{"value":173,"deprecated":false,"description":"The line number of current execution for an integrated circuit running on this device. While this number can be written, use with caution"},"Lock":{"value":10,"deprecated":false,"description":"1 if device is locked, otherwise 0, can be set in most devices and prevents the user from access the values"},"ManualResearchRequiredPod":{"value":94,"deprecated":false,"description":"Sets the pod type to search for a certain pod when breaking down a pods."},"Mass":{"value":219,"deprecated":false,"description":"The total Mass of the rocket in kilograms including fuel and cargo. The more massive the rocket the more fuel will be required to move to a new location in space."},"Maximum":{"value":23,"deprecated":false,"description":"Maximum setting of the device"},"MineablesInQueue":{"value":96,"deprecated":false,"description":"Returns the amount of mineables AIMEe has queued up to mine."},"MineablesInVicinity":{"value":95,"deprecated":false,"description":"Returns the amount of potential mineables within an extended area around AIMEe."},"MinedQuantity":{"value":266,"deprecated":false,"description":"The total number of resources that have been mined at the rocket's target Space Map Site."},"MinimumWattsToContact":{"value":163,"deprecated":false,"description":"Minimum required amount of watts from the dish hitting the target trader contact to start interrogating the contact"},"Mode":{"value":3,"deprecated":false,"description":"Integer for mode state, different devices will have different mode states available to them"},"NameHash":{"value":268,"deprecated":false,"description":"Provides the hash value for the name of the object as a 32 bit integer."},"NavPoints":{"value":258,"deprecated":false,"description":"The number of NavPoints at the rocket's target Space Map Location."},"NextWeatherEventTime":{"value":97,"deprecated":false,"description":"Returns in seconds when the next weather event is inbound."},"None":{"value":0,"deprecated":true,"description":"No description"},"On":{"value":28,"deprecated":false,"description":"The current state of the device, 0 for off, 1 for on"},"Open":{"value":2,"deprecated":false,"description":"1 if device is open, otherwise 0"},"OperationalTemperatureEfficiency":{"value":150,"deprecated":false,"description":"How the input pipe's temperature effects the machines efficiency"},"OrbitPeriod":{"value":245,"deprecated":false,"description":"The time it takes for an object to complete one full orbit around another object, measured in days. Indicates the duration of the orbital cycle."},"Orientation":{"value":230,"deprecated":false,"description":"The orientation of the entity in degrees in a plane relative towards the north origin"},"Output":{"value":70,"deprecated":false,"description":"The output operation for a sort handling device, such as a stacker or sorter, when in logic mode the device will only action one repetition when set zero or above and then back to -1 and await further instructions"},"PassedMoles":{"value":234,"deprecated":false,"description":"The number of moles that passed through this device on the previous simulation tick"},"Plant":{"value":68,"deprecated":false,"description":"Performs the planting action for any plant based machinery"},"PlantEfficiency1":{"value":52,"deprecated":true,"description":"DEPRECATED"},"PlantEfficiency2":{"value":53,"deprecated":true,"description":"DEPRECATED"},"PlantEfficiency3":{"value":54,"deprecated":true,"description":"DEPRECATED"},"PlantEfficiency4":{"value":55,"deprecated":true,"description":"DEPRECATED"},"PlantGrowth1":{"value":48,"deprecated":true,"description":"DEPRECATED"},"PlantGrowth2":{"value":49,"deprecated":true,"description":"DEPRECATED"},"PlantGrowth3":{"value":50,"deprecated":true,"description":"DEPRECATED"},"PlantGrowth4":{"value":51,"deprecated":true,"description":"DEPRECATED"},"PlantHash1":{"value":56,"deprecated":true,"description":"DEPRECATED"},"PlantHash2":{"value":57,"deprecated":true,"description":"DEPRECATED"},"PlantHash3":{"value":58,"deprecated":true,"description":"DEPRECATED"},"PlantHash4":{"value":59,"deprecated":true,"description":"DEPRECATED"},"PlantHealth1":{"value":44,"deprecated":true,"description":"DEPRECATED"},"PlantHealth2":{"value":45,"deprecated":true,"description":"DEPRECATED"},"PlantHealth3":{"value":46,"deprecated":true,"description":"DEPRECATED"},"PlantHealth4":{"value":47,"deprecated":true,"description":"DEPRECATED"},"PositionX":{"value":76,"deprecated":false,"description":"The current position in X dimension in world coordinates"},"PositionY":{"value":77,"deprecated":false,"description":"The current position in Y dimension in world coordinates"},"PositionZ":{"value":78,"deprecated":false,"description":"The current position in Z dimension in world coordinates"},"Power":{"value":1,"deprecated":false,"description":"Can be read to return if the device is correctly powered or not, set via the power system, return 1 if powered and 0 if not"},"PowerActual":{"value":26,"deprecated":false,"description":"How much energy the device or network is actually using"},"PowerGeneration":{"value":65,"deprecated":false,"description":"Returns how much power is being generated"},"PowerPotential":{"value":25,"deprecated":false,"description":"How much energy the device or network potentially provides"},"PowerRequired":{"value":36,"deprecated":false,"description":"Power requested from the device and/or network"},"PrefabHash":{"value":84,"deprecated":false,"description":"The hash of the structure"},"Pressure":{"value":5,"deprecated":false,"description":"The current pressure reading of the device"},"PressureEfficiency":{"value":152,"deprecated":false,"description":"How the pressure of the input pipe and waste pipe effect the machines efficiency"},"PressureExternal":{"value":7,"deprecated":false,"description":"Setting for external pressure safety, in KPa"},"PressureInput":{"value":106,"deprecated":false,"description":"The current pressure reading of the device's Input Network"},"PressureInput2":{"value":116,"deprecated":false,"description":"The current pressure reading of the device's Input2 Network"},"PressureInternal":{"value":8,"deprecated":false,"description":"Setting for internal pressure safety, in KPa"},"PressureOutput":{"value":126,"deprecated":false,"description":"The current pressure reading of the device's Output Network"},"PressureOutput2":{"value":136,"deprecated":false,"description":"The current pressure reading of the device's Output2 Network"},"PressureSetting":{"value":71,"deprecated":false,"description":"The current setting for the internal pressure of the object (e.g. the Hardsuit Air release), in KPa"},"Progress":{"value":214,"deprecated":false,"description":"Progress of the rocket to the next node on the map expressed as a value between 0-1."},"Quantity":{"value":27,"deprecated":false,"description":"Total quantity on the device"},"Ratio":{"value":24,"deprecated":false,"description":"Context specific value depending on device, 0 to 1 based ratio"},"RatioCarbonDioxide":{"value":15,"deprecated":false,"description":"The ratio of Carbon Dioxide in device atmosphere"},"RatioCarbonDioxideInput":{"value":109,"deprecated":false,"description":"The ratio of Carbon Dioxide in device's input network"},"RatioCarbonDioxideInput2":{"value":119,"deprecated":false,"description":"The ratio of Carbon Dioxide in device's Input2 network"},"RatioCarbonDioxideOutput":{"value":129,"deprecated":false,"description":"The ratio of Carbon Dioxide in device's Output network"},"RatioCarbonDioxideOutput2":{"value":139,"deprecated":false,"description":"The ratio of Carbon Dioxide in device's Output2 network"},"RatioHydrogen":{"value":252,"deprecated":false,"description":"The ratio of Hydrogen in device's Atmopshere"},"RatioLiquidCarbonDioxide":{"value":199,"deprecated":false,"description":"The ratio of Liquid Carbon Dioxide in device's Atmosphere"},"RatioLiquidCarbonDioxideInput":{"value":200,"deprecated":false,"description":"The ratio of Liquid Carbon Dioxide in device's Input Atmosphere"},"RatioLiquidCarbonDioxideInput2":{"value":201,"deprecated":false,"description":"The ratio of Liquid Carbon Dioxide in device's Input2 Atmosphere"},"RatioLiquidCarbonDioxideOutput":{"value":202,"deprecated":false,"description":"The ratio of Liquid Carbon Dioxide in device's device's Output Atmosphere"},"RatioLiquidCarbonDioxideOutput2":{"value":203,"deprecated":false,"description":"The ratio of Liquid Carbon Dioxide in device's Output2 Atmopshere"},"RatioLiquidHydrogen":{"value":253,"deprecated":false,"description":"The ratio of Liquid Hydrogen in device's Atmopshere"},"RatioLiquidNitrogen":{"value":177,"deprecated":false,"description":"The ratio of Liquid Nitrogen in device atmosphere"},"RatioLiquidNitrogenInput":{"value":178,"deprecated":false,"description":"The ratio of Liquid Nitrogen in device's input network"},"RatioLiquidNitrogenInput2":{"value":179,"deprecated":false,"description":"The ratio of Liquid Nitrogen in device's Input2 network"},"RatioLiquidNitrogenOutput":{"value":180,"deprecated":false,"description":"The ratio of Liquid Nitrogen in device's Output network"},"RatioLiquidNitrogenOutput2":{"value":181,"deprecated":false,"description":"The ratio of Liquid Nitrogen in device's Output2 network"},"RatioLiquidNitrousOxide":{"value":209,"deprecated":false,"description":"The ratio of Liquid Nitrous Oxide in device's Atmosphere"},"RatioLiquidNitrousOxideInput":{"value":210,"deprecated":false,"description":"The ratio of Liquid Nitrous Oxide in device's Input Atmosphere"},"RatioLiquidNitrousOxideInput2":{"value":211,"deprecated":false,"description":"The ratio of Liquid Nitrous Oxide in device's Input2 Atmosphere"},"RatioLiquidNitrousOxideOutput":{"value":212,"deprecated":false,"description":"The ratio of Liquid Nitrous Oxide in device's device's Output Atmosphere"},"RatioLiquidNitrousOxideOutput2":{"value":213,"deprecated":false,"description":"The ratio of Liquid Nitrous Oxide in device's Output2 Atmopshere"},"RatioLiquidOxygen":{"value":183,"deprecated":false,"description":"The ratio of Liquid Oxygen in device's Atmosphere"},"RatioLiquidOxygenInput":{"value":184,"deprecated":false,"description":"The ratio of Liquid Oxygen in device's Input Atmosphere"},"RatioLiquidOxygenInput2":{"value":185,"deprecated":false,"description":"The ratio of Liquid Oxygen in device's Input2 Atmosphere"},"RatioLiquidOxygenOutput":{"value":186,"deprecated":false,"description":"The ratio of Liquid Oxygen in device's device's Output Atmosphere"},"RatioLiquidOxygenOutput2":{"value":187,"deprecated":false,"description":"The ratio of Liquid Oxygen in device's Output2 Atmopshere"},"RatioLiquidPollutant":{"value":204,"deprecated":false,"description":"The ratio of Liquid Pollutant in device's Atmosphere"},"RatioLiquidPollutantInput":{"value":205,"deprecated":false,"description":"The ratio of Liquid Pollutant in device's Input Atmosphere"},"RatioLiquidPollutantInput2":{"value":206,"deprecated":false,"description":"The ratio of Liquid Pollutant in device's Input2 Atmosphere"},"RatioLiquidPollutantOutput":{"value":207,"deprecated":false,"description":"The ratio of Liquid Pollutant in device's device's Output Atmosphere"},"RatioLiquidPollutantOutput2":{"value":208,"deprecated":false,"description":"The ratio of Liquid Pollutant in device's Output2 Atmopshere"},"RatioLiquidVolatiles":{"value":188,"deprecated":false,"description":"The ratio of Liquid Volatiles in device's Atmosphere"},"RatioLiquidVolatilesInput":{"value":189,"deprecated":false,"description":"The ratio of Liquid Volatiles in device's Input Atmosphere"},"RatioLiquidVolatilesInput2":{"value":190,"deprecated":false,"description":"The ratio of Liquid Volatiles in device's Input2 Atmosphere"},"RatioLiquidVolatilesOutput":{"value":191,"deprecated":false,"description":"The ratio of Liquid Volatiles in device's device's Output Atmosphere"},"RatioLiquidVolatilesOutput2":{"value":192,"deprecated":false,"description":"The ratio of Liquid Volatiles in device's Output2 Atmopshere"},"RatioNitrogen":{"value":16,"deprecated":false,"description":"The ratio of nitrogen in device atmosphere"},"RatioNitrogenInput":{"value":110,"deprecated":false,"description":"The ratio of nitrogen in device's input network"},"RatioNitrogenInput2":{"value":120,"deprecated":false,"description":"The ratio of nitrogen in device's Input2 network"},"RatioNitrogenOutput":{"value":130,"deprecated":false,"description":"The ratio of nitrogen in device's Output network"},"RatioNitrogenOutput2":{"value":140,"deprecated":false,"description":"The ratio of nitrogen in device's Output2 network"},"RatioNitrousOxide":{"value":83,"deprecated":false,"description":"The ratio of Nitrous Oxide in device atmosphere"},"RatioNitrousOxideInput":{"value":114,"deprecated":false,"description":"The ratio of Nitrous Oxide in device's input network"},"RatioNitrousOxideInput2":{"value":124,"deprecated":false,"description":"The ratio of Nitrous Oxide in device's Input2 network"},"RatioNitrousOxideOutput":{"value":134,"deprecated":false,"description":"The ratio of Nitrous Oxide in device's Output network"},"RatioNitrousOxideOutput2":{"value":144,"deprecated":false,"description":"The ratio of Nitrous Oxide in device's Output2 network"},"RatioOxygen":{"value":14,"deprecated":false,"description":"The ratio of oxygen in device atmosphere"},"RatioOxygenInput":{"value":108,"deprecated":false,"description":"The ratio of oxygen in device's input network"},"RatioOxygenInput2":{"value":118,"deprecated":false,"description":"The ratio of oxygen in device's Input2 network"},"RatioOxygenOutput":{"value":128,"deprecated":false,"description":"The ratio of oxygen in device's Output network"},"RatioOxygenOutput2":{"value":138,"deprecated":false,"description":"The ratio of oxygen in device's Output2 network"},"RatioPollutant":{"value":17,"deprecated":false,"description":"The ratio of pollutant in device atmosphere"},"RatioPollutantInput":{"value":111,"deprecated":false,"description":"The ratio of pollutant in device's input network"},"RatioPollutantInput2":{"value":121,"deprecated":false,"description":"The ratio of pollutant in device's Input2 network"},"RatioPollutantOutput":{"value":131,"deprecated":false,"description":"The ratio of pollutant in device's Output network"},"RatioPollutantOutput2":{"value":141,"deprecated":false,"description":"The ratio of pollutant in device's Output2 network"},"RatioPollutedWater":{"value":254,"deprecated":false,"description":"The ratio of polluted water in device atmosphere"},"RatioSteam":{"value":193,"deprecated":false,"description":"The ratio of Steam in device's Atmosphere"},"RatioSteamInput":{"value":194,"deprecated":false,"description":"The ratio of Steam in device's Input Atmosphere"},"RatioSteamInput2":{"value":195,"deprecated":false,"description":"The ratio of Steam in device's Input2 Atmosphere"},"RatioSteamOutput":{"value":196,"deprecated":false,"description":"The ratio of Steam in device's device's Output Atmosphere"},"RatioSteamOutput2":{"value":197,"deprecated":false,"description":"The ratio of Steam in device's Output2 Atmopshere"},"RatioVolatiles":{"value":18,"deprecated":false,"description":"The ratio of volatiles in device atmosphere"},"RatioVolatilesInput":{"value":112,"deprecated":false,"description":"The ratio of volatiles in device's input network"},"RatioVolatilesInput2":{"value":122,"deprecated":false,"description":"The ratio of volatiles in device's Input2 network"},"RatioVolatilesOutput":{"value":132,"deprecated":false,"description":"The ratio of volatiles in device's Output network"},"RatioVolatilesOutput2":{"value":142,"deprecated":false,"description":"The ratio of volatiles in device's Output2 network"},"RatioWater":{"value":19,"deprecated":false,"description":"The ratio of water in device atmosphere"},"RatioWaterInput":{"value":113,"deprecated":false,"description":"The ratio of water in device's input network"},"RatioWaterInput2":{"value":123,"deprecated":false,"description":"The ratio of water in device's Input2 network"},"RatioWaterOutput":{"value":133,"deprecated":false,"description":"The ratio of water in device's Output network"},"RatioWaterOutput2":{"value":143,"deprecated":false,"description":"The ratio of water in device's Output2 network"},"ReEntryAltitude":{"value":237,"deprecated":false,"description":"The altitude that the rocket will begin its decent to the pad. Must be between 25km and 120km"},"Reagents":{"value":13,"deprecated":false,"description":"Total number of reagents recorded by the device"},"RecipeHash":{"value":41,"deprecated":false,"description":"Current hash of the recipe the device is set to produce"},"ReferenceId":{"value":217,"deprecated":false,"description":"Unique Reference Identifier for this object"},"RequestHash":{"value":60,"deprecated":false,"description":"When set to the unique identifier, requests an item of the provided type from the device"},"RequiredPower":{"value":33,"deprecated":false,"description":"Idle operating power quantity, does not necessarily include extra demand power"},"ReturnFuelCost":{"value":100,"deprecated":false,"description":"Gets the fuel remaining in your rocket's fuel tank."},"Richness":{"value":263,"deprecated":false,"description":"The richness of the rocket's target site's mine-able deposit."},"Rpm":{"value":155,"deprecated":false,"description":"The number of revolutions per minute that the device's spinning mechanism is doing"},"SemiMajorAxis":{"value":248,"deprecated":false,"description":"The longest radius of an elliptical orbit in astronomical units, measuring half the major axis. Determines the size of the orbit."},"Setting":{"value":12,"deprecated":false,"description":"A variable setting that can be read or written, depending on the device"},"SettingInput":{"value":91,"deprecated":false,"description":""},"SettingOutput":{"value":92,"deprecated":false,"description":""},"SignalID":{"value":87,"deprecated":false,"description":"Returns the contact ID of the strongest signal from this Satellite"},"SignalStrength":{"value":86,"deprecated":false,"description":"Returns the degree offset of the strongest contact"},"Sites":{"value":260,"deprecated":false,"description":"The number of Sites that have been discovered at the rockets target Space Map location."},"Size":{"value":264,"deprecated":false,"description":"The size of the rocket's target site's mine-able deposit."},"SizeX":{"value":160,"deprecated":false,"description":"Size on the X (right) axis of the object in largeGrids (a largeGrid is 2meters)"},"SizeY":{"value":161,"deprecated":false,"description":"Size on the Y(Up) axis of the object in largeGrids (a largeGrid is 2meters)"},"SizeZ":{"value":162,"deprecated":false,"description":"Size on the Z(Forward) axis of the object in largeGrids (a largeGrid is 2meters)"},"SolarAngle":{"value":22,"deprecated":false,"description":"Solar angle of the device"},"SolarIrradiance":{"value":176,"deprecated":false,"description":""},"SoundAlert":{"value":175,"deprecated":false,"description":"Plays a sound alert on the devices speaker"},"Stress":{"value":156,"deprecated":false,"description":"Machines get stressed when working hard. When Stress reaches 100 the machine will automatically shut down"},"Survey":{"value":257,"deprecated":false,"description":"Progress status of Survey scan at the rocket's target Space Map Location. Returns a normalised value where 100% surveyed is equal to 1. If Survey scan is not available returns -1."},"TargetPadIndex":{"value":158,"deprecated":false,"description":"The index of the trader landing pad on this devices data network that it will try to call a trader in to land"},"TargetX":{"value":88,"deprecated":false,"description":"The target position in X dimension in world coordinates"},"TargetY":{"value":89,"deprecated":false,"description":"The target position in Y dimension in world coordinates"},"TargetZ":{"value":90,"deprecated":false,"description":"The target position in Z dimension in world coordinates"},"Temperature":{"value":6,"deprecated":false,"description":"The current temperature reading of the device"},"TemperatureDifferentialEfficiency":{"value":151,"deprecated":false,"description":"How the difference between the input pipe and waste pipe temperatures effect the machines efficiency"},"TemperatureExternal":{"value":73,"deprecated":false,"description":"The temperature of the outside of the device, usually the world atmosphere surrounding it"},"TemperatureInput":{"value":107,"deprecated":false,"description":"The current temperature reading of the device's Input Network"},"TemperatureInput2":{"value":117,"deprecated":false,"description":"The current temperature reading of the device's Input2 Network"},"TemperatureOutput":{"value":127,"deprecated":false,"description":"The current temperature reading of the device's Output Network"},"TemperatureOutput2":{"value":137,"deprecated":false,"description":"The current temperature reading of the device's Output2 Network"},"TemperatureSetting":{"value":72,"deprecated":false,"description":"The current setting for the internal temperature of the object (e.g. the Hardsuit A/C)"},"Throttle":{"value":154,"deprecated":false,"description":"Increases the rate at which the machine works (range: 0-100)"},"Thrust":{"value":221,"deprecated":false,"description":"Total current thrust of all rocket engines on the rocket in Newtons."},"ThrustToWeight":{"value":223,"deprecated":false,"description":"Ratio of thrust to weight of rocket. Weight is effected by local body gravity. A rocket with a low thrust to weight will expend more fuel during launch and landing."},"Time":{"value":102,"deprecated":false,"description":"Time"},"TimeToDestination":{"value":224,"deprecated":false,"description":"Estimated time in seconds until rocket arrives at target destination."},"TotalMoles":{"value":66,"deprecated":false,"description":"Returns the total moles of the device"},"TotalMolesInput":{"value":115,"deprecated":false,"description":"Returns the total moles of the device's Input Network"},"TotalMolesInput2":{"value":125,"deprecated":false,"description":"Returns the total moles of the device's Input2 Network"},"TotalMolesOutput":{"value":135,"deprecated":false,"description":"Returns the total moles of the device's Output Network"},"TotalMolesOutput2":{"value":145,"deprecated":false,"description":"Returns the total moles of the device's Output2 Network"},"TotalQuantity":{"value":265,"deprecated":false,"description":"The estimated total quantity of resources available to mine at the rocket's target Space Map Site."},"TrueAnomaly":{"value":251,"deprecated":false,"description":"An angular parameter that defines the position of a body moving along a Keplerian orbit. It is the angle between the direction of periapsis and the current position of the body, as seen from the main focus of the ellipse (the point around which the object orbits)."},"VelocityMagnitude":{"value":79,"deprecated":false,"description":"The current magnitude of the velocity vector"},"VelocityRelativeX":{"value":80,"deprecated":false,"description":"The current velocity X relative to the forward vector of this"},"VelocityRelativeY":{"value":81,"deprecated":false,"description":"The current velocity Y relative to the forward vector of this"},"VelocityRelativeZ":{"value":82,"deprecated":false,"description":"The current velocity Z relative to the forward vector of this"},"VelocityX":{"value":231,"deprecated":false,"description":"The world velocity of the entity in the X axis"},"VelocityY":{"value":232,"deprecated":false,"description":"The world velocity of the entity in the Y axis"},"VelocityZ":{"value":233,"deprecated":false,"description":"The world velocity of the entity in the Z axis"},"Vertical":{"value":21,"deprecated":false,"description":"Vertical setting of the device"},"VerticalRatio":{"value":35,"deprecated":false,"description":"Radio of vertical setting for device"},"Volume":{"value":67,"deprecated":false,"description":"Returns the device atmosphere volume"},"VolumeOfLiquid":{"value":182,"deprecated":false,"description":"The total volume of all liquids in Liters in the atmosphere"},"WattsReachingContact":{"value":164,"deprecated":false,"description":"The amount of watts actually hitting the contact. This is effected by the power of the dish and how far off-axis the dish is from the contact vector"},"Weight":{"value":222,"deprecated":false,"description":"Weight of Rocket in Newtons (Including fuel and cargo). Weight is effected by local body gravity."},"WorkingGasEfficiency":{"value":105,"deprecated":false,"description":"The Working Gas Efficiency reported by the machine, as a float between 0 and 1"}}},"PowerMode":{"enumName":"PowerMode","values":{"Charged":{"value":4,"deprecated":false,"description":""},"Charging":{"value":3,"deprecated":false,"description":""},"Discharged":{"value":1,"deprecated":false,"description":""},"Discharging":{"value":2,"deprecated":false,"description":""},"Idle":{"value":0,"deprecated":false,"description":""}}},"PrinterInstruction":{"enumName":"PrinterInstruction","values":{"DeviceSetLock":{"value":6,"deprecated":false,"description":""},"EjectAllReagents":{"value":8,"deprecated":false,"description":""},"EjectReagent":{"value":7,"deprecated":false,"description":""},"ExecuteRecipe":{"value":2,"deprecated":false,"description":""},"JumpIfNextInvalid":{"value":4,"deprecated":false,"description":""},"JumpToAddress":{"value":5,"deprecated":false,"description":""},"MissingRecipeReagent":{"value":9,"deprecated":false,"description":""},"None":{"value":0,"deprecated":false,"description":""},"StackPointer":{"value":1,"deprecated":false,"description":""},"WaitUntilNextValid":{"value":3,"deprecated":false,"description":""}}},"ReEntryProfile":{"enumName":"ReEntryProfile","values":{"High":{"value":3,"deprecated":false,"description":""},"Max":{"value":4,"deprecated":false,"description":""},"Medium":{"value":2,"deprecated":false,"description":""},"None":{"value":0,"deprecated":false,"description":""},"Optimal":{"value":1,"deprecated":false,"description":""}}},"RobotMode":{"enumName":"RobotMode","values":{"Follow":{"value":1,"deprecated":false,"description":""},"MoveToTarget":{"value":2,"deprecated":false,"description":""},"None":{"value":0,"deprecated":false,"description":""},"PathToTarget":{"value":5,"deprecated":false,"description":""},"Roam":{"value":3,"deprecated":false,"description":""},"StorageFull":{"value":6,"deprecated":false,"description":""},"Unload":{"value":4,"deprecated":false,"description":""}}},"RocketMode":{"enumName":"RocketMode","values":{"Chart":{"value":5,"deprecated":false,"description":""},"Discover":{"value":4,"deprecated":false,"description":""},"Invalid":{"value":0,"deprecated":false,"description":""},"Mine":{"value":2,"deprecated":false,"description":""},"None":{"value":1,"deprecated":false,"description":""},"Survey":{"value":3,"deprecated":false,"description":""}}},"SlotClass":{"enumName":"Class","values":{"AccessCard":{"value":22,"deprecated":false,"description":""},"Appliance":{"value":18,"deprecated":false,"description":""},"Back":{"value":3,"deprecated":false,"description":""},"Battery":{"value":14,"deprecated":false,"description":""},"Belt":{"value":16,"deprecated":false,"description":""},"Blocked":{"value":38,"deprecated":false,"description":""},"Bottle":{"value":25,"deprecated":false,"description":""},"Cartridge":{"value":21,"deprecated":false,"description":""},"Circuit":{"value":24,"deprecated":false,"description":""},"Circuitboard":{"value":7,"deprecated":false,"description":""},"CreditCard":{"value":28,"deprecated":false,"description":""},"DataDisk":{"value":8,"deprecated":false,"description":""},"DirtCanister":{"value":29,"deprecated":false,"description":""},"DrillHead":{"value":35,"deprecated":false,"description":""},"Egg":{"value":15,"deprecated":false,"description":""},"Entity":{"value":13,"deprecated":false,"description":""},"Flare":{"value":37,"deprecated":false,"description":""},"GasCanister":{"value":5,"deprecated":false,"description":""},"GasFilter":{"value":4,"deprecated":false,"description":""},"Glasses":{"value":27,"deprecated":false,"description":""},"Helmet":{"value":1,"deprecated":false,"description":""},"Ingot":{"value":19,"deprecated":false,"description":""},"LiquidBottle":{"value":32,"deprecated":false,"description":""},"LiquidCanister":{"value":31,"deprecated":false,"description":""},"Magazine":{"value":23,"deprecated":false,"description":""},"Motherboard":{"value":6,"deprecated":false,"description":""},"None":{"value":0,"deprecated":false,"description":""},"Ore":{"value":10,"deprecated":false,"description":""},"Organ":{"value":9,"deprecated":false,"description":""},"Plant":{"value":11,"deprecated":false,"description":""},"ProgrammableChip":{"value":26,"deprecated":false,"description":""},"ScanningHead":{"value":36,"deprecated":false,"description":""},"SensorProcessingUnit":{"value":30,"deprecated":false,"description":""},"SoundCartridge":{"value":34,"deprecated":false,"description":""},"Suit":{"value":2,"deprecated":false,"description":""},"SuitMod":{"value":39,"deprecated":false,"description":""},"Tool":{"value":17,"deprecated":false,"description":""},"Torpedo":{"value":20,"deprecated":false,"description":""},"Uniform":{"value":12,"deprecated":false,"description":""},"Wreckage":{"value":33,"deprecated":false,"description":""}}},"SorterInstruction":{"enumName":"SorterInstruction","values":{"FilterPrefabHashEquals":{"value":1,"deprecated":false,"description":""},"FilterPrefabHashNotEquals":{"value":2,"deprecated":false,"description":""},"FilterQuantityCompare":{"value":5,"deprecated":false,"description":""},"FilterSlotTypeCompare":{"value":4,"deprecated":false,"description":""},"FilterSortingClassCompare":{"value":3,"deprecated":false,"description":""},"LimitNextExecutionByCount":{"value":6,"deprecated":false,"description":""},"None":{"value":0,"deprecated":false,"description":""}}},"SortingClass":{"enumName":"SortingClass","values":{"Appliances":{"value":6,"deprecated":false,"description":""},"Atmospherics":{"value":7,"deprecated":false,"description":""},"Clothing":{"value":5,"deprecated":false,"description":""},"Default":{"value":0,"deprecated":false,"description":""},"Food":{"value":4,"deprecated":false,"description":""},"Ices":{"value":10,"deprecated":false,"description":""},"Kits":{"value":1,"deprecated":false,"description":""},"Ores":{"value":9,"deprecated":false,"description":""},"Resources":{"value":3,"deprecated":false,"description":""},"Storage":{"value":8,"deprecated":false,"description":""},"Tools":{"value":2,"deprecated":false,"description":""}}},"Sound":{"enumName":"SoundAlert","values":{"AirlockCycling":{"value":22,"deprecated":false,"description":""},"Alarm1":{"value":45,"deprecated":false,"description":""},"Alarm10":{"value":12,"deprecated":false,"description":""},"Alarm11":{"value":13,"deprecated":false,"description":""},"Alarm12":{"value":14,"deprecated":false,"description":""},"Alarm2":{"value":1,"deprecated":false,"description":""},"Alarm3":{"value":2,"deprecated":false,"description":""},"Alarm4":{"value":3,"deprecated":false,"description":""},"Alarm5":{"value":4,"deprecated":false,"description":""},"Alarm6":{"value":5,"deprecated":false,"description":""},"Alarm7":{"value":6,"deprecated":false,"description":""},"Alarm8":{"value":10,"deprecated":false,"description":""},"Alarm9":{"value":11,"deprecated":false,"description":""},"Alert":{"value":17,"deprecated":false,"description":""},"Danger":{"value":15,"deprecated":false,"description":""},"Depressurising":{"value":20,"deprecated":false,"description":""},"FireFireFire":{"value":28,"deprecated":false,"description":""},"Five":{"value":33,"deprecated":false,"description":""},"Floor":{"value":34,"deprecated":false,"description":""},"Four":{"value":32,"deprecated":false,"description":""},"HaltWhoGoesThere":{"value":27,"deprecated":false,"description":""},"HighCarbonDioxide":{"value":44,"deprecated":false,"description":""},"IntruderAlert":{"value":19,"deprecated":false,"description":""},"LiftOff":{"value":36,"deprecated":false,"description":""},"MalfunctionDetected":{"value":26,"deprecated":false,"description":""},"Music1":{"value":7,"deprecated":false,"description":""},"Music2":{"value":8,"deprecated":false,"description":""},"Music3":{"value":9,"deprecated":false,"description":""},"None":{"value":0,"deprecated":false,"description":""},"One":{"value":29,"deprecated":false,"description":""},"PollutantsDetected":{"value":43,"deprecated":false,"description":""},"PowerLow":{"value":23,"deprecated":false,"description":""},"PressureHigh":{"value":39,"deprecated":false,"description":""},"PressureLow":{"value":40,"deprecated":false,"description":""},"Pressurising":{"value":21,"deprecated":false,"description":""},"RocketLaunching":{"value":35,"deprecated":false,"description":""},"StormIncoming":{"value":18,"deprecated":false,"description":""},"SystemFailure":{"value":24,"deprecated":false,"description":""},"TemperatureHigh":{"value":41,"deprecated":false,"description":""},"TemperatureLow":{"value":42,"deprecated":false,"description":""},"Three":{"value":31,"deprecated":false,"description":""},"TraderIncoming":{"value":37,"deprecated":false,"description":""},"TraderLanded":{"value":38,"deprecated":false,"description":""},"Two":{"value":30,"deprecated":false,"description":""},"Warning":{"value":16,"deprecated":false,"description":""},"Welcome":{"value":25,"deprecated":false,"description":""}}},"TransmitterMode":{"enumName":"LogicTransmitterMode","values":{"Active":{"value":1,"deprecated":false,"description":""},"Passive":{"value":0,"deprecated":false,"description":""}}},"Vent":{"enumName":"VentDirection","values":{"Inward":{"value":1,"deprecated":false,"description":""},"Outward":{"value":0,"deprecated":false,"description":""}}},"_unnamed":{"enumName":"ConditionOperation","values":{"Equals":{"value":0,"deprecated":false,"description":""},"Greater":{"value":1,"deprecated":false,"description":""},"Less":{"value":2,"deprecated":false,"description":""},"NotEquals":{"value":3,"deprecated":false,"description":""}}}}},"prefabsByHash":{"-2140672772":"ItemKitGroundTelescope","-2138748650":"StructureSmallSatelliteDish","-2128896573":"StructureStairwellBackRight","-2127086069":"StructureBench2","-2126113312":"ItemLiquidPipeValve","-2124435700":"ItemDisposableBatteryCharger","-2123455080":"StructureBatterySmall","-2113838091":"StructureLiquidPipeAnalyzer","-2113012215":"ItemGasTankStorage","-2112390778":"StructureFrameCorner","-2111886401":"ItemPotatoBaked","-2107840748":"ItemFlashingLight","-2106280569":"ItemLiquidPipeVolumePump","-2105052344":"StructureAirlock","-2104175091":"ItemCannedCondensedMilk","-2098556089":"ItemKitHydraulicPipeBender","-2098214189":"ItemKitLogicMemory","-2096421875":"StructureInteriorDoorGlass","-2087593337":"StructureAirConditioner","-2087223687":"StructureRocketMiner","-2085885850":"DynamicGPR","-2083426457":"UniformCommander","-2082355173":"StructureWindTurbine","-2076086215":"StructureInsulatedPipeTJunction","-2073202179":"ItemPureIcePollutedWater","-2072792175":"RailingIndustrial02","-2068497073":"StructurePipeInsulatedLiquidCrossJunction","-2066892079":"ItemWeldingTorch","-2066653089":"StructurePictureFrameThickMountPortraitSmall","-2066405918":"Landingpad_DataConnectionPiece","-2062364768":"ItemKitPictureFrame","-2061979347":"ItemMKIIArcWelder","-2060571986":"StructureCompositeWindow","-2052458905":"ItemEmergencyDrill","-2049946335":"Rover_MkI","-2045627372":"StructureSolarPanel","-2044446819":"CircuitboardShipDisplay","-2042448192":"StructureBench","-2041566697":"StructurePictureFrameThickLandscapeSmall","-2039971217":"ItemKitLargeSatelliteDish","-2038889137":"ItemKitMusicMachines","-2038663432":"ItemStelliteGlassSheets","-2038384332":"ItemKitVendingMachine","-2031440019":"StructurePumpedLiquidEngine","-2024250974":"StructurePictureFrameThinLandscapeSmall","-2020231820":"StructureStacker","-2015613246":"ItemMKIIScrewdriver","-2008706143":"StructurePressurePlateLarge","-2006384159":"StructurePipeLiquidCrossJunction5","-1993197973":"ItemGasFilterWater","-1991297271":"SpaceShuttle","-1990600883":"SeedBag_Fern","-1981101032":"ItemSecurityCamera","-1976947556":"CardboardBox","-1971419310":"ItemSoundCartridgeSynth","-1968255729":"StructureCornerLocker","-1967711059":"StructureInsulatedPipeCorner","-1963016580":"StructureWallArchCornerSquare","-1961153710":"StructureControlChair","-1958705204":"PortableComposter","-1957063345":"CartridgeGPS","-1949054743":"StructureConsoleLED1x3","-1943134693":"ItemDuctTape","-1939209112":"DynamicLiquidCanisterEmpty","-1935075707":"ItemKitDeepMiner","-1931958659":"ItemKitAutomatedOven","-1930442922":"MothershipCore","-1924492105":"ItemKitSolarPanel","-1923778429":"CircuitboardPowerControl","-1922066841":"SeedBag_Tomato","-1918892177":"StructureChuteUmbilicalFemale","-1918215845":"StructureMediumConvectionRadiator","-1916176068":"ItemGasFilterVolatilesInfinite","-1908268220":"MotherboardSorter","-1901500508":"ItemSoundCartridgeDrums","-1900541738":"StructureFairingTypeA3","-1898247915":"RailingElegant02","-1897868623":"ItemStelliteIngot","-1897221677":"StructureSmallTableBacklessSingle","-1888248335":"StructureHydraulicPipeBender","-1886261558":"ItemWrench","-1884103228":"SeedBag_SugarCane","-1883441704":"ItemSoundCartridgeBass","-1880941852":"ItemSprayCanGreen","-1877193979":"StructurePipeCrossJunction5","-1875856925":"StructureSDBHopper","-1875271296":"ItemMKIIMiningDrill","-1872345847":"Landingpad_TaxiPieceCorner","-1868555784":"ItemKitStairwell","-1867508561":"ItemKitVendingMachineRefrigerated","-1867280568":"ItemKitGasUmbilical","-1866880307":"ItemBatteryCharger","-1864982322":"ItemMuffin","-1861154222":"ItemKitDynamicHydroponics","-1860064656":"StructureWallLight","-1856720921":"StructurePipeLiquidCorner","-1854861891":"ItemGasCanisterWater","-1854167549":"ItemKitLaunchMount","-1844430312":"DeviceLfoVolume","-1843379322":"StructureCableCornerH3","-1841871763":"StructureCompositeCladdingAngledCornerInner","-1841632400":"StructureHydroponicsTrayData","-1831558953":"ItemKitInsulatedPipeUtilityLiquid","-1826855889":"ItemKitWall","-1826023284":"ItemWreckageAirConditioner1","-1821571150":"ItemKitStirlingEngine","-1814939203":"StructureGasUmbilicalMale","-1812330717":"StructureSleeperRight","-1808154199":"StructureManualHatch","-1805394113":"ItemOxite","-1805020897":"ItemKitLiquidTurboVolumePump","-1798420047":"StructureLiquidUmbilicalMale","-1798362329":"StructurePipeMeter","-1798044015":"ItemKitUprightWindTurbine","-1796655088":"ItemPipeRadiator","-1794932560":"StructureOverheadShortCornerLocker","-1792787349":"ItemCableAnalyser","-1788929869":"Landingpad_LiquidConnectorOutwardPiece","-1785673561":"StructurePipeCorner","-1776897113":"ItemKitSensor","-1773192190":"ItemReusableFireExtinguisher","-1768732546":"CartridgeOreScanner","-1766301997":"ItemPipeVolumePump","-1758710260":"StructureGrowLight","-1758310454":"ItemHardSuit","-1756913871":"StructureRailing","-1756896811":"StructureCableJunction4Burnt","-1756772618":"ItemCreditCard","-1755116240":"ItemKitBlastDoor","-1753893214":"ItemKitAutolathe","-1752768283":"ItemKitPassiveLargeRadiatorGas","-1752493889":"StructurePictureFrameThinMountLandscapeSmall","-1751627006":"ItemPipeHeater","-1748926678":"ItemPureIceLiquidPollutant","-1743663875":"ItemKitDrinkingFountain","-1741267161":"DynamicGasCanisterEmpty","-1737666461":"ItemSpaceCleaner","-1731627004":"ItemAuthoringToolRocketNetwork","-1730464583":"ItemSensorProcessingUnitMesonScanner","-1721846327":"ItemWaterWallCooler","-1715945725":"ItemPureIceLiquidCarbonDioxide","-1713748313":"AccessCardRed","-1713611165":"DynamicGasCanisterAir","-1713470563":"StructureMotionSensor","-1712264413":"ItemCookedPowderedEggs","-1712153401":"ItemGasCanisterNitrousOxide","-1710540039":"ItemKitHeatExchanger","-1708395413":"ItemPureIceNitrogen","-1697302609":"ItemKitPipeRadiatorLiquid","-1693382705":"StructureInLineTankGas1x1","-1691151239":"SeedBag_Rice","-1686949570":"StructurePictureFrameThickPortraitLarge","-1683849799":"ApplianceDeskLampLeft","-1682930158":"ItemWreckageWallCooler1","-1680477930":"StructureGasUmbilicalFemale","-1678456554":"ItemGasFilterWaterInfinite","-1674187440":"StructurePassthroughHeatExchangerGasToGas","-1672404896":"StructureAutomatedOven","-1668992663":"StructureElectrolyzer","-1667675295":"MonsterEgg","-1663349918":"ItemMiningDrillHeavy","-1662476145":"ItemAstroloySheets","-1662394403":"ItemWreckageTurbineGenerator1","-1650383245":"ItemMiningBackPack","-1645266981":"ItemSprayCanGrey","-1641500434":"ItemReagentMix","-1634532552":"CartridgeAccessController","-1633947337":"StructureRecycler","-1633000411":"StructureSmallTableBacklessDouble","-1629347579":"ItemKitRocketGasFuelTank","-1625452928":"StructureStairwellFrontPassthrough","-1620686196":"StructureCableJunctionBurnt","-1619793705":"ItemKitPipe","-1616308158":"ItemPureIce","-1613497288":"StructureBasketHoop","-1611559100":"StructureWallPaddedThinNoBorder","-1606848156":"StructureTankBig","-1602030414":"StructureInsulatedTankConnectorLiquid","-1590715731":"ItemKitTurbineGenerator","-1585956426":"ItemKitCrateMkII","-1577831321":"StructureRefrigeratedVendingMachine","-1573623434":"ItemFlowerBlue","-1567752627":"ItemWallCooler","-1554349863":"StructureSolarPanel45","-1552586384":"ItemGasCanisterPollutants","-1550278665":"CartridgeAtmosAnalyser","-1546743960":"StructureWallPaddedArchLightsFittings","-1545574413":"StructureSolarPanelDualReinforced","-1542172466":"StructureCableCorner4","-1536471028":"StructurePressurePlateSmall","-1535893860":"StructureFlashingLight","-1533287054":"StructureFuselageTypeA2","-1532448832":"ItemPipeDigitalValve","-1530571426":"StructureCableJunctionH5","-1529819532":"StructureFlagSmall","-1527229051":"StopWatch","-1516581844":"ItemUraniumOre","-1514298582":"Landingpad_ThreshholdPiece","-1513337058":"ItemFlowerGreen","-1513030150":"StructureCompositeCladdingAngled","-1510009608":"StructureChairThickSingle","-1505147578":"StructureInsulatedPipeCrossJunction5","-1499471529":"ItemNitrice","-1493672123":"StructureCargoStorageSmall","-1489728908":"StructureLogicCompare","-1477941080":"Landingpad_TaxiPieceStraight","-1472829583":"StructurePassthroughHeatExchangerLiquidToLiquid","-1470820996":"ItemKitCompositeCladding","-1469588766":"StructureChuteInlet","-1467449329":"StructureSleeper","-1462180176":"CartridgeElectronicReader","-1459641358":"StructurePictureFrameThickMountPortraitLarge","-1448105779":"ItemSteelFrames","-1446854725":"StructureChuteFlipFlopSplitter","-1434523206":"StructurePictureFrameThickLandscapeLarge","-1431998347":"ItemKitAdvancedComposter","-1430440215":"StructureLiquidTankBigInsulated","-1429782576":"StructureEvaporationChamber","-1427845483":"StructureWallGeometryTMirrored","-1427415566":"KitchenTableShort","-1425428917":"StructureChairRectangleSingle","-1423212473":"StructureTransformer","-1418288625":"StructurePictureFrameThinLandscapeLarge","-1417912632":"StructureCompositeCladdingAngledCornerInnerLong","-1414203269":"ItemPlantEndothermic_Genepool2","-1411986716":"ItemFlowerOrange","-1411327657":"AccessCardBlue","-1407480603":"StructureWallSmallPanelsOpen","-1406385572":"ItemNickelIngot","-1405295588":"StructurePipeCrossJunction","-1404690610":"StructureCableJunction6","-1397583760":"ItemPassiveVentInsulated","-1394008073":"ItemKitChairs","-1388288459":"StructureBatteryLarge","-1387439451":"ItemGasFilterNitrogenL","-1386237782":"KitchenTableTall","-1385712131":"StructureCapsuleTankGas","-1381321828":"StructureCryoTubeVertical","-1369060582":"StructureWaterWallCooler","-1361598922":"ItemKitTables","-1351081801":"StructureLargeHangerDoor","-1348105509":"ItemGoldOre","-1344601965":"ItemCannedMushroom","-1339716113":"AppliancePaintMixer","-1339479035":"AccessCardGray","-1337091041":"StructureChuteDigitalValveRight","-1335056202":"ItemSugarCane","-1332682164":"ItemKitSmallDirectHeatExchanger","-1330388999":"AccessCardBlack","-1326019434":"StructureLogicWriter","-1321250424":"StructureLogicWriterSwitch","-1309433134":"StructureWallIron04","-1306628937":"ItemPureIceLiquidVolatiles","-1306415132":"StructureWallLightBattery","-1303038067":"AppliancePlantGeneticAnalyzer","-1301215609":"ItemIronIngot","-1300059018":"StructureSleeperVertical","-1295222317":"Landingpad_2x2CenterPiece01","-1290755415":"SeedBag_Corn","-1280984102":"StructureDigitalValve","-1276379454":"StructureTankConnector","-1274308304":"ItemSuitModCryogenicUpgrade","-1267511065":"ItemKitLandingPadWaypoint","-1264455519":"DynamicGasTankAdvancedOxygen","-1262580790":"ItemBasketBall","-1260618380":"ItemSpacepack","-1256996603":"ItemKitRocketDatalink","-1252983604":"StructureGasSensor","-1251009404":"ItemPureIceCarbonDioxide","-1248429712":"ItemKitTurboVolumePump","-1247674305":"ItemGasFilterNitrousOxide","-1245724402":"StructureChairThickDouble","-1243329828":"StructureWallPaddingArchVent","-1241851179":"ItemKitConsole","-1241256797":"ItemKitBeds","-1240951678":"StructureFrameIron","-1234745580":"ItemDirtyOre","-1230658883":"StructureLargeDirectHeatExchangeGastoGas","-1219128491":"ItemSensorProcessingUnitOreScanner","-1218579821":"StructurePictureFrameThickPortraitSmall","-1217998945":"ItemGasFilterOxygenL","-1216167727":"Landingpad_LiquidConnectorInwardPiece","-1214467897":"ItemWreckageStructureWeatherStation008","-1208890208":"ItemPlantThermogenic_Creative","-1198702771":"ItemRocketScanningHead","-1196981113":"StructureCableStraightBurnt","-1193543727":"ItemHydroponicTray","-1185552595":"ItemCannedRicePudding","-1183969663":"StructureInLineTankLiquid1x2","-1182923101":"StructureInteriorDoorTriangle","-1181922382":"ItemKitElectronicsPrinter","-1178961954":"StructureWaterBottleFiller","-1177469307":"StructureWallVent","-1176140051":"ItemSensorLenses","-1174735962":"ItemSoundCartridgeLeads","-1169014183":"StructureMediumConvectionRadiatorLiquid","-1168199498":"ItemKitFridgeBig","-1166461357":"ItemKitPipeLiquid","-1161662836":"StructureWallFlatCornerTriangleFlat","-1160020195":"StructureLogicMathUnary","-1159179557":"ItemPlantEndothermic_Creative","-1154200014":"ItemSensorProcessingUnitCelestialScanner","-1152812099":"StructureChairRectangleDouble","-1152261938":"ItemGasCanisterOxygen","-1150448260":"ItemPureIceOxygen","-1149857558":"StructureBackPressureRegulator","-1146760430":"StructurePictureFrameThinMountLandscapeLarge","-1141760613":"StructureMediumRadiatorLiquid","-1136173965":"ApplianceMicrowave","-1134459463":"ItemPipeGasMixer","-1134148135":"CircuitboardModeControl","-1129453144":"StructureActiveVent","-1126688298":"StructureWallPaddedArchCorner","-1125641329":"StructurePlanter","-1125305264":"StructureBatteryMedium","-1117581553":"ItemHorticultureBelt","-1116110181":"CartridgeMedicalAnalyser","-1113471627":"StructureCompositeFloorGrating3","-1108244510":"ItemPlainCake","-1104478996":"ItemWreckageStructureWeatherStation004","-1103727120":"StructureCableFuse1k","-1102977898":"WeaponTorpedo","-1102403554":"StructureWallPaddingThin","-1100218307":"Landingpad_GasConnectorOutwardPiece","-1094868323":"AppliancePlantGeneticSplicer","-1093860567":"StructureMediumRocketGasFuelTank","-1088008720":"StructureStairs4x2Rails","-1081797501":"StructureShowerPowered","-1076892658":"ItemCookedMushroom","-1068925231":"ItemGlasses","-1068629349":"KitchenTableSimpleTall","-1067319543":"ItemGasFilterOxygenM","-1065725831":"StructureTransformerMedium","-1061945368":"ItemKitDynamicCanister","-1061510408":"ItemEmergencyPickaxe","-1057658015":"ItemWheat","-1056029600":"ItemEmergencyArcWelder","-1055451111":"ItemGasFilterOxygenInfinite","-1051805505":"StructureLiquidTurboVolumePump","-1044933269":"ItemPureIceLiquidHydrogen","-1032590967":"StructureCompositeCladdingAngledCornerInnerLongR","-1032513487":"StructureAreaPowerControlReversed","-1022714809":"StructureChuteOutlet","-1022693454":"ItemKitHarvie","-1014695176":"ItemGasCanisterFuel","-1011701267":"StructureCompositeWall04","-1009150565":"StructureSorter","-999721119":"StructurePipeLabel","-999714082":"ItemCannedEdamame","-998592080":"ItemTomato","-983091249":"ItemCobaltOre","-981223316":"StructureCableCorner4HBurnt","-976273247":"Landingpad_StraightPiece01","-975966237":"StructureMediumRadiator","-971920158":"ItemDynamicScrubber","-965741795":"StructureCondensationValve","-958884053":"StructureChuteUmbilicalMale","-945806652":"ItemKitElevator","-934345724":"StructureSolarPanelReinforced","-932335800":"ItemKitRocketTransformerSmall","-932136011":"CartridgeConfiguration","-929742000":"ItemSilverIngot","-927931558":"ItemKitHydroponicAutomated","-924678969":"StructureSmallTableRectangleSingle","-919745414":"ItemWreckageStructureWeatherStation005","-916518678":"ItemSilverOre","-913817472":"StructurePipeTJunction","-913649823":"ItemPickaxe","-906521320":"ItemPipeLiquidRadiator","-899013427":"StructurePortablesConnector","-895027741":"StructureCompositeFloorGrating2","-890946730":"StructureTransformerSmall","-889269388":"StructureCableCorner","-876560854":"ItemKitChuteUmbilical","-874791066":"ItemPureIceSteam","-869869491":"ItemBeacon","-868916503":"ItemKitWindTurbine","-867969909":"ItemKitRocketMiner","-862048392":"StructureStairwellBackPassthrough","-858143148":"StructureWallArch","-857713709":"HumanSkull","-851746783":"StructureLogicMemory","-850484480":"StructureChuteBin","-846838195":"ItemKitWallFlat","-842048328":"ItemActiveVent","-838472102":"ItemFlashlight","-834664349":"ItemWreckageStructureWeatherStation001","-831480639":"ItemBiomass","-831211676":"ItemKitPowerTransmitterOmni","-828056979":"StructureKlaxon","-827912235":"StructureElevatorLevelFront","-827125300":"ItemKitPipeOrgan","-821868990":"ItemKitWallPadded","-817051527":"DynamicGasCanisterFuel","-816454272":"StructureReinforcedCompositeWindowSteel","-815193061":"StructureConsoleLED5","-813426145":"StructureInsulatedInLineTankLiquid1x1","-810874728":"StructureChuteDigitalFlipFlopSplitterLeft","-806986392":"MotherboardRockets","-806743925":"ItemKitFurnace","-800947386":"ItemTropicalPlant","-799849305":"ItemKitLiquidTank","-793837322":"StructureCompositeDoor","-793623899":"StructureStorageLocker","-788672929":"RespawnPoint","-787796599":"ItemInconelIngot","-785498334":"StructurePoweredVentLarge","-784733231":"ItemKitWallGeometry","-783387184":"StructureInsulatedPipeCrossJunction4","-782951720":"StructurePowerConnector","-782453061":"StructureLiquidPipeOneWayValve","-776581573":"StructureWallLargePanelArrow","-775128944":"StructureShower","-772542081":"ItemChemLightBlue","-767867194":"StructureLogicSlotReader","-767685874":"ItemGasCanisterCarbonDioxide","-767597887":"ItemPipeAnalyizer","-761772413":"StructureBatteryChargerSmall","-756587791":"StructureWaterBottleFillerPowered","-749191906":"AppliancePackagingMachine","-744098481":"ItemIntegratedCircuit10","-743968726":"ItemLabeller","-742234680":"StructureCableJunctionH4","-739292323":"StructureWallCooler","-737232128":"StructurePurgeValve","-733500083":"StructureCrateMount","-732720413":"ItemKitDynamicGenerator","-722284333":"StructureConsoleDual","-721824748":"ItemGasFilterOxygen","-709086714":"ItemCookedTomato","-707307845":"ItemCopperOre","-693235651":"StructureLogicTransmitter","-692036078":"StructureValve","-688284639":"StructureCompositeWindowIron","-688107795":"ItemSprayCanBlack","-684020753":"ItemRocketMiningDrillHeadLongTerm","-676435305":"ItemMiningBelt","-668314371":"ItemGasCanisterSmart","-665995854":"ItemFlour","-660451023":"StructureSmallTableRectangleDouble","-659093969":"StructureChuteUmbilicalFemaleSide","-654790771":"ItemSteelIngot","-654756733":"SeedBag_Wheet","-654619479":"StructureRocketTower","-648683847":"StructureGasUmbilicalFemaleSide","-647164662":"StructureLockerSmall","-641491515":"StructureSecurityPrinter","-639306697":"StructureWallSmallPanelsArrow","-638019974":"ItemKitDynamicMKIILiquidCanister","-636127860":"ItemKitRocketManufactory","-633723719":"ItemPureIceVolatiles","-632657357":"ItemGasFilterNitrogenM","-631590668":"StructureCableFuse5k","-628145954":"StructureCableJunction6Burnt","-626563514":"StructureComputer","-624011170":"StructurePressureFedGasEngine","-619745681":"StructureGroundBasedTelescope","-616758353":"ItemKitAdvancedFurnace","-613784254":"StructureHeatExchangerLiquidtoLiquid","-611232514":"StructureChuteJunction","-607241919":"StructureChuteWindow","-598730959":"ItemWearLamp","-598545233":"ItemKitAdvancedPackagingMachine","-597479390":"ItemChemLightGreen","-583103395":"EntityRoosterBrown","-566775170":"StructureLargeExtendableRadiator","-566348148":"StructureMediumHangerDoor","-558953231":"StructureLaunchMount","-554553467":"StructureShortLocker","-551612946":"ItemKitCrateMount","-545234195":"ItemKitCryoTube","-539224550":"StructureSolarPanelDual","-532672323":"ItemPlantSwitchGrass","-532384855":"StructureInsulatedPipeLiquidTJunction","-528695432":"ItemKitSolarPanelBasicReinforced","-525810132":"ItemChemLightRed","-524546923":"ItemKitWallIron","-524289310":"ItemEggCarton","-517628750":"StructureWaterDigitalValve","-507770416":"StructureSmallDirectHeatExchangeLiquidtoLiquid","-504717121":"ItemWirelessBatteryCellExtraLarge","-503738105":"ItemGasFilterPollutantsInfinite","-498464883":"ItemSprayCanBlue","-491247370":"RespawnPointWallMounted","-487378546":"ItemIronSheets","-472094806":"ItemGasCanisterVolatiles","-466050668":"ItemCableCoil","-465741100":"StructureToolManufactory","-463037670":"StructureAdvancedPackagingMachine","-462415758":"Battery_Wireless_cell","-459827268":"ItemBatteryCellLarge","-454028979":"StructureLiquidVolumePump","-453039435":"ItemKitTransformer","-443130773":"StructureVendingMachine","-419758574":"StructurePipeHeater","-417629293":"StructurePipeCrossJunction4","-415420281":"StructureLadder","-412551656":"ItemHardJetpack","-412104504":"CircuitboardCameraDisplay","-404336834":"ItemCopperIngot","-400696159":"ReagentColorOrange","-400115994":"StructureBattery","-399883995":"StructurePipeRadiatorFlat","-387546514":"StructureCompositeCladdingAngledLong","-386375420":"DynamicGasTankAdvanced","-385323479":"WeaponPistolEnergy","-383972371":"ItemFertilizedEgg","-380904592":"ItemRocketMiningDrillHeadIce","-375156130":"Flag_ODA_8m","-374567952":"AccessCardGreen","-367720198":"StructureChairBoothCornerLeft","-366262681":"ItemKitFuselage","-365253871":"ItemSolidFuel","-364868685":"ItemKitSolarPanelReinforced","-355127880":"ItemToolBelt","-351438780":"ItemEmergencyAngleGrinder","-349716617":"StructureCableFuse50k","-348918222":"StructureCompositeCladdingAngledCornerLongR","-348054045":"StructureFiltration","-345383640":"StructureLogicReader","-344968335":"ItemKitMotherShipCore","-342072665":"StructureCamera","-341365649":"StructureCableJunctionHBurnt","-337075633":"MotherboardComms","-332896929":"AccessCardOrange","-327468845":"StructurePowerTransmitterOmni","-324331872":"StructureGlassDoor","-322413931":"DynamicGasCanisterCarbonDioxide","-321403609":"StructureVolumePump","-319510386":"DynamicMKIILiquidCanisterWater","-314072139":"ItemKitRocketBattery","-311170652":"ElectronicPrinterMod","-310178617":"ItemWreckageHydroponicsTray1","-303008602":"ItemKitRocketCelestialTracker","-302420053":"StructureFrameSide","-297990285":"ItemInvarIngot","-291862981":"StructureSmallTableThickSingle","-290196476":"ItemSiliconIngot","-287495560":"StructureLiquidPipeHeater","-261575861":"ItemChocolateCake","-260316435":"StructureStirlingEngine","-259357734":"StructureCompositeCladdingRounded","-256607540":"SMGMagazine","-248475032":"ItemLiquidPipeHeater","-247344692":"StructureArcFurnace","-229808600":"ItemTablet","-214232602":"StructureGovernedGasEngine","-212902482":"StructureStairs4x2RailR","-190236170":"ItemLeadOre","-188177083":"StructureBeacon","-185568964":"ItemGasFilterCarbonDioxideInfinite","-185207387":"ItemLiquidCanisterEmpty","-178893251":"ItemMKIIWireCutters","-177792789":"ItemPlantThermogenic_Genepool1","-177610944":"StructureInsulatedInLineTankGas1x2","-177220914":"StructureCableCornerBurnt","-175342021":"StructureCableJunction","-174523552":"ItemKitLaunchTower","-164622691":"StructureBench3","-161107071":"MotherboardProgrammableChip","-158007629":"ItemSprayCanOrange","-155945899":"StructureWallPaddedCorner","-146200530":"StructureCableStraightH","-137465079":"StructureDockPortSide","-128473777":"StructureCircuitHousing","-127121474":"MotherboardMissionControl","-126038526":"ItemKitSpeaker","-124308857":"StructureLogicReagentReader","-123934842":"ItemGasFilterNitrousOxideInfinite","-121514007":"ItemKitPressureFedGasEngine","-115809132":"StructureCableJunction4HBurnt","-110788403":"ElevatorCarrage","-104908736":"StructureFairingTypeA2","-99091572":"ItemKitPressureFedLiquidEngine","-99064335":"Meteorite","-98995857":"ItemKitArcFurnace","-92778058":"StructureInsulatedPipeCrossJunction","-90898877":"ItemWaterPipeMeter","-86315541":"FireArmSMG","-84573099":"ItemHardsuitHelmet","-82508479":"ItemSolderIngot","-82343730":"CircuitboardGasDisplay","-82087220":"DynamicGenerator","-81376085":"ItemFlowerRed","-78099334":"KitchenTableSimpleShort","-73796547":"ImGuiCircuitboardAirlockControl","-72748982":"StructureInsulatedPipeLiquidCrossJunction6","-69685069":"StructureCompositeCladdingAngledCorner","-65087121":"StructurePowerTransmitter","-57608687":"ItemFrenchFries","-53151617":"StructureConsoleLED1x2","-48342840":"UniformMarine","-41519077":"Battery_Wireless_cell_Big","-39359015":"StructureCableCornerH","-38898376":"ItemPipeCowl","-37454456":"StructureStairwellFrontLeft","-37302931":"StructureWallPaddedWindowThin","-31273349":"StructureInsulatedTankConnector","-27284803":"ItemKitInsulatedPipeUtility","-21970188":"DynamicLight","-21225041":"ItemKitBatteryLarge","-19246131":"StructureSmallTableThickDouble","-9559091":"ItemAmmoBox","-9555593":"StructurePipeLiquidCrossJunction4","-8883951":"DynamicGasCanisterRocketFuel","-1755356":"ItemPureIcePollutant","-997763":"ItemWreckageLargeExtendableRadiator01","-492611":"StructureSingleBed","2393826":"StructureCableCorner3HBurnt","7274344":"StructureAutoMinerSmall","8709219":"CrateMkII","8804422":"ItemGasFilterWaterM","8846501":"StructureWallPaddedNoBorder","15011598":"ItemGasFilterVolatiles","15829510":"ItemMiningCharge","19645163":"ItemKitEngineSmall","21266291":"StructureHeatExchangerGastoGas","23052817":"StructurePressurantValve","24258244":"StructureWallHeater","24786172":"StructurePassiveLargeRadiatorLiquid","26167457":"StructureWallPlating","30686509":"ItemSprayCanPurple","30727200":"DynamicGasCanisterNitrousOxide","35149429":"StructureInLineTankGas1x2","38555961":"ItemSteelSheets","42280099":"ItemGasCanisterEmpty","45733800":"ItemWreckageWallCooler2","62768076":"ItemPumpkinPie","63677771":"ItemGasFilterPollutantsM","73728932":"StructurePipeStraight","77421200":"ItemKitDockingPort","81488783":"CartridgeTracker","94730034":"ToyLuna","98602599":"ItemWreckageTurbineGenerator2","101488029":"StructurePowerUmbilicalFemale","106953348":"DynamicSkeleton","107741229":"ItemWaterBottle","108086870":"DynamicGasCanisterVolatiles","110184667":"StructureCompositeCladdingRoundedCornerInner","111280987":"ItemTerrainManipulator","118685786":"FlareGun","119096484":"ItemKitPlanter","120807542":"ReagentColorGreen","121951301":"DynamicGasCanisterNitrogen","123504691":"ItemKitPressurePlate","124499454":"ItemKitLogicSwitch","139107321":"StructureCompositeCladdingSpherical","141535121":"ItemLaptop","142831994":"ApplianceSeedTray","146051619":"Landingpad_TaxiPieceHold","147395155":"StructureFuselageTypeC5","148305004":"ItemKitBasket","150135861":"StructureRocketCircuitHousing","152378047":"StructurePipeCrossJunction6","152751131":"ItemGasFilterNitrogenInfinite","155214029":"StructureStairs4x2RailL","155856647":"NpcChick","156348098":"ItemWaspaloyIngot","158502707":"StructureReinforcedWallPaddedWindowThin","159886536":"ItemKitWaterBottleFiller","162553030":"ItemEmergencyWrench","163728359":"StructureChuteDigitalFlipFlopSplitterRight","168307007":"StructureChuteStraight","168615924":"ItemKitDoor","169888054":"ItemWreckageAirConditioner2","170818567":"Landingpad_GasCylinderTankPiece","170878959":"ItemKitStairs","173023800":"ItemPlantSampler","176446172":"ItemAlienMushroom","178422810":"ItemKitSatelliteDish","178472613":"StructureRocketEngineTiny","179694804":"StructureWallPaddedNoBorderCorner","182006674":"StructureShelfMedium","195298587":"StructureExpansionValve","195442047":"ItemCableFuse","197243872":"ItemKitRoverMKI","197293625":"DynamicGasCanisterWater","201215010":"ItemAngleGrinder","205837861":"StructureCableCornerH4","205916793":"ItemEmergencySpaceHelmet","206848766":"ItemKitGovernedGasRocketEngine","209854039":"StructurePressureRegulator","212919006":"StructureCompositeCladdingCylindrical","215486157":"ItemCropHay","220644373":"ItemKitLogicProcessor","221058307":"AutolathePrinterMod","225377225":"StructureChuteOverflow","226055671":"ItemLiquidPipeAnalyzer","226410516":"ItemGoldIngot","231903234":"KitStructureCombustionCentrifuge","234601764":"ItemChocolateBar","235361649":"ItemExplosive","235638270":"StructureConsole","238631271":"ItemPassiveVent","240174650":"ItemMKIIAngleGrinder","247238062":"Handgun","248893646":"PassiveSpeaker","249073136":"ItemKitBeacon","252561409":"ItemCharcoal","255034731":"StructureSuitStorage","258339687":"ItemCorn","262616717":"StructurePipeLiquidTJunction","264413729":"StructureLogicBatchReader","265720906":"StructureDeepMiner","266099983":"ItemEmergencyScrewdriver","266654416":"ItemFilterFern","268421361":"StructureCableCorner4Burnt","271315669":"StructureFrameCornerCut","272136332":"StructureTankSmallInsulated","281380789":"StructureCableFuse100k","288111533":"ItemKitIceCrusher","291368213":"ItemKitPowerTransmitter","291524699":"StructurePipeLiquidCrossJunction6","293581318":"ItemKitLandingPadBasic","295678685":"StructureInsulatedPipeLiquidStraight","298130111":"StructureWallFlatCornerSquare","299189339":"ItemHat","309693520":"ItemWaterPipeDigitalValve","311593418":"SeedBag_Mushroom","318437449":"StructureCableCorner3Burnt","321604921":"StructureLogicSwitch2","322782515":"StructureOccupancySensor","323957548":"ItemKitSDBHopper","324791548":"ItemMKIIDrill","324868581":"StructureCompositeFloorGrating","326752036":"ItemKitSleeper","334097180":"EntityChickenBrown","335498166":"StructurePassiveVent","336213101":"StructureAutolathe","337035771":"AccessCardKhaki","337416191":"StructureBlastDoor","337505889":"ItemKitWeatherStation","340210934":"StructureStairwellFrontRight","341030083":"ItemKitGrowLight","347154462":"StructurePictureFrameThickMountLandscapeSmall","350726273":"RoverCargo","363303270":"StructureInsulatedPipeLiquidCrossJunction4","374891127":"ItemHardBackpack","375541286":"ItemKitDynamicLiquidCanister","377745425":"ItemKitGasGenerator","378084505":"StructureBlocker","379750958":"StructurePressureFedLiquidEngine","386754635":"ItemPureIceNitrous","386820253":"StructureWallSmallPanelsMonoChrome","388774906":"ItemMKIIDuctTape","391453348":"ItemWreckageStructureRTG1","391769637":"ItemPipeLabel","396065382":"DynamicGasCanisterPollutants","399074198":"NpcChicken","399661231":"RailingElegant01","406745009":"StructureBench1","412924554":"ItemAstroloyIngot","416897318":"ItemGasFilterCarbonDioxideM","418958601":"ItemPillStun","429365598":"ItemKitCrate","431317557":"AccessCardPink","433184168":"StructureWaterPipeMeter","434786784":"Robot","434875271":"StructureChuteValve","435685051":"StructurePipeAnalysizer","436888930":"StructureLogicBatchSlotReader","439026183":"StructureSatelliteDish","443849486":"StructureIceCrusher","443947415":"PipeBenderMod","446212963":"StructureAdvancedComposter","450164077":"ItemKitLargeDirectHeatExchanger","452636699":"ItemKitInsulatedPipe","457286516":"ItemCocoaPowder","459843265":"AccessCardPurple","465267979":"ItemGasFilterNitrousOxideL","465816159":"StructurePipeCowl","467225612":"StructureSDBHopperAdvanced","469451637":"StructureCableJunctionH","470636008":"ItemHEMDroidRepairKit","479850239":"ItemKitRocketCargoStorage","482248766":"StructureLiquidPressureRegulator","488360169":"SeedBag_Switchgrass","489494578":"ItemKitLadder","491845673":"StructureLogicButton","495305053":"ItemRTG","496830914":"ItemKitAIMeE","498481505":"ItemSprayCanWhite","502280180":"ItemElectrumIngot","502555944":"MotherboardLogic","505924160":"StructureStairwellBackLeft","513258369":"ItemKitAccessBridge","518925193":"StructureRocketTransformerSmall","519913639":"DynamicAirConditioner","529137748":"ItemKitToolManufactory","529996327":"ItemKitSign","534213209":"StructureCompositeCladdingSphericalCap","541621589":"ItemPureIceLiquidOxygen","542009679":"ItemWreckageStructureWeatherStation003","543645499":"StructureInLineTankLiquid1x1","544617306":"ItemBatteryCellNuclear","545034114":"ItemCornSoup","545937711":"StructureAdvancedFurnace","546002924":"StructureLogicRocketUplink","554524804":"StructureLogicDial","555215790":"StructureLightLongWide","568800213":"StructureProximitySensor","568932536":"AccessCardYellow","576516101":"StructureDiodeSlide","578078533":"ItemKitSecurityPrinter","578182956":"ItemKitCentrifuge","587726607":"DynamicHydroponics","595478589":"ItemKitPipeUtilityLiquid","600133846":"StructureCompositeFloorGrating4","605357050":"StructureCableStraight","608607718":"StructureLiquidTankSmallInsulated","611181283":"ItemKitWaterPurifier","617773453":"ItemKitLiquidTankInsulated","619828719":"StructureWallSmallPanelsAndHatch","632853248":"ItemGasFilterNitrogen","635208006":"ReagentColorYellow","635995024":"StructureWallPadding","636112787":"ItemKitPassthroughHeatExchanger","648608238":"StructureChuteDigitalValveLeft","653461728":"ItemRocketMiningDrillHeadHighSpeedIce","656649558":"ItemWreckageStructureWeatherStation007","658916791":"ItemRice","662053345":"ItemPlasticSheets","665194284":"ItemKitTransformerSmall","667597982":"StructurePipeLiquidStraight","675686937":"ItemSpaceIce","678483886":"ItemRemoteDetonator","680051921":"ItemCocoaTree","682546947":"ItemKitAirlockGate","687940869":"ItemScrewdriver","688734890":"ItemTomatoSoup","690945935":"StructureCentrifuge","697908419":"StructureBlockBed","700133157":"ItemBatteryCell","714830451":"ItemSpaceHelmet","718343384":"StructureCompositeWall02","721251202":"ItemKitRocketCircuitHousing","724776762":"ItemKitResearchMachine","731250882":"ItemElectronicParts","735858725":"ItemKitShower","750118160":"StructureUnloader","750176282":"ItemKitRailing","751887598":"StructureFridgeSmall","755048589":"DynamicScrubber","755302726":"ItemKitEngineLarge","771439840":"ItemKitTank","777684475":"ItemLiquidCanisterSmart","782529714":"StructureWallArchTwoTone","789015045":"ItemAuthoringTool","789494694":"WeaponEnergy","791746840":"ItemCerealBar","792686502":"StructureLargeDirectHeatExchangeLiquidtoLiquid","797794350":"StructureLightLong","798439281":"StructureWallIron03","799323450":"ItemPipeValve","801677497":"StructureConsoleMonitor","806513938":"StructureRover","808389066":"StructureRocketAvionics","810053150":"UniformOrangeJumpSuit","813146305":"StructureSolidFuelGenerator","817945707":"Landingpad_GasConnectorInwardPiece","826144419":"StructureElevatorShaft","833912764":"StructureTransformerMediumReversed","839890807":"StructureFlatBench","839924019":"ItemPowerConnector","844391171":"ItemKitHorizontalAutoMiner","844961456":"ItemKitSolarPanelBasic","845176977":"ItemSprayCanBrown","847430620":"ItemKitLargeExtendableRadiator","847461335":"StructureInteriorDoorPadded","849148192":"ItemKitRecycler","850558385":"StructureCompositeCladdingAngledCornerLong","851290561":"ItemPlantEndothermic_Genepool1","855694771":"CircuitboardDoorControl","856108234":"ItemCrowbar","860793245":"ItemChocolateCerealBar","861674123":"Rover_MkI_build_states","871432335":"AppliancePlantGeneticStabilizer","871811564":"ItemRoadFlare","872720793":"CartridgeGuide","873418029":"StructureLogicSorter","876108549":"StructureLogicRocketDownlink","879058460":"StructureSign1x1","882301399":"ItemKitLocker","882307910":"StructureCompositeFloorGratingOpenRotated","887383294":"StructureWaterPurifier","890106742":"ItemIgniter","892110467":"ItemFern","893514943":"ItemBreadLoaf","894390004":"StructureCableJunction5","897176943":"ItemInsulation","898708250":"StructureWallFlatCornerRound","900366130":"ItemHardMiningBackPack","902565329":"ItemDirtCanister","908320837":"StructureSign2x1","912176135":"CircuitboardAirlockControl","912453390":"Landingpad_BlankPiece","920411066":"ItemKitPipeRadiator","929022276":"StructureLogicMinMax","930865127":"StructureSolarPanel45Reinforced","938836756":"StructurePoweredVent","944530361":"ItemPureIceHydrogen","944685608":"StructureHeatExchangeLiquidtoGas","947705066":"StructureCompositeCladdingAngledCornerInnerLongL","950004659":"StructurePictureFrameThickMountLandscapeLarge","955744474":"StructureTankSmallAir","958056199":"StructureHarvie","958476921":"StructureFridgeBig","964043875":"ItemKitAirlock","966959649":"EntityRoosterBlack","969522478":"ItemKitSorter","976699731":"ItemEmergencyCrowbar","977899131":"Landingpad_DiagonalPiece01","980054869":"ReagentColorBlue","980469101":"StructureCableCorner3","982514123":"ItemNVG","989835703":"StructurePlinth","995468116":"ItemSprayCanYellow","997453927":"StructureRocketCelestialTracker","998653377":"ItemHighVolumeGasCanisterEmpty","1005397063":"ItemKitLogicTransmitter","1005491513":"StructureIgniter","1005571172":"SeedBag_Potato","1005843700":"ItemDataDisk","1008295833":"ItemBatteryChargerSmall","1010807532":"EntityChickenWhite","1013244511":"ItemKitStacker","1013514688":"StructureTankSmall","1013818348":"ItemEmptyCan","1021053608":"ItemKitTankInsulated","1025254665":"ItemKitChute","1033024712":"StructureFuselageTypeA1","1036015121":"StructureCableAnalysizer","1036780772":"StructureCableJunctionH6","1037507240":"ItemGasFilterVolatilesM","1041148999":"ItemKitPortablesConnector","1048813293":"StructureFloorDrain","1049735537":"StructureWallGeometryStreight","1054059374":"StructureTransformerSmallReversed","1055173191":"ItemMiningDrill","1058547521":"ItemConstantanIngot","1061164284":"StructureInsulatedPipeCrossJunction6","1070143159":"Landingpad_CenterPiece01","1070427573":"StructureHorizontalAutoMiner","1072914031":"ItemDynamicAirCon","1073631646":"ItemMarineHelmet","1076425094":"StructureDaylightSensor","1077151132":"StructureCompositeCladdingCylindricalPanel","1083675581":"ItemRocketMiningDrillHeadMineral","1088892825":"ItemKitSuitStorage","1094895077":"StructurePictureFrameThinMountPortraitLarge","1098900430":"StructureLiquidTankBig","1101296153":"Landingpad_CrossPiece","1101328282":"CartridgePlantAnalyser","1103972403":"ItemSiliconOre","1108423476":"ItemWallLight","1112047202":"StructureCableJunction4","1118069417":"ItemPillHeal","1139887531":"SeedBag_Cocoa","1143639539":"StructureMediumRocketLiquidFuelTank","1151864003":"StructureCargoStorageMedium","1154745374":"WeaponRifleEnergy","1155865682":"StructureSDBSilo","1159126354":"Flag_ODA_4m","1161510063":"ItemCannedPowderedEggs","1162905029":"ItemKitFurniture","1165997963":"StructureGasGenerator","1167659360":"StructureChair","1171987947":"StructureWallPaddedArchLightFittingTop","1172114950":"StructureShelf","1174360780":"ApplianceDeskLampRight","1181371795":"ItemKitRegulator","1182412869":"ItemKitCompositeFloorGrating","1182510648":"StructureWallArchPlating","1183203913":"StructureWallPaddedCornerThin","1195820278":"StructurePowerTransmitterReceiver","1207939683":"ItemPipeMeter","1212777087":"StructurePictureFrameThinPortraitLarge","1213495833":"StructureSleeperLeft","1217489948":"ItemIce","1220484876":"StructureLogicSwitch","1220870319":"StructureLiquidUmbilicalFemaleSide","1222286371":"ItemKitAtmospherics","1224819963":"ItemChemLightYellow","1225836666":"ItemIronFrames","1228794916":"CompositeRollCover","1237302061":"StructureCompositeWall","1238905683":"StructureCombustionCentrifuge","1253102035":"ItemVolatiles","1254383185":"HandgunMagazine","1255156286":"ItemGasFilterVolatilesL","1258187304":"ItemMiningDrillPneumatic","1260651529":"StructureSmallTableDinnerSingle","1260918085":"ApplianceReagentProcessor","1269458680":"StructurePressurePlateMedium","1277828144":"ItemPumpkin","1277979876":"ItemPumpkinSoup","1280378227":"StructureTankBigInsulated","1281911841":"StructureWallArchCornerTriangle","1282191063":"StructureTurbineGenerator","1286441942":"StructurePipeIgniter","1287324802":"StructureWallIron","1289723966":"ItemSprayGun","1293995736":"ItemKitSolidGenerator","1298920475":"StructureAccessBridge","1305252611":"StructurePipeOrgan","1307165496":"StructureElectronicsPrinter","1308115015":"StructureFuselageTypeA4","1310303582":"StructureSmallDirectHeatExchangeGastoGas","1310794736":"StructureTurboVolumePump","1312166823":"ItemChemLightWhite","1327248310":"ItemMilk","1328210035":"StructureInsulatedPipeCrossJunction3","1330754486":"StructureShortCornerLocker","1331802518":"StructureTankConnectorLiquid","1344257263":"ItemSprayCanPink","1344368806":"CircuitboardGraphDisplay","1344576960":"ItemWreckageStructureWeatherStation006","1344773148":"ItemCookedCorn","1353449022":"ItemCookedSoybean","1360330136":"StructureChuteCorner","1360925836":"DynamicGasCanisterOxygen","1363077139":"StructurePassiveVentInsulated","1365789392":"ApplianceChemistryStation","1366030599":"ItemPipeIgniter","1371786091":"ItemFries","1382098999":"StructureSleeperVerticalDroid","1385062886":"ItemArcWelder","1387403148":"ItemSoyOil","1396305045":"ItemKitRocketAvionics","1399098998":"ItemMarineBodyArmor","1405018945":"StructureStairs4x2","1406656973":"ItemKitBattery","1412338038":"StructureLargeDirectHeatExchangeGastoLiquid","1412428165":"AccessCardBrown","1415396263":"StructureCapsuleTankLiquid","1415443359":"StructureLogicBatchWriter","1420719315":"StructureCondensationChamber","1423199840":"SeedBag_Pumpkin","1428477399":"ItemPureIceLiquidNitrous","1432512808":"StructureFrame","1433754995":"StructureWaterBottleFillerBottom","1436121888":"StructureLightRoundSmall","1440678625":"ItemRocketMiningDrillHeadHighSpeedMineral","1440775434":"ItemMKIICrowbar","1441767298":"StructureHydroponicsStation","1443059329":"StructureCryoTubeHorizontal","1452100517":"StructureInsulatedInLineTankLiquid1x2","1453961898":"ItemKitPassiveLargeRadiatorLiquid","1459985302":"ItemKitReinforcedWindows","1464424921":"ItemWreckageStructureWeatherStation002","1464854517":"StructureHydroponicsTray","1467558064":"ItemMkIIToolbelt","1468249454":"StructureOverheadShortLocker","1470787934":"ItemMiningBeltMKII","1473807953":"StructureTorpedoRack","1485834215":"StructureWallIron02","1492930217":"StructureWallLargePanel","1512322581":"ItemKitLogicCircuit","1514393921":"ItemSprayCanRed","1514476632":"StructureLightRound","1517856652":"Fertilizer","1529453938":"StructurePowerUmbilicalMale","1530764483":"ItemRocketMiningDrillHeadDurable","1531087544":"DecayedFood","1531272458":"LogicStepSequencer8","1533501495":"ItemKitDynamicGasTankAdvanced","1535854074":"ItemWireCutters","1541734993":"StructureLadderEnd","1544275894":"ItemGrenade","1545286256":"StructureCableJunction5Burnt","1559586682":"StructurePlatformLadderOpen","1570931620":"StructureTraderWaypoint","1571996765":"ItemKitLiquidUmbilical","1574321230":"StructureCompositeWall03","1574688481":"ItemKitRespawnPointWallMounted","1579842814":"ItemHastelloyIngot","1580412404":"StructurePipeOneWayValve","1585641623":"StructureStackerReverse","1587787610":"ItemKitEvaporationChamber","1588896491":"ItemGlassSheets","1590330637":"StructureWallPaddedArch","1592905386":"StructureLightRoundAngled","1602758612":"StructureWallGeometryT","1603046970":"ItemKitElectricUmbilical","1605130615":"Lander","1606989119":"CartridgeNetworkAnalyser","1618019559":"CircuitboardAirControl","1622183451":"StructureUprightWindTurbine","1622567418":"StructureFairingTypeA1","1625214531":"ItemKitWallArch","1628087508":"StructurePipeLiquidCrossJunction3","1632165346":"StructureGasTankStorage","1633074601":"CircuitboardHashDisplay","1633663176":"CircuitboardAdvAirlockControl","1635000764":"ItemGasFilterCarbonDioxide","1635864154":"StructureWallFlat","1640720378":"StructureChairBoothMiddle","1649708822":"StructureWallArchArrow","1654694384":"StructureInsulatedPipeLiquidCrossJunction5","1657691323":"StructureLogicMath","1661226524":"ItemKitFridgeSmall","1661270830":"ItemScanner","1661941301":"ItemEmergencyToolBelt","1668452680":"StructureEmergencyButton","1668815415":"ItemKitAutoMinerSmall","1672275150":"StructureChairBacklessSingle","1674576569":"ItemPureIceLiquidNitrogen","1677018918":"ItemEvaSuit","1684488658":"StructurePictureFrameThinPortraitSmall","1687692899":"StructureLiquidDrain","1691898022":"StructureLiquidTankStorage","1696603168":"StructurePipeRadiator","1697196770":"StructureSolarPanelFlatReinforced","1700018136":"ToolPrinterMod","1701593300":"StructureCableJunctionH5Burnt","1701764190":"ItemKitFlagODA","1709994581":"StructureWallSmallPanelsTwoTone","1712822019":"ItemFlowerYellow","1713710802":"StructureInsulatedPipeLiquidCorner","1715917521":"ItemCookedCondensedMilk","1717593480":"ItemGasSensor","1722785341":"ItemAdvancedTablet","1724793494":"ItemCoalOre","1730165908":"EntityChick","1734723642":"StructureLiquidUmbilicalFemale","1736080881":"StructureAirlockGate","1738236580":"CartridgeOreScannerColor","1750375230":"StructureBench4","1751355139":"StructureCompositeCladdingSphericalCorner","1753647154":"ItemKitRocketScanner","1757673317":"ItemAreaPowerControl","1758427767":"ItemIronOre","1762696475":"DeviceStepUnit","1769527556":"StructureWallPaddedThinNoBorderCorner","1779979754":"ItemKitWindowShutter","1781051034":"StructureRocketManufactory","1783004244":"SeedBag_Soybean","1791306431":"ItemEmergencyEvaSuit","1794588890":"StructureWallArchCornerRound","1800622698":"ItemCoffeeMug","1811979158":"StructureAngledBench","1812364811":"StructurePassiveLiquidDrain","1817007843":"ItemKitLandingPadAtmos","1817645803":"ItemRTGSurvival","1818267386":"StructureInsulatedInLineTankGas1x1","1819167057":"ItemPlantThermogenic_Genepool2","1822736084":"StructureLogicSelect","1824284061":"ItemGasFilterNitrousOxideM","1825212016":"StructureSmallDirectHeatExchangeLiquidtoGas","1827215803":"ItemKitRoverFrame","1830218956":"ItemNickelOre","1835796040":"StructurePictureFrameThinMountPortraitSmall","1840108251":"H2Combustor","1845441951":"Flag_ODA_10m","1847265835":"StructureLightLongAngled","1848735691":"StructurePipeLiquidCrossJunction","1849281546":"ItemCookedPumpkin","1849974453":"StructureLiquidValve","1853941363":"ApplianceTabletDock","1854404029":"StructureCableJunction6HBurnt","1862001680":"ItemMKIIWrench","1871048978":"ItemAdhesiveInsulation","1876847024":"ItemGasFilterCarbonDioxideL","1880134612":"ItemWallHeater","1898243702":"StructureNitrolyzer","1913391845":"StructureLargeSatelliteDish","1915566057":"ItemGasFilterPollutants","1918456047":"ItemSprayCanKhaki","1921918951":"ItemKitPumpedLiquidEngine","1922506192":"StructurePowerUmbilicalFemaleSide","1924673028":"ItemSoybean","1926651727":"StructureInsulatedPipeLiquidCrossJunction","1927790321":"ItemWreckageTurbineGenerator3","1928991265":"StructurePassthroughHeatExchangerGasToLiquid","1929046963":"ItemPotato","1931412811":"StructureCableCornerHBurnt","1932952652":"KitSDBSilo","1934508338":"ItemKitPipeUtility","1935945891":"ItemKitInteriorDoors","1938254586":"StructureCryoTube","1939061729":"StructureReinforcedWallPaddedWindow","1941079206":"DynamicCrate","1942143074":"StructureLogicGate","1944485013":"StructureDiode","1944858936":"StructureChairBacklessDouble","1945930022":"StructureBatteryCharger","1947944864":"StructureFurnace","1949076595":"ItemLightSword","1951126161":"ItemKitLiquidRegulator","1951525046":"StructureCompositeCladdingRoundedCorner","1959564765":"ItemGasFilterPollutantsL","1960952220":"ItemKitSmallSatelliteDish","1968102968":"StructureSolarPanelFlat","1968371847":"StructureDrinkingFountain","1969189000":"ItemJetpackBasic","1969312177":"ItemKitEngineMedium","1979212240":"StructureWallGeometryCorner","1981698201":"StructureInteriorDoorPaddedThin","1986658780":"StructureWaterBottleFillerPoweredBottom","1988118157":"StructureLiquidTankSmall","1990225489":"ItemKitComputer","1997212478":"StructureWeatherStation","1997293610":"ItemKitLogicInputOutput","1997436771":"StructureCompositeCladdingPanel","1998354978":"StructureElevatorShaftIndustrial","1998377961":"ReagentColorRed","1998634960":"Flag_ODA_6m","1999523701":"StructureAreaPowerControl","2004969680":"ItemGasFilterWaterL","2009673399":"ItemDrill","2011191088":"ItemFlagSmall","2013539020":"ItemCookedRice","2014252591":"StructureRocketScanner","2015439334":"ItemKitPoweredVent","2020180320":"CircuitboardSolarControl","2024754523":"StructurePipeRadiatorFlatLiquid","2024882687":"StructureWallPaddingLightFitting","2027713511":"StructureReinforcedCompositeWindow","2032027950":"ItemKitRocketLiquidFuelTank","2035781224":"StructureEngineMountTypeA1","2036225202":"ItemLiquidDrain","2037427578":"ItemLiquidTankStorage","2038427184":"StructurePipeCrossJunction3","2042955224":"ItemPeaceLily","2043318949":"PortableSolarPanel","2044798572":"ItemMushroom","2049879875":"StructureStairwellNoDoors","2056377335":"StructureWindowShutter","2057179799":"ItemKitHydroponicStation","2060134443":"ItemCableCoilHeavy","2060648791":"StructureElevatorLevelIndustrial","2066977095":"StructurePassiveLargeRadiatorGas","2067655311":"ItemKitInsulatedLiquidPipe","2072805863":"StructureLiquidPipeRadiator","2077593121":"StructureLogicHashGen","2079959157":"AccessCardWhite","2085762089":"StructureCableStraightHBurnt","2087628940":"StructureWallPaddedWindow","2096189278":"StructureLogicMirror","2097419366":"StructureWallFlatCornerTriangle","2099900163":"StructureBackLiquidPressureRegulator","2102454415":"StructureTankSmallFuel","2102803952":"ItemEmergencyWireCutters","2104106366":"StructureGasMixer","2109695912":"StructureCompositeFloorGratingOpen","2109945337":"ItemRocketMiningDrillHead","2111910840":"ItemSugar","2130739600":"DynamicMKIILiquidCanisterEmpty","2131916219":"ItemSpaceOre","2133035682":"ItemKitStandardChute","2134172356":"StructureInsulatedPipeStraight","2134647745":"ItemLeadIngot","2145068424":"ItemGasCanisterNitrogen"},"structures":["CompositeRollCover","DeviceLfoVolume","DeviceStepUnit","Flag_ODA_10m","Flag_ODA_4m","Flag_ODA_6m","Flag_ODA_8m","H2Combustor","KitchenTableShort","KitchenTableSimpleShort","KitchenTableSimpleTall","KitchenTableTall","Landingpad_2x2CenterPiece01","Landingpad_BlankPiece","Landingpad_CenterPiece01","Landingpad_CrossPiece","Landingpad_DataConnectionPiece","Landingpad_DiagonalPiece01","Landingpad_GasConnectorInwardPiece","Landingpad_GasConnectorOutwardPiece","Landingpad_GasCylinderTankPiece","Landingpad_LiquidConnectorInwardPiece","Landingpad_LiquidConnectorOutwardPiece","Landingpad_StraightPiece01","Landingpad_TaxiPieceCorner","Landingpad_TaxiPieceHold","Landingpad_TaxiPieceStraight","Landingpad_ThreshholdPiece","LogicStepSequencer8","PassiveSpeaker","RailingElegant01","RailingElegant02","RailingIndustrial02","RespawnPoint","RespawnPointWallMounted","Rover_MkI_build_states","StopWatch","StructureAccessBridge","StructureActiveVent","StructureAdvancedComposter","StructureAdvancedFurnace","StructureAdvancedPackagingMachine","StructureAirConditioner","StructureAirlock","StructureAirlockGate","StructureAngledBench","StructureArcFurnace","StructureAreaPowerControl","StructureAreaPowerControlReversed","StructureAutoMinerSmall","StructureAutolathe","StructureAutomatedOven","StructureBackLiquidPressureRegulator","StructureBackPressureRegulator","StructureBasketHoop","StructureBattery","StructureBatteryCharger","StructureBatteryChargerSmall","StructureBatteryLarge","StructureBatteryMedium","StructureBatterySmall","StructureBeacon","StructureBench","StructureBench1","StructureBench2","StructureBench3","StructureBench4","StructureBlastDoor","StructureBlockBed","StructureBlocker","StructureCableAnalysizer","StructureCableCorner","StructureCableCorner3","StructureCableCorner3Burnt","StructureCableCorner3HBurnt","StructureCableCorner4","StructureCableCorner4Burnt","StructureCableCorner4HBurnt","StructureCableCornerBurnt","StructureCableCornerH","StructureCableCornerH3","StructureCableCornerH4","StructureCableCornerHBurnt","StructureCableFuse100k","StructureCableFuse1k","StructureCableFuse50k","StructureCableFuse5k","StructureCableJunction","StructureCableJunction4","StructureCableJunction4Burnt","StructureCableJunction4HBurnt","StructureCableJunction5","StructureCableJunction5Burnt","StructureCableJunction6","StructureCableJunction6Burnt","StructureCableJunction6HBurnt","StructureCableJunctionBurnt","StructureCableJunctionH","StructureCableJunctionH4","StructureCableJunctionH5","StructureCableJunctionH5Burnt","StructureCableJunctionH6","StructureCableJunctionHBurnt","StructureCableStraight","StructureCableStraightBurnt","StructureCableStraightH","StructureCableStraightHBurnt","StructureCamera","StructureCapsuleTankGas","StructureCapsuleTankLiquid","StructureCargoStorageMedium","StructureCargoStorageSmall","StructureCentrifuge","StructureChair","StructureChairBacklessDouble","StructureChairBacklessSingle","StructureChairBoothCornerLeft","StructureChairBoothMiddle","StructureChairRectangleDouble","StructureChairRectangleSingle","StructureChairThickDouble","StructureChairThickSingle","StructureChuteBin","StructureChuteCorner","StructureChuteDigitalFlipFlopSplitterLeft","StructureChuteDigitalFlipFlopSplitterRight","StructureChuteDigitalValveLeft","StructureChuteDigitalValveRight","StructureChuteFlipFlopSplitter","StructureChuteInlet","StructureChuteJunction","StructureChuteOutlet","StructureChuteOverflow","StructureChuteStraight","StructureChuteUmbilicalFemale","StructureChuteUmbilicalFemaleSide","StructureChuteUmbilicalMale","StructureChuteValve","StructureChuteWindow","StructureCircuitHousing","StructureCombustionCentrifuge","StructureCompositeCladdingAngled","StructureCompositeCladdingAngledCorner","StructureCompositeCladdingAngledCornerInner","StructureCompositeCladdingAngledCornerInnerLong","StructureCompositeCladdingAngledCornerInnerLongL","StructureCompositeCladdingAngledCornerInnerLongR","StructureCompositeCladdingAngledCornerLong","StructureCompositeCladdingAngledCornerLongR","StructureCompositeCladdingAngledLong","StructureCompositeCladdingCylindrical","StructureCompositeCladdingCylindricalPanel","StructureCompositeCladdingPanel","StructureCompositeCladdingRounded","StructureCompositeCladdingRoundedCorner","StructureCompositeCladdingRoundedCornerInner","StructureCompositeCladdingSpherical","StructureCompositeCladdingSphericalCap","StructureCompositeCladdingSphericalCorner","StructureCompositeDoor","StructureCompositeFloorGrating","StructureCompositeFloorGrating2","StructureCompositeFloorGrating3","StructureCompositeFloorGrating4","StructureCompositeFloorGratingOpen","StructureCompositeFloorGratingOpenRotated","StructureCompositeWall","StructureCompositeWall02","StructureCompositeWall03","StructureCompositeWall04","StructureCompositeWindow","StructureCompositeWindowIron","StructureComputer","StructureCondensationChamber","StructureCondensationValve","StructureConsole","StructureConsoleDual","StructureConsoleLED1x2","StructureConsoleLED1x3","StructureConsoleLED5","StructureConsoleMonitor","StructureControlChair","StructureCornerLocker","StructureCrateMount","StructureCryoTube","StructureCryoTubeHorizontal","StructureCryoTubeVertical","StructureDaylightSensor","StructureDeepMiner","StructureDigitalValve","StructureDiode","StructureDiodeSlide","StructureDockPortSide","StructureDrinkingFountain","StructureElectrolyzer","StructureElectronicsPrinter","StructureElevatorLevelFront","StructureElevatorLevelIndustrial","StructureElevatorShaft","StructureElevatorShaftIndustrial","StructureEmergencyButton","StructureEngineMountTypeA1","StructureEvaporationChamber","StructureExpansionValve","StructureFairingTypeA1","StructureFairingTypeA2","StructureFairingTypeA3","StructureFiltration","StructureFlagSmall","StructureFlashingLight","StructureFlatBench","StructureFloorDrain","StructureFrame","StructureFrameCorner","StructureFrameCornerCut","StructureFrameIron","StructureFrameSide","StructureFridgeBig","StructureFridgeSmall","StructureFurnace","StructureFuselageTypeA1","StructureFuselageTypeA2","StructureFuselageTypeA4","StructureFuselageTypeC5","StructureGasGenerator","StructureGasMixer","StructureGasSensor","StructureGasTankStorage","StructureGasUmbilicalFemale","StructureGasUmbilicalFemaleSide","StructureGasUmbilicalMale","StructureGlassDoor","StructureGovernedGasEngine","StructureGroundBasedTelescope","StructureGrowLight","StructureHarvie","StructureHeatExchangeLiquidtoGas","StructureHeatExchangerGastoGas","StructureHeatExchangerLiquidtoLiquid","StructureHorizontalAutoMiner","StructureHydraulicPipeBender","StructureHydroponicsStation","StructureHydroponicsTray","StructureHydroponicsTrayData","StructureIceCrusher","StructureIgniter","StructureInLineTankGas1x1","StructureInLineTankGas1x2","StructureInLineTankLiquid1x1","StructureInLineTankLiquid1x2","StructureInsulatedInLineTankGas1x1","StructureInsulatedInLineTankGas1x2","StructureInsulatedInLineTankLiquid1x1","StructureInsulatedInLineTankLiquid1x2","StructureInsulatedPipeCorner","StructureInsulatedPipeCrossJunction","StructureInsulatedPipeCrossJunction3","StructureInsulatedPipeCrossJunction4","StructureInsulatedPipeCrossJunction5","StructureInsulatedPipeCrossJunction6","StructureInsulatedPipeLiquidCorner","StructureInsulatedPipeLiquidCrossJunction","StructureInsulatedPipeLiquidCrossJunction4","StructureInsulatedPipeLiquidCrossJunction5","StructureInsulatedPipeLiquidCrossJunction6","StructureInsulatedPipeLiquidStraight","StructureInsulatedPipeLiquidTJunction","StructureInsulatedPipeStraight","StructureInsulatedPipeTJunction","StructureInsulatedTankConnector","StructureInsulatedTankConnectorLiquid","StructureInteriorDoorGlass","StructureInteriorDoorPadded","StructureInteriorDoorPaddedThin","StructureInteriorDoorTriangle","StructureKlaxon","StructureLadder","StructureLadderEnd","StructureLargeDirectHeatExchangeGastoGas","StructureLargeDirectHeatExchangeGastoLiquid","StructureLargeDirectHeatExchangeLiquidtoLiquid","StructureLargeExtendableRadiator","StructureLargeHangerDoor","StructureLargeSatelliteDish","StructureLaunchMount","StructureLightLong","StructureLightLongAngled","StructureLightLongWide","StructureLightRound","StructureLightRoundAngled","StructureLightRoundSmall","StructureLiquidDrain","StructureLiquidPipeAnalyzer","StructureLiquidPipeHeater","StructureLiquidPipeOneWayValve","StructureLiquidPipeRadiator","StructureLiquidPressureRegulator","StructureLiquidTankBig","StructureLiquidTankBigInsulated","StructureLiquidTankSmall","StructureLiquidTankSmallInsulated","StructureLiquidTankStorage","StructureLiquidTurboVolumePump","StructureLiquidUmbilicalFemale","StructureLiquidUmbilicalFemaleSide","StructureLiquidUmbilicalMale","StructureLiquidValve","StructureLiquidVolumePump","StructureLockerSmall","StructureLogicBatchReader","StructureLogicBatchSlotReader","StructureLogicBatchWriter","StructureLogicButton","StructureLogicCompare","StructureLogicDial","StructureLogicGate","StructureLogicHashGen","StructureLogicMath","StructureLogicMathUnary","StructureLogicMemory","StructureLogicMinMax","StructureLogicMirror","StructureLogicReader","StructureLogicReagentReader","StructureLogicRocketDownlink","StructureLogicRocketUplink","StructureLogicSelect","StructureLogicSlotReader","StructureLogicSorter","StructureLogicSwitch","StructureLogicSwitch2","StructureLogicTransmitter","StructureLogicWriter","StructureLogicWriterSwitch","StructureManualHatch","StructureMediumConvectionRadiator","StructureMediumConvectionRadiatorLiquid","StructureMediumHangerDoor","StructureMediumRadiator","StructureMediumRadiatorLiquid","StructureMediumRocketGasFuelTank","StructureMediumRocketLiquidFuelTank","StructureMotionSensor","StructureNitrolyzer","StructureOccupancySensor","StructureOverheadShortCornerLocker","StructureOverheadShortLocker","StructurePassiveLargeRadiatorGas","StructurePassiveLargeRadiatorLiquid","StructurePassiveLiquidDrain","StructurePassiveVent","StructurePassiveVentInsulated","StructurePassthroughHeatExchangerGasToGas","StructurePassthroughHeatExchangerGasToLiquid","StructurePassthroughHeatExchangerLiquidToLiquid","StructurePictureFrameThickLandscapeLarge","StructurePictureFrameThickLandscapeSmall","StructurePictureFrameThickMountLandscapeLarge","StructurePictureFrameThickMountLandscapeSmall","StructurePictureFrameThickMountPortraitLarge","StructurePictureFrameThickMountPortraitSmall","StructurePictureFrameThickPortraitLarge","StructurePictureFrameThickPortraitSmall","StructurePictureFrameThinLandscapeLarge","StructurePictureFrameThinLandscapeSmall","StructurePictureFrameThinMountLandscapeLarge","StructurePictureFrameThinMountLandscapeSmall","StructurePictureFrameThinMountPortraitLarge","StructurePictureFrameThinMountPortraitSmall","StructurePictureFrameThinPortraitLarge","StructurePictureFrameThinPortraitSmall","StructurePipeAnalysizer","StructurePipeCorner","StructurePipeCowl","StructurePipeCrossJunction","StructurePipeCrossJunction3","StructurePipeCrossJunction4","StructurePipeCrossJunction5","StructurePipeCrossJunction6","StructurePipeHeater","StructurePipeIgniter","StructurePipeInsulatedLiquidCrossJunction","StructurePipeLabel","StructurePipeLiquidCorner","StructurePipeLiquidCrossJunction","StructurePipeLiquidCrossJunction3","StructurePipeLiquidCrossJunction4","StructurePipeLiquidCrossJunction5","StructurePipeLiquidCrossJunction6","StructurePipeLiquidStraight","StructurePipeLiquidTJunction","StructurePipeMeter","StructurePipeOneWayValve","StructurePipeOrgan","StructurePipeRadiator","StructurePipeRadiatorFlat","StructurePipeRadiatorFlatLiquid","StructurePipeStraight","StructurePipeTJunction","StructurePlanter","StructurePlatformLadderOpen","StructurePlinth","StructurePortablesConnector","StructurePowerConnector","StructurePowerTransmitter","StructurePowerTransmitterOmni","StructurePowerTransmitterReceiver","StructurePowerUmbilicalFemale","StructurePowerUmbilicalFemaleSide","StructurePowerUmbilicalMale","StructurePoweredVent","StructurePoweredVentLarge","StructurePressurantValve","StructurePressureFedGasEngine","StructurePressureFedLiquidEngine","StructurePressurePlateLarge","StructurePressurePlateMedium","StructurePressurePlateSmall","StructurePressureRegulator","StructureProximitySensor","StructurePumpedLiquidEngine","StructurePurgeValve","StructureRailing","StructureRecycler","StructureRefrigeratedVendingMachine","StructureReinforcedCompositeWindow","StructureReinforcedCompositeWindowSteel","StructureReinforcedWallPaddedWindow","StructureReinforcedWallPaddedWindowThin","StructureRocketAvionics","StructureRocketCelestialTracker","StructureRocketCircuitHousing","StructureRocketEngineTiny","StructureRocketManufactory","StructureRocketMiner","StructureRocketScanner","StructureRocketTower","StructureRocketTransformerSmall","StructureRover","StructureSDBHopper","StructureSDBHopperAdvanced","StructureSDBSilo","StructureSatelliteDish","StructureSecurityPrinter","StructureShelf","StructureShelfMedium","StructureShortCornerLocker","StructureShortLocker","StructureShower","StructureShowerPowered","StructureSign1x1","StructureSign2x1","StructureSingleBed","StructureSleeper","StructureSleeperLeft","StructureSleeperRight","StructureSleeperVertical","StructureSleeperVerticalDroid","StructureSmallDirectHeatExchangeGastoGas","StructureSmallDirectHeatExchangeLiquidtoGas","StructureSmallDirectHeatExchangeLiquidtoLiquid","StructureSmallSatelliteDish","StructureSmallTableBacklessDouble","StructureSmallTableBacklessSingle","StructureSmallTableDinnerSingle","StructureSmallTableRectangleDouble","StructureSmallTableRectangleSingle","StructureSmallTableThickDouble","StructureSmallTableThickSingle","StructureSolarPanel","StructureSolarPanel45","StructureSolarPanel45Reinforced","StructureSolarPanelDual","StructureSolarPanelDualReinforced","StructureSolarPanelFlat","StructureSolarPanelFlatReinforced","StructureSolarPanelReinforced","StructureSolidFuelGenerator","StructureSorter","StructureStacker","StructureStackerReverse","StructureStairs4x2","StructureStairs4x2RailL","StructureStairs4x2RailR","StructureStairs4x2Rails","StructureStairwellBackLeft","StructureStairwellBackPassthrough","StructureStairwellBackRight","StructureStairwellFrontLeft","StructureStairwellFrontPassthrough","StructureStairwellFrontRight","StructureStairwellNoDoors","StructureStirlingEngine","StructureStorageLocker","StructureSuitStorage","StructureTankBig","StructureTankBigInsulated","StructureTankConnector","StructureTankConnectorLiquid","StructureTankSmall","StructureTankSmallAir","StructureTankSmallFuel","StructureTankSmallInsulated","StructureToolManufactory","StructureTorpedoRack","StructureTraderWaypoint","StructureTransformer","StructureTransformerMedium","StructureTransformerMediumReversed","StructureTransformerSmall","StructureTransformerSmallReversed","StructureTurbineGenerator","StructureTurboVolumePump","StructureUnloader","StructureUprightWindTurbine","StructureValve","StructureVendingMachine","StructureVolumePump","StructureWallArch","StructureWallArchArrow","StructureWallArchCornerRound","StructureWallArchCornerSquare","StructureWallArchCornerTriangle","StructureWallArchPlating","StructureWallArchTwoTone","StructureWallCooler","StructureWallFlat","StructureWallFlatCornerRound","StructureWallFlatCornerSquare","StructureWallFlatCornerTriangle","StructureWallFlatCornerTriangleFlat","StructureWallGeometryCorner","StructureWallGeometryStreight","StructureWallGeometryT","StructureWallGeometryTMirrored","StructureWallHeater","StructureWallIron","StructureWallIron02","StructureWallIron03","StructureWallIron04","StructureWallLargePanel","StructureWallLargePanelArrow","StructureWallLight","StructureWallLightBattery","StructureWallPaddedArch","StructureWallPaddedArchCorner","StructureWallPaddedArchLightFittingTop","StructureWallPaddedArchLightsFittings","StructureWallPaddedCorner","StructureWallPaddedCornerThin","StructureWallPaddedNoBorder","StructureWallPaddedNoBorderCorner","StructureWallPaddedThinNoBorder","StructureWallPaddedThinNoBorderCorner","StructureWallPaddedWindow","StructureWallPaddedWindowThin","StructureWallPadding","StructureWallPaddingArchVent","StructureWallPaddingLightFitting","StructureWallPaddingThin","StructureWallPlating","StructureWallSmallPanelsAndHatch","StructureWallSmallPanelsArrow","StructureWallSmallPanelsMonoChrome","StructureWallSmallPanelsOpen","StructureWallSmallPanelsTwoTone","StructureWallVent","StructureWaterBottleFiller","StructureWaterBottleFillerBottom","StructureWaterBottleFillerPowered","StructureWaterBottleFillerPoweredBottom","StructureWaterDigitalValve","StructureWaterPipeMeter","StructureWaterPurifier","StructureWaterWallCooler","StructureWeatherStation","StructureWindTurbine","StructureWindowShutter"],"devices":["CompositeRollCover","DeviceLfoVolume","DeviceStepUnit","H2Combustor","Landingpad_DataConnectionPiece","Landingpad_GasConnectorInwardPiece","Landingpad_GasConnectorOutwardPiece","Landingpad_LiquidConnectorInwardPiece","Landingpad_LiquidConnectorOutwardPiece","Landingpad_ThreshholdPiece","LogicStepSequencer8","PassiveSpeaker","StopWatch","StructureAccessBridge","StructureActiveVent","StructureAdvancedComposter","StructureAdvancedFurnace","StructureAdvancedPackagingMachine","StructureAirConditioner","StructureAirlock","StructureAirlockGate","StructureAngledBench","StructureArcFurnace","StructureAreaPowerControl","StructureAreaPowerControlReversed","StructureAutoMinerSmall","StructureAutolathe","StructureAutomatedOven","StructureBackLiquidPressureRegulator","StructureBackPressureRegulator","StructureBasketHoop","StructureBattery","StructureBatteryCharger","StructureBatteryChargerSmall","StructureBatteryLarge","StructureBatteryMedium","StructureBatterySmall","StructureBeacon","StructureBench","StructureBench1","StructureBench2","StructureBench3","StructureBench4","StructureBlastDoor","StructureBlockBed","StructureCableAnalysizer","StructureCableFuse100k","StructureCableFuse1k","StructureCableFuse50k","StructureCableFuse5k","StructureCamera","StructureCapsuleTankGas","StructureCapsuleTankLiquid","StructureCargoStorageMedium","StructureCargoStorageSmall","StructureCentrifuge","StructureChair","StructureChairBacklessDouble","StructureChairBacklessSingle","StructureChairBoothCornerLeft","StructureChairBoothMiddle","StructureChairRectangleDouble","StructureChairRectangleSingle","StructureChairThickDouble","StructureChairThickSingle","StructureChuteBin","StructureChuteDigitalFlipFlopSplitterLeft","StructureChuteDigitalFlipFlopSplitterRight","StructureChuteDigitalValveLeft","StructureChuteDigitalValveRight","StructureChuteInlet","StructureChuteOutlet","StructureChuteUmbilicalFemale","StructureChuteUmbilicalFemaleSide","StructureChuteUmbilicalMale","StructureCircuitHousing","StructureCombustionCentrifuge","StructureCompositeDoor","StructureComputer","StructureCondensationChamber","StructureCondensationValve","StructureConsole","StructureConsoleDual","StructureConsoleLED1x2","StructureConsoleLED1x3","StructureConsoleLED5","StructureConsoleMonitor","StructureControlChair","StructureCornerLocker","StructureCryoTube","StructureCryoTubeHorizontal","StructureCryoTubeVertical","StructureDaylightSensor","StructureDeepMiner","StructureDigitalValve","StructureDiode","StructureDiodeSlide","StructureDockPortSide","StructureDrinkingFountain","StructureElectrolyzer","StructureElectronicsPrinter","StructureElevatorLevelFront","StructureElevatorLevelIndustrial","StructureElevatorShaft","StructureElevatorShaftIndustrial","StructureEmergencyButton","StructureEvaporationChamber","StructureExpansionValve","StructureFiltration","StructureFlashingLight","StructureFlatBench","StructureFridgeBig","StructureFridgeSmall","StructureFurnace","StructureGasGenerator","StructureGasMixer","StructureGasSensor","StructureGasTankStorage","StructureGasUmbilicalFemale","StructureGasUmbilicalFemaleSide","StructureGasUmbilicalMale","StructureGlassDoor","StructureGovernedGasEngine","StructureGroundBasedTelescope","StructureGrowLight","StructureHarvie","StructureHeatExchangeLiquidtoGas","StructureHeatExchangerGastoGas","StructureHeatExchangerLiquidtoLiquid","StructureHorizontalAutoMiner","StructureHydraulicPipeBender","StructureHydroponicsStation","StructureHydroponicsTrayData","StructureIceCrusher","StructureIgniter","StructureInteriorDoorGlass","StructureInteriorDoorPadded","StructureInteriorDoorPaddedThin","StructureInteriorDoorTriangle","StructureKlaxon","StructureLargeDirectHeatExchangeGastoGas","StructureLargeDirectHeatExchangeGastoLiquid","StructureLargeDirectHeatExchangeLiquidtoLiquid","StructureLargeExtendableRadiator","StructureLargeHangerDoor","StructureLargeSatelliteDish","StructureLightLong","StructureLightLongAngled","StructureLightLongWide","StructureLightRound","StructureLightRoundAngled","StructureLightRoundSmall","StructureLiquidDrain","StructureLiquidPipeAnalyzer","StructureLiquidPipeHeater","StructureLiquidPipeOneWayValve","StructureLiquidPipeRadiator","StructureLiquidPressureRegulator","StructureLiquidTankBig","StructureLiquidTankBigInsulated","StructureLiquidTankSmall","StructureLiquidTankSmallInsulated","StructureLiquidTankStorage","StructureLiquidTurboVolumePump","StructureLiquidUmbilicalFemale","StructureLiquidUmbilicalFemaleSide","StructureLiquidUmbilicalMale","StructureLiquidValve","StructureLiquidVolumePump","StructureLockerSmall","StructureLogicBatchReader","StructureLogicBatchSlotReader","StructureLogicBatchWriter","StructureLogicButton","StructureLogicCompare","StructureLogicDial","StructureLogicGate","StructureLogicHashGen","StructureLogicMath","StructureLogicMathUnary","StructureLogicMemory","StructureLogicMinMax","StructureLogicMirror","StructureLogicReader","StructureLogicReagentReader","StructureLogicRocketDownlink","StructureLogicRocketUplink","StructureLogicSelect","StructureLogicSlotReader","StructureLogicSorter","StructureLogicSwitch","StructureLogicSwitch2","StructureLogicTransmitter","StructureLogicWriter","StructureLogicWriterSwitch","StructureManualHatch","StructureMediumConvectionRadiator","StructureMediumConvectionRadiatorLiquid","StructureMediumHangerDoor","StructureMediumRadiator","StructureMediumRadiatorLiquid","StructureMediumRocketGasFuelTank","StructureMediumRocketLiquidFuelTank","StructureMotionSensor","StructureNitrolyzer","StructureOccupancySensor","StructureOverheadShortCornerLocker","StructureOverheadShortLocker","StructurePassiveLargeRadiatorGas","StructurePassiveLargeRadiatorLiquid","StructurePassiveLiquidDrain","StructurePassthroughHeatExchangerGasToGas","StructurePassthroughHeatExchangerGasToLiquid","StructurePassthroughHeatExchangerLiquidToLiquid","StructurePipeAnalysizer","StructurePipeHeater","StructurePipeIgniter","StructurePipeLabel","StructurePipeMeter","StructurePipeOneWayValve","StructurePipeRadiator","StructurePipeRadiatorFlat","StructurePipeRadiatorFlatLiquid","StructurePortablesConnector","StructurePowerConnector","StructurePowerTransmitter","StructurePowerTransmitterOmni","StructurePowerTransmitterReceiver","StructurePowerUmbilicalFemale","StructurePowerUmbilicalFemaleSide","StructurePowerUmbilicalMale","StructurePoweredVent","StructurePoweredVentLarge","StructurePressurantValve","StructurePressureFedGasEngine","StructurePressureFedLiquidEngine","StructurePressurePlateLarge","StructurePressurePlateMedium","StructurePressurePlateSmall","StructurePressureRegulator","StructureProximitySensor","StructurePumpedLiquidEngine","StructurePurgeValve","StructureRecycler","StructureRefrigeratedVendingMachine","StructureRocketAvionics","StructureRocketCelestialTracker","StructureRocketCircuitHousing","StructureRocketEngineTiny","StructureRocketManufactory","StructureRocketMiner","StructureRocketScanner","StructureRocketTransformerSmall","StructureSDBHopper","StructureSDBHopperAdvanced","StructureSDBSilo","StructureSatelliteDish","StructureSecurityPrinter","StructureShelfMedium","StructureShortCornerLocker","StructureShortLocker","StructureShower","StructureShowerPowered","StructureSign1x1","StructureSign2x1","StructureSingleBed","StructureSleeper","StructureSleeperLeft","StructureSleeperRight","StructureSleeperVertical","StructureSleeperVerticalDroid","StructureSmallDirectHeatExchangeGastoGas","StructureSmallDirectHeatExchangeLiquidtoGas","StructureSmallDirectHeatExchangeLiquidtoLiquid","StructureSmallSatelliteDish","StructureSolarPanel","StructureSolarPanel45","StructureSolarPanel45Reinforced","StructureSolarPanelDual","StructureSolarPanelDualReinforced","StructureSolarPanelFlat","StructureSolarPanelFlatReinforced","StructureSolarPanelReinforced","StructureSolidFuelGenerator","StructureSorter","StructureStacker","StructureStackerReverse","StructureStirlingEngine","StructureStorageLocker","StructureSuitStorage","StructureTankBig","StructureTankBigInsulated","StructureTankSmall","StructureTankSmallAir","StructureTankSmallFuel","StructureTankSmallInsulated","StructureToolManufactory","StructureTraderWaypoint","StructureTransformer","StructureTransformerMedium","StructureTransformerMediumReversed","StructureTransformerSmall","StructureTransformerSmallReversed","StructureTurbineGenerator","StructureTurboVolumePump","StructureUnloader","StructureUprightWindTurbine","StructureValve","StructureVendingMachine","StructureVolumePump","StructureWallCooler","StructureWallHeater","StructureWallLight","StructureWallLightBattery","StructureWaterBottleFiller","StructureWaterBottleFillerBottom","StructureWaterBottleFillerPowered","StructureWaterBottleFillerPoweredBottom","StructureWaterDigitalValve","StructureWaterPipeMeter","StructureWaterPurifier","StructureWaterWallCooler","StructureWeatherStation","StructureWindTurbine","StructureWindowShutter"],"items":["AccessCardBlack","AccessCardBlue","AccessCardBrown","AccessCardGray","AccessCardGreen","AccessCardKhaki","AccessCardOrange","AccessCardPink","AccessCardPurple","AccessCardRed","AccessCardWhite","AccessCardYellow","ApplianceChemistryStation","ApplianceDeskLampLeft","ApplianceDeskLampRight","ApplianceMicrowave","AppliancePackagingMachine","AppliancePaintMixer","AppliancePlantGeneticAnalyzer","AppliancePlantGeneticSplicer","AppliancePlantGeneticStabilizer","ApplianceReagentProcessor","ApplianceSeedTray","ApplianceTabletDock","AutolathePrinterMod","Battery_Wireless_cell","Battery_Wireless_cell_Big","CardboardBox","CartridgeAccessController","CartridgeAtmosAnalyser","CartridgeConfiguration","CartridgeElectronicReader","CartridgeGPS","CartridgeGuide","CartridgeMedicalAnalyser","CartridgeNetworkAnalyser","CartridgeOreScanner","CartridgeOreScannerColor","CartridgePlantAnalyser","CartridgeTracker","CircuitboardAdvAirlockControl","CircuitboardAirControl","CircuitboardAirlockControl","CircuitboardCameraDisplay","CircuitboardDoorControl","CircuitboardGasDisplay","CircuitboardGraphDisplay","CircuitboardHashDisplay","CircuitboardModeControl","CircuitboardPowerControl","CircuitboardShipDisplay","CircuitboardSolarControl","CrateMkII","DecayedFood","DynamicAirConditioner","DynamicCrate","DynamicGPR","DynamicGasCanisterAir","DynamicGasCanisterCarbonDioxide","DynamicGasCanisterEmpty","DynamicGasCanisterFuel","DynamicGasCanisterNitrogen","DynamicGasCanisterNitrousOxide","DynamicGasCanisterOxygen","DynamicGasCanisterPollutants","DynamicGasCanisterRocketFuel","DynamicGasCanisterVolatiles","DynamicGasCanisterWater","DynamicGasTankAdvanced","DynamicGasTankAdvancedOxygen","DynamicGenerator","DynamicHydroponics","DynamicLight","DynamicLiquidCanisterEmpty","DynamicMKIILiquidCanisterEmpty","DynamicMKIILiquidCanisterWater","DynamicScrubber","DynamicSkeleton","ElectronicPrinterMod","ElevatorCarrage","EntityChick","EntityChickenBrown","EntityChickenWhite","EntityRoosterBlack","EntityRoosterBrown","Fertilizer","FireArmSMG","FlareGun","Handgun","HandgunMagazine","HumanSkull","ImGuiCircuitboardAirlockControl","ItemActiveVent","ItemAdhesiveInsulation","ItemAdvancedTablet","ItemAlienMushroom","ItemAmmoBox","ItemAngleGrinder","ItemArcWelder","ItemAreaPowerControl","ItemAstroloyIngot","ItemAstroloySheets","ItemAuthoringTool","ItemAuthoringToolRocketNetwork","ItemBasketBall","ItemBatteryCell","ItemBatteryCellLarge","ItemBatteryCellNuclear","ItemBatteryCharger","ItemBatteryChargerSmall","ItemBeacon","ItemBiomass","ItemBreadLoaf","ItemCableAnalyser","ItemCableCoil","ItemCableCoilHeavy","ItemCableFuse","ItemCannedCondensedMilk","ItemCannedEdamame","ItemCannedMushroom","ItemCannedPowderedEggs","ItemCannedRicePudding","ItemCerealBar","ItemCharcoal","ItemChemLightBlue","ItemChemLightGreen","ItemChemLightRed","ItemChemLightWhite","ItemChemLightYellow","ItemChocolateBar","ItemChocolateCake","ItemChocolateCerealBar","ItemCoalOre","ItemCobaltOre","ItemCocoaPowder","ItemCocoaTree","ItemCoffeeMug","ItemConstantanIngot","ItemCookedCondensedMilk","ItemCookedCorn","ItemCookedMushroom","ItemCookedPowderedEggs","ItemCookedPumpkin","ItemCookedRice","ItemCookedSoybean","ItemCookedTomato","ItemCopperIngot","ItemCopperOre","ItemCorn","ItemCornSoup","ItemCreditCard","ItemCropHay","ItemCrowbar","ItemDataDisk","ItemDirtCanister","ItemDirtyOre","ItemDisposableBatteryCharger","ItemDrill","ItemDuctTape","ItemDynamicAirCon","ItemDynamicScrubber","ItemEggCarton","ItemElectronicParts","ItemElectrumIngot","ItemEmergencyAngleGrinder","ItemEmergencyArcWelder","ItemEmergencyCrowbar","ItemEmergencyDrill","ItemEmergencyEvaSuit","ItemEmergencyPickaxe","ItemEmergencyScrewdriver","ItemEmergencySpaceHelmet","ItemEmergencyToolBelt","ItemEmergencyWireCutters","ItemEmergencyWrench","ItemEmptyCan","ItemEvaSuit","ItemExplosive","ItemFern","ItemFertilizedEgg","ItemFilterFern","ItemFlagSmall","ItemFlashingLight","ItemFlashlight","ItemFlour","ItemFlowerBlue","ItemFlowerGreen","ItemFlowerOrange","ItemFlowerRed","ItemFlowerYellow","ItemFrenchFries","ItemFries","ItemGasCanisterCarbonDioxide","ItemGasCanisterEmpty","ItemGasCanisterFuel","ItemGasCanisterNitrogen","ItemGasCanisterNitrousOxide","ItemGasCanisterOxygen","ItemGasCanisterPollutants","ItemGasCanisterSmart","ItemGasCanisterVolatiles","ItemGasCanisterWater","ItemGasFilterCarbonDioxide","ItemGasFilterCarbonDioxideInfinite","ItemGasFilterCarbonDioxideL","ItemGasFilterCarbonDioxideM","ItemGasFilterNitrogen","ItemGasFilterNitrogenInfinite","ItemGasFilterNitrogenL","ItemGasFilterNitrogenM","ItemGasFilterNitrousOxide","ItemGasFilterNitrousOxideInfinite","ItemGasFilterNitrousOxideL","ItemGasFilterNitrousOxideM","ItemGasFilterOxygen","ItemGasFilterOxygenInfinite","ItemGasFilterOxygenL","ItemGasFilterOxygenM","ItemGasFilterPollutants","ItemGasFilterPollutantsInfinite","ItemGasFilterPollutantsL","ItemGasFilterPollutantsM","ItemGasFilterVolatiles","ItemGasFilterVolatilesInfinite","ItemGasFilterVolatilesL","ItemGasFilterVolatilesM","ItemGasFilterWater","ItemGasFilterWaterInfinite","ItemGasFilterWaterL","ItemGasFilterWaterM","ItemGasSensor","ItemGasTankStorage","ItemGlassSheets","ItemGlasses","ItemGoldIngot","ItemGoldOre","ItemGrenade","ItemHEMDroidRepairKit","ItemHardBackpack","ItemHardJetpack","ItemHardMiningBackPack","ItemHardSuit","ItemHardsuitHelmet","ItemHastelloyIngot","ItemHat","ItemHighVolumeGasCanisterEmpty","ItemHorticultureBelt","ItemHydroponicTray","ItemIce","ItemIgniter","ItemInconelIngot","ItemInsulation","ItemIntegratedCircuit10","ItemInvarIngot","ItemIronFrames","ItemIronIngot","ItemIronOre","ItemIronSheets","ItemJetpackBasic","ItemKitAIMeE","ItemKitAccessBridge","ItemKitAdvancedComposter","ItemKitAdvancedFurnace","ItemKitAdvancedPackagingMachine","ItemKitAirlock","ItemKitAirlockGate","ItemKitArcFurnace","ItemKitAtmospherics","ItemKitAutoMinerSmall","ItemKitAutolathe","ItemKitAutomatedOven","ItemKitBasket","ItemKitBattery","ItemKitBatteryLarge","ItemKitBeacon","ItemKitBeds","ItemKitBlastDoor","ItemKitCentrifuge","ItemKitChairs","ItemKitChute","ItemKitChuteUmbilical","ItemKitCompositeCladding","ItemKitCompositeFloorGrating","ItemKitComputer","ItemKitConsole","ItemKitCrate","ItemKitCrateMkII","ItemKitCrateMount","ItemKitCryoTube","ItemKitDeepMiner","ItemKitDockingPort","ItemKitDoor","ItemKitDrinkingFountain","ItemKitDynamicCanister","ItemKitDynamicGasTankAdvanced","ItemKitDynamicGenerator","ItemKitDynamicHydroponics","ItemKitDynamicLiquidCanister","ItemKitDynamicMKIILiquidCanister","ItemKitElectricUmbilical","ItemKitElectronicsPrinter","ItemKitElevator","ItemKitEngineLarge","ItemKitEngineMedium","ItemKitEngineSmall","ItemKitEvaporationChamber","ItemKitFlagODA","ItemKitFridgeBig","ItemKitFridgeSmall","ItemKitFurnace","ItemKitFurniture","ItemKitFuselage","ItemKitGasGenerator","ItemKitGasUmbilical","ItemKitGovernedGasRocketEngine","ItemKitGroundTelescope","ItemKitGrowLight","ItemKitHarvie","ItemKitHeatExchanger","ItemKitHorizontalAutoMiner","ItemKitHydraulicPipeBender","ItemKitHydroponicAutomated","ItemKitHydroponicStation","ItemKitIceCrusher","ItemKitInsulatedLiquidPipe","ItemKitInsulatedPipe","ItemKitInsulatedPipeUtility","ItemKitInsulatedPipeUtilityLiquid","ItemKitInteriorDoors","ItemKitLadder","ItemKitLandingPadAtmos","ItemKitLandingPadBasic","ItemKitLandingPadWaypoint","ItemKitLargeDirectHeatExchanger","ItemKitLargeExtendableRadiator","ItemKitLargeSatelliteDish","ItemKitLaunchMount","ItemKitLaunchTower","ItemKitLiquidRegulator","ItemKitLiquidTank","ItemKitLiquidTankInsulated","ItemKitLiquidTurboVolumePump","ItemKitLiquidUmbilical","ItemKitLocker","ItemKitLogicCircuit","ItemKitLogicInputOutput","ItemKitLogicMemory","ItemKitLogicProcessor","ItemKitLogicSwitch","ItemKitLogicTransmitter","ItemKitMotherShipCore","ItemKitMusicMachines","ItemKitPassiveLargeRadiatorGas","ItemKitPassiveLargeRadiatorLiquid","ItemKitPassthroughHeatExchanger","ItemKitPictureFrame","ItemKitPipe","ItemKitPipeLiquid","ItemKitPipeOrgan","ItemKitPipeRadiator","ItemKitPipeRadiatorLiquid","ItemKitPipeUtility","ItemKitPipeUtilityLiquid","ItemKitPlanter","ItemKitPortablesConnector","ItemKitPowerTransmitter","ItemKitPowerTransmitterOmni","ItemKitPoweredVent","ItemKitPressureFedGasEngine","ItemKitPressureFedLiquidEngine","ItemKitPressurePlate","ItemKitPumpedLiquidEngine","ItemKitRailing","ItemKitRecycler","ItemKitRegulator","ItemKitReinforcedWindows","ItemKitResearchMachine","ItemKitRespawnPointWallMounted","ItemKitRocketAvionics","ItemKitRocketBattery","ItemKitRocketCargoStorage","ItemKitRocketCelestialTracker","ItemKitRocketCircuitHousing","ItemKitRocketDatalink","ItemKitRocketGasFuelTank","ItemKitRocketLiquidFuelTank","ItemKitRocketManufactory","ItemKitRocketMiner","ItemKitRocketScanner","ItemKitRocketTransformerSmall","ItemKitRoverFrame","ItemKitRoverMKI","ItemKitSDBHopper","ItemKitSatelliteDish","ItemKitSecurityPrinter","ItemKitSensor","ItemKitShower","ItemKitSign","ItemKitSleeper","ItemKitSmallDirectHeatExchanger","ItemKitSmallSatelliteDish","ItemKitSolarPanel","ItemKitSolarPanelBasic","ItemKitSolarPanelBasicReinforced","ItemKitSolarPanelReinforced","ItemKitSolidGenerator","ItemKitSorter","ItemKitSpeaker","ItemKitStacker","ItemKitStairs","ItemKitStairwell","ItemKitStandardChute","ItemKitStirlingEngine","ItemKitSuitStorage","ItemKitTables","ItemKitTank","ItemKitTankInsulated","ItemKitToolManufactory","ItemKitTransformer","ItemKitTransformerSmall","ItemKitTurbineGenerator","ItemKitTurboVolumePump","ItemKitUprightWindTurbine","ItemKitVendingMachine","ItemKitVendingMachineRefrigerated","ItemKitWall","ItemKitWallArch","ItemKitWallFlat","ItemKitWallGeometry","ItemKitWallIron","ItemKitWallPadded","ItemKitWaterBottleFiller","ItemKitWaterPurifier","ItemKitWeatherStation","ItemKitWindTurbine","ItemKitWindowShutter","ItemLabeller","ItemLaptop","ItemLeadIngot","ItemLeadOre","ItemLightSword","ItemLiquidCanisterEmpty","ItemLiquidCanisterSmart","ItemLiquidDrain","ItemLiquidPipeAnalyzer","ItemLiquidPipeHeater","ItemLiquidPipeValve","ItemLiquidPipeVolumePump","ItemLiquidTankStorage","ItemMKIIAngleGrinder","ItemMKIIArcWelder","ItemMKIICrowbar","ItemMKIIDrill","ItemMKIIDuctTape","ItemMKIIMiningDrill","ItemMKIIScrewdriver","ItemMKIIWireCutters","ItemMKIIWrench","ItemMarineBodyArmor","ItemMarineHelmet","ItemMilk","ItemMiningBackPack","ItemMiningBelt","ItemMiningBeltMKII","ItemMiningCharge","ItemMiningDrill","ItemMiningDrillHeavy","ItemMiningDrillPneumatic","ItemMkIIToolbelt","ItemMuffin","ItemMushroom","ItemNVG","ItemNickelIngot","ItemNickelOre","ItemNitrice","ItemOxite","ItemPassiveVent","ItemPassiveVentInsulated","ItemPeaceLily","ItemPickaxe","ItemPillHeal","ItemPillStun","ItemPipeAnalyizer","ItemPipeCowl","ItemPipeDigitalValve","ItemPipeGasMixer","ItemPipeHeater","ItemPipeIgniter","ItemPipeLabel","ItemPipeLiquidRadiator","ItemPipeMeter","ItemPipeRadiator","ItemPipeValve","ItemPipeVolumePump","ItemPlainCake","ItemPlantEndothermic_Creative","ItemPlantEndothermic_Genepool1","ItemPlantEndothermic_Genepool2","ItemPlantSampler","ItemPlantSwitchGrass","ItemPlantThermogenic_Creative","ItemPlantThermogenic_Genepool1","ItemPlantThermogenic_Genepool2","ItemPlasticSheets","ItemPotato","ItemPotatoBaked","ItemPowerConnector","ItemPumpkin","ItemPumpkinPie","ItemPumpkinSoup","ItemPureIce","ItemPureIceCarbonDioxide","ItemPureIceHydrogen","ItemPureIceLiquidCarbonDioxide","ItemPureIceLiquidHydrogen","ItemPureIceLiquidNitrogen","ItemPureIceLiquidNitrous","ItemPureIceLiquidOxygen","ItemPureIceLiquidPollutant","ItemPureIceLiquidVolatiles","ItemPureIceNitrogen","ItemPureIceNitrous","ItemPureIceOxygen","ItemPureIcePollutant","ItemPureIcePollutedWater","ItemPureIceSteam","ItemPureIceVolatiles","ItemRTG","ItemRTGSurvival","ItemReagentMix","ItemRemoteDetonator","ItemReusableFireExtinguisher","ItemRice","ItemRoadFlare","ItemRocketMiningDrillHead","ItemRocketMiningDrillHeadDurable","ItemRocketMiningDrillHeadHighSpeedIce","ItemRocketMiningDrillHeadHighSpeedMineral","ItemRocketMiningDrillHeadIce","ItemRocketMiningDrillHeadLongTerm","ItemRocketMiningDrillHeadMineral","ItemRocketScanningHead","ItemScanner","ItemScrewdriver","ItemSecurityCamera","ItemSensorLenses","ItemSensorProcessingUnitCelestialScanner","ItemSensorProcessingUnitMesonScanner","ItemSensorProcessingUnitOreScanner","ItemSiliconIngot","ItemSiliconOre","ItemSilverIngot","ItemSilverOre","ItemSolderIngot","ItemSolidFuel","ItemSoundCartridgeBass","ItemSoundCartridgeDrums","ItemSoundCartridgeLeads","ItemSoundCartridgeSynth","ItemSoyOil","ItemSoybean","ItemSpaceCleaner","ItemSpaceHelmet","ItemSpaceIce","ItemSpaceOre","ItemSpacepack","ItemSprayCanBlack","ItemSprayCanBlue","ItemSprayCanBrown","ItemSprayCanGreen","ItemSprayCanGrey","ItemSprayCanKhaki","ItemSprayCanOrange","ItemSprayCanPink","ItemSprayCanPurple","ItemSprayCanRed","ItemSprayCanWhite","ItemSprayCanYellow","ItemSprayGun","ItemSteelFrames","ItemSteelIngot","ItemSteelSheets","ItemStelliteGlassSheets","ItemStelliteIngot","ItemSugar","ItemSugarCane","ItemSuitModCryogenicUpgrade","ItemTablet","ItemTerrainManipulator","ItemTomato","ItemTomatoSoup","ItemToolBelt","ItemTropicalPlant","ItemUraniumOre","ItemVolatiles","ItemWallCooler","ItemWallHeater","ItemWallLight","ItemWaspaloyIngot","ItemWaterBottle","ItemWaterPipeDigitalValve","ItemWaterPipeMeter","ItemWaterWallCooler","ItemWearLamp","ItemWeldingTorch","ItemWheat","ItemWireCutters","ItemWirelessBatteryCellExtraLarge","ItemWreckageAirConditioner1","ItemWreckageAirConditioner2","ItemWreckageHydroponicsTray1","ItemWreckageLargeExtendableRadiator01","ItemWreckageStructureRTG1","ItemWreckageStructureWeatherStation001","ItemWreckageStructureWeatherStation002","ItemWreckageStructureWeatherStation003","ItemWreckageStructureWeatherStation004","ItemWreckageStructureWeatherStation005","ItemWreckageStructureWeatherStation006","ItemWreckageStructureWeatherStation007","ItemWreckageStructureWeatherStation008","ItemWreckageTurbineGenerator1","ItemWreckageTurbineGenerator2","ItemWreckageTurbineGenerator3","ItemWreckageWallCooler1","ItemWreckageWallCooler2","ItemWrench","KitSDBSilo","KitStructureCombustionCentrifuge","Lander","Meteorite","MonsterEgg","MotherboardComms","MotherboardLogic","MotherboardMissionControl","MotherboardProgrammableChip","MotherboardRockets","MotherboardSorter","MothershipCore","NpcChick","NpcChicken","PipeBenderMod","PortableComposter","PortableSolarPanel","ReagentColorBlue","ReagentColorGreen","ReagentColorOrange","ReagentColorRed","ReagentColorYellow","Robot","RoverCargo","Rover_MkI","SMGMagazine","SeedBag_Cocoa","SeedBag_Corn","SeedBag_Fern","SeedBag_Mushroom","SeedBag_Potato","SeedBag_Pumpkin","SeedBag_Rice","SeedBag_Soybean","SeedBag_SugarCane","SeedBag_Switchgrass","SeedBag_Tomato","SeedBag_Wheet","SpaceShuttle","ToolPrinterMod","ToyLuna","UniformCommander","UniformMarine","UniformOrangeJumpSuit","WeaponEnergy","WeaponPistolEnergy","WeaponRifleEnergy","WeaponTorpedo"],"logicableItems":["Battery_Wireless_cell","Battery_Wireless_cell_Big","DynamicGPR","DynamicLight","ItemAdvancedTablet","ItemAngleGrinder","ItemArcWelder","ItemBatteryCell","ItemBatteryCellLarge","ItemBatteryCellNuclear","ItemBeacon","ItemDrill","ItemEmergencyAngleGrinder","ItemEmergencyArcWelder","ItemEmergencyDrill","ItemEmergencySpaceHelmet","ItemFlashlight","ItemHardBackpack","ItemHardJetpack","ItemHardSuit","ItemHardsuitHelmet","ItemIntegratedCircuit10","ItemJetpackBasic","ItemLabeller","ItemLaptop","ItemMKIIAngleGrinder","ItemMKIIArcWelder","ItemMKIIDrill","ItemMKIIMiningDrill","ItemMiningBeltMKII","ItemMiningDrill","ItemMiningDrillHeavy","ItemMkIIToolbelt","ItemNVG","ItemPlantSampler","ItemRemoteDetonator","ItemSensorLenses","ItemSpaceHelmet","ItemSpacepack","ItemTablet","ItemTerrainManipulator","ItemWearLamp","ItemWirelessBatteryCellExtraLarge","PortableSolarPanel","Robot","RoverCargo","Rover_MkI","WeaponEnergy","WeaponPistolEnergy","WeaponRifleEnergy"]} \ No newline at end of file diff --git a/ic10emu/Cargo.toml b/ic10emu/Cargo.toml index a533408..bf79e9c 100644 --- a/ic10emu/Cargo.toml +++ b/ic10emu/Cargo.toml @@ -10,20 +10,21 @@ crate-type = ["lib", "cdylib"] [dependencies] +stationeers_data = { path = "../stationeers_data" } const-crc32 = "1.3.0" -itertools = "0.12.1" +itertools = "0.13.0" macro_rules_attribute = "0.2.0" -paste = "1.0.14" +paste = "1.0.15" phf = { version = "0.11.2", features = ["macros"] } rand = "0.8.5" -regex = "1.10.3" -serde = "1.0.201" -serde_derive = "1.0.201" -serde_with = "3.7.0" +regex = "1.10.4" +serde = "1.0.202" +serde_derive = "1.0.202" +serde_with = "3.8.1" strum = { version = "0.26.2", features = ["derive", "phf", "strum_macros"] } strum_macros = "0.26.2" -thiserror = "1.0.58" -time = { version = "0.3.34", features = [ +thiserror = "1.0.61" +time = { version = "0.3.36", features = [ "formatting", "serde", "local-offset", @@ -31,7 +32,7 @@ time = { version = "0.3.34", features = [ [target.'cfg(target_arch = "wasm32")'.dependencies] getrandom = { version = "0.2", features = ["js"] } -time = { version = "0.3.34", features = [ +time = { version = "0.3.36", features = [ "formatting", "serde", "local-offset", diff --git a/ic10emu/src/grammar.rs b/ic10emu/src/grammar.rs index b2daa49..8c65f9a 100644 --- a/ic10emu/src/grammar.rs +++ b/ic10emu/src/grammar.rs @@ -2,66 +2,20 @@ use crate::{ errors::{ICError, ParseError}, interpreter, tokens::{SplitConsecutiveIndicesExt, SplitConsecutiveWithIndices}, - vm::{ - enums::{ - basic_enums::BasicEnum, - script_enums::{LogicBatchMethod, LogicReagentMode, LogicSlotType, LogicType}, - }, - instructions::{ - enums::InstructionOp, - operands::{Device, DeviceSpec, Identifier, Number, Operand, RegisterSpec}, - Instruction, CONSTANTS_LOOKUP, - }, + vm::instructions::{ + enums::InstructionOp, + operands::{Device, DeviceSpec, Identifier, Number, Operand, RegisterSpec}, + Instruction, CONSTANTS_LOOKUP, }, }; use itertools::Itertools; +use stationeers_data::enums::{ + basic_enums::BasicEnum, + script_enums::{LogicBatchMethod, LogicReagentMode, LogicSlotType, LogicType}, +}; use std::{fmt::Display, str::FromStr}; use strum::IntoEnumIterator; -impl TryFrom for LogicType { - type Error = ICError; - fn try_from(value: f64) -> Result>::Error> { - if let Some(lt) = LogicType::iter().find(|lt| *lt as u16 as f64 == value) { - Ok(lt) - } else { - Err(ICError::UnknownLogicType(value)) - } - } -} - -impl TryFrom for LogicSlotType { - type Error = ICError; - fn try_from(value: f64) -> Result>::Error> { - if let Some(slt) = LogicSlotType::iter().find(|lt| *lt as u8 as f64 == value) { - Ok(slt) - } else { - Err(ICError::UnknownLogicSlotType(value)) - } - } -} - -impl TryFrom for LogicBatchMethod { - type Error = ICError; - fn try_from(value: f64) -> Result>::Error> { - if let Some(bm) = LogicBatchMethod::iter().find(|lt| *lt as u8 as f64 == value) { - Ok(bm) - } else { - Err(ICError::UnknownBatchMode(value)) - } - } -} - -impl TryFrom for LogicReagentMode { - type Error = ICError; - fn try_from(value: f64) -> Result>::Error> { - if let Some(rm) = LogicReagentMode::iter().find(|lt| *lt as u8 as f64 == value) { - Ok(rm) - } else { - Err(ICError::UnknownReagentMode(value)) - } - } -} - pub fn parse(code: &str) -> Result, ParseError> { code.lines() .enumerate() diff --git a/ic10emu/src/interpreter/instructions.rs b/ic10emu/src/interpreter/instructions.rs index c583c53..b7b5369 100644 --- a/ic10emu/src/interpreter/instructions.rs +++ b/ic10emu/src/interpreter/instructions.rs @@ -2,7 +2,6 @@ use crate::{ errors::ICError, interpreter::{i64_to_f64, ICState}, vm::{ - enums::script_enums::LogicReagentMode, instructions::{ operands::{InstOperand, RegisterSpec}, traits::*, @@ -14,6 +13,7 @@ use crate::{ }, }, }; +use stationeers_data::enums::script_enums::LogicReagentMode; pub trait IC10Marker: IntegratedCircuit {} impl SleepInstruction for T { diff --git a/ic10emu/src/network.rs b/ic10emu/src/network.rs index f12059d..ebb5e70 100644 --- a/ic10emu/src/network.rs +++ b/ic10emu/src/network.rs @@ -51,61 +51,6 @@ pub enum Connection { None, } -#[derive( - Debug, - Default, - Clone, - Copy, - PartialEq, - PartialOrd, - Eq, - Ord, - Hash, - Serialize, - Deserialize, - EnumIter, - AsRefStr, -)] -pub enum ConnectionType { - Pipe, - Power, - Data, - Chute, - Elevator, - PipeLiquid, - LandingPad, - LaunchPad, - PowerAndData, - #[serde(other)] - #[default] - None, -} - -#[derive( - Debug, - Default, - Clone, - Copy, - PartialEq, - PartialOrd, - Eq, - Ord, - Hash, - Serialize, - Deserialize, - EnumIter, - AsRefStr, -)] -pub enum ConnectionRole { - Input, - Input2, - Output, - Output2, - Waste, - #[serde(other)] - #[default] - None, -} impl Connection { #[allow(dead_code)] diff --git a/ic10emu/src/vm.rs b/ic10emu/src/vm.rs index b5a2f63..ba2169b 100644 --- a/ic10emu/src/vm.rs +++ b/ic10emu/src/vm.rs @@ -1,15 +1,18 @@ -pub mod enums; pub mod instructions; pub mod object; use crate::{ errors::{ICError, TemplateError, VMError}, interpreter::ICState, - network::{CableConnectionType, CableNetwork, Connection, ConnectionRole, FrozenCableNetwork}, - vm::{ - enums::script_enums::{LogicBatchMethod, LogicSlotType, LogicType}, - object::{templates::ObjectTemplate, traits::ParentSlotInfo, ObjectID, VMObject}, + network::{CableConnectionType, CableNetwork, Connection, FrozenCableNetwork}, + vm::object::{traits::ParentSlotInfo, ObjectID, VMObject}, +}; +use stationeers_data::{ + enums::{ + script_enums::{LogicBatchMethod, LogicSlotType, LogicType}, + ConnectionRole, }, + templates::ObjectTemplate, }; use std::{ cell::RefCell, @@ -690,7 +693,7 @@ impl VM { }) .filter_ok(|val| !val.is_nan()) .collect::, ICError>>()?; - Ok(mode.apply(&samples)) + Ok(LogicBatchMethodWrapper(mode).apply(&samples)) } pub fn get_batch_name_device_field( @@ -713,7 +716,7 @@ impl VM { }) .filter_ok(|val| !val.is_nan()) .collect::, ICError>>()?; - Ok(mode.apply(&samples)) + Ok(LogicBatchMethodWrapper(mode).apply(&samples)) } pub fn get_batch_name_device_slot_field( @@ -737,7 +740,7 @@ impl VM { }) .filter_ok(|val| !val.is_nan()) .collect::, ICError>>()?; - Ok(mode.apply(&samples)) + Ok(LogicBatchMethodWrapper(mode).apply(&samples)) } pub fn get_batch_device_slot_field( @@ -760,7 +763,7 @@ impl VM { }) .filter_ok(|val| !val.is_nan()) .collect::, ICError>>()?; - Ok(mode.apply(&samples)) + Ok(LogicBatchMethodWrapper(mode).apply(&samples)) } pub fn remove_object(self: &Rc, id: ObjectID) -> Result<(), VMError> { @@ -771,7 +774,7 @@ impl VM { if let Some(device) = obj.borrow().as_device() { for conn in device.connection_list().iter() { if let Connection::CableNetwork { net: Some(net), .. } = conn { - if let Some(network) = self.networks.borrow().get(net) { + if let Some(network) = self.networks.borrow().get(&net) { network .borrow_mut() .as_mut_network() @@ -1067,7 +1070,7 @@ impl VMTransaction { role: ConnectionRole::None, } = conn { - if let Some(net) = self.networks.get_mut(net_id) { + if let Some(net) = self.networks.get_mut(&net_id) { match typ { CableConnectionType::Power => net.power_only.push(obj_id), _ => net.devices.push(obj_id), @@ -1085,9 +1088,11 @@ impl VMTransaction { } } -impl LogicBatchMethod { +pub struct LogicBatchMethodWrapper(LogicBatchMethod); + +impl LogicBatchMethodWrapper { pub fn apply(&self, samples: &[f64]) -> f64 { - match self { + match self.0 { LogicBatchMethod::Sum => samples.iter().sum(), // Both c-charp and rust return NaN for 0.0/0.0 so we're good here LogicBatchMethod::Average => { diff --git a/ic10emu/src/vm/enums.rs b/ic10emu/src/vm/enums.rs deleted file mode 100644 index e408f98..0000000 --- a/ic10emu/src/vm/enums.rs +++ /dev/null @@ -1,3 +0,0 @@ -pub mod basic_enums; -pub mod prefabs; -pub mod script_enums; diff --git a/ic10emu/src/vm/enums/prefabs.rs b/ic10emu/src/vm/enums/prefabs.rs deleted file mode 100644 index 89a4509..0000000 --- a/ic10emu/src/vm/enums/prefabs.rs +++ /dev/null @@ -1,10124 +0,0 @@ -// ================================================= -// !! <-----> DO NOT MODIFY <-----> !! -// -// This module was automatically generated by an -// xtask -// -// run `cargo xtask generate` from the workspace -// to regenerate -// -// ================================================= - -use serde_derive::{Deserialize, Serialize}; -use strum::{AsRefStr, Display, EnumIter, EnumProperty, EnumString, FromRepr}; -#[derive( - Debug, - Display, - Clone, - Copy, - PartialEq, - Eq, - PartialOrd, - Ord, - Hash, - EnumString, - AsRefStr, - EnumProperty, - EnumIter, - FromRepr, - Serialize, - Deserialize, -)] -#[strum(use_phf)] -#[repr(i32)] -pub enum StationpediaPrefab { - #[strum( - serialize = "ItemKitGroundTelescope", - props(name = r#"Kit (Telescope)"#, desc = r#""#, value = "-2140672772") - )] - ItemKitGroundTelescope = -2140672772i32, - #[strum( - serialize = "StructureSmallSatelliteDish", - props( - name = r#"Small Satellite Dish"#, - desc = r#"This small communications unit can be used to communicate with nearby trade vessels. - - When connected to a Computer containing a Communications Motherboard motherboard, a Landingpad Center, and a Vending Machine, this allows Stationeers to contact traders. Adjust its horizontal and vertical attributes either directly or through logic."#, - value = "-2138748650" - ) - )] - StructureSmallSatelliteDish = -2138748650i32, - #[strum( - serialize = "StructureStairwellBackRight", - props( - name = r#"Stairwell (Back Right)"#, - desc = r#""#, - value = "-2128896573" - ) - )] - StructureStairwellBackRight = -2128896573i32, - #[strum( - serialize = "StructureBench2", - props( - name = r#"Bench (High Tech Style)"#, - desc = r#""#, - value = "-2127086069" - ) - )] - StructureBench2 = -2127086069i32, - #[strum( - serialize = "ItemLiquidPipeValve", - props( - name = r#"Kit (Liquid Pipe Valve)"#, - desc = r#"This kit creates a Liquid Valve."#, - value = "-2126113312" - ) - )] - ItemLiquidPipeValve = -2126113312i32, - #[strum( - serialize = "ItemDisposableBatteryCharger", - props( - name = r#"Disposable Battery Charger"#, - desc = r#"Consumable battery the recharges your suit battery. If used on a HEM-Droid it will recharge the HEM-Droids internal battery."#, - value = "-2124435700" - ) - )] - ItemDisposableBatteryCharger = -2124435700i32, - #[strum( - serialize = "StructureBatterySmall", - props( - name = r#"Auxiliary Rocket Battery "#, - desc = r#"0.Empty -1.Critical -2.VeryLow -3.Low -4.Medium -5.High -6.Full"#, - value = "-2123455080" - ) - )] - StructureBatterySmall = -2123455080i32, - #[strum( - serialize = "StructureLiquidPipeAnalyzer", - props(name = r#"Liquid Pipe Analyzer"#, desc = r#""#, value = "-2113838091") - )] - StructureLiquidPipeAnalyzer = -2113838091i32, - #[strum( - serialize = "ItemGasTankStorage", - props( - name = r#"Kit (Canister Storage)"#, - desc = r#"This kit produces a Kit (Canister Storage) for refilling a Canister."#, - value = "-2113012215" - ) - )] - ItemGasTankStorage = -2113012215i32, - #[strum( - serialize = "StructureFrameCorner", - props( - name = r#"Steel Frame (Corner)"#, - desc = r#"More durable than the Iron Frame, steel frames also offer several variations for more complex lattice constructions. -With a little patience and maneuvering, the corner frame's Gothic-inspired silhouette allows the creation of ogival arches and even more ambitious architecture, although they are not airtight and cannot be built on."#, - value = "-2112390778" - ) - )] - StructureFrameCorner = -2112390778i32, - #[strum( - serialize = "ItemPotatoBaked", - props(name = r#"Baked Potato"#, desc = r#""#, value = "-2111886401") - )] - ItemPotatoBaked = -2111886401i32, - #[strum( - serialize = "ItemFlashingLight", - props(name = r#"Kit (Flashing Light)"#, desc = r#""#, value = "-2107840748") - )] - ItemFlashingLight = -2107840748i32, - #[strum( - serialize = "ItemLiquidPipeVolumePump", - props( - name = r#"Kit (Liquid Volume Pump)"#, - desc = r#""#, - value = "-2106280569" - ) - )] - ItemLiquidPipeVolumePump = -2106280569i32, - #[strum( - serialize = "StructureAirlock", - props( - name = r#"Airlock"#, - desc = r#"The standard airlock is a powered portal that forms the main component of an airlock chamber. As long as the airlock is not locked, it can be manually opened using a crowbar."#, - value = "-2105052344" - ) - )] - StructureAirlock = -2105052344i32, - #[strum( - serialize = "ItemCannedCondensedMilk", - props( - name = r#"Canned Condensed Milk"#, - desc = r#"Made in an Advanced Packaging Machine or Basic Packaging Machine, using Condensed Milk and an Empty Can, canned condensed milk is fairly high in nutrition, and does not decay."#, - value = "-2104175091" - ) - )] - ItemCannedCondensedMilk = -2104175091i32, - #[strum( - serialize = "ItemKitHydraulicPipeBender", - props( - name = r#"Kit (Hydraulic Pipe Bender)"#, - desc = r#""#, - value = "-2098556089" - ) - )] - ItemKitHydraulicPipeBender = -2098556089i32, - #[strum( - serialize = "ItemKitLogicMemory", - props(name = r#"Kit (Logic Memory)"#, desc = r#""#, value = "-2098214189") - )] - ItemKitLogicMemory = -2098214189i32, - #[strum( - serialize = "StructureInteriorDoorGlass", - props( - name = r#"Interior Door Glass"#, - desc = r#"0.Operate -1.Logic"#, - value = "-2096421875" - ) - )] - StructureInteriorDoorGlass = -2096421875i32, - #[strum( - serialize = "StructureAirConditioner", - props( - name = r#"Air Conditioner"#, - desc = r#"Built using the Kit (Atmospherics), the ExMin-designed air conditioner is used to raise or lower input gas temperature. - -The unit has three pipe connections: input, output, and waste. Gas fed into the input will be heated or cooled to reach the target temperature, while the opposite will happen to gas on the waste network. - -Multiple Efficiency Multipliers can effect the amount of energy the Air Conditioner uses, and these can be view on the unit's green Information Panel. As the temperature difference between input and waste increases, the Temperature Differential Efficiency Multiplier will decrease. If input or waste temperature is extremely hot or cold, the Operational Temperature Efficiency will decrease. If the input or waste pipe has approach low pressures, the Pressure Efficiency will decrease. - -Pipe Convection Radiators may be useful in bringing extreme pipe temperatures back towards normal world temperatures. - -For more information on using the air conditioner, consult the temperature control Guides page."#, - value = "-2087593337" - ) - )] - StructureAirConditioner = -2087593337i32, - #[strum( - serialize = "StructureRocketMiner", - props( - name = r#"Rocket Miner"#, - desc = r#"Gathers available resources at the rocket's current space location."#, - value = "-2087223687" - ) - )] - StructureRocketMiner = -2087223687i32, - #[strum( - serialize = "DynamicGPR", - props( - name = r#""#, - desc = r#""#, - value = "-2085885850" - ) - )] - DynamicGpr = -2085885850i32, - #[strum( - serialize = "UniformCommander", - props(name = r#"Uniform Commander"#, desc = r#""#, value = "-2083426457") - )] - UniformCommander = -2083426457i32, - #[strum( - serialize = "StructureWindTurbine", - props( - name = r#"Wind Turbine"#, - desc = r#"The Stationeers wind turbine was first designed by Norsec atmospheric engineers, looking to create a wind-driven power generation system that would operate even on exceedingly low atmosphere worlds. The ultra-light blades respond to exceedingly low atmospheric densities, while being strong enough to function even under huge strain in much more demanding environments. -While the wind turbine is optimized to produce power (up to 500W) even on low atmosphere worlds, it performs best in denser environments. Output varies with wind speed and, during storms, may increase dramatically (up to 10,000W), so be careful to design your power networks with that in mind."#, - value = "-2082355173" - ) - )] - StructureWindTurbine = -2082355173i32, - #[strum( - serialize = "StructureInsulatedPipeTJunction", - props( - name = r#"Insulated Pipe (T Junction)"#, - desc = r#"Insulated pipes greatly reduce heat loss from gases stored in them."#, - value = "-2076086215" - ) - )] - StructureInsulatedPipeTJunction = -2076086215i32, - #[strum( - serialize = "ItemPureIcePollutedWater", - props( - name = r#"Pure Ice Polluted Water"#, - desc = r#"A frozen chunk of Polluted Water"#, - value = "-2073202179" - ) - )] - ItemPureIcePollutedWater = -2073202179i32, - #[strum( - serialize = "RailingIndustrial02", - props( - name = r#"Railing Industrial (Type 2)"#, - desc = r#""#, - value = "-2072792175" - ) - )] - RailingIndustrial02 = -2072792175i32, - #[strum( - serialize = "StructurePipeInsulatedLiquidCrossJunction", - props( - name = r#"Insulated Liquid Pipe (Cross Junction)"#, - desc = r#"Liquid piping with very low temperature loss or gain."#, - value = "-2068497073" - ) - )] - StructurePipeInsulatedLiquidCrossJunction = -2068497073i32, - #[strum( - serialize = "ItemWeldingTorch", - props( - name = r#"Welding Torch"#, - desc = r#"Stored in the standard issue Stationeers Tool Belt, the Arlite welding torch is used to construct a range of essential structures. -An upgraded version of the classic 'Zairo' model first manufactured by ExMin for modular space habitat assembly, the Arlite is powered by a single Canister (Fuel) and designed to function equally well in deep space and deep gravity wells."#, - value = "-2066892079" - ) - )] - ItemWeldingTorch = -2066892079i32, - #[strum( - serialize = "StructurePictureFrameThickMountPortraitSmall", - props( - name = r#"Picture Frame Thick Mount Portrait Small"#, - desc = r#""#, - value = "-2066653089" - ) - )] - StructurePictureFrameThickMountPortraitSmall = -2066653089i32, - #[strum( - serialize = "Landingpad_DataConnectionPiece", - props( - name = r#"Landingpad Data And Power"#, - desc = r#"Provides power to the landing pad. The data port must be connected to the data port of a computer with a communications motherboard for a trader to be called in to land."#, - value = "-2066405918" - ) - )] - LandingpadDataConnectionPiece = -2066405918i32, - #[strum( - serialize = "ItemKitPictureFrame", - props(name = r#"Kit Picture Frame"#, desc = r#""#, value = "-2062364768") - )] - ItemKitPictureFrame = -2062364768i32, - #[strum( - serialize = "ItemMKIIArcWelder", - props(name = r#"Mk II Arc Welder"#, desc = r#""#, value = "-2061979347") - )] - ItemMkiiArcWelder = -2061979347i32, - #[strum( - serialize = "StructureCompositeWindow", - props( - name = r#"Composite Window"#, - desc = r#"Air-tight and resistant to extreme temperatures, composite walls come in several charming, near identical varieties - reflecting their designer's focus on form over function."#, - value = "-2060571986" - ) - )] - StructureCompositeWindow = -2060571986i32, - #[strum( - serialize = "ItemEmergencyDrill", - props(name = r#"Emergency Drill"#, desc = r#""#, value = "-2052458905") - )] - ItemEmergencyDrill = -2052458905i32, - #[strum( - serialize = "Rover_MkI", - props( - name = r#"Rover MkI"#, - desc = r#"A distant cousin of the jeep, the Mk I {Sinotai electric rover is one of the most simple and durable light vehicles in the known universe. Able to carry two passengers and cargo such as the Portable Gas Tank (Air) or , it is powered by up to three batteries, accepting everything including Battery Cell (Nuclear). -A quad-array of hub-mounted electric engines propels the reinforced aluminium frame over most terrain and modest obstacles. While the Mk I is designed for stability in low-horizontality circumstances, if it rolls, try using your Crowbar to put it right way up.Connects to Logic Transmitter"#, - value = "-2049946335" - ) - )] - RoverMkI = -2049946335i32, - #[strum( - serialize = "StructureSolarPanel", - props( - name = r#"Solar Panel"#, - desc = r#"Sinotai's standard solar panels are used for generating power from sunlight. They can be connected to Logic systems, in order to track sunlight, but their reduced during storms and when damaged. You can repair these using some trusty Duct Tape."#, - value = "-2045627372" - ) - )] - StructureSolarPanel = -2045627372i32, - #[strum( - serialize = "CircuitboardShipDisplay", - props( - name = r#"Ship Display"#, - desc = r#"When the original Stationeer Handbook collapsed under its own weight into a singularity, certain information was irretrievably lost. Amongst this mysterious corpus of knowledge is the exact purpose of the ship display board."#, - value = "-2044446819" - ) - )] - CircuitboardShipDisplay = -2044446819i32, - #[strum( - serialize = "StructureBench", - props( - name = r#"Powered Bench"#, - desc = r#"When it's time to sit, nothing supports you like a bench. This bench is powered, so you can use appliances like the Microwave."#, - value = "-2042448192" - ) - )] - StructureBench = -2042448192i32, - #[strum( - serialize = "StructurePictureFrameThickLandscapeSmall", - props( - name = r#"Picture Frame Thick Landscape Small"#, - desc = r#""#, - value = "-2041566697" - ) - )] - StructurePictureFrameThickLandscapeSmall = -2041566697i32, - #[strum( - serialize = "ItemKitLargeSatelliteDish", - props( - name = r#"Kit (Large Satellite Dish)"#, - desc = r#""#, - value = "-2039971217" - ) - )] - ItemKitLargeSatelliteDish = -2039971217i32, - #[strum( - serialize = "ItemKitMusicMachines", - props(name = r#"Kit (Music Machines)"#, desc = r#""#, value = "-2038889137") - )] - ItemKitMusicMachines = -2038889137i32, - #[strum( - serialize = "ItemStelliteGlassSheets", - props( - name = r#"Stellite Glass Sheets"#, - desc = r#"A stronger glass substitute."#, - value = "-2038663432" - ) - )] - ItemStelliteGlassSheets = -2038663432i32, - #[strum( - serialize = "ItemKitVendingMachine", - props(name = r#"Kit (Vending Machine)"#, desc = r#""#, value = "-2038384332") - )] - ItemKitVendingMachine = -2038384332i32, - #[strum( - serialize = "StructurePumpedLiquidEngine", - props( - name = r#"Pumped Liquid Engine"#, - desc = r#"Liquid propellants bring greater efficiencies with Pumped Liquid Engine. Two inputs are provided so Stationeers can seperate their fuels, the Setting variable controls the mixing ratio of the inputs. The engine is designed to run on Liquid Volatiles and Liquid Oxygen, some Stationeers have reported excessive thrust values by switching to Liquid Nitrous Oxide"#, - value = "-2031440019" - ) - )] - StructurePumpedLiquidEngine = -2031440019i32, - #[strum( - serialize = "StructurePictureFrameThinLandscapeSmall", - props( - name = r#"Picture Frame Thin Landscape Small"#, - desc = r#""#, - value = "-2024250974" - ) - )] - StructurePictureFrameThinLandscapeSmall = -2024250974i32, - #[strum( - serialize = "StructureStacker", - props( - name = r#"Stacker"#, - desc = r#"A stacker is an important part of any automated chute network. The Xigo ProKompile can be set manually or via logic, to make sure items passing through the stacker are maximized for your storage needs. -The ProKompile can stack a wide variety of things such as ingots, as well as splitting stacks into appropriate sizes as needed."#, - value = "-2020231820" - ) - )] - StructureStacker = -2020231820i32, - #[strum( - serialize = "ItemMKIIScrewdriver", - props( - name = r#"Mk II Screwdriver"#, - desc = r#"This standard issue frictional adherence adjustor is a top of the line, bi-rotational model with a columnated uni-grip. It's definitely not just a screwdriver. Use it for construction and deconstruction of certain kits, and setting values on logic units. The MK II is more resistant to temperature and pressure."#, - value = "-2015613246" - ) - )] - ItemMkiiScrewdriver = -2015613246i32, - #[strum( - serialize = "StructurePressurePlateLarge", - props(name = r#"Trigger Plate (Large)"#, desc = r#""#, value = "-2008706143") - )] - StructurePressurePlateLarge = -2008706143i32, - #[strum( - serialize = "StructurePipeLiquidCrossJunction5", - props( - name = r#"Liquid Pipe (5-Way Junction)"#, - desc = r#"You can upgrade this pipe to an Insulated Liquid Pipe (5-Way Junction) using an Kit (Insulated Liquid Pipe) and a Wrench."#, - value = "-2006384159" - ) - )] - StructurePipeLiquidCrossJunction5 = -2006384159i32, - #[strum( - serialize = "ItemGasFilterWater", - props( - name = r#"Filter (Water)"#, - desc = r#"Sinotai filters are used to capture various gases, which can be disposed of, or used elsewhere. Water can be collected by filtering smelted Ice (Water)"#, - value = "-1993197973" - ) - )] - ItemGasFilterWater = -1993197973i32, - #[strum( - serialize = "SpaceShuttle", - props( - name = r#"Space Shuttle"#, - desc = r#"An antiquated Sinotai transport craft, long since decommissioned."#, - value = "-1991297271" - ) - )] - SpaceShuttle = -1991297271i32, - #[strum( - serialize = "SeedBag_Fern", - props( - name = r#"Fern Seeds"#, - desc = r#"Grow a Fern."#, - value = "-1990600883" - ) - )] - SeedBagFern = -1990600883i32, - #[strum( - serialize = "ItemSecurityCamera", - props( - name = r#"Security Camera"#, - desc = r#"Security cameras can be paired with a Motion Sensor, then connected to a Console fitted with a Camera Display for that 'always watched' feeling."#, - value = "-1981101032" - ) - )] - ItemSecurityCamera = -1981101032i32, - #[strum( - serialize = "CardboardBox", - props(name = r#"Cardboard Box"#, desc = r#""#, value = "-1976947556") - )] - CardboardBox = -1976947556i32, - #[strum( - serialize = "ItemSoundCartridgeSynth", - props(name = r#"Sound Cartridge Synth"#, desc = r#""#, value = "-1971419310") - )] - ItemSoundCartridgeSynth = -1971419310i32, - #[strum( - serialize = "StructureCornerLocker", - props(name = r#"Corner Locker"#, desc = r#""#, value = "-1968255729") - )] - StructureCornerLocker = -1968255729i32, - #[strum( - serialize = "StructureInsulatedPipeCorner", - props( - name = r#"Insulated Pipe (Corner)"#, - desc = r#"Insulated pipes greatly reduce heat loss from gases stored in them."#, - value = "-1967711059" - ) - )] - StructureInsulatedPipeCorner = -1967711059i32, - #[strum( - serialize = "StructureWallArchCornerSquare", - props( - name = r#"Wall (Arch Corner Square)"#, - desc = r#""#, - value = "-1963016580" - ) - )] - StructureWallArchCornerSquare = -1963016580i32, - #[strum( - serialize = "StructureControlChair", - props( - name = r#"Control Chair"#, - desc = r#"Once, these chairs were the heart of space-going behemoths. Now, they're items of nostalgia built only by a handful of Stationeers with a sense of history. In other words, kitsch."#, - value = "-1961153710" - ) - )] - StructureControlChair = -1961153710i32, - #[strum( - serialize = "PortableComposter", - props( - name = r#"Portable Composter"#, - desc = r#"A simple composting device, the basic composter creates Fertilizer out of organic matter. It accepts food, Decayed Food or Biomass. It requires a full Liquid Canister and a battery to operate, accelerating the natural composting process. -When processing, it releases nitrogen and volatiles, as well a small amount of heat. - -Compost composition -Fertilizer is produced at a 1:3 ratio of fertilizer to ingredients. The fertilizer's effects on plants will vary depending on the respective proportions of its ingredients. - -- food increases PLANT YIELD up to two times -- Decayed Food increases plant GROWTH SPEED up to two times -- Biomass increases the NUMBER OF GROWTH CYCLES the fertilizer lasts for"#, - value = "-1958705204" - ) - )] - PortableComposter = -1958705204i32, - #[strum( - serialize = "CartridgeGPS", - props(name = r#"GPS"#, desc = r#""#, value = "-1957063345") - )] - CartridgeGps = -1957063345i32, - #[strum( - serialize = "StructureConsoleLED1x3", - props( - name = r#"LED Display (Large)"#, - desc = r#"0.Default -1.Percent -2.Power"#, - value = "-1949054743" - ) - )] - StructureConsoleLed1X3 = -1949054743i32, - #[strum( - serialize = "ItemDuctTape", - props( - name = r#"Duct Tape"#, - desc = r#"In the distant past, one of Earth's great champions taught a generation of 'Fix-It People' that duct tape was the answer to any problem. Stationeers have demonstrated that this is truth holds strong, so long as the problem is a damaged Eva Suit, Jetpack Basic, Space Helmet, or even a Solar Panel. -To use on yourself: put duct tape in your active hand, hold RIGHT MOUSE BUTTON to automatically repair damage."#, - value = "-1943134693" - ) - )] - ItemDuctTape = -1943134693i32, - #[strum( - serialize = "DynamicLiquidCanisterEmpty", - props( - name = r#"Portable Liquid Tank"#, - desc = r#"This portable tank stores liquid, and liquid only. You can bolt one to a Kit (Liquid Tank Connector) using a Wrench, then connect it to a pipe network to refill it. You can refill a Liquid Canister (Water) by attaching it to the tank's striped section. Or you could use a Wrench to attach it to a rocket and take it somewhere distant and dry, then feel good about yourself."#, - value = "-1939209112" - ) - )] - DynamicLiquidCanisterEmpty = -1939209112i32, - #[strum( - serialize = "ItemKitDeepMiner", - props(name = r#"Kit (Deep Miner)"#, desc = r#""#, value = "-1935075707") - )] - ItemKitDeepMiner = -1935075707i32, - #[strum( - serialize = "ItemKitAutomatedOven", - props(name = r#"Kit (Automated Oven)"#, desc = r#""#, value = "-1931958659") - )] - ItemKitAutomatedOven = -1931958659i32, - #[strum( - serialize = "MothershipCore", - props( - name = r#"Mothership Core"#, - desc = r#"A relic of from an earlier era of space ambition, Sinotai's mothership cores formed the central element of a generation's space-going creations. While Sinotai's pivot to smaller, modular craft upset some purists, motherships continue to be built and maintained by dedicated enthusiasts."#, - value = "-1930442922" - ) - )] - MothershipCore = -1930442922i32, - #[strum( - serialize = "ItemKitSolarPanel", - props(name = r#"Kit (Solar Panel)"#, desc = r#""#, value = "-1924492105") - )] - ItemKitSolarPanel = -1924492105i32, - #[strum( - serialize = "CircuitboardPowerControl", - props( - name = r#"Power Control"#, - desc = r#"Under distant suns and demanding environments, Stationeer systems need to balance reliability, resilience and versatility. The power control board allows remote enabling and disabling of selected devices, disconnecting manual operation. - -The circuit board has two modes: 'Link' switches all devices on or off; 'Toggle' switches each device to their alternate state. "#, - value = "-1923778429" - ) - )] - CircuitboardPowerControl = -1923778429i32, - #[strum( - serialize = "SeedBag_Tomato", - props( - name = r#"Tomato Seeds"#, - desc = r#"Grow a Tomato."#, - value = "-1922066841" - ) - )] - SeedBagTomato = -1922066841i32, - #[strum( - serialize = "StructureChuteUmbilicalFemale", - props( - name = r#"Umbilical Socket (Chute)"#, - desc = r#""#, - value = "-1918892177" - ) - )] - StructureChuteUmbilicalFemale = -1918892177i32, - #[strum( - serialize = "StructureMediumConvectionRadiator", - props( - name = r#"Medium Convection Radiator"#, - desc = r#"A stand-alone radiator unit optimized for exchanging heat with its surrounding atmosphere."#, - value = "-1918215845" - ) - )] - StructureMediumConvectionRadiator = -1918215845i32, - #[strum( - serialize = "ItemGasFilterVolatilesInfinite", - props( - name = r#"Catalytic Filter (Volatiles)"#, - desc = r#"A filter that selectively targets Volatiles. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle."#, - value = "-1916176068" - ) - )] - ItemGasFilterVolatilesInfinite = -1916176068i32, - #[strum( - serialize = "MotherboardSorter", - props( - name = r#"Sorter Motherboard"#, - desc = r#"Motherboards are connected to Computers to perform various technical functions. -The Norsec-designed K-cops 10-10 sorter motherboard permits Stationeers to control which items a Sorter does, and does not, permit to pass."#, - value = "-1908268220" - ) - )] - MotherboardSorter = -1908268220i32, - #[strum( - serialize = "ItemSoundCartridgeDrums", - props(name = r#"Sound Cartridge Drums"#, desc = r#""#, value = "-1901500508") - )] - ItemSoundCartridgeDrums = -1901500508i32, - #[strum( - serialize = "StructureFairingTypeA3", - props(name = r#"Fairing (Type A3)"#, desc = r#""#, value = "-1900541738") - )] - StructureFairingTypeA3 = -1900541738i32, - #[strum( - serialize = "RailingElegant02", - props( - name = r#"Railing Elegant (Type 2)"#, - desc = r#""#, - value = "-1898247915" - ) - )] - RailingElegant02 = -1898247915i32, - #[strum( - serialize = "ItemStelliteIngot", - props(name = r#"Ingot (Stellite)"#, desc = r#""#, value = "-1897868623") - )] - ItemStelliteIngot = -1897868623i32, - #[strum( - serialize = "StructureSmallTableBacklessSingle", - props( - name = r#"Small (Table Backless Single)"#, - desc = r#""#, - value = "-1897221677" - ) - )] - StructureSmallTableBacklessSingle = -1897221677i32, - #[strum( - serialize = "StructureHydraulicPipeBender", - props( - name = r#"Hydraulic Pipe Bender"#, - desc = r#"A go-to tool for all your atmospheric and plumbing needs, the ExMin Atmoprinter will create everything from pipes, pumps and tanks, to vents and filters, ensuring your survival in any environment. Upgrade the Atmoprinter using a Pipe Bender Mod for additional recipes and faster processing speeds."#, - value = "-1888248335" - ) - )] - StructureHydraulicPipeBender = -1888248335i32, - #[strum( - serialize = "ItemWrench", - props( - name = r#"Wrench"#, - desc = r#"One of humanity's enduring contributions to the cosmos, the wrench represents the essence of our species. A simple, effective and spiritually barren tool, use it to build and deconstruct a variety of structures"#, - value = "-1886261558" - ) - )] - ItemWrench = -1886261558i32, - #[strum( - serialize = "SeedBag_SugarCane", - props(name = r#"Sugarcane Seeds"#, desc = r#""#, value = "-1884103228") - )] - SeedBagSugarCane = -1884103228i32, - #[strum( - serialize = "ItemSoundCartridgeBass", - props(name = r#"Sound Cartridge Bass"#, desc = r#""#, value = "-1883441704") - )] - ItemSoundCartridgeBass = -1883441704i32, - #[strum( - serialize = "ItemSprayCanGreen", - props( - name = r#"Spray Paint (Green)"#, - desc = r#"Green is the color of life, and longing. Paradoxically, it's also the color of envy, and tolerance. It denotes sickness, youth, and wealth. But really, it's just what light does at around 500 billionths of a meter."#, - value = "-1880941852" - ) - )] - ItemSprayCanGreen = -1880941852i32, - #[strum( - serialize = "StructurePipeCrossJunction5", - props( - name = r#"Pipe (5-Way Junction)"#, - desc = r#"You can upgrade this pipe to an Insulated Pipe (5-Way Junction) using an Kit (Insulated Pipe) and a Wrench."#, - value = "-1877193979" - ) - )] - StructurePipeCrossJunction5 = -1877193979i32, - #[strum( - serialize = "StructureSDBHopper", - props(name = r#"SDB Hopper"#, desc = r#""#, value = "-1875856925") - )] - StructureSdbHopper = -1875856925i32, - #[strum( - serialize = "ItemMKIIMiningDrill", - props( - name = r#"Mk II Mining Drill"#, - desc = r#"The handheld 'Topo' tri-cone rotary mining drill was made for one thing: quick digging. Modeled on a classic Recurso zero-g design, it functions equally well in vacuum and atmosphere, with cemented carbide bits to increase resilience and bearing life, and reduce spalling. As Jenk Murtons once said, 'The Topo don't stopo.' The MK II is more resistant to temperature and pressure."#, - value = "-1875271296" - ) - )] - ItemMkiiMiningDrill = -1875271296i32, - #[strum( - serialize = "Landingpad_TaxiPieceCorner", - props( - name = r#"Landingpad Taxi Corner"#, - desc = r#""#, - value = "-1872345847" - ) - )] - LandingpadTaxiPieceCorner = -1872345847i32, - #[strum( - serialize = "ItemKitStairwell", - props(name = r#"Kit (Stairwell)"#, desc = r#""#, value = "-1868555784") - )] - ItemKitStairwell = -1868555784i32, - #[strum( - serialize = "ItemKitVendingMachineRefrigerated", - props( - name = r#"Kit (Vending Machine Refrigerated)"#, - desc = r#""#, - value = "-1867508561" - ) - )] - ItemKitVendingMachineRefrigerated = -1867508561i32, - #[strum( - serialize = "ItemKitGasUmbilical", - props(name = r#"Kit (Gas Umbilical)"#, desc = r#""#, value = "-1867280568") - )] - ItemKitGasUmbilical = -1867280568i32, - #[strum( - serialize = "ItemBatteryCharger", - props( - name = r#"Kit (Battery Charger)"#, - desc = r#"This kit produces a 5-slot Kit (Battery Charger)."#, - value = "-1866880307" - ) - )] - ItemBatteryCharger = -1866880307i32, - #[strum( - serialize = "ItemMuffin", - props( - name = r#"Muffin"#, - desc = r#"A delicious, semi-healthful snack, nothing comforts a Stationeer 800 million kilometers from home like a hand-made muffin."#, - value = "-1864982322" - ) - )] - ItemMuffin = -1864982322i32, - #[strum( - serialize = "ItemKitDynamicHydroponics", - props( - name = r#"Kit (Portable Hydroponics)"#, - desc = r#""#, - value = "-1861154222" - ) - )] - ItemKitDynamicHydroponics = -1861154222i32, - #[strum( - serialize = "StructureWallLight", - props(name = r#"Wall Light"#, desc = r#""#, value = "-1860064656") - )] - StructureWallLight = -1860064656i32, - #[strum( - serialize = "StructurePipeLiquidCorner", - props( - name = r#"Liquid Pipe (Corner)"#, - desc = r#"You can upgrade this pipe to an Insulated Liquid Pipe (Corner) using an Kit (Insulated Liquid Pipe) and a Wrench."#, - value = "-1856720921" - ) - )] - StructurePipeLiquidCorner = -1856720921i32, - #[strum( - serialize = "ItemGasCanisterWater", - props( - name = r#"Liquid Canister (Water)"#, - desc = r#""#, - value = "-1854861891" - ) - )] - ItemGasCanisterWater = -1854861891i32, - #[strum( - serialize = "ItemKitLaunchMount", - props(name = r#"Kit (Launch Mount)"#, desc = r#""#, value = "-1854167549") - )] - ItemKitLaunchMount = -1854167549i32, - #[strum( - serialize = "DeviceLfoVolume", - props( - name = r#"Low frequency oscillator"#, - desc = r#"The low frequency oscillator (or LFO) makes everything sound dark, twisted and crunchy by altering the shape of the waves output by a Logic Step Sequencer. - -To set up an LFO: - -1. Place the LFO unit -2. Set the LFO output to a Passive Speaker -2. Set a sequencers' output to LFO - so the sequencer's signal runs through the LFO to a speaker. -3. Place a Stop Watch or use an existing one, then use a Logic Writer to write it to the LFO. -4. Use another logic writer to write the BPM to the LFO. -5. You are ready. This is the future. You're in space. Make it sound cool. - -For more info, check out the music page."#, - value = "-1844430312" - ) - )] - DeviceLfoVolume = -1844430312i32, - #[strum( - serialize = "StructureCableCornerH3", - props( - name = r#"Heavy Cable (3-Way Corner)"#, - desc = r#""#, - value = "-1843379322" - ) - )] - StructureCableCornerH3 = -1843379322i32, - #[strum( - serialize = "StructureCompositeCladdingAngledCornerInner", - props( - name = r#"Composite Cladding (Angled Corner Inner)"#, - desc = r#""#, - value = "-1841871763" - ) - )] - StructureCompositeCladdingAngledCornerInner = -1841871763i32, - #[strum( - serialize = "StructureHydroponicsTrayData", - props( - name = r#"Hydroponics Device"#, - desc = r#"The Agrizero hydroponics device is the ideal vessel for growing a range of plantlife. It must be supplied with Water using a pipe network, and sufficient light to generate photosynthesis. -It can be automated using the Harvie. Note that unlike the Hydroponics Tray, these cannot be placed consecutively as they are considered devices rather than pure pipes. They do, however, allow data interrogation for logic systems."#, - value = "-1841632400" - ) - )] - StructureHydroponicsTrayData = -1841632400i32, - #[strum( - serialize = "ItemKitInsulatedPipeUtilityLiquid", - props( - name = r#"Kit (Insulated Pipe Utility Liquid)"#, - desc = r#""#, - value = "-1831558953" - ) - )] - ItemKitInsulatedPipeUtilityLiquid = -1831558953i32, - #[strum( - serialize = "ItemKitWall", - props(name = r#"Kit (Wall)"#, desc = r#""#, value = "-1826855889") - )] - ItemKitWall = -1826855889i32, - #[strum( - serialize = "ItemWreckageAirConditioner1", - props( - name = r#"Wreckage Air Conditioner"#, - desc = r#""#, - value = "-1826023284" - ) - )] - ItemWreckageAirConditioner1 = -1826023284i32, - #[strum( - serialize = "ItemKitStirlingEngine", - props(name = r#"Kit (Stirling Engine)"#, desc = r#""#, value = "-1821571150") - )] - ItemKitStirlingEngine = -1821571150i32, - #[strum( - serialize = "StructureGasUmbilicalMale", - props( - name = r#"Umbilical (Gas)"#, - desc = r#"0.Left -1.Center -2.Right"#, - value = "-1814939203" - ) - )] - StructureGasUmbilicalMale = -1814939203i32, - #[strum( - serialize = "StructureSleeperRight", - props( - name = r#"Sleeper Right"#, - desc = r#"A horizontal variant of the sleeper. Will keep players hydrated and fed while they are logged out - as long as a breathable atmosphere is provided."#, - value = "-1812330717" - ) - )] - StructureSleeperRight = -1812330717i32, - #[strum( - serialize = "StructureManualHatch", - props( - name = r#"Manual Hatch"#, - desc = r#"Can be welded using a Welding Torch or Arc Welder to lock it in the current state. Use the welder again to unlock."#, - value = "-1808154199" - ) - )] - StructureManualHatch = -1808154199i32, - #[strum( - serialize = "ItemOxite", - props( - name = r#"Ice (Oxite)"#, - desc = r#"Oxite ice is largely composed of frozen Oxygen, and found on many planets in the Solar System. Highly valuable and sought after, not all planets a Stationeer visits will have some. - -Highly sensitive to temperature, oxite will begin to melt as soon as it is mined, unless the temperature is below zero, or it is stored in the Mining Belt, Mining Belt MK II or devices like the Ice Crusher or Fridge Small. When melting, oxite produces a mixture of Oxygen and Nitrogen."#, - value = "-1805394113" - ) - )] - ItemOxite = -1805394113i32, - #[strum( - serialize = "ItemKitLiquidTurboVolumePump", - props( - name = r#"Kit (Turbo Volume Pump - Liquid)"#, - desc = r#""#, - value = "-1805020897" - ) - )] - ItemKitLiquidTurboVolumePump = -1805020897i32, - #[strum( - serialize = "StructureLiquidUmbilicalMale", - props( - name = r#"Umbilical (Liquid)"#, - desc = r#"0.Left -1.Center -2.Right"#, - value = "-1798420047" - ) - )] - StructureLiquidUmbilicalMale = -1798420047i32, - #[strum( - serialize = "StructurePipeMeter", - props( - name = r#"Pipe Meter"#, - desc = r#"While the Stationeers program has, thus far, inspired little in the way of classical poetry, the following haiku was found etched, ironically, on a piece of pipe wreckage found on Vulcan: -"Humble pipe meter -speaks the truth, transmits pressure -within any pipe""#, - value = "-1798362329" - ) - )] - StructurePipeMeter = -1798362329i32, - #[strum( - serialize = "ItemKitUprightWindTurbine", - props( - name = r#"Kit (Upright Wind Turbine)"#, - desc = r#""#, - value = "-1798044015" - ) - )] - ItemKitUprightWindTurbine = -1798044015i32, - #[strum( - serialize = "ItemPipeRadiator", - props( - name = r#"Kit (Radiator)"#, - desc = r#"This kit creates a Pipe Convection Radiator."#, - value = "-1796655088" - ) - )] - ItemPipeRadiator = -1796655088i32, - #[strum( - serialize = "StructureOverheadShortCornerLocker", - props( - name = r#"Overhead Corner Locker"#, - desc = r#""#, - value = "-1794932560" - ) - )] - StructureOverheadShortCornerLocker = -1794932560i32, - #[strum( - serialize = "ItemCableAnalyser", - props(name = r#"Kit (Cable Analyzer)"#, desc = r#""#, value = "-1792787349") - )] - ItemCableAnalyser = -1792787349i32, - #[strum( - serialize = "Landingpad_LiquidConnectorOutwardPiece", - props( - name = r#"Landingpad Liquid Output"#, - desc = r#"Pumps liquid purchased from a trader out of the landing pad. You can increase the landing pad's liquid storage capacity by adding more Landingpad Gas Storage to the landing pad."#, - value = "-1788929869" - ) - )] - LandingpadLiquidConnectorOutwardPiece = -1788929869i32, - #[strum( - serialize = "StructurePipeCorner", - props( - name = r#"Pipe (Corner)"#, - desc = r#"You can upgrade this pipe to an Insulated Pipe (Corner) using an Kit (Insulated Pipe) and a Wrench."#, - value = "-1785673561" - ) - )] - StructurePipeCorner = -1785673561i32, - #[strum( - serialize = "ItemKitSensor", - props(name = r#"Kit (Sensors)"#, desc = r#""#, value = "-1776897113") - )] - ItemKitSensor = -1776897113i32, - #[strum( - serialize = "ItemReusableFireExtinguisher", - props( - name = r#"Fire Extinguisher (Reusable)"#, - desc = r#"Requires a canister filled with any inert liquid to opperate."#, - value = "-1773192190" - ) - )] - ItemReusableFireExtinguisher = -1773192190i32, - #[strum( - serialize = "CartridgeOreScanner", - props( - name = r#"Ore Scanner"#, - desc = r#"When inserted into a Handheld Tablet the scanner will display minerals hidden underground on the tablet."#, - value = "-1768732546" - ) - )] - CartridgeOreScanner = -1768732546i32, - #[strum( - serialize = "ItemPipeVolumePump", - props( - name = r#"Kit (Volume Pump)"#, - desc = r#"This kit creates a Volume Pump."#, - value = "-1766301997" - ) - )] - ItemPipeVolumePump = -1766301997i32, - #[strum( - serialize = "StructureGrowLight", - props( - name = r#"Grow Light"#, - desc = r#"Agrizero's leading hydroponic lighting system, the GrowUp UV light supplements sunshine in low light or sun-distant conditions. The unit adds growability over the space of a grid, so requires proximate placement to work. "#, - value = "-1758710260" - ) - )] - StructureGrowLight = -1758710260i32, - #[strum( - serialize = "ItemHardSuit", - props( - name = r#"Hardsuit"#, - desc = r#"Connects to Logic Transmitter"#, - value = "-1758310454" - ) - )] - ItemHardSuit = -1758310454i32, - #[strum( - serialize = "StructureRailing", - props( - name = r#"Railing Industrial (Type 1)"#, - desc = r#""Safety third.""#, - value = "-1756913871" - ) - )] - StructureRailing = -1756913871i32, - #[strum( - serialize = "StructureCableJunction4Burnt", - props( - name = r#"Burnt Cable (4-Way Junction)"#, - desc = r#""#, - value = "-1756896811" - ) - )] - StructureCableJunction4Burnt = -1756896811i32, - #[strum( - serialize = "ItemCreditCard", - props(name = r#"Credit Card"#, desc = r#""#, value = "-1756772618") - )] - ItemCreditCard = -1756772618i32, - #[strum( - serialize = "ItemKitBlastDoor", - props(name = r#"Kit (Blast Door)"#, desc = r#""#, value = "-1755116240") - )] - ItemKitBlastDoor = -1755116240i32, - #[strum( - serialize = "ItemKitAutolathe", - props(name = r#"Kit (Autolathe)"#, desc = r#""#, value = "-1753893214") - )] - ItemKitAutolathe = -1753893214i32, - #[strum( - serialize = "ItemKitPassiveLargeRadiatorGas", - props(name = r#"Kit (Medium Radiator)"#, desc = r#""#, value = "-1752768283") - )] - ItemKitPassiveLargeRadiatorGas = -1752768283i32, - #[strum( - serialize = "StructurePictureFrameThinMountLandscapeSmall", - props( - name = r#"Picture Frame Thin Landscape Small"#, - desc = r#""#, - value = "-1752493889" - ) - )] - StructurePictureFrameThinMountLandscapeSmall = -1752493889i32, - #[strum( - serialize = "ItemPipeHeater", - props( - name = r#"Pipe Heater Kit (Gas)"#, - desc = r#"Creates a Pipe Heater (Gas)."#, - value = "-1751627006" - ) - )] - ItemPipeHeater = -1751627006i32, - #[strum( - serialize = "ItemPureIceLiquidPollutant", - props( - name = r#"Pure Ice Liquid Pollutant"#, - desc = r#"A frozen chunk of pure Liquid Pollutant"#, - value = "-1748926678" - ) - )] - ItemPureIceLiquidPollutant = -1748926678i32, - #[strum( - serialize = "ItemKitDrinkingFountain", - props( - name = r#"Kit (Drinking Fountain)"#, - desc = r#""#, - value = "-1743663875" - ) - )] - ItemKitDrinkingFountain = -1743663875i32, - #[strum( - serialize = "DynamicGasCanisterEmpty", - props( - name = r#"Portable Gas Tank"#, - desc = r#"Portable gas tanks store gas. To refill one, bolt it to a Kit (Tank Connector), then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or bad things happen. Once it's full, you can refill a Canister by attaching it to the tank's striped section. Or you could vent the tank's variable flow rate valve into a room and create an atmosphere."#, - value = "-1741267161" - ) - )] - DynamicGasCanisterEmpty = -1741267161i32, - #[strum( - serialize = "ItemSpaceCleaner", - props( - name = r#"Space Cleaner"#, - desc = r#"There was a time when humanity really wanted to keep space clean. That time has passed."#, - value = "-1737666461" - ) - )] - ItemSpaceCleaner = -1737666461i32, - #[strum( - serialize = "ItemAuthoringToolRocketNetwork", - props( - name = r#""#, - desc = r#""#, - value = "-1731627004" - ) - )] - ItemAuthoringToolRocketNetwork = -1731627004i32, - #[strum( - serialize = "ItemSensorProcessingUnitMesonScanner", - props( - name = r#"Sensor Processing Unit (T-Ray Scanner)"#, - desc = r#"The T-Ray Scanner Sensor Processing Unit can be inserted into the Sensor Lenses to show an overlay of pipes and cables. This can be useful when building behind walls or other structures."#, - value = "-1730464583" - ) - )] - ItemSensorProcessingUnitMesonScanner = -1730464583i32, - #[strum( - serialize = "ItemWaterWallCooler", - props( - name = r#"Kit (Liquid Wall Cooler)"#, - desc = r#""#, - value = "-1721846327" - ) - )] - ItemWaterWallCooler = -1721846327i32, - #[strum( - serialize = "ItemPureIceLiquidCarbonDioxide", - props( - name = r#"Pure Ice Liquid Carbon Dioxide"#, - desc = r#"A frozen chunk of pure Liquid Carbon Dioxide"#, - value = "-1715945725" - ) - )] - ItemPureIceLiquidCarbonDioxide = -1715945725i32, - #[strum( - serialize = "AccessCardRed", - props(name = r#"Access Card (Red)"#, desc = r#""#, value = "-1713748313") - )] - AccessCardRed = -1713748313i32, - #[strum( - serialize = "DynamicGasCanisterAir", - props( - name = r#"Portable Gas Tank (Air)"#, - desc = r#"Portable gas tanks do one thing: store gas. But there's lots you can do with them. To refill the tank, bolt it to a Kit (Tank Connector), then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or bad things happen. Once it's full, you can refill a Canister (Oxygen) by attaching it to the tank's striped section. Or you could vent the tank's variable flow rate valve into a room and create an atmosphere. They also attach to rovers and rockets. Alternatively, kick it over and practice barrel rolling. The possibilities are endless."#, - value = "-1713611165" - ) - )] - DynamicGasCanisterAir = -1713611165i32, - #[strum( - serialize = "StructureMotionSensor", - props( - name = r#"Motion Sensor"#, - desc = r#"Originally developed to monitor dance marathons, the motion sensor can also be connected to Logic systems for security purposes, automatic lighting, doors and various other applications. -The sensor activates whenever a player enters the grid it is placed on."#, - value = "-1713470563" - ) - )] - StructureMotionSensor = -1713470563i32, - #[strum( - serialize = "ItemCookedPowderedEggs", - props( - name = r#"Powdered Eggs"#, - desc = r#"A high-nutrient cooked food, which can be canned."#, - value = "-1712264413" - ) - )] - ItemCookedPowderedEggs = -1712264413i32, - #[strum( - serialize = "ItemGasCanisterNitrousOxide", - props( - name = r#"Gas Canister (Sleeping)"#, - desc = r#""#, - value = "-1712153401" - ) - )] - ItemGasCanisterNitrousOxide = -1712153401i32, - #[strum( - serialize = "ItemKitHeatExchanger", - props(name = r#"Kit Heat Exchanger"#, desc = r#""#, value = "-1710540039") - )] - ItemKitHeatExchanger = -1710540039i32, - #[strum( - serialize = "ItemPureIceNitrogen", - props( - name = r#"Pure Ice Nitrogen"#, - desc = r#"A frozen chunk of pure Nitrogen"#, - value = "-1708395413" - ) - )] - ItemPureIceNitrogen = -1708395413i32, - #[strum( - serialize = "ItemKitPipeRadiatorLiquid", - props( - name = r#"Kit (Pipe Radiator Liquid)"#, - desc = r#""#, - value = "-1697302609" - ) - )] - ItemKitPipeRadiatorLiquid = -1697302609i32, - #[strum( - serialize = "StructureInLineTankGas1x1", - props( - name = r#"In-Line Tank Small Gas"#, - desc = r#"A small expansion tank that increases the volume of a pipe network."#, - value = "-1693382705" - ) - )] - StructureInLineTankGas1X1 = -1693382705i32, - #[strum( - serialize = "SeedBag_Rice", - props( - name = r#"Rice Seeds"#, - desc = r#"Grow some Rice."#, - value = "-1691151239" - ) - )] - SeedBagRice = -1691151239i32, - #[strum( - serialize = "StructurePictureFrameThickPortraitLarge", - props( - name = r#"Picture Frame Thick Portrait Large"#, - desc = r#""#, - value = "-1686949570" - ) - )] - StructurePictureFrameThickPortraitLarge = -1686949570i32, - #[strum( - serialize = "ApplianceDeskLampLeft", - props( - name = r#"Appliance Desk Lamp Left"#, - desc = r#""#, - value = "-1683849799" - ) - )] - ApplianceDeskLampLeft = -1683849799i32, - #[strum( - serialize = "ItemWreckageWallCooler1", - props(name = r#"Wreckage Wall Cooler"#, desc = r#""#, value = "-1682930158") - )] - ItemWreckageWallCooler1 = -1682930158i32, - #[strum( - serialize = "StructureGasUmbilicalFemale", - props( - name = r#"Umbilical Socket (Gas)"#, - desc = r#""#, - value = "-1680477930" - ) - )] - StructureGasUmbilicalFemale = -1680477930i32, - #[strum( - serialize = "ItemGasFilterWaterInfinite", - props( - name = r#"Catalytic Filter (Water)"#, - desc = r#"A filter that selectively targets Water. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle."#, - value = "-1678456554" - ) - )] - ItemGasFilterWaterInfinite = -1678456554i32, - #[strum( - serialize = "StructurePassthroughHeatExchangerGasToGas", - props( - name = r#"CounterFlow Heat Exchanger - Gas + Gas"#, - desc = r#"Exchange heat from one pipe network to another. By drawing down the pressure of the outputs with a pump or regulator and regulating input pressures, the temperatures of two counterflowing networks can be effectively exchanged. - Balancing the throughput of both inputs is key to creating a good exhange of temperatures."#, - value = "-1674187440" - ) - )] - StructurePassthroughHeatExchangerGasToGas = -1674187440i32, - #[strum( - serialize = "StructureAutomatedOven", - props(name = r#"Automated Oven"#, desc = r#""#, value = "-1672404896") - )] - StructureAutomatedOven = -1672404896i32, - #[strum( - serialize = "StructureElectrolyzer", - props( - name = r#"Electrolyzer"#, - desc = r#"The Norsec-designed Electrolyzer splits Water into hydrogen and Oxygen. Employing unknown proprietary technology, the device uses water's latent heat as the energy to drive the electrosis process. If there is a downside to this near-miraculous fission, it's that the device is limited by the quantity of power available, which is used to maintain the temperature output. In other words, the machine works best with hot gas."#, - value = "-1668992663" - ) - )] - StructureElectrolyzer = -1668992663i32, - #[strum( - serialize = "MonsterEgg", - props( - name = r#""#, - desc = r#""#, - value = "-1667675295" - ) - )] - MonsterEgg = -1667675295i32, - #[strum( - serialize = "ItemMiningDrillHeavy", - props( - name = r#"Mining Drill (Heavy)"#, - desc = r#"Sometimes mining trips require something a little bigger to bring home the goods. This scaled up version of the Recurso 'Topo' design Mining Drill can literally move mountains. The heavy mining drill will remove more ground and mine ore more quickly than the standard mining drill. The heavy mining drill is also resilient to temperature and pressure. So no matter what planet or extreme weather conditions may be present, the Recurso heavy mining drill will get the job done."#, - value = "-1663349918" - ) - )] - ItemMiningDrillHeavy = -1663349918i32, - #[strum( - serialize = "ItemAstroloySheets", - props(name = r#"Astroloy Sheets"#, desc = r#""#, value = "-1662476145") - )] - ItemAstroloySheets = -1662476145i32, - #[strum( - serialize = "ItemWreckageTurbineGenerator1", - props( - name = r#"Wreckage Turbine Generator"#, - desc = r#""#, - value = "-1662394403" - ) - )] - ItemWreckageTurbineGenerator1 = -1662394403i32, - #[strum( - serialize = "ItemMiningBackPack", - props(name = r#"Mining Backpack"#, desc = r#""#, value = "-1650383245") - )] - ItemMiningBackPack = -1650383245i32, - #[strum( - serialize = "ItemSprayCanGrey", - props( - name = r#"Spray Paint (Grey)"#, - desc = r#"Arguably the most popular color in the universe, grey was invented so designers had something to do."#, - value = "-1645266981" - ) - )] - ItemSprayCanGrey = -1645266981i32, - #[strum( - serialize = "ItemReagentMix", - props( - name = r#"Reagent Mix"#, - desc = r#"Reagent mix is pure potential. A slurry of undifferentiated ores, it is output by the Recycler and can be fed into the Centrifuge to separate and recover the individual materials. Reagent mix is also output by the Furnace when the current contents are ejected without smelting a specific ingot."#, - value = "-1641500434" - ) - )] - ItemReagentMix = -1641500434i32, - #[strum( - serialize = "CartridgeAccessController", - props( - name = r#"Cartridge (Access Controller)"#, - desc = r#""#, - value = "-1634532552" - ) - )] - CartridgeAccessController = -1634532552i32, - #[strum( - serialize = "StructureRecycler", - props( - name = r#"Recycler"#, - desc = r#"A device for collecting the raw resources while destroying an item. Produces Reagent Mix containing packages of reagents. Pass these through the Centrifuge to gain back the source ores. Plants and organic matter passed through will create Biomass, which when passed through the Centrifuge will produce Biomass."#, - value = "-1633947337" - ) - )] - StructureRecycler = -1633947337i32, - #[strum( - serialize = "StructureSmallTableBacklessDouble", - props( - name = r#"Small (Table Backless Double)"#, - desc = r#""#, - value = "-1633000411" - ) - )] - StructureSmallTableBacklessDouble = -1633000411i32, - #[strum( - serialize = "ItemKitRocketGasFuelTank", - props( - name = r#"Kit (Rocket Gas Fuel Tank)"#, - desc = r#""#, - value = "-1629347579" - ) - )] - ItemKitRocketGasFuelTank = -1629347579i32, - #[strum( - serialize = "StructureStairwellFrontPassthrough", - props( - name = r#"Stairwell (Front Passthrough)"#, - desc = r#""#, - value = "-1625452928" - ) - )] - StructureStairwellFrontPassthrough = -1625452928i32, - #[strum( - serialize = "StructureCableJunctionBurnt", - props( - name = r#"Burnt Cable (Junction)"#, - desc = r#""#, - value = "-1620686196" - ) - )] - StructureCableJunctionBurnt = -1620686196i32, - #[strum( - serialize = "ItemKitPipe", - props(name = r#"Kit (Pipe)"#, desc = r#""#, value = "-1619793705") - )] - ItemKitPipe = -1619793705i32, - #[strum( - serialize = "ItemPureIce", - props( - name = r#"Pure Ice Water"#, - desc = r#"A frozen chunk of pure Water"#, - value = "-1616308158" - ) - )] - ItemPureIce = -1616308158i32, - #[strum( - serialize = "StructureBasketHoop", - props(name = r#"Basket Hoop"#, desc = r#""#, value = "-1613497288") - )] - StructureBasketHoop = -1613497288i32, - #[strum( - serialize = "StructureWallPaddedThinNoBorder", - props( - name = r#"Wall (Padded Thin No Border)"#, - desc = r#""#, - value = "-1611559100" - ) - )] - StructureWallPaddedThinNoBorder = -1611559100i32, - #[strum( - serialize = "StructureTankBig", - props(name = r#"Large Tank"#, desc = r#""#, value = "-1606848156") - )] - StructureTankBig = -1606848156i32, - #[strum( - serialize = "StructureInsulatedTankConnectorLiquid", - props( - name = r#"Insulated Tank Connector Liquid"#, - desc = r#""#, - value = "-1602030414" - ) - )] - StructureInsulatedTankConnectorLiquid = -1602030414i32, - #[strum( - serialize = "ItemKitTurbineGenerator", - props( - name = r#"Kit (Turbine Generator)"#, - desc = r#""#, - value = "-1590715731" - ) - )] - ItemKitTurbineGenerator = -1590715731i32, - #[strum( - serialize = "ItemKitCrateMkII", - props(name = r#"Kit (Crate Mk II)"#, desc = r#""#, value = "-1585956426") - )] - ItemKitCrateMkIi = -1585956426i32, - #[strum( - serialize = "StructureRefrigeratedVendingMachine", - props( - name = r#"Refrigerated Vending Machine"#, - desc = r#"The refrigerated OmniKool vending machine is an advanced version of the standard Vending Machine, which maintains an optimum pressure and constant temperature of -130 degrees C, to prevent food spoilage. It can hold up to 100 stacks. -The OmniKool also has an in-built Stacker, allowing players to set the stack sizes of any items ADDED to the device. The unit's default stack size is 50. -NOTE: altering stack sizes DOES NOT update existing stacks within the machine, only those subsequently added. "#, - value = "-1577831321" - ) - )] - StructureRefrigeratedVendingMachine = -1577831321i32, - #[strum( - serialize = "ItemFlowerBlue", - props(name = r#"Flower (Blue)"#, desc = r#""#, value = "-1573623434") - )] - ItemFlowerBlue = -1573623434i32, - #[strum( - serialize = "ItemWallCooler", - props( - name = r#"Kit (Wall Cooler)"#, - desc = r#"This kit creates a Wall Cooler."#, - value = "-1567752627" - ) - )] - ItemWallCooler = -1567752627i32, - #[strum( - serialize = "StructureSolarPanel45", - props( - name = r#"Solar Panel (Angled)"#, - desc = r#"Sinotai basic solar panels generate power from sunlight, sitting at 45 degrees to the ground. Their efficiency is reduced during storms and when damaged. You can repair these using some trusty Duct Tape."#, - value = "-1554349863" - ) - )] - StructureSolarPanel45 = -1554349863i32, - #[strum( - serialize = "ItemGasCanisterPollutants", - props(name = r#"Canister (Pollutants)"#, desc = r#""#, value = "-1552586384") - )] - ItemGasCanisterPollutants = -1552586384i32, - #[strum( - serialize = "CartridgeAtmosAnalyser", - props( - name = r#"Atmos Analyzer"#, - desc = r#"The Lorenz atmos analyzer is a multi-functional mass-spectrometer designed by ExMin for use with the OreCore Handheld Tablet. It displays the pressure, concentration and molar quantity of gas in rooms, tanks, or pipe networks."#, - value = "-1550278665" - ) - )] - CartridgeAtmosAnalyser = -1550278665i32, - #[strum( - serialize = "StructureWallPaddedArchLightsFittings", - props( - name = r#"Wall (Padded Arch Lights Fittings)"#, - desc = r#""#, - value = "-1546743960" - ) - )] - StructureWallPaddedArchLightsFittings = -1546743960i32, - #[strum( - serialize = "StructureSolarPanelDualReinforced", - props( - name = r#"Solar Panel (Heavy Dual)"#, - desc = r#"This solar panel is resistant to storm damage."#, - value = "-1545574413" - ) - )] - StructureSolarPanelDualReinforced = -1545574413i32, - #[strum( - serialize = "StructureCableCorner4", - props(name = r#"Cable (4-Way Corner)"#, desc = r#""#, value = "-1542172466") - )] - StructureCableCorner4 = -1542172466i32, - #[strum( - serialize = "StructurePressurePlateSmall", - props(name = r#"Trigger Plate (Small)"#, desc = r#""#, value = "-1536471028") - )] - StructurePressurePlateSmall = -1536471028i32, - #[strum( - serialize = "StructureFlashingLight", - props( - name = r#"Flashing Light"#, - desc = r#"Few objects or ideas are as clearly and transparently named as the Flashing Light, although fans of scrupulous accuracy have been known to refer to it by its full, official title: 'Default Yellow Flashing Light'."#, - value = "-1535893860" - ) - )] - StructureFlashingLight = -1535893860i32, - #[strum( - serialize = "StructureFuselageTypeA2", - props(name = r#"Fuselage (Type A2)"#, desc = r#""#, value = "-1533287054") - )] - StructureFuselageTypeA2 = -1533287054i32, - #[strum( - serialize = "ItemPipeDigitalValve", - props( - name = r#"Kit (Digital Valve)"#, - desc = r#"This kit creates a Digital Valve."#, - value = "-1532448832" - ) - )] - ItemPipeDigitalValve = -1532448832i32, - #[strum( - serialize = "StructureCableJunctionH5", - props( - name = r#"Heavy Cable (5-Way Junction)"#, - desc = r#""#, - value = "-1530571426" - ) - )] - StructureCableJunctionH5 = -1530571426i32, - #[strum( - serialize = "StructureFlagSmall", - props(name = r#"Small Flag"#, desc = r#""#, value = "-1529819532") - )] - StructureFlagSmall = -1529819532i32, - #[strum( - serialize = "StopWatch", - props(name = r#"Stop Watch"#, desc = r#""#, value = "-1527229051") - )] - StopWatch = -1527229051i32, - #[strum( - serialize = "ItemUraniumOre", - props( - name = r#"Ore (Uranium)"#, - desc = r#"In 1934, Enrico Fermi noticed that bombarding uranium with neutrons produced a burst of beta rays, and a new material. This process was named 'nuclear fission', and resulted in cheap energy, the Cold War, and countless thousand deaths. While reasonably common throughout the Solar System, Stationeers are wary of the material."#, - value = "-1516581844" - ) - )] - ItemUraniumOre = -1516581844i32, - #[strum( - serialize = "Landingpad_ThreshholdPiece", - props(name = r#"Landingpad Threshhold"#, desc = r#""#, value = "-1514298582") - )] - LandingpadThreshholdPiece = -1514298582i32, - #[strum( - serialize = "ItemFlowerGreen", - props(name = r#"Flower (Green)"#, desc = r#""#, value = "-1513337058") - )] - ItemFlowerGreen = -1513337058i32, - #[strum( - serialize = "StructureCompositeCladdingAngled", - props( - name = r#"Composite Cladding (Angled)"#, - desc = r#""#, - value = "-1513030150" - ) - )] - StructureCompositeCladdingAngled = -1513030150i32, - #[strum( - serialize = "StructureChairThickSingle", - props(name = r#"Chair (Thick Single)"#, desc = r#""#, value = "-1510009608") - )] - StructureChairThickSingle = -1510009608i32, - #[strum( - serialize = "StructureInsulatedPipeCrossJunction5", - props( - name = r#"Insulated Pipe (5-Way Junction)"#, - desc = r#"Insulated pipes greatly reduce heat loss from gases stored in them."#, - value = "-1505147578" - ) - )] - StructureInsulatedPipeCrossJunction5 = -1505147578i32, - #[strum( - serialize = "ItemNitrice", - props( - name = r#"Ice (Nitrice)"#, - desc = r#"Nitrice is the nickname given to solid Nitrogen Ice, and found on many planets and moons in the Solar System. Given the inert nature of the Nitrogen it produces, the ice is useful when making breathable atmospheres with low flammability. - -Highly sensitive to temperature, nitrice will begin to melt as soon as it is mined, unless the temperature is below zero, or it is stored in the Mining Belt, Mining Belt MK II or devices like the Ice Crusher or Fridge Small."#, - value = "-1499471529" - ) - )] - ItemNitrice = -1499471529i32, - #[strum( - serialize = "StructureCargoStorageSmall", - props(name = r#"Cargo Storage (Small)"#, desc = r#""#, value = "-1493672123") - )] - StructureCargoStorageSmall = -1493672123i32, - #[strum( - serialize = "StructureLogicCompare", - props( - name = r#"Logic Compare"#, - desc = r#"0.Equals -1.Greater -2.Less -3.NotEquals"#, - value = "-1489728908" - ) - )] - StructureLogicCompare = -1489728908i32, - #[strum( - serialize = "Landingpad_TaxiPieceStraight", - props( - name = r#"Landingpad Taxi Straight"#, - desc = r#""#, - value = "-1477941080" - ) - )] - LandingpadTaxiPieceStraight = -1477941080i32, - #[strum( - serialize = "StructurePassthroughHeatExchangerLiquidToLiquid", - props( - name = r#"CounterFlow Heat Exchanger - Liquid + Liquid"#, - desc = r#"Exchange heat from one pipe network to another. By drawing down the pressure of the outputs with a pump or regulator and regulating input pressures, the temperatures of two counterflowing networks can be effectively exchanged. - Balancing the throughput of both inputs is key to creating a good exchange of temperatures."#, - value = "-1472829583" - ) - )] - StructurePassthroughHeatExchangerLiquidToLiquid = -1472829583i32, - #[strum( - serialize = "ItemKitCompositeCladding", - props(name = r#"Kit (Cladding)"#, desc = r#""#, value = "-1470820996") - )] - ItemKitCompositeCladding = -1470820996i32, - #[strum( - serialize = "StructureChuteInlet", - props( - name = r#"Chute Inlet"#, - desc = r#"The aim for any Stationeer is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps. -The chute inlet is an aperture by which items can be introduced to import/export networks. Note that its origins in zero-gravity mining means chute inlets are unpowered and permanently open, rather than interactable, allowing objects to be thrown in. They can be connected to logic systems to monitor throughput."#, - value = "-1469588766" - ) - )] - StructureChuteInlet = -1469588766i32, - #[strum( - serialize = "StructureSleeper", - props(name = r#"Sleeper"#, desc = r#""#, value = "-1467449329") - )] - StructureSleeper = -1467449329i32, - #[strum( - serialize = "CartridgeElectronicReader", - props(name = r#"eReader"#, desc = r#""#, value = "-1462180176") - )] - CartridgeElectronicReader = -1462180176i32, - #[strum( - serialize = "StructurePictureFrameThickMountPortraitLarge", - props( - name = r#"Picture Frame Thick Mount Portrait Large"#, - desc = r#""#, - value = "-1459641358" - ) - )] - StructurePictureFrameThickMountPortraitLarge = -1459641358i32, - #[strum( - serialize = "ItemSteelFrames", - props( - name = r#"Steel Frames"#, - desc = r#"An advanced and stronger version of Iron Frames, steel frames are placed by right-clicking. To complete construction, use Steel Sheets and a Welding Torch in your active hand."#, - value = "-1448105779" - ) - )] - ItemSteelFrames = -1448105779i32, - #[strum( - serialize = "StructureChuteFlipFlopSplitter", - props( - name = r#"Chute Flip Flop Splitter"#, - desc = r#"A chute that toggles between two outputs"#, - value = "-1446854725" - ) - )] - StructureChuteFlipFlopSplitter = -1446854725i32, - #[strum( - serialize = "StructurePictureFrameThickLandscapeLarge", - props( - name = r#"Picture Frame Thick Landscape Large"#, - desc = r#""#, - value = "-1434523206" - ) - )] - StructurePictureFrameThickLandscapeLarge = -1434523206i32, - #[strum( - serialize = "ItemKitAdvancedComposter", - props( - name = r#"Kit (Advanced Composter)"#, - desc = r#""#, - value = "-1431998347" - ) - )] - ItemKitAdvancedComposter = -1431998347i32, - #[strum( - serialize = "StructureLiquidTankBigInsulated", - props( - name = r#"Insulated Liquid Tank Big"#, - desc = r#""#, - value = "-1430440215" - ) - )] - StructureLiquidTankBigInsulated = -1430440215i32, - #[strum( - serialize = "StructureEvaporationChamber", - props( - name = r#"Evaporation Chamber"#, - desc = r#"A device for safely evaporating liquids into gasses. Liquids and Gasses will both exist safely inside the device. Lowering the pressure target of the in-built back pressure regulator using the setting wheel will change the boiling temperature of liquids inside. - The secondary gas input on the left is a heat-exchanger input and allows for heat exchange between the secondary input pipe and the internal atmosphere of the Evaporation Chamber. - Paired with Condensation Chamber Stationeers can exploit the phase change properties of gases to build a DIY air conditioner."#, - value = "-1429782576" - ) - )] - StructureEvaporationChamber = -1429782576i32, - #[strum( - serialize = "StructureWallGeometryTMirrored", - props( - name = r#"Wall (Geometry T Mirrored)"#, - desc = r#""#, - value = "-1427845483" - ) - )] - StructureWallGeometryTMirrored = -1427845483i32, - #[strum( - serialize = "KitchenTableShort", - props(name = r#"Kitchen Table (Short)"#, desc = r#""#, value = "-1427415566") - )] - KitchenTableShort = -1427415566i32, - #[strum( - serialize = "StructureChairRectangleSingle", - props( - name = r#"Chair (Rectangle Single)"#, - desc = r#""#, - value = "-1425428917" - ) - )] - StructureChairRectangleSingle = -1425428917i32, - #[strum( - serialize = "StructureTransformer", - props( - name = r#"Transformer (Large)"#, - desc = r#"The large Norsec transformer is a critical component of extended electrical networks, controlling the maximum power that will flow down a cable. To prevent overloading, output can be set from 0 to 50,000W. -Note that transformers operate as data isolators, preventing data flowing into any network beyond it."#, - value = "-1423212473" - ) - )] - StructureTransformer = -1423212473i32, - #[strum( - serialize = "StructurePictureFrameThinLandscapeLarge", - props( - name = r#"Picture Frame Thin Landscape Large"#, - desc = r#""#, - value = "-1418288625" - ) - )] - StructurePictureFrameThinLandscapeLarge = -1418288625i32, - #[strum( - serialize = "StructureCompositeCladdingAngledCornerInnerLong", - props( - name = r#"Composite Cladding (Angled Corner Inner Long)"#, - desc = r#""#, - value = "-1417912632" - ) - )] - StructureCompositeCladdingAngledCornerInnerLong = -1417912632i32, - #[strum( - serialize = "ItemPlantEndothermic_Genepool2", - props( - name = r#"Winterspawn (Beta variant)"#, - desc = r#"Agrizero's Winterspawn atmospheric bio-processor is a recent addition to their catalog of genespliced environmental decorations. Using ambient heat to split Water into Volatiles and Oxygen, the Winterspawn cools its surroundings when supplied with sufficient Nitrogen. The beta variant has a peak cooling and electrolysis capacity of 150Watts and is most efficient operating in air temperatures of 14 to 24 Degrees Celsius."#, - value = "-1414203269" - ) - )] - ItemPlantEndothermicGenepool2 = -1414203269i32, - #[strum( - serialize = "ItemFlowerOrange", - props(name = r#"Flower (Orange)"#, desc = r#""#, value = "-1411986716") - )] - ItemFlowerOrange = -1411986716i32, - #[strum( - serialize = "AccessCardBlue", - props(name = r#"Access Card (Blue)"#, desc = r#""#, value = "-1411327657") - )] - AccessCardBlue = -1411327657i32, - #[strum( - serialize = "StructureWallSmallPanelsOpen", - props( - name = r#"Wall (Small Panels Open)"#, - desc = r#""#, - value = "-1407480603" - ) - )] - StructureWallSmallPanelsOpen = -1407480603i32, - #[strum( - serialize = "ItemNickelIngot", - props(name = r#"Ingot (Nickel)"#, desc = r#""#, value = "-1406385572") - )] - ItemNickelIngot = -1406385572i32, - #[strum( - serialize = "StructurePipeCrossJunction", - props( - name = r#"Pipe (Cross Junction)"#, - desc = r#"You can upgrade this pipe to an Insulated Pipe (Cross Junction) using an Kit (Insulated Pipe) and a Wrench."#, - value = "-1405295588" - ) - )] - StructurePipeCrossJunction = -1405295588i32, - #[strum( - serialize = "StructureCableJunction6", - props( - name = r#"Cable (6-Way Junction)"#, - desc = r#"Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of Stationeer duty - so much so, the ODA designated it an official 'tool' during the 3rd Decannual Stationeer Solar Conference. -Normal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy)."#, - value = "-1404690610" - ) - )] - StructureCableJunction6 = -1404690610i32, - #[strum( - serialize = "ItemPassiveVentInsulated", - props( - name = r#"Kit (Insulated Passive Vent)"#, - desc = r#""#, - value = "-1397583760" - ) - )] - ItemPassiveVentInsulated = -1397583760i32, - #[strum( - serialize = "ItemKitChairs", - props(name = r#"Kit (Chairs)"#, desc = r#""#, value = "-1394008073") - )] - ItemKitChairs = -1394008073i32, - #[strum( - serialize = "StructureBatteryLarge", - props( - name = r#"Station Battery (Large)"#, - desc = r#"Providing even better large-scale, reliable power storage than the {THING;StructureBattery}, the Sinotai 'Da Dianchi' large station battery is the heart of most Stationeer bases. -There are a variety of cautions to the design of electrical systems using batteries, and every experienced Stationeer has a story to tell, hence the Stationeer adage: 'Dianzi cooks, but it also frys.' -POWER OUTPUT -Able to store up to 9000001 watts of power, there are no practical limits to its throughput, hence it is wise to use Cable Coil (Heavy). Seasoned electrical engineers will also laugh in the face of those who fail to separate out their power generation networks using an Area Power Control and Transformer (Large). "#, - value = "-1388288459" - ) - )] - StructureBatteryLarge = -1388288459i32, - #[strum( - serialize = "ItemGasFilterNitrogenL", - props( - name = r#"Heavy Filter (Nitrogen)"#, - desc = r#""#, - value = "-1387439451" - ) - )] - ItemGasFilterNitrogenL = -1387439451i32, - #[strum( - serialize = "KitchenTableTall", - props(name = r#"Kitchen Table (Tall)"#, desc = r#""#, value = "-1386237782") - )] - KitchenTableTall = -1386237782i32, - #[strum( - serialize = "StructureCapsuleTankGas", - props( - name = r#"Gas Capsule Tank Small"#, - desc = r#""#, - value = "-1385712131" - ) - )] - StructureCapsuleTankGas = -1385712131i32, - #[strum( - serialize = "StructureCryoTubeVertical", - props( - name = r#"Cryo Tube Vertical"#, - desc = r#"The vertical variant of the cryo tube. Will heal players and organs as well as revive dead players when provided with an atmosphere of Nitrogen below -150C."#, - value = "-1381321828" - ) - )] - StructureCryoTubeVertical = -1381321828i32, - #[strum( - serialize = "StructureWaterWallCooler", - props(name = r#"Liquid Wall Cooler"#, desc = r#""#, value = "-1369060582") - )] - StructureWaterWallCooler = -1369060582i32, - #[strum( - serialize = "ItemKitTables", - props(name = r#"Kit (Tables)"#, desc = r#""#, value = "-1361598922") - )] - ItemKitTables = -1361598922i32, - #[strum( - serialize = "StructureLargeHangerDoor", - props( - name = r#"Large Hangar Door"#, - desc = r#"1 x 3 modular door piece for building hangar doors."#, - value = "-1351081801" - ) - )] - StructureLargeHangerDoor = -1351081801i32, - #[strum( - serialize = "ItemGoldOre", - props( - name = r#"Ore (Gold)"#, - desc = r#"Surprisingly common throughout the Solar System, Gold is thought to originate in the heart of supernovas, gathering as dust in the early stages of solar formation, then incorporating into the slowly accreting planetary bodies. Now a prized element in Stationeer construction, Gold is valued not for its beauty, but its reliability: inert, durable, conductive and highly stable, gold's strength is that it does nothing."#, - value = "-1348105509" - ) - )] - ItemGoldOre = -1348105509i32, - #[strum( - serialize = "ItemCannedMushroom", - props( - name = r#"Canned Mushroom"#, - desc = r#"Made in an Advanced Packaging Machine or Basic Packaging Machine, using Cooked Mushroom and a Empty Can, delicious mushroom soup is fairly high in nutrition, and does not decay."#, - value = "-1344601965" - ) - )] - ItemCannedMushroom = -1344601965i32, - #[strum( - serialize = "AppliancePaintMixer", - props(name = r#"Paint Mixer"#, desc = r#""#, value = "-1339716113") - )] - AppliancePaintMixer = -1339716113i32, - #[strum( - serialize = "AccessCardGray", - props(name = r#"Access Card (Gray)"#, desc = r#""#, value = "-1339479035") - )] - AccessCardGray = -1339479035i32, - #[strum( - serialize = "StructureChuteDigitalValveRight", - props( - name = r#"Chute Digital Valve Right"#, - desc = r#"The Digital Chute Valve will stop the flow of materials when set to closed and when set to open, will act like a straight chute. The valve will automatically close after a certain number of items have passed through. This threshold can be set using the dial."#, - value = "-1337091041" - ) - )] - StructureChuteDigitalValveRight = -1337091041i32, - #[strum( - serialize = "ItemSugarCane", - props(name = r#"Sugarcane"#, desc = r#""#, value = "-1335056202") - )] - ItemSugarCane = -1335056202i32, - #[strum( - serialize = "ItemKitSmallDirectHeatExchanger", - props( - name = r#"Kit (Small Direct Heat Exchanger)"#, - desc = r#""#, - value = "-1332682164" - ) - )] - ItemKitSmallDirectHeatExchanger = -1332682164i32, - #[strum( - serialize = "AccessCardBlack", - props(name = r#"Access Card (Black)"#, desc = r#""#, value = "-1330388999") - )] - AccessCardBlack = -1330388999i32, - #[strum( - serialize = "StructureLogicWriter", - props(name = r#"Logic Writer"#, desc = r#""#, value = "-1326019434") - )] - StructureLogicWriter = -1326019434i32, - #[strum( - serialize = "StructureLogicWriterSwitch", - props(name = r#"Logic Writer Switch"#, desc = r#""#, value = "-1321250424") - )] - StructureLogicWriterSwitch = -1321250424i32, - #[strum( - serialize = "StructureWallIron04", - props(name = r#"Iron Wall (Type 4)"#, desc = r#""#, value = "-1309433134") - )] - StructureWallIron04 = -1309433134i32, - #[strum( - serialize = "ItemPureIceLiquidVolatiles", - props( - name = r#"Pure Ice Liquid Volatiles"#, - desc = r#"A frozen chunk of pure Liquid Volatiles"#, - value = "-1306628937" - ) - )] - ItemPureIceLiquidVolatiles = -1306628937i32, - #[strum( - serialize = "StructureWallLightBattery", - props(name = r#"Wall Light (Battery)"#, desc = r#""#, value = "-1306415132") - )] - StructureWallLightBattery = -1306415132i32, - #[strum( - serialize = "AppliancePlantGeneticAnalyzer", - props( - name = r#"Plant Genetic Analyzer"#, - desc = r#"The Genetic Analyzer can be used to process samples from the Plant Sampler. Once processed, the genetic information of the sampled plant can be viewed by clicking on the search button. - -Individual Gene Value Widgets: -Most gene values will appear as a sliding bar between a minimum value on the left and a maximum value on the right. The actual value of the gene is in the middle of the bar, in orange. - -Multiple Gene Value Widgets: -For temperature and pressure ranges, four genes appear on the same widget. The orange values underneath the bar are the minimum and maximum thresholds for growth. Outside of this range, the plant will stop growing and eventually die. The blue values underneath the bar are the minimum and maximum thresholds for ideal growth. Inside of this range, the plant will grow at maximum speed. The white values above the bar are the minimum and maximum achievable values for the growth threshold."#, - value = "-1303038067" - ) - )] - AppliancePlantGeneticAnalyzer = -1303038067i32, - #[strum( - serialize = "ItemIronIngot", - props( - name = r#"Ingot (Iron)"#, - desc = r#"The most basic unit of construction available to Stationeer-kind, iron ingots are created by smelting Ore (Iron) in the Furnace and Arc Furnace, and used to create a variety of items."#, - value = "-1301215609" - ) - )] - ItemIronIngot = -1301215609i32, - #[strum( - serialize = "StructureSleeperVertical", - props( - name = r#"Sleeper Vertical"#, - desc = r#"The vertical variant of the sleeper. Will keep players hydrated and fed while they are logged out - as long as a breathable atmosphere is provided."#, - value = "-1300059018" - ) - )] - StructureSleeperVertical = -1300059018i32, - #[strum( - serialize = "Landingpad_2x2CenterPiece01", - props( - name = r#"Landingpad 2x2 Center Piece"#, - desc = r#"Recommended for larger traders. This allows for the creation of 4x4 and 6x6 landing areas with symetrical doors"#, - value = "-1295222317" - ) - )] - Landingpad2X2CenterPiece01 = -1295222317i32, - #[strum( - serialize = "SeedBag_Corn", - props( - name = r#"Corn Seeds"#, - desc = r#"Grow a Corn."#, - value = "-1290755415" - ) - )] - SeedBagCorn = -1290755415i32, - #[strum( - serialize = "StructureDigitalValve", - props( - name = r#"Digital Valve"#, - desc = r#"The digital valve allows Stationeers to create logic-controlled valves and pipe networks."#, - value = "-1280984102" - ) - )] - StructureDigitalValve = -1280984102i32, - #[strum( - serialize = "StructureTankConnector", - props( - name = r#"Tank Connector"#, - desc = r#"Tank connectors are basic mounting devices that allow you to attach a Portable Gas Tank to a gas pipe network."#, - value = "-1276379454" - ) - )] - StructureTankConnector = -1276379454i32, - #[strum( - serialize = "ItemSuitModCryogenicUpgrade", - props( - name = r#"Cryogenic Suit Upgrade"#, - desc = r#"Enables suits with basic cooling functionality to work with cryogenic liquid."#, - value = "-1274308304" - ) - )] - ItemSuitModCryogenicUpgrade = -1274308304i32, - #[strum( - serialize = "ItemKitLandingPadWaypoint", - props( - name = r#"Kit (Landing Pad Runway)"#, - desc = r#""#, - value = "-1267511065" - ) - )] - ItemKitLandingPadWaypoint = -1267511065i32, - #[strum( - serialize = "DynamicGasTankAdvancedOxygen", - props( - name = r#"Portable Gas Tank Mk II (Oxygen)"#, - desc = r#"0.Mode0 -1.Mode1"#, - value = "-1264455519" - ) - )] - DynamicGasTankAdvancedOxygen = -1264455519i32, - #[strum( - serialize = "ItemBasketBall", - props(name = r#"Basket Ball"#, desc = r#""#, value = "-1262580790") - )] - ItemBasketBall = -1262580790i32, - #[strum( - serialize = "ItemSpacepack", - props( - name = r#"Spacepack"#, - desc = r#"The basic CHAC spacepack isn't 'technically' a jetpack, it's a gas thruster. It can be powered by any gas, so long as the internal pressure of the canister is higher than the ambient external pressure. If the external pressure is greater, the spacepack will not function. -Indispensable for building, mining and general movement, it has ten storage slots and lets Stationeers fly at 3m/s, compared to the more powerful Jetpack Basic or Hardsuit Jetpack. Adjusting the thrust value alters your rate of acceleration, while activating the stablizer causes the spacepack to hover when a given height is reached. -USE: 'J' to activate; 'space' to fly up; 'left ctrl' to descend; and 'WASD' to move."#, - value = "-1260618380" - ) - )] - ItemSpacepack = -1260618380i32, - #[strum( - serialize = "ItemKitRocketDatalink", - props(name = r#"Kit (Rocket Datalink)"#, desc = r#""#, value = "-1256996603") - )] - ItemKitRocketDatalink = -1256996603i32, - #[strum( - serialize = "StructureGasSensor", - props( - name = r#"Gas Sensor"#, - desc = r#"Gas sensors are designed to monitor and report basic atmospheric information, including temperature, pressure, and gas ratios. They also make wonderful wedding presents."#, - value = "-1252983604" - ) - )] - StructureGasSensor = -1252983604i32, - #[strum( - serialize = "ItemPureIceCarbonDioxide", - props( - name = r#"Pure Ice Carbon Dioxide"#, - desc = r#"A frozen chunk of pure Carbon Dioxide"#, - value = "-1251009404" - ) - )] - ItemPureIceCarbonDioxide = -1251009404i32, - #[strum( - serialize = "ItemKitTurboVolumePump", - props( - name = r#"Kit (Turbo Volume Pump - Gas)"#, - desc = r#""#, - value = "-1248429712" - ) - )] - ItemKitTurboVolumePump = -1248429712i32, - #[strum( - serialize = "ItemGasFilterNitrousOxide", - props( - name = r#"Filter (Nitrous Oxide)"#, - desc = r#""#, - value = "-1247674305" - ) - )] - ItemGasFilterNitrousOxide = -1247674305i32, - #[strum( - serialize = "StructureChairThickDouble", - props(name = r#"Chair (Thick Double)"#, desc = r#""#, value = "-1245724402") - )] - StructureChairThickDouble = -1245724402i32, - #[strum( - serialize = "StructureWallPaddingArchVent", - props( - name = r#"Wall (Padding Arch Vent)"#, - desc = r#""#, - value = "-1243329828" - ) - )] - StructureWallPaddingArchVent = -1243329828i32, - #[strum( - serialize = "ItemKitConsole", - props(name = r#"Kit (Consoles)"#, desc = r#""#, value = "-1241851179") - )] - ItemKitConsole = -1241851179i32, - #[strum( - serialize = "ItemKitBeds", - props(name = r#"Kit (Beds)"#, desc = r#""#, value = "-1241256797") - )] - ItemKitBeds = -1241256797i32, - #[strum( - serialize = "StructureFrameIron", - props(name = r#"Iron Frame"#, desc = r#""#, value = "-1240951678") - )] - StructureFrameIron = -1240951678i32, - #[strum( - serialize = "ItemDirtyOre", - props( - name = r#"Dirty Ore"#, - desc = r#"Ore mined from bedrock via the Deep Miner which then can be used in the Centrifuge, or Combustion Centrifuge. Once processed, it produces ore in a ratio similar to the average found on the planet's surface. "#, - value = "-1234745580" - ) - )] - ItemDirtyOre = -1234745580i32, - #[strum( - serialize = "StructureLargeDirectHeatExchangeGastoGas", - props( - name = r#"Large Direct Heat Exchanger - Gas + Gas"#, - desc = r#"Direct Heat Exchangers equalize the temperature of the two input networks."#, - value = "-1230658883" - ) - )] - StructureLargeDirectHeatExchangeGastoGas = -1230658883i32, - #[strum( - serialize = "ItemSensorProcessingUnitOreScanner", - props( - name = r#"Sensor Processing Unit (Ore Scanner)"#, - desc = r#"The Sensor Processing unit can be inserted into Sensor Lenses to reveal underground minerals in a HUD."#, - value = "-1219128491" - ) - )] - ItemSensorProcessingUnitOreScanner = -1219128491i32, - #[strum( - serialize = "StructurePictureFrameThickPortraitSmall", - props( - name = r#"Picture Frame Thick Portrait Small"#, - desc = r#""#, - value = "-1218579821" - ) - )] - StructurePictureFrameThickPortraitSmall = -1218579821i32, - #[strum( - serialize = "ItemGasFilterOxygenL", - props(name = r#"Heavy Filter (Oxygen)"#, desc = r#""#, value = "-1217998945") - )] - ItemGasFilterOxygenL = -1217998945i32, - #[strum( - serialize = "Landingpad_LiquidConnectorInwardPiece", - props( - name = r#"Landingpad Liquid Input"#, - desc = r#""#, - value = "-1216167727" - ) - )] - LandingpadLiquidConnectorInwardPiece = -1216167727i32, - #[strum( - serialize = "ItemWreckageStructureWeatherStation008", - props( - name = r#"Wreckage Structure Weather Station"#, - desc = r#""#, - value = "-1214467897" - ) - )] - ItemWreckageStructureWeatherStation008 = -1214467897i32, - #[strum( - serialize = "ItemPlantThermogenic_Creative", - props( - name = r#"Thermogenic Plant Creative"#, - desc = r#""#, - value = "-1208890208" - ) - )] - ItemPlantThermogenicCreative = -1208890208i32, - #[strum( - serialize = "ItemRocketScanningHead", - props(name = r#"Rocket Scanner Head"#, desc = r#""#, value = "-1198702771") - )] - ItemRocketScanningHead = -1198702771i32, - #[strum( - serialize = "StructureCableStraightBurnt", - props( - name = r#"Burnt Cable (Straight)"#, - desc = r#""#, - value = "-1196981113" - ) - )] - StructureCableStraightBurnt = -1196981113i32, - #[strum( - serialize = "ItemHydroponicTray", - props( - name = r#"Kit (Hydroponic Tray)"#, - desc = r#"This kits creates a Hydroponics Tray for growing various plants."#, - value = "-1193543727" - ) - )] - ItemHydroponicTray = -1193543727i32, - #[strum( - serialize = "ItemCannedRicePudding", - props( - name = r#"Canned Rice Pudding"#, - desc = r#"Made in an Advanced Packaging Machine or Basic Packaging Machine, using Cooked Rice and an Empty Can, canned rice pudding is a sweet treat, fairly high in nutrition, and does not decay."#, - value = "-1185552595" - ) - )] - ItemCannedRicePudding = -1185552595i32, - #[strum( - serialize = "StructureInLineTankLiquid1x2", - props( - name = r#"In-Line Tank Liquid"#, - desc = r#"A small expansion tank that increases the volume of a pipe network."#, - value = "-1183969663" - ) - )] - StructureInLineTankLiquid1X2 = -1183969663i32, - #[strum( - serialize = "StructureInteriorDoorTriangle", - props( - name = r#"Interior Door Triangle"#, - desc = r#"0.Operate -1.Logic"#, - value = "-1182923101" - ) - )] - StructureInteriorDoorTriangle = -1182923101i32, - #[strum( - serialize = "ItemKitElectronicsPrinter", - props( - name = r#"Kit (Electronics Printer)"#, - desc = r#""#, - value = "-1181922382" - ) - )] - ItemKitElectronicsPrinter = -1181922382i32, - #[strum( - serialize = "StructureWaterBottleFiller", - props(name = r#"Water Bottle Filler"#, desc = r#""#, value = "-1178961954") - )] - StructureWaterBottleFiller = -1178961954i32, - #[strum( - serialize = "StructureWallVent", - props( - name = r#"Wall Vent"#, - desc = r#"Used to mix atmospheres passively between two walls."#, - value = "-1177469307" - ) - )] - StructureWallVent = -1177469307i32, - #[strum( - serialize = "ItemSensorLenses", - props( - name = r#"Sensor Lenses"#, - desc = r#"These Norsec glasses might not be the most fashionable thing, but when a Sensor Processing Unit (Ore Scanner) is inserted, Stationeers can use these handy glasses to x-ray the ground and find ores that are hidden beneath the surface."#, - value = "-1176140051" - ) - )] - ItemSensorLenses = -1176140051i32, - #[strum( - serialize = "ItemSoundCartridgeLeads", - props(name = r#"Sound Cartridge Leads"#, desc = r#""#, value = "-1174735962") - )] - ItemSoundCartridgeLeads = -1174735962i32, - #[strum( - serialize = "StructureMediumConvectionRadiatorLiquid", - props( - name = r#"Medium Convection Radiator Liquid"#, - desc = r#"A stand-alone liquid radiator unit optimized for exchanging heat with its surrounding atmosphere."#, - value = "-1169014183" - ) - )] - StructureMediumConvectionRadiatorLiquid = -1169014183i32, - #[strum( - serialize = "ItemKitFridgeBig", - props(name = r#"Kit (Fridge Large)"#, desc = r#""#, value = "-1168199498") - )] - ItemKitFridgeBig = -1168199498i32, - #[strum( - serialize = "ItemKitPipeLiquid", - props(name = r#"Kit (Liquid Pipe)"#, desc = r#""#, value = "-1166461357") - )] - ItemKitPipeLiquid = -1166461357i32, - #[strum( - serialize = "StructureWallFlatCornerTriangleFlat", - props( - name = r#"Wall (Flat Corner Triangle Flat)"#, - desc = r#""#, - value = "-1161662836" - ) - )] - StructureWallFlatCornerTriangleFlat = -1161662836i32, - #[strum( - serialize = "StructureLogicMathUnary", - props( - name = r#"Math Unary"#, - desc = r#"0.Ceil -1.Floor -2.Abs -3.Log -4.Exp -5.Round -6.Rand -7.Sqrt -8.Sin -9.Cos -10.Tan -11.Asin -12.Acos -13.Atan -14.Not"#, - value = "-1160020195" - ) - )] - StructureLogicMathUnary = -1160020195i32, - #[strum( - serialize = "ItemPlantEndothermic_Creative", - props( - name = r#"Endothermic Plant Creative"#, - desc = r#""#, - value = "-1159179557" - ) - )] - ItemPlantEndothermicCreative = -1159179557i32, - #[strum( - serialize = "ItemSensorProcessingUnitCelestialScanner", - props( - name = r#"Sensor Processing Unit (Celestial Scanner)"#, - desc = r#""#, - value = "-1154200014" - ) - )] - ItemSensorProcessingUnitCelestialScanner = -1154200014i32, - #[strum( - serialize = "StructureChairRectangleDouble", - props( - name = r#"Chair (Rectangle Double)"#, - desc = r#""#, - value = "-1152812099" - ) - )] - StructureChairRectangleDouble = -1152812099i32, - #[strum( - serialize = "ItemGasCanisterOxygen", - props(name = r#"Canister (Oxygen)"#, desc = r#""#, value = "-1152261938") - )] - ItemGasCanisterOxygen = -1152261938i32, - #[strum( - serialize = "ItemPureIceOxygen", - props( - name = r#"Pure Ice Oxygen"#, - desc = r#"A frozen chunk of pure Oxygen"#, - value = "-1150448260" - ) - )] - ItemPureIceOxygen = -1150448260i32, - #[strum( - serialize = "StructureBackPressureRegulator", - props( - name = r#"Back Pressure Regulator"#, - desc = r#"Unlike the Pressure Regulator, which closes when the input exceeds a given pressure, the back pressure regulator opens when input pressure reaches a given value."#, - value = "-1149857558" - ) - )] - StructureBackPressureRegulator = -1149857558i32, - #[strum( - serialize = "StructurePictureFrameThinMountLandscapeLarge", - props( - name = r#"Picture Frame Thin Landscape Large"#, - desc = r#""#, - value = "-1146760430" - ) - )] - StructurePictureFrameThinMountLandscapeLarge = -1146760430i32, - #[strum( - serialize = "StructureMediumRadiatorLiquid", - props( - name = r#"Medium Radiator Liquid"#, - desc = r#"A stand-alone liquid radiator unit optimized for radiating heat in vacuums."#, - value = "-1141760613" - ) - )] - StructureMediumRadiatorLiquid = -1141760613i32, - #[strum( - serialize = "ApplianceMicrowave", - props( - name = r#"Microwave"#, - desc = r#"While countless 'better' ways of cooking Food have been invented in the last few hundred years, few are as durable or easy to fabricate as the OK-Zoomer microwave. Licensed from Xigo, the plans are based on a classic model from the mid-21st century, giving it a charmingly retro feel. But don't worry, it oscillates Water molecules more than adequately. -Just bolt it to a Powered Bench using a Wrench to power it, follow the recipe, and you're cooking."#, - value = "-1136173965" - ) - )] - ApplianceMicrowave = -1136173965i32, - #[strum( - serialize = "ItemPipeGasMixer", - props( - name = r#"Kit (Gas Mixer)"#, - desc = r#"This kit creates a Gas Mixer."#, - value = "-1134459463" - ) - )] - ItemPipeGasMixer = -1134459463i32, - #[strum( - serialize = "CircuitboardModeControl", - props( - name = r#"Mode Control"#, - desc = r#"Can't decide which mode you love most? This circuit board allows you to switch any connected device between operation modes."#, - value = "-1134148135" - ) - )] - CircuitboardModeControl = -1134148135i32, - #[strum( - serialize = "StructureActiveVent", - props( - name = r#"Active Vent"#, - desc = r#"The active vent is a powered device for maintaining gas pressure by pumping gas into (or out of) a pipe network. The vent has two modes: 'Outward' sets it to pump gas into a space until pressure is reached; 'Inward' sets it to pump gas out until pressure is reached. The pressure parameter can be set on a connected Console. Default pressure is 101kPa for Outward; 0kPa for Inward ..."#, - value = "-1129453144" - ) - )] - StructureActiveVent = -1129453144i32, - #[strum( - serialize = "StructureWallPaddedArchCorner", - props( - name = r#"Wall (Padded Arch Corner)"#, - desc = r#""#, - value = "-1126688298" - ) - )] - StructureWallPaddedArchCorner = -1126688298i32, - #[strum( - serialize = "StructurePlanter", - props( - name = r#"Planter"#, - desc = r#"A small planter for decorative or hydroponic purposes. Can be connected to Water, or watered manually using a Water Bottle or Liquid Canister (Water)."#, - value = "-1125641329" - ) - )] - StructurePlanter = -1125641329i32, - #[strum( - serialize = "StructureBatteryMedium", - props( - name = r#"Battery (Medium)"#, - desc = r#"0.Empty -1.Critical -2.VeryLow -3.Low -4.Medium -5.High -6.Full"#, - value = "-1125305264" - ) - )] - StructureBatteryMedium = -1125305264i32, - #[strum( - serialize = "ItemHorticultureBelt", - props(name = r#"Horticulture Belt"#, desc = r#""#, value = "-1117581553") - )] - ItemHorticultureBelt = -1117581553i32, - #[strum( - serialize = "CartridgeMedicalAnalyser", - props( - name = r#"Medical Analyzer"#, - desc = r#"When added to the OreCore Handheld Tablet, Asura's's ReadyMed medical analyzer reveals the health, or otherwise, of users various organs. Due to a design flaw, older models were notorious for producing quasar-like levels of x-ray radiation. Recent advances in shielding have more than halved the risk to users."#, - value = "-1116110181" - ) - )] - CartridgeMedicalAnalyser = -1116110181i32, - #[strum( - serialize = "StructureCompositeFloorGrating3", - props( - name = r#"Composite Floor Grating (Type 3)"#, - desc = r#""#, - value = "-1113471627" - ) - )] - StructureCompositeFloorGrating3 = -1113471627i32, - #[strum( - serialize = "ItemPlainCake", - props(name = r#"Cake"#, desc = r#""#, value = "-1108244510") - )] - ItemPlainCake = -1108244510i32, - #[strum( - serialize = "ItemWreckageStructureWeatherStation004", - props( - name = r#"Wreckage Structure Weather Station"#, - desc = r#""#, - value = "-1104478996" - ) - )] - ItemWreckageStructureWeatherStation004 = -1104478996i32, - #[strum( - serialize = "StructureCableFuse1k", - props(name = r#"Fuse (1kW)"#, desc = r#""#, value = "-1103727120") - )] - StructureCableFuse1K = -1103727120i32, - #[strum( - serialize = "WeaponTorpedo", - props(name = r#"Torpedo"#, desc = r#""#, value = "-1102977898") - )] - WeaponTorpedo = -1102977898i32, - #[strum( - serialize = "StructureWallPaddingThin", - props(name = r#"Wall (Padding Thin)"#, desc = r#""#, value = "-1102403554") - )] - StructureWallPaddingThin = -1102403554i32, - #[strum( - serialize = "Landingpad_GasConnectorOutwardPiece", - props( - name = r#"Landingpad Gas Output"#, - desc = r#"Pumps gas purchased from a trader out of the landing pad. You can increase the landing pad's gas storage capacity by adding more Landingpad Gas Storage to the landing pad."#, - value = "-1100218307" - ) - )] - LandingpadGasConnectorOutwardPiece = -1100218307i32, - #[strum( - serialize = "AppliancePlantGeneticSplicer", - props( - name = r#"Plant Genetic Splicer"#, - desc = r#"The Genetic Splicer can be used to copy a single gene from one 'source' plant to another 'target' plant of the same type. After copying, the source plant will be destroyed. - -To begin splicing, place a plant or seed bag in the left slot (source) and place another plant or seed bag of the same type in the right slot (target). You can select a gene using the arrow buttons. Close the sliding door and press the green activate button. Once splicing has begun, the device will be locked until the process has finished (which will take approximately twenty minutes). If you want to cancel splicing you can power off the bench or detach the appliance as a last resort."#, - value = "-1094868323" - ) - )] - AppliancePlantGeneticSplicer = -1094868323i32, - #[strum( - serialize = "StructureMediumRocketGasFuelTank", - props( - name = r#"Gas Capsule Tank Medium"#, - desc = r#""#, - value = "-1093860567" - ) - )] - StructureMediumRocketGasFuelTank = -1093860567i32, - #[strum( - serialize = "StructureStairs4x2Rails", - props(name = r#"Stairs with Rails"#, desc = r#""#, value = "-1088008720") - )] - StructureStairs4X2Rails = -1088008720i32, - #[strum( - serialize = "StructureShowerPowered", - props(name = r#"Shower (Powered)"#, desc = r#""#, value = "-1081797501") - )] - StructureShowerPowered = -1081797501i32, - #[strum( - serialize = "ItemCookedMushroom", - props( - name = r#"Cooked Mushroom"#, - desc = r#"A high-nutrient cooked food, which can be canned."#, - value = "-1076892658" - ) - )] - ItemCookedMushroom = -1076892658i32, - #[strum( - serialize = "ItemGlasses", - props(name = r#"Glasses"#, desc = r#""#, value = "-1068925231") - )] - ItemGlasses = -1068925231i32, - #[strum( - serialize = "KitchenTableSimpleTall", - props( - name = r#"Kitchen Table (Simple Tall)"#, - desc = r#""#, - value = "-1068629349" - ) - )] - KitchenTableSimpleTall = -1068629349i32, - #[strum( - serialize = "ItemGasFilterOxygenM", - props( - name = r#"Medium Filter (Oxygen)"#, - desc = r#""#, - value = "-1067319543" - ) - )] - ItemGasFilterOxygenM = -1067319543i32, - #[strum( - serialize = "StructureTransformerMedium", - props( - name = r#"Transformer (Medium)"#, - desc = r#"Transformers control the maximum power that will flow down a sub-network of cables, to prevent overloading electrical systems. -Medium transformers are used in larger setups where more than 5000W is required, with output that can be set to a maximum of 25000W. -Note that transformers also operate as data isolators, preventing data flowing into any network beyond it."#, - value = "-1065725831" - ) - )] - StructureTransformerMedium = -1065725831i32, - #[strum( - serialize = "ItemKitDynamicCanister", - props( - name = r#"Kit (Portable Gas Tank)"#, - desc = r#""#, - value = "-1061945368" - ) - )] - ItemKitDynamicCanister = -1061945368i32, - #[strum( - serialize = "ItemEmergencyPickaxe", - props(name = r#"Emergency Pickaxe"#, desc = r#""#, value = "-1061510408") - )] - ItemEmergencyPickaxe = -1061510408i32, - #[strum( - serialize = "ItemWheat", - props( - name = r#"Wheat"#, - desc = r#"A classical symbol of growth and new life, wheat takes a moderate time to grow. Its main use is to create flour using the Reagent Processor."#, - value = "-1057658015" - ) - )] - ItemWheat = -1057658015i32, - #[strum( - serialize = "ItemEmergencyArcWelder", - props(name = r#"Emergency Arc Welder"#, desc = r#""#, value = "-1056029600") - )] - ItemEmergencyArcWelder = -1056029600i32, - #[strum( - serialize = "ItemGasFilterOxygenInfinite", - props( - name = r#"Catalytic Filter (Oxygen)"#, - desc = r#"A filter that selectively targets Oxygen. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle."#, - value = "-1055451111" - ) - )] - ItemGasFilterOxygenInfinite = -1055451111i32, - #[strum( - serialize = "StructureLiquidTurboVolumePump", - props( - name = r#"Turbo Volume Pump (Liquid)"#, - desc = r#"Shifts 10 times more liquid than a basic Volume Pump, with a mode that can be set to flow in either direction."#, - value = "-1051805505" - ) - )] - StructureLiquidTurboVolumePump = -1051805505i32, - #[strum( - serialize = "ItemPureIceLiquidHydrogen", - props( - name = r#"Pure Ice Liquid Hydrogen"#, - desc = r#"A frozen chunk of pure Liquid Hydrogen"#, - value = "-1044933269" - ) - )] - ItemPureIceLiquidHydrogen = -1044933269i32, - #[strum( - serialize = "StructureCompositeCladdingAngledCornerInnerLongR", - props( - name = r#"Composite Cladding (Angled Corner Inner Long R)"#, - desc = r#""#, - value = "-1032590967" - ) - )] - StructureCompositeCladdingAngledCornerInnerLongR = -1032590967i32, - #[strum( - serialize = "StructureAreaPowerControlReversed", - props( - name = r#"Area Power Control"#, - desc = r#"An Area Power Control (APC) has three main functions. -Its primary purpose is to regulate power flow, ensuring uninterrupted performance from devices and machinery, especially those with a fluctuating draw. -APCs also create sub-networks, as no devices on the far side of an APC are visible on the main network. -Lastly, an APC charges batteries, which can provide backup power to the sub-network in the case of an outage. Note that an APC requires a battery to stabilize power draw. It also has two variants, each allowing power to flow in one direction only."#, - value = "-1032513487" - ) - )] - StructureAreaPowerControlReversed = -1032513487i32, - #[strum( - serialize = "StructureChuteOutlet", - props( - name = r#"Chute Outlet"#, - desc = r#"The aim for any Stationeer is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps. -The chute outlet is an aperture for exiting items from import/export networks. Note that the outlet's origins in zero-gravity mining means they are permanently open, rather than interactable, but can be connected to logic systems to monitor throughput."#, - value = "-1022714809" - ) - )] - StructureChuteOutlet = -1022714809i32, - #[strum( - serialize = "ItemKitHarvie", - props(name = r#"Kit (Harvie)"#, desc = r#""#, value = "-1022693454") - )] - ItemKitHarvie = -1022693454i32, - #[strum( - serialize = "ItemGasCanisterFuel", - props(name = r#"Canister (Fuel)"#, desc = r#""#, value = "-1014695176") - )] - ItemGasCanisterFuel = -1014695176i32, - #[strum( - serialize = "StructureCompositeWall04", - props( - name = r#"Composite Wall (Type 4)"#, - desc = r#""#, - value = "-1011701267" - ) - )] - StructureCompositeWall04 = -1011701267i32, - #[strum( - serialize = "StructureSorter", - props( - name = r#"Sorter"#, - desc = r#"No amount of automation is complete without some way of moving different items to different parts of a system. The Xigo A2B sorter can be programmed via a computer with a Sorter Motherboard to direct various items into different chute networks. Filtered items are always passed out the righthand side of the sorter, while non filtered items continue straight through."#, - value = "-1009150565" - ) - )] - StructureSorter = -1009150565i32, - #[strum( - serialize = "StructurePipeLabel", - props( - name = r#"Pipe Label"#, - desc = r#"As its perspicacious name suggests, the pipe label is designed to be attached to a straight stretch of pipe. Users can then label the label with the Labeller."#, - value = "-999721119" - ) - )] - StructurePipeLabel = -999721119i32, - #[strum( - serialize = "ItemCannedEdamame", - props( - name = r#"Canned Edamame"#, - desc = r#"Made in an Advanced Packaging Machine or Basic Packaging Machine, using Cooked Soybean and an Empty Can, canned edamame beans are fairly high in nutrition, and do not decay."#, - value = "-999714082" - ) - )] - ItemCannedEdamame = -999714082i32, - #[strum( - serialize = "ItemTomato", - props( - name = r#"Tomato"#, - desc = r#"Tomato plants are perennial, and will produce multiple harvests without needing to be replanted. Once the plant is mature, it will fruit at a moderate pace."#, - value = "-998592080" - ) - )] - ItemTomato = -998592080i32, - #[strum( - serialize = "ItemCobaltOre", - props( - name = r#"Ore (Cobalt)"#, - desc = r#"Cobalt is a chemical element with the symbol "Co" and is typically found in only small deposits. Cobalt is a rare substance, but used create the Heal Pill and several alloys."#, - value = "-983091249" - ) - )] - ItemCobaltOre = -983091249i32, - #[strum( - serialize = "StructureCableCorner4HBurnt", - props( - name = r#"Burnt Heavy Cable (4-Way Corner)"#, - desc = r#""#, - value = "-981223316" - ) - )] - StructureCableCorner4HBurnt = -981223316i32, - #[strum( - serialize = "Landingpad_StraightPiece01", - props( - name = r#"Landingpad Straight"#, - desc = r#"Extends the size of the landing pad area. A basic trader shuttle requires a 3x3 clear landing area."#, - value = "-976273247" - ) - )] - LandingpadStraightPiece01 = -976273247i32, - #[strum( - serialize = "StructureMediumRadiator", - props( - name = r#"Medium Radiator"#, - desc = r#"A stand-alone radiator unit optimized for radiating heat in vacuums."#, - value = "-975966237" - ) - )] - StructureMediumRadiator = -975966237i32, - #[strum( - serialize = "ItemDynamicScrubber", - props( - name = r#"Kit (Portable Scrubber)"#, - desc = r#""#, - value = "-971920158" - ) - )] - ItemDynamicScrubber = -971920158i32, - #[strum( - serialize = "StructureCondensationValve", - props( - name = r#"Condensation Valve"#, - desc = r#"Allows for the removal of any liquids from a gas pipe into a liquid pipe. Only allows liquids to pass in one direction."#, - value = "-965741795" - ) - )] - StructureCondensationValve = -965741795i32, - #[strum( - serialize = "StructureChuteUmbilicalMale", - props( - name = r#"Umbilical (Chute)"#, - desc = r#"0.Left -1.Center -2.Right"#, - value = "-958884053" - ) - )] - StructureChuteUmbilicalMale = -958884053i32, - #[strum( - serialize = "ItemKitElevator", - props(name = r#"Kit (Elevator)"#, desc = r#""#, value = "-945806652") - )] - ItemKitElevator = -945806652i32, - #[strum( - serialize = "StructureSolarPanelReinforced", - props( - name = r#"Solar Panel (Heavy)"#, - desc = r#"This solar panel is resistant to storm damage."#, - value = "-934345724" - ) - )] - StructureSolarPanelReinforced = -934345724i32, - #[strum( - serialize = "ItemKitRocketTransformerSmall", - props( - name = r#"Kit (Transformer Small (Rocket))"#, - desc = r#""#, - value = "-932335800" - ) - )] - ItemKitRocketTransformerSmall = -932335800i32, - #[strum( - serialize = "CartridgeConfiguration", - props(name = r#"Configuration"#, desc = r#""#, value = "-932136011") - )] - CartridgeConfiguration = -932136011i32, - #[strum( - serialize = "ItemSilverIngot", - props(name = r#"Ingot (Silver)"#, desc = r#""#, value = "-929742000") - )] - ItemSilverIngot = -929742000i32, - #[strum( - serialize = "ItemKitHydroponicAutomated", - props( - name = r#"Kit (Automated Hydroponics)"#, - desc = r#""#, - value = "-927931558" - ) - )] - ItemKitHydroponicAutomated = -927931558i32, - #[strum( - serialize = "StructureSmallTableRectangleSingle", - props( - name = r#"Small (Table Rectangle Single)"#, - desc = r#""#, - value = "-924678969" - ) - )] - StructureSmallTableRectangleSingle = -924678969i32, - #[strum( - serialize = "ItemWreckageStructureWeatherStation005", - props( - name = r#"Wreckage Structure Weather Station"#, - desc = r#""#, - value = "-919745414" - ) - )] - ItemWreckageStructureWeatherStation005 = -919745414i32, - #[strum( - serialize = "ItemSilverOre", - props( - name = r#"Ore (Silver)"#, - desc = r#"Silver is a chemical element with the symbol "Ag". Valued by many Stationeers for its attractive luster and sheen, it is also used in a variety of electronics components and alloys."#, - value = "-916518678" - ) - )] - ItemSilverOre = -916518678i32, - #[strum( - serialize = "StructurePipeTJunction", - props( - name = r#"Pipe (T Junction)"#, - desc = r#"You can upgrade this pipe to an Insulated Pipe (T Junction) using an Kit (Insulated Pipe) and a Wrench."#, - value = "-913817472" - ) - )] - StructurePipeTJunction = -913817472i32, - #[strum( - serialize = "ItemPickaxe", - props( - name = r#"Pickaxe"#, - desc = r#"When the sun sets and the Mining Drill runs dead, its batteries drained and your Solar Panel cold and lifeless, the Autolathe empty, the way forward unclear, one thing holds back the endless night of defeat: the trusty pickaxe."#, - value = "-913649823" - ) - )] - ItemPickaxe = -913649823i32, - #[strum( - serialize = "ItemPipeLiquidRadiator", - props( - name = r#"Kit (Liquid Radiator)"#, - desc = r#"This kit creates a Liquid Pipe Convection Radiator."#, - value = "-906521320" - ) - )] - ItemPipeLiquidRadiator = -906521320i32, - #[strum( - serialize = "StructurePortablesConnector", - props(name = r#"Portables Connector"#, desc = r#""#, value = "-899013427") - )] - StructurePortablesConnector = -899013427i32, - #[strum( - serialize = "StructureCompositeFloorGrating2", - props( - name = r#"Composite Floor Grating (Type 2)"#, - desc = r#""#, - value = "-895027741" - ) - )] - StructureCompositeFloorGrating2 = -895027741i32, - #[strum( - serialize = "StructureTransformerSmall", - props( - name = r#"Transformer (Small)"#, - desc = r#"Transformers control the maximum power that will flow down a cable subnetwork, to prevent overloading electrical systems. Output on small transformers can be set from 0 to 5000W. -Note that transformers operate as data isolators, preventing data flowing into any network beyond it."#, - value = "-890946730" - ) - )] - StructureTransformerSmall = -890946730i32, - #[strum( - serialize = "StructureCableCorner", - props( - name = r#"Cable (Corner)"#, - desc = r#"Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of Stationeer life - so essential, the ODA designated it an official 'tool' during the 3rd Decannual Stationeer Solar Conference. -Normal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy)."#, - value = "-889269388" - ) - )] - StructureCableCorner = -889269388i32, - #[strum( - serialize = "ItemKitChuteUmbilical", - props(name = r#"Kit (Chute Umbilical)"#, desc = r#""#, value = "-876560854") - )] - ItemKitChuteUmbilical = -876560854i32, - #[strum( - serialize = "ItemPureIceSteam", - props( - name = r#"Pure Ice Steam"#, - desc = r#"A frozen chunk of pure Steam"#, - value = "-874791066" - ) - )] - ItemPureIceSteam = -874791066i32, - #[strum( - serialize = "ItemBeacon", - props(name = r#"Tracking Beacon"#, desc = r#""#, value = "-869869491") - )] - ItemBeacon = -869869491i32, - #[strum( - serialize = "ItemKitWindTurbine", - props(name = r#"Kit (Wind Turbine)"#, desc = r#""#, value = "-868916503") - )] - ItemKitWindTurbine = -868916503i32, - #[strum( - serialize = "ItemKitRocketMiner", - props(name = r#"Kit (Rocket Miner)"#, desc = r#""#, value = "-867969909") - )] - ItemKitRocketMiner = -867969909i32, - #[strum( - serialize = "StructureStairwellBackPassthrough", - props( - name = r#"Stairwell (Back Passthrough)"#, - desc = r#""#, - value = "-862048392" - ) - )] - StructureStairwellBackPassthrough = -862048392i32, - #[strum( - serialize = "StructureWallArch", - props(name = r#"Wall (Arch)"#, desc = r#""#, value = "-858143148") - )] - StructureWallArch = -858143148i32, - #[strum( - serialize = "HumanSkull", - props(name = r#"Human Skull"#, desc = r#""#, value = "-857713709") - )] - HumanSkull = -857713709i32, - #[strum( - serialize = "StructureLogicMemory", - props(name = r#"Logic Memory"#, desc = r#""#, value = "-851746783") - )] - StructureLogicMemory = -851746783i32, - #[strum( - serialize = "StructureChuteBin", - props( - name = r#"Chute Bin"#, - desc = r#"The Stationeer's goal is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps. -Like most Recurso-designed systems, chute bins are simple and robust powered items, allowing items to be manually passed into chute networks by pulling a lever. They can also be programmed with logic to operate automatically, although full automation requires the use items such as a SDB Hopper."#, - value = "-850484480" - ) - )] - StructureChuteBin = -850484480i32, - #[strum( - serialize = "ItemKitWallFlat", - props(name = r#"Kit (Flat Wall)"#, desc = r#""#, value = "-846838195") - )] - ItemKitWallFlat = -846838195i32, - #[strum( - serialize = "ItemActiveVent", - props( - name = r#"Kit (Active Vent)"#, - desc = r#"When constructed, this kit places an Active Vent on any support structure."#, - value = "-842048328" - ) - )] - ItemActiveVent = -842048328i32, - #[strum( - serialize = "ItemFlashlight", - props( - name = r#"Flashlight"#, - desc = r#"A flashlight with a narrow and wide beam options."#, - value = "-838472102" - ) - )] - ItemFlashlight = -838472102i32, - #[strum( - serialize = "ItemWreckageStructureWeatherStation001", - props( - name = r#"Wreckage Structure Weather Station"#, - desc = r#""#, - value = "-834664349" - ) - )] - ItemWreckageStructureWeatherStation001 = -834664349i32, - #[strum( - serialize = "ItemBiomass", - props( - name = r#"Biomass"#, - desc = r#"Diced organic material that is returned when food and organic matter is passed through the Recycler and Centrifuge. Can be burned in a Furnace into Charcoal for use in the Generator (Solid Fuel)."#, - value = "-831480639" - ) - )] - ItemBiomass = -831480639i32, - #[strum( - serialize = "ItemKitPowerTransmitterOmni", - props( - name = r#"Kit (Power Transmitter Omni)"#, - desc = r#""#, - value = "-831211676" - ) - )] - ItemKitPowerTransmitterOmni = -831211676i32, - #[strum( - serialize = "StructureKlaxon", - props( - name = r#"Klaxon Speaker"#, - desc = r#"Klaxons allow you to play over 50 announcements and sounds, depending on your Logic set-up. Set the mode to select the output."#, - value = "-828056979" - ) - )] - StructureKlaxon = -828056979i32, - #[strum( - serialize = "StructureElevatorLevelFront", - props( - name = r#"Elevator Level (Cabled)"#, - desc = r#""#, - value = "-827912235" - ) - )] - StructureElevatorLevelFront = -827912235i32, - #[strum( - serialize = "ItemKitPipeOrgan", - props(name = r#"Kit (Pipe Organ)"#, desc = r#""#, value = "-827125300") - )] - ItemKitPipeOrgan = -827125300i32, - #[strum( - serialize = "ItemKitWallPadded", - props(name = r#"Kit (Padded Wall)"#, desc = r#""#, value = "-821868990") - )] - ItemKitWallPadded = -821868990i32, - #[strum( - serialize = "DynamicGasCanisterFuel", - props( - name = r#"Portable Gas Tank (Fuel)"#, - desc = r#"Portable tanks store gas. They're good at it. If you need to refill a tank, bolt it to a Kit (Tank Connector), then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or things get messy. You can refill a Canister (Fuel) by attaching it to the tank's striped section. Or you could use a Wrench to attach it to a rover or rocket for later. It's really up to you."#, - value = "-817051527" - ) - )] - DynamicGasCanisterFuel = -817051527i32, - #[strum( - serialize = "StructureReinforcedCompositeWindowSteel", - props( - name = r#"Reinforced Window (Composite Steel)"#, - desc = r#"Enjoy vistas of even the most savage, alien landscapes with these heavy duty window frames, which are resistant to pressure differentials up to 1MPa."#, - value = "-816454272" - ) - )] - StructureReinforcedCompositeWindowSteel = -816454272i32, - #[strum( - serialize = "StructureConsoleLED5", - props( - name = r#"LED Display (Small)"#, - desc = r#"0.Default -1.Percent -2.Power"#, - value = "-815193061" - ) - )] - StructureConsoleLed5 = -815193061i32, - #[strum( - serialize = "StructureInsulatedInLineTankLiquid1x1", - props( - name = r#"Insulated In-Line Tank Small Liquid"#, - desc = r#""#, - value = "-813426145" - ) - )] - StructureInsulatedInLineTankLiquid1X1 = -813426145i32, - #[strum( - serialize = "StructureChuteDigitalFlipFlopSplitterLeft", - props( - name = r#"Chute Digital Flip Flop Splitter Left"#, - desc = r#"The digital flip flop will toggle between two outputs using a specified ratio (n:1). For example, setting the dial to 2 would allow two items to pass through the primary output before flipping to the secondary output."#, - value = "-810874728" - ) - )] - StructureChuteDigitalFlipFlopSplitterLeft = -810874728i32, - #[strum( - serialize = "MotherboardRockets", - props( - name = r#"Rocket Control Motherboard"#, - desc = r#""#, - value = "-806986392" - ) - )] - MotherboardRockets = -806986392i32, - #[strum( - serialize = "ItemKitFurnace", - props(name = r#"Kit (Furnace)"#, desc = r#""#, value = "-806743925") - )] - ItemKitFurnace = -806743925i32, - #[strum( - serialize = "ItemTropicalPlant", - props( - name = r#"Tropical Lily"#, - desc = r#"An anthurium, evolved in the jungles of South America, which will tolerate higher temperatures than most plants."#, - value = "-800947386" - ) - )] - ItemTropicalPlant = -800947386i32, - #[strum( - serialize = "ItemKitLiquidTank", - props(name = r#"Kit (Liquid Tank)"#, desc = r#""#, value = "-799849305") - )] - ItemKitLiquidTank = -799849305i32, - #[strum( - serialize = "StructureCompositeDoor", - props( - name = r#"Composite Door"#, - desc = r#"Recurso's composite doors are rated to 300kPa, which is more than sufficient for most purposes they were designed for. However, steep pressure differentials are not your friend."#, - value = "-793837322" - ) - )] - StructureCompositeDoor = -793837322i32, - #[strum( - serialize = "StructureStorageLocker", - props(name = r#"Locker"#, desc = r#""#, value = "-793623899") - )] - StructureStorageLocker = -793623899i32, - #[strum( - serialize = "RespawnPoint", - props( - name = r#"Respawn Point"#, - desc = r#"Place a respawn point to set a player entry point to your base when loading in, or returning from the dead."#, - value = "-788672929" - ) - )] - RespawnPoint = -788672929i32, - #[strum( - serialize = "ItemInconelIngot", - props(name = r#"Ingot (Inconel)"#, desc = r#""#, value = "-787796599") - )] - ItemInconelIngot = -787796599i32, - #[strum( - serialize = "StructurePoweredVentLarge", - props( - name = r#"Powered Vent Large"#, - desc = r#"For building large scale airlock systems and pressurised hangers, a bigger and bolder version of the Powered Vent that can effeciently pull a vacuum in large room."#, - value = "-785498334" - ) - )] - StructurePoweredVentLarge = -785498334i32, - #[strum( - serialize = "ItemKitWallGeometry", - props(name = r#"Kit (Geometric Wall)"#, desc = r#""#, value = "-784733231") - )] - ItemKitWallGeometry = -784733231i32, - #[strum( - serialize = "StructureInsulatedPipeCrossJunction4", - props( - name = r#"Insulated Pipe (4-Way Junction)"#, - desc = r#"Insulated pipes greatly reduce heat loss from gases stored in them."#, - value = "-783387184" - ) - )] - StructureInsulatedPipeCrossJunction4 = -783387184i32, - #[strum( - serialize = "StructurePowerConnector", - props( - name = r#"Power Connector"#, - desc = r#"Attaches a Kit (Portable Generator) to a power network."#, - value = "-782951720" - ) - )] - StructurePowerConnector = -782951720i32, - #[strum( - serialize = "StructureLiquidPipeOneWayValve", - props( - name = r#"One Way Valve (Liquid)"#, - desc = r#"The one way valve moves liquid in one direction only: from input side to output side. It only permits flow if the input pressure is higher than output pressure.."#, - value = "-782453061" - ) - )] - StructureLiquidPipeOneWayValve = -782453061i32, - #[strum( - serialize = "StructureWallLargePanelArrow", - props( - name = r#"Wall (Large Panel Arrow)"#, - desc = r#""#, - value = "-776581573" - ) - )] - StructureWallLargePanelArrow = -776581573i32, - #[strum( - serialize = "StructureShower", - props(name = r#"Shower"#, desc = r#""#, value = "-775128944") - )] - StructureShower = -775128944i32, - #[strum( - serialize = "ItemChemLightBlue", - props( - name = r#"Chem Light (Blue)"#, - desc = r#"A safe and slightly rave-some source of blue light. Snap to activate."#, - value = "-772542081" - ) - )] - ItemChemLightBlue = -772542081i32, - #[strum( - serialize = "StructureLogicSlotReader", - props(name = r#"Slot Reader"#, desc = r#""#, value = "-767867194") - )] - StructureLogicSlotReader = -767867194i32, - #[strum( - serialize = "ItemGasCanisterCarbonDioxide", - props(name = r#"Canister (CO2)"#, desc = r#""#, value = "-767685874") - )] - ItemGasCanisterCarbonDioxide = -767685874i32, - #[strum( - serialize = "ItemPipeAnalyizer", - props( - name = r#"Kit (Pipe Analyzer)"#, - desc = r#"This kit creates a Pipe Analyzer."#, - value = "-767597887" - ) - )] - ItemPipeAnalyizer = -767597887i32, - #[strum( - serialize = "StructureBatteryChargerSmall", - props(name = r#"Battery Charger Small"#, desc = r#""#, value = "-761772413") - )] - StructureBatteryChargerSmall = -761772413i32, - #[strum( - serialize = "StructureWaterBottleFillerPowered", - props(name = r#"Waterbottle Filler"#, desc = r#""#, value = "-756587791") - )] - StructureWaterBottleFillerPowered = -756587791i32, - #[strum( - serialize = "AppliancePackagingMachine", - props( - name = r#"Basic Packaging Machine"#, - desc = r#"The Xigo Cannifier requires Empty Can and cooked food to create long-lasting, easily stored sustenance. Note that the Cannifier must be bolted to a Powered Bench for power, and only accepts cooked food and tin cans. - -OPERATION - -1. Add the correct ingredients to the device via the hopper in the TOP. - -2. Close the device using the dropdown handle. - -3. Activate the device. - -4. Remove canned goods from the outlet in the FRONT. - -Note: the Cannifier will flash an error on its activation switch if you attempt to activate it before closing it. - - - "#, - value = "-749191906" - ) - )] - AppliancePackagingMachine = -749191906i32, - #[strum( - serialize = "ItemIntegratedCircuit10", - props( - name = r#"Integrated Circuit (IC10)"#, - desc = r#""#, - value = "-744098481" - ) - )] - ItemIntegratedCircuit10 = -744098481i32, - #[strum( - serialize = "ItemLabeller", - props( - name = r#"Labeller"#, - desc = r#"A labeller lets you set names and values on a variety of devices and structures, including Console and Logic."#, - value = "-743968726" - ) - )] - ItemLabeller = -743968726i32, - #[strum( - serialize = "StructureCableJunctionH4", - props( - name = r#"Heavy Cable (4-Way Junction)"#, - desc = r#""#, - value = "-742234680" - ) - )] - StructureCableJunctionH4 = -742234680i32, - #[strum( - serialize = "StructureWallCooler", - props( - name = r#"Wall Cooler"#, - desc = r#"The Xigo Freezy Boi wall cooler complements the wall heater, which can only raise the temperature. The wall cooler functions by drawing heat from the surrounding atmosphere and adding that heat into its pipe network. -In order to run the wall cooler properly, you will need to connect pipes to the wall cooler and fill the connected pipe network with any type of gas. The gas's heat capacity and volume will determine how fast it reacts to temperature changes. - -EFFICIENCY -The higher the difference in temperature between the gas stored in the pipes and the room, the less efficient the wall cooler will be. So to keep the wall cooler running at an acceptable efficiency you will need to get rid of the heat that accumulates in the pipes connected to it. A common practice would be to run the pipes to the outside and use radiators on the outside section of the pipes to get rid of the heat. -The less efficient the wall cooler, the less power it consumes. It will consume 1010W at max efficiency. The wall cooler can be controlled by logic chips to run when the temperature hits a certain degree. -ERRORS -If the wall cooler is flashing an error then it is missing one of the following: - -- Pipe connection to the wall cooler. -- Gas in the connected pipes, or pressure is too low. -- Atmosphere in the surrounding environment or pressure is too low. - -For more information about how to control temperatures, consult the temperature control Guides page."#, - value = "-739292323" - ) - )] - StructureWallCooler = -739292323i32, - #[strum( - serialize = "StructurePurgeValve", - props( - name = r#"Purge Valve"#, - desc = r#"Allows for removal of pressurant gas and evaporated liquids from a liquid pipe. Similar in function to a Back Pressure Regulator the Purge Valve moves gas from the input liquid pipe to the output gas pipe aiming to keep the pressure of the input at the target setting."#, - value = "-737232128" - ) - )] - StructurePurgeValve = -737232128i32, - #[strum( - serialize = "StructureCrateMount", - props(name = r#"Container Mount"#, desc = r#""#, value = "-733500083") - )] - StructureCrateMount = -733500083i32, - #[strum( - serialize = "ItemKitDynamicGenerator", - props( - name = r#"Kit (Portable Generator)"#, - desc = r#""#, - value = "-732720413" - ) - )] - ItemKitDynamicGenerator = -732720413i32, - #[strum( - serialize = "StructureConsoleDual", - props( - name = r#"Console Dual"#, - desc = r#"This Norsec-designed control box manages devices such as the Active Vent, Gas Sensor, Composite Door and others, depending on which circuitboard is inserted into the unit. It has separate data and power ports. -A completed console displays all devices connected to the current power network. Any devices not related to the installed circuitboard will be greyed-out and inoperable. Consoles are locked once a Data Disk is removed."#, - value = "-722284333" - ) - )] - StructureConsoleDual = -722284333i32, - #[strum( - serialize = "ItemGasFilterOxygen", - props( - name = r#"Filter (Oxygen)"#, - desc = r#"Sinotai have cornered the market in filter design. Their trademarked templates are simple to print and highly efficient at capturing various gases, which can be disposed of or used elsewhere. Oxygen is a common byproduct of smelting various ores, but must be filtered of such impurities as Nitrogen using this filter and various devices, such as the Kit (Portable Scrubber)."#, - value = "-721824748" - ) - )] - ItemGasFilterOxygen = -721824748i32, - #[strum( - serialize = "ItemCookedTomato", - props( - name = r#"Cooked Tomato"#, - desc = r#"A high-nutrient cooked food, which can be canned."#, - value = "-709086714" - ) - )] - ItemCookedTomato = -709086714i32, - #[strum( - serialize = "ItemCopperOre", - props( - name = r#"Ore (Copper)"#, - desc = r#"Copper is a chemical element with the symbol "Cu". This common and highly conductive material is found on most astronomical bodies and is used in a variety of manufacturing processes including electronic components, alloys, and wires."#, - value = "-707307845" - ) - )] - ItemCopperOre = -707307845i32, - #[strum( - serialize = "StructureLogicTransmitter", - props( - name = r#"Logic Transmitter"#, - desc = r#"Connects to Logic Transmitter"#, - value = "-693235651" - ) - )] - StructureLogicTransmitter = -693235651i32, - #[strum( - serialize = "StructureValve", - props(name = r#"Valve"#, desc = r#""#, value = "-692036078") - )] - StructureValve = -692036078i32, - #[strum( - serialize = "StructureCompositeWindowIron", - props(name = r#"Iron Window"#, desc = r#""#, value = "-688284639") - )] - StructureCompositeWindowIron = -688284639i32, - #[strum( - serialize = "ItemSprayCanBlack", - props( - name = r#"Spray Paint (Black)"#, - desc = r#"Go classic, clandestine or just plain Gothic with black paint, which can be applied to most items. Each can has 20 uses."#, - value = "-688107795" - ) - )] - ItemSprayCanBlack = -688107795i32, - #[strum( - serialize = "ItemRocketMiningDrillHeadLongTerm", - props( - name = r#"Mining-Drill Head (Long Term)"#, - desc = r#""#, - value = "-684020753" - ) - )] - ItemRocketMiningDrillHeadLongTerm = -684020753i32, - #[strum( - serialize = "ItemMiningBelt", - props( - name = r#"Mining Belt"#, - desc = r#"Originally developed by Recurso Espaciais for asteroid mining, the Stationeer's mining belt has room for two tools and eight ore stacks. While wearing the belt, ore is automatically stored there when mined. Volatile and temperature-dependent remain stable in the environmentally controlled unit."#, - value = "-676435305" - ) - )] - ItemMiningBelt = -676435305i32, - #[strum( - serialize = "ItemGasCanisterSmart", - props( - name = r#"Gas Canister (Smart)"#, - desc = r#"0.Mode0 -1.Mode1"#, - value = "-668314371" - ) - )] - ItemGasCanisterSmart = -668314371i32, - #[strum( - serialize = "ItemFlour", - props( - name = r#"Flour"#, - desc = r#"Pulverized Wheat, a key ingredient in many foods created by the Microwave and the Kit (Automated Oven)."#, - value = "-665995854" - ) - )] - ItemFlour = -665995854i32, - #[strum( - serialize = "StructureSmallTableRectangleDouble", - props( - name = r#"Small (Table Rectangle Double)"#, - desc = r#""#, - value = "-660451023" - ) - )] - StructureSmallTableRectangleDouble = -660451023i32, - #[strum( - serialize = "StructureChuteUmbilicalFemaleSide", - props( - name = r#"Umbilical Socket Angle (Chute)"#, - desc = r#""#, - value = "-659093969" - ) - )] - StructureChuteUmbilicalFemaleSide = -659093969i32, - #[strum( - serialize = "ItemSteelIngot", - props( - name = r#"Ingot (Steel)"#, - desc = r#"Steel ingots are a metal alloy, crafted in a Furnace by smelting Ore (Iron) and Ore (Coal) at a ratio of 3:1. -It may not be elegant, but Ice (Oxite) and Ice (Volatiles) can be combined at a ratio of 1:2 in a furnace to create the necessary gas mixture for smelting."#, - value = "-654790771" - ) - )] - ItemSteelIngot = -654790771i32, - #[strum( - serialize = "SeedBag_Wheet", - props( - name = r#"Wheat Seeds"#, - desc = r#"Grow some Wheat."#, - value = "-654756733" - ) - )] - SeedBagWheet = -654756733i32, - #[strum( - serialize = "StructureRocketTower", - props(name = r#"Launch Tower"#, desc = r#""#, value = "-654619479") - )] - StructureRocketTower = -654619479i32, - #[strum( - serialize = "StructureGasUmbilicalFemaleSide", - props( - name = r#"Umbilical Socket Angle (Gas)"#, - desc = r#""#, - value = "-648683847" - ) - )] - StructureGasUmbilicalFemaleSide = -648683847i32, - #[strum( - serialize = "StructureLockerSmall", - props(name = r#"Locker (Small)"#, desc = r#""#, value = "-647164662") - )] - StructureLockerSmall = -647164662i32, - #[strum( - serialize = "StructureSecurityPrinter", - props( - name = r#"Security Printer"#, - desc = r#"Any Stationeer concerned about security needs the Harkwell-designed Vigilant-E security printer. Use the Vigilant-E to create a Cartridge (Access Controller), in order to restrict access to different parts of your base via keycards like the Access Card (Blue). The printer also makes a variety of weapons and ammunitions to defend your base against any hostile, aggressive or just slightly rude entites you encounter as you explore the Solar System. -"#, - value = "-641491515" - ) - )] - StructureSecurityPrinter = -641491515i32, - #[strum( - serialize = "StructureWallSmallPanelsArrow", - props( - name = r#"Wall (Small Panels Arrow)"#, - desc = r#""#, - value = "-639306697" - ) - )] - StructureWallSmallPanelsArrow = -639306697i32, - #[strum( - serialize = "ItemKitDynamicMKIILiquidCanister", - props( - name = r#"Kit (Portable Liquid Tank Mk II)"#, - desc = r#""#, - value = "-638019974" - ) - )] - ItemKitDynamicMkiiLiquidCanister = -638019974i32, - #[strum( - serialize = "ItemKitRocketManufactory", - props( - name = r#"Kit (Rocket Manufactory)"#, - desc = r#""#, - value = "-636127860" - ) - )] - ItemKitRocketManufactory = -636127860i32, - #[strum( - serialize = "ItemPureIceVolatiles", - props( - name = r#"Pure Ice Volatiles"#, - desc = r#"A frozen chunk of pure Volatiles"#, - value = "-633723719" - ) - )] - ItemPureIceVolatiles = -633723719i32, - #[strum( - serialize = "ItemGasFilterNitrogenM", - props( - name = r#"Medium Filter (Nitrogen)"#, - desc = r#""#, - value = "-632657357" - ) - )] - ItemGasFilterNitrogenM = -632657357i32, - #[strum( - serialize = "StructureCableFuse5k", - props(name = r#"Fuse (5kW)"#, desc = r#""#, value = "-631590668") - )] - StructureCableFuse5K = -631590668i32, - #[strum( - serialize = "StructureCableJunction6Burnt", - props( - name = r#"Burnt Cable (6-Way Junction)"#, - desc = r#""#, - value = "-628145954" - ) - )] - StructureCableJunction6Burnt = -628145954i32, - #[strum( - serialize = "StructureComputer", - props( - name = r#"Computer"#, - desc = r#"In some ways a relic, the 'Chonk R1' was designed by severely conflicted Norsec technicians, who needed a unit that could operate with a wide range of motherboards, while also enduring the worst a new Cadet could throw at it. -The result is a machine described by some as 'the only PC likely to survive our collision with a black hole', while other, less appreciative users regard it as sharing most of its technological DNA with a cheese grater. -Compatible motherboards: -- Logic Motherboard -- Manufacturing Motherboard -- Sorter Motherboard -- Communications Motherboard -- IC Editor Motherboard"#, - value = "-626563514" - ) - )] - StructureComputer = -626563514i32, - #[strum( - serialize = "StructurePressureFedGasEngine", - props( - name = r#"Pressure Fed Gas Engine"#, - desc = r#"Inefficient but very powerful, the Pressure Fed Gas Engine moves gas from each of its two inputs based on the pressure of the input pipes. Control the mixing ratio of fuels by tweaking the input pressures to target a 2:1 mix of Volatiles to Oxygen gas. Chilling propellant gasses or using Nitrous Oxide as an oxydizer will result in even higher thrust outputs."#, - value = "-624011170" - ) - )] - StructurePressureFedGasEngine = -624011170i32, - #[strum( - serialize = "StructureGroundBasedTelescope", - props( - name = r#"Telescope"#, - desc = r#"A telescope that can be oriented to observe Celestial Bodies. When within full alignment will show orbital information for that celestial object. Atmospheric conditions may disrupt the ability to observe some objects at some times of day. To collect Horizontal and Vertical values you can use a Rocket Celestial Tracker while it is in orbit, or a Daylight Sensor for primary body data."#, - value = "-619745681" - ) - )] - StructureGroundBasedTelescope = -619745681i32, - #[strum( - serialize = "ItemKitAdvancedFurnace", - props(name = r#"Kit (Advanced Furnace)"#, desc = r#""#, value = "-616758353") - )] - ItemKitAdvancedFurnace = -616758353i32, - #[strum( - serialize = "StructureHeatExchangerLiquidtoLiquid", - props( - name = r#"Heat Exchanger - Liquid"#, - desc = r#"The original specs for the N Series Flow-P heat exchanger were rumored to have been scrawled on the back of a burger receipt by a bored Sinotai designer riding up the Brazilian space elevator, but that hasn't stopped it becoming one of the most widely-copied heat exchanger designs in the Solar System. -The 'N Flow-P' has four connections, allowing you to pass two liquid networks into the unit, which then works to equalize temperature across the two separate networks. -As the N Flow-P is a passive system, it equalizes pressure across the entire of each individual network, unless connected to liquid management devices like a Liquid Volume Pump or a Liquid Back Volume Regulator. -"#, - value = "-613784254" - ) - )] - StructureHeatExchangerLiquidtoLiquid = -613784254i32, - #[strum( - serialize = "StructureChuteJunction", - props( - name = r#"Chute (Junction)"#, - desc = r#"The aim for any Stationeer is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps. -Chute junctions are fundamental components of chute networks, allowing merging or splitting of these networks. When combined with a programmed Sorter, items can be sent down different paths to various machines with import/export slots."#, - value = "-611232514" - ) - )] - StructureChuteJunction = -611232514i32, - #[strum( - serialize = "StructureChuteWindow", - props( - name = r#"Chute (Window)"#, - desc = r#"Chute's with windows let you see what's passing through your import/export network. But be warned, they are not insulated as other chutes are. Ices will melt."#, - value = "-607241919" - ) - )] - StructureChuteWindow = -607241919i32, - #[strum( - serialize = "ItemWearLamp", - props(name = r#"Headlamp"#, desc = r#""#, value = "-598730959") - )] - ItemWearLamp = -598730959i32, - #[strum( - serialize = "ItemKitAdvancedPackagingMachine", - props( - name = r#"Kit (Advanced Packaging Machine)"#, - desc = r#""#, - value = "-598545233" - ) - )] - ItemKitAdvancedPackagingMachine = -598545233i32, - #[strum( - serialize = "ItemChemLightGreen", - props( - name = r#"Chem Light (Green)"#, - desc = r#"Enliven the dreariest, airless rock with this glowy green light. Snap to activate."#, - value = "-597479390" - ) - )] - ItemChemLightGreen = -597479390i32, - #[strum( - serialize = "EntityRoosterBrown", - props( - name = r#"Entity Rooster Brown"#, - desc = r#"The common brown rooster. Don't let it hear you say that."#, - value = "-583103395" - ) - )] - EntityRoosterBrown = -583103395i32, - #[strum( - serialize = "StructureLargeExtendableRadiator", - props( - name = r#"Large Extendable Radiator"#, - desc = r#"Omptimised for radiating heat in vacuum and low pressure environments. If pointed at the sun it will heat its contents rapidly via solar heating. The panels can fold away to stop all heat radiation/solar heating and protect them from storms."#, - value = "-566775170" - ) - )] - StructureLargeExtendableRadiator = -566775170i32, - #[strum( - serialize = "StructureMediumHangerDoor", - props( - name = r#"Medium Hangar Door"#, - desc = r#"1 x 2 modular door piece for building hangar doors."#, - value = "-566348148" - ) - )] - StructureMediumHangerDoor = -566348148i32, - #[strum( - serialize = "StructureLaunchMount", - props( - name = r#"Launch Mount"#, - desc = r#"The first piece to place whern building a rocket. Rockets can be constructed and/or landed here. Each Launch Mount will be allocated a slot on the Space Map and assigned a Location Code."#, - value = "-558953231" - ) - )] - StructureLaunchMount = -558953231i32, - #[strum( - serialize = "StructureShortLocker", - props(name = r#"Short Locker"#, desc = r#""#, value = "-554553467") - )] - StructureShortLocker = -554553467i32, - #[strum( - serialize = "ItemKitCrateMount", - props(name = r#"Kit (Container Mount)"#, desc = r#""#, value = "-551612946") - )] - ItemKitCrateMount = -551612946i32, - #[strum( - serialize = "ItemKitCryoTube", - props(name = r#"Kit (Cryo Tube)"#, desc = r#""#, value = "-545234195") - )] - ItemKitCryoTube = -545234195i32, - #[strum( - serialize = "StructureSolarPanelDual", - props( - name = r#"Solar Panel (Dual)"#, - desc = r#"Sinotai dual solar panels are used for generating power from sunlight, with dedicated data and power ports. They can be connected to {Logic systems, in order to track sunlight, but their efficiency is reduced during storms and when damaged. You can repair these using some trusty Duct Tape."#, - value = "-539224550" - ) - )] - StructureSolarPanelDual = -539224550i32, - #[strum( - serialize = "ItemPlantSwitchGrass", - props(name = r#"Switch Grass"#, desc = r#""#, value = "-532672323") - )] - ItemPlantSwitchGrass = -532672323i32, - #[strum( - serialize = "StructureInsulatedPipeLiquidTJunction", - props( - name = r#"Insulated Liquid Pipe (T Junction)"#, - desc = r#"Liquid piping with very low temperature loss or gain."#, - value = "-532384855" - ) - )] - StructureInsulatedPipeLiquidTJunction = -532384855i32, - #[strum( - serialize = "ItemKitSolarPanelBasicReinforced", - props( - name = r#"Kit (Solar Panel Basic Heavy)"#, - desc = r#""#, - value = "-528695432" - ) - )] - ItemKitSolarPanelBasicReinforced = -528695432i32, - #[strum( - serialize = "ItemChemLightRed", - props( - name = r#"Chem Light (Red)"#, - desc = r#"A red glowstick. Snap to activate. Then reach for the lasers."#, - value = "-525810132" - ) - )] - ItemChemLightRed = -525810132i32, - #[strum( - serialize = "ItemKitWallIron", - props(name = r#"Kit (Iron Wall)"#, desc = r#""#, value = "-524546923") - )] - ItemKitWallIron = -524546923i32, - #[strum( - serialize = "ItemEggCarton", - props( - name = r#"Egg Carton"#, - desc = r#"Within, eggs reside in mysterious, marmoreal silence."#, - value = "-524289310" - ) - )] - ItemEggCarton = -524289310i32, - #[strum( - serialize = "StructureWaterDigitalValve", - props(name = r#"Liquid Digital Valve"#, desc = r#""#, value = "-517628750") - )] - StructureWaterDigitalValve = -517628750i32, - #[strum( - serialize = "StructureSmallDirectHeatExchangeLiquidtoLiquid", - props( - name = r#"Small Direct Heat Exchanger - Liquid + Liquid"#, - desc = r#"Direct Heat Exchangers equalize the temperature of the two input networks."#, - value = "-507770416" - ) - )] - StructureSmallDirectHeatExchangeLiquidtoLiquid = -507770416i32, - #[strum( - serialize = "ItemWirelessBatteryCellExtraLarge", - props( - name = r#"Wireless Battery Cell Extra Large"#, - desc = r#"0.Empty -1.Critical -2.VeryLow -3.Low -4.Medium -5.High -6.Full"#, - value = "-504717121" - ) - )] - ItemWirelessBatteryCellExtraLarge = -504717121i32, - #[strum( - serialize = "ItemGasFilterPollutantsInfinite", - props( - name = r#"Catalytic Filter (Pollutants)"#, - desc = r#"A filter that selectively targets Pollutants. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle."#, - value = "-503738105" - ) - )] - ItemGasFilterPollutantsInfinite = -503738105i32, - #[strum( - serialize = "ItemSprayCanBlue", - props( - name = r#"Spray Paint (Blue)"#, - desc = r#"What kind of a color is blue? The kind of of color that says, 'Hey, what about me?'"#, - value = "-498464883" - ) - )] - ItemSprayCanBlue = -498464883i32, - #[strum( - serialize = "RespawnPointWallMounted", - props( - name = r#"Respawn Point (Mounted)"#, - desc = r#""#, - value = "-491247370" - ) - )] - RespawnPointWallMounted = -491247370i32, - #[strum( - serialize = "ItemIronSheets", - props(name = r#"Iron Sheets"#, desc = r#""#, value = "-487378546") - )] - ItemIronSheets = -487378546i32, - #[strum( - serialize = "ItemGasCanisterVolatiles", - props(name = r#"Canister (Volatiles)"#, desc = r#""#, value = "-472094806") - )] - ItemGasCanisterVolatiles = -472094806i32, - #[strum( - serialize = "ItemCableCoil", - props( - name = r#"Cable Coil"#, - desc = r#"Bodily metaphors are tired and anthropocentric, but it was Frida Stuppen, the first ODA Administrator, who said, 'Let the cabling be as the nerve and the vessel, transmitting power and data alike through systems we forge among the stars.' Later commentators suggested that she was simply putting a romantic gloss on a piece of dubious economy. Whatever the case, standard cabling is where any Stationeer's network begins. -Normal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy)."#, - value = "-466050668" - ) - )] - ItemCableCoil = -466050668i32, - #[strum( - serialize = "StructureToolManufactory", - props( - name = r#"Tool Manufactory"#, - desc = r#"No mission can be completed without the proper tools. The Norsec ThuulDek manufactory can fabricate almost any tool or hand-held device a Stationeer may need to complete their mission, as well as a variety of delightful paints. -Upgrade the device using a Tool Printer Mod for additional recipes and faster processing speeds."#, - value = "-465741100" - ) - )] - StructureToolManufactory = -465741100i32, - #[strum( - serialize = "StructureAdvancedPackagingMachine", - props( - name = r#"Advanced Packaging Machine"#, - desc = r#"The Xigo Advanced Cannifier Multi-Plus Pro is an automateable packaging machine that uses Empty Cans and cooked food to create canned sustenance that does not decay. Note that the ACMPP only accepts cooked food and tin cans."#, - value = "-463037670" - ) - )] - StructureAdvancedPackagingMachine = -463037670i32, - #[strum( - serialize = "Battery_Wireless_cell", - props( - name = r#"Battery Wireless Cell"#, - desc = r#"0.Empty -1.Critical -2.VeryLow -3.Low -4.Medium -5.High -6.Full"#, - value = "-462415758" - ) - )] - BatteryWirelessCell = -462415758i32, - #[strum( - serialize = "ItemBatteryCellLarge", - props( - name = r#"Battery Cell (Large)"#, - desc = r#"First mass-produced by Xigo in 2155 on the basis of a unattributed prototype, the classic silicon anode solid-state design extends its optimum temperature range. - -POWER OUTPUT -The large power cell can discharge 288kW of power. -"#, - value = "-459827268" - ) - )] - ItemBatteryCellLarge = -459827268i32, - #[strum( - serialize = "StructureLiquidVolumePump", - props(name = r#"Liquid Volume Pump"#, desc = r#""#, value = "-454028979") - )] - StructureLiquidVolumePump = -454028979i32, - #[strum( - serialize = "ItemKitTransformer", - props( - name = r#"Kit (Transformer Large)"#, - desc = r#""#, - value = "-453039435" - ) - )] - ItemKitTransformer = -453039435i32, - #[strum( - serialize = "StructureVendingMachine", - props( - name = r#"Vending Machine"#, - desc = r#"The Xigo-designed 'Slot Mate' vending machine allows storage of almost any item, while also operating as a distribution point for working with Traders. You cannot trade without a vending machine, or its more advanced equivalent, the Refrigerated Vending Machine. Each vending machine can hold up to 100 stacks."#, - value = "-443130773" - ) - )] - StructureVendingMachine = -443130773i32, - #[strum( - serialize = "StructurePipeHeater", - props( - name = r#"Pipe Heater (Gas)"#, - desc = r#"Adds 1000 joules of heat per tick to the contents of your pipe network."#, - value = "-419758574" - ) - )] - StructurePipeHeater = -419758574i32, - #[strum( - serialize = "StructurePipeCrossJunction4", - props( - name = r#"Pipe (4-Way Junction)"#, - desc = r#"You can upgrade this pipe to an Insulated Pipe (4-Way Junction) using an Kit (Insulated Pipe) and a Wrench."#, - value = "-417629293" - ) - )] - StructurePipeCrossJunction4 = -417629293i32, - #[strum( - serialize = "StructureLadder", - props(name = r#"Ladder"#, desc = r#""#, value = "-415420281") - )] - StructureLadder = -415420281i32, - #[strum( - serialize = "ItemHardJetpack", - props( - name = r#"Hardsuit Jetpack"#, - desc = r#"The Norsec jetpack isn't 'technically' a jetpack at all, it's a gas thruster. It can be powered by any gas, so long as the internal pressure of the canister is higher than the ambient external pressure. If the external pressure is greater, the spacepack will not function. Adjusting the thrust value alters your rate of acceleration, while activating the stablizer causes the spacepack to hover when a given height is reached. -The hardsuit jetpack is capable of much higher speeds than the Jetpack Basic - up to 15m/s. Indispensable for building, mining and general movement, it has fourteen storage slots. -USE: 'J' to activate; 'space' to fly up; 'left ctrl' to descend; and 'WASD' to move."#, - value = "-412551656" - ) - )] - ItemHardJetpack = -412551656i32, - #[strum( - serialize = "CircuitboardCameraDisplay", - props( - name = r#"Camera Display"#, - desc = r#"Surveillance is sometimes necessary when building bases in highly hostile environments. The camera display circuit board allows wary Stationeers to turn a Console into a security display when connected to a Camera."#, - value = "-412104504" - ) - )] - CircuitboardCameraDisplay = -412104504i32, - #[strum( - serialize = "ItemCopperIngot", - props( - name = r#"Ingot (Copper)"#, - desc = r#"Copper ingots are created by smelting Ore (Copper) in the Furnace and Arc Furnace, and used to create a variety of items."#, - value = "-404336834" - ) - )] - ItemCopperIngot = -404336834i32, - #[strum( - serialize = "ReagentColorOrange", - props(name = r#"Color Dye (Orange)"#, desc = r#""#, value = "-400696159") - )] - ReagentColorOrange = -400696159i32, - #[strum( - serialize = "StructureBattery", - props( - name = r#"Station Battery"#, - desc = r#"Providing large-scale, reliable power storage, the Sinotai 'Dianzi' station battery is the heart of most Stationeer bases. -There are a variety of cautions to the design of electrical systems using batteries, and every experienced Stationeer has a story to tell, hence the Stationeer adage: 'Dianzi cooks, but it also frys.' -POWER OUTPUT -Able to store up to 3600000W of power, there are no practical limits to its throughput, hence it is wise to use Cable Coil (Heavy). Seasoned electrical engineers will also laugh in the face of those who fail to separate out their power generation networks using an Area Power Control and Transformer (Large)."#, - value = "-400115994" - ) - )] - StructureBattery = -400115994i32, - #[strum( - serialize = "StructurePipeRadiatorFlat", - props( - name = r#"Pipe Radiator"#, - desc = r#"A pipe mounted radiator optimized for radiating heat in vacuums."#, - value = "-399883995" - ) - )] - StructurePipeRadiatorFlat = -399883995i32, - #[strum( - serialize = "StructureCompositeCladdingAngledLong", - props( - name = r#"Composite Cladding (Long Angled)"#, - desc = r#""#, - value = "-387546514" - ) - )] - StructureCompositeCladdingAngledLong = -387546514i32, - #[strum( - serialize = "DynamicGasTankAdvanced", - props( - name = r#"Gas Tank Mk II"#, - desc = r#"0.Mode0 -1.Mode1"#, - value = "-386375420" - ) - )] - DynamicGasTankAdvanced = -386375420i32, - #[strum( - serialize = "WeaponPistolEnergy", - props( - name = r#"Energy Pistol"#, - desc = r#"0.Stun -1.Kill"#, - value = "-385323479" - ) - )] - WeaponPistolEnergy = -385323479i32, - #[strum( - serialize = "ItemFertilizedEgg", - props( - name = r#"Egg"#, - desc = r#"To hatch it requires an incubation temperature of between 35 and 45 degrees Celsius and will hatch into a Chick. If the egg is exposed to tepratures below 10 degrees it will no longer be viable."#, - value = "-383972371" - ) - )] - ItemFertilizedEgg = -383972371i32, - #[strum( - serialize = "ItemRocketMiningDrillHeadIce", - props( - name = r#"Mining-Drill Head (Ice)"#, - desc = r#""#, - value = "-380904592" - ) - )] - ItemRocketMiningDrillHeadIce = -380904592i32, - #[strum( - serialize = "Flag_ODA_8m", - props(name = r#"Flag (ODA 8m)"#, desc = r#""#, value = "-375156130") - )] - FlagOda8M = -375156130i32, - #[strum( - serialize = "AccessCardGreen", - props(name = r#"Access Card (Green)"#, desc = r#""#, value = "-374567952") - )] - AccessCardGreen = -374567952i32, - #[strum( - serialize = "StructureChairBoothCornerLeft", - props( - name = r#"Chair (Booth Corner Left)"#, - desc = r#""#, - value = "-367720198" - ) - )] - StructureChairBoothCornerLeft = -367720198i32, - #[strum( - serialize = "ItemKitFuselage", - props(name = r#"Kit (Fuselage)"#, desc = r#""#, value = "-366262681") - )] - ItemKitFuselage = -366262681i32, - #[strum( - serialize = "ItemSolidFuel", - props( - name = r#"Solid Fuel (Hydrocarbon)"#, - desc = r#""#, - value = "-365253871" - ) - )] - ItemSolidFuel = -365253871i32, - #[strum( - serialize = "ItemKitSolarPanelReinforced", - props( - name = r#"Kit (Solar Panel Heavy)"#, - desc = r#""#, - value = "-364868685" - ) - )] - ItemKitSolarPanelReinforced = -364868685i32, - #[strum( - serialize = "ItemToolBelt", - props( - name = r#"Tool Belt"#, - desc = r#"If there's one piece of equipment that embodies Stationeer life above all else, it's the humble toolbelt (Editor's note: a recent ODA survey of iconic Stationeer equipment also rated the smoking, toxic ruins of an over-pressurized Furnace lying amid the charred remains of your latest base very highly). -Designed to meet the most strict-ish ODA safety standards, the toolbelt's eight slots hold one thing: tools, and Cable Coil. Not to be confused with the Mining Belt."#, - value = "-355127880" - ) - )] - ItemToolBelt = -355127880i32, - #[strum( - serialize = "ItemEmergencyAngleGrinder", - props( - name = r#"Emergency Angle Grinder"#, - desc = r#""#, - value = "-351438780" - ) - )] - ItemEmergencyAngleGrinder = -351438780i32, - #[strum( - serialize = "StructureCableFuse50k", - props(name = r#"Fuse (50kW)"#, desc = r#""#, value = "-349716617") - )] - StructureCableFuse50K = -349716617i32, - #[strum( - serialize = "StructureCompositeCladdingAngledCornerLongR", - props( - name = r#"Composite Cladding (Long Angled Mirrored Corner)"#, - desc = r#""#, - value = "-348918222" - ) - )] - StructureCompositeCladdingAngledCornerLongR = -348918222i32, - #[strum( - serialize = "StructureFiltration", - props( - name = r#"Filtration"#, - desc = r#"The Filtration Unit is based on a long-standing ExMin system, itself based on older designs of uncertain provenance. It is available in the Kit (Atmospherics). -The device has nonetheless proven indispensable for Stationeer atmospheric systems, as it can filter two gases simultaneously from a single pipe network using a dual filter array. The unit has an input, and a filter output as well as an unfiltered outlet for any residual gases. -"#, - value = "-348054045" - ) - )] - StructureFiltration = -348054045i32, - #[strum( - serialize = "StructureLogicReader", - props(name = r#"Logic Reader"#, desc = r#""#, value = "-345383640") - )] - StructureLogicReader = -345383640i32, - #[strum( - serialize = "ItemKitMotherShipCore", - props(name = r#"Kit (Mothership)"#, desc = r#""#, value = "-344968335") - )] - ItemKitMotherShipCore = -344968335i32, - #[strum( - serialize = "StructureCamera", - props( - name = r#"Camera"#, - desc = r#"Nothing says 'I care' like a security camera that's been linked a Motion Sensor and a Console fitted with a Camera Display. -Be there, even when you're not."#, - value = "-342072665" - ) - )] - StructureCamera = -342072665i32, - #[strum( - serialize = "StructureCableJunctionHBurnt", - props(name = r#"Burnt Cable (Junction)"#, desc = r#""#, value = "-341365649") - )] - StructureCableJunctionHBurnt = -341365649i32, - #[strum( - serialize = "MotherboardComms", - props( - name = r#"Communications Motherboard"#, - desc = r#"When placed in a Computer and connected to a Landingpad Data And Power, a Medium Satellite Dish, and a Vending Machine allows Stationeers to trade with suppliers. Adjust the horizontal and vertical attributes of the Medium Satellite Dish either directly or through logic. You need a communications signal of 95% or above to establish reliable communications with a trader. A minimum of a 3x3 clear pad area with a Landingpad Center at the center is required for a trader to land."#, - value = "-337075633" - ) - )] - MotherboardComms = -337075633i32, - #[strum( - serialize = "AccessCardOrange", - props(name = r#"Access Card (Orange)"#, desc = r#""#, value = "-332896929") - )] - AccessCardOrange = -332896929i32, - #[strum( - serialize = "StructurePowerTransmitterOmni", - props(name = r#"Power Transmitter Omni"#, desc = r#""#, value = "-327468845") - )] - StructurePowerTransmitterOmni = -327468845i32, - #[strum( - serialize = "StructureGlassDoor", - props( - name = r#"Glass Door"#, - desc = r#"0.Operate -1.Logic"#, - value = "-324331872" - ) - )] - StructureGlassDoor = -324331872i32, - #[strum( - serialize = "DynamicGasCanisterCarbonDioxide", - props( - name = r#"Portable Gas Tank (CO2)"#, - desc = r#"Portable gas tanks do one thing: store gas. To refill the tank, bolt it to a Kit (Tank Connector), then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or ... boom. Once it's full, you can refill a Canister (CO2) by attaching it to the tank's striped section. Or you could vent the tank's variable flow rate valve into a room and create an atmosphere ... of sorts."#, - value = "-322413931" - ) - )] - DynamicGasCanisterCarbonDioxide = -322413931i32, - #[strum( - serialize = "StructureVolumePump", - props( - name = r#"Volume Pump"#, - desc = r#"The volume pump pumps pumpable gases. It also separates out pipe networks into separate networks."#, - value = "-321403609" - ) - )] - StructureVolumePump = -321403609i32, - #[strum( - serialize = "DynamicMKIILiquidCanisterWater", - props( - name = r#"Portable Liquid Tank Mk II (Water)"#, - desc = r#"An insulated version of the Portable Liquid Tank Mk II (Water), for storing liquids without them gaining or losing temperature."#, - value = "-319510386" - ) - )] - DynamicMkiiLiquidCanisterWater = -319510386i32, - #[strum( - serialize = "ItemKitRocketBattery", - props(name = r#"Kit (Rocket Battery)"#, desc = r#""#, value = "-314072139") - )] - ItemKitRocketBattery = -314072139i32, - #[strum( - serialize = "ElectronicPrinterMod", - props( - name = r#"Electronic Printer Mod"#, - desc = r#"Apply to an Electronics Printer with a Welding Torch or Arc Welder to upgrade for increased processing speed and more recipe options."#, - value = "-311170652" - ) - )] - ElectronicPrinterMod = -311170652i32, - #[strum( - serialize = "ItemWreckageHydroponicsTray1", - props( - name = r#"Wreckage Hydroponics Tray"#, - desc = r#""#, - value = "-310178617" - ) - )] - ItemWreckageHydroponicsTray1 = -310178617i32, - #[strum( - serialize = "ItemKitRocketCelestialTracker", - props( - name = r#"Kit (Rocket Celestial Tracker)"#, - desc = r#""#, - value = "-303008602" - ) - )] - ItemKitRocketCelestialTracker = -303008602i32, - #[strum( - serialize = "StructureFrameSide", - props( - name = r#"Steel Frame (Side)"#, - desc = r#"More durable than the Iron Frame, steel frames also provide variations for more ornate constructions."#, - value = "-302420053" - ) - )] - StructureFrameSide = -302420053i32, - #[strum( - serialize = "ItemInvarIngot", - props(name = r#"Ingot (Invar)"#, desc = r#""#, value = "-297990285") - )] - ItemInvarIngot = -297990285i32, - #[strum( - serialize = "StructureSmallTableThickSingle", - props( - name = r#"Small Table (Thick Single)"#, - desc = r#""#, - value = "-291862981" - ) - )] - StructureSmallTableThickSingle = -291862981i32, - #[strum( - serialize = "ItemSiliconIngot", - props(name = r#"Ingot (Silicon)"#, desc = r#""#, value = "-290196476") - )] - ItemSiliconIngot = -290196476i32, - #[strum( - serialize = "StructureLiquidPipeHeater", - props( - name = r#"Pipe Heater (Liquid)"#, - desc = r#"Adds 1000 joules of heat per tick to the contents of your pipe network."#, - value = "-287495560" - ) - )] - StructureLiquidPipeHeater = -287495560i32, - #[strum( - serialize = "ItemChocolateCake", - props(name = r#"Chocolate Cake"#, desc = r#""#, value = "-261575861") - )] - ItemChocolateCake = -261575861i32, - #[strum( - serialize = "StructureStirlingEngine", - props( - name = r#"Stirling Engine"#, - desc = r#"Harnessing an ancient thermal exploit, the Recurso 'Libra' Stirling Engine generates power via the expansion and contraction of a working gas to drive pistons operating an electrical generator. - -When high pressure hot gas is supplied into the input pipe, this gas will heat the hot side of the unit, then pass into the output pipe. The cooler side uses the room's ambient atmosphere, which must be kept at a lower temperature and pressure in order to create a differential. Add a working gas by inserting a Gas Canister. The unit must be deactivated when adding or removing canisters, or the working gas may leak into the surrounding atmosphere. - -Gases with a low molecular mass make the most efficient working gases. Increasing the moles of working gas can result in a greater potential power output. However, overpressuring the unit may have ... sub-optimal results."#, - value = "-260316435" - ) - )] - StructureStirlingEngine = -260316435i32, - #[strum( - serialize = "StructureCompositeCladdingRounded", - props( - name = r#"Composite Cladding (Rounded)"#, - desc = r#""#, - value = "-259357734" - ) - )] - StructureCompositeCladdingRounded = -259357734i32, - #[strum( - serialize = "SMGMagazine", - props(name = r#"SMG Magazine"#, desc = r#""#, value = "-256607540") - )] - SmgMagazine = -256607540i32, - #[strum( - serialize = "ItemLiquidPipeHeater", - props( - name = r#"Pipe Heater Kit (Liquid)"#, - desc = r#"Creates a Pipe Heater (Liquid)."#, - value = "-248475032" - ) - )] - ItemLiquidPipeHeater = -248475032i32, - #[strum( - serialize = "StructureArcFurnace", - props( - name = r#"Arc Furnace"#, - desc = r#"The simplest smelting system available to the average Stationeer, Recurso's arc furnace was forged itself in the depths of the Solar System to help explorational geologists determine the purity of potential asteroidal mining targets. -Co-opted by the ODA, it now provides Stationeers with a way to produce pure ingots of various resources. -The smelting process also releases a range of by product gases, principally Nitrogen, Carbon Dioxide, Volatiles and Oxygen in differing ratios. These can be recaptured from the atmosphere by filtering, but also make the arc furnace a risk in closed environments. -Unlike the more advanced Furnace, the arc furnace cannot create alloys."#, - value = "-247344692" - ) - )] - StructureArcFurnace = -247344692i32, - #[strum( - serialize = "ItemTablet", - props( - name = r#"Handheld Tablet"#, - desc = r#"The Xigo handheld 'Padi' tablet is an all-purpose data platform, provided as standard issue to all Stationeers. A dynamic multi-tool that accepts a range of cartridges, the Padi becomes an Atmos Analyzer or Tracker, Medical Analyzer, Ore Scanner, eReader, and various other functions."#, - value = "-229808600" - ) - )] - ItemTablet = -229808600i32, - #[strum( - serialize = "StructureGovernedGasEngine", - props( - name = r#"Pumped Gas Engine"#, - desc = r#"The most reliable of all the rocket engines, the Pumped Gas Engine runs on a 2:1 mix of Volatiles to Oxygen gas."#, - value = "-214232602" - ) - )] - StructureGovernedGasEngine = -214232602i32, - #[strum( - serialize = "StructureStairs4x2RailR", - props( - name = r#"Stairs with Rail (Right)"#, - desc = r#""#, - value = "-212902482" - ) - )] - StructureStairs4X2RailR = -212902482i32, - #[strum( - serialize = "ItemLeadOre", - props( - name = r#"Ore (Lead)"#, - desc = r#"Lead is a chemical element with the symbol "Pb". It is a dense, heavy metal with a low melting point. Lead is a used to make a variety of things such as alloys like Ingot (Solder) and munitions."#, - value = "-190236170" - ) - )] - ItemLeadOre = -190236170i32, - #[strum( - serialize = "StructureBeacon", - props(name = r#"Beacon"#, desc = r#""#, value = "-188177083") - )] - StructureBeacon = -188177083i32, - #[strum( - serialize = "ItemGasFilterCarbonDioxideInfinite", - props( - name = r#"Catalytic Filter (Carbon Dioxide)"#, - desc = r#"A filter that selectively targets Carbon Dioxide. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle."#, - value = "-185568964" - ) - )] - ItemGasFilterCarbonDioxideInfinite = -185568964i32, - #[strum( - serialize = "ItemLiquidCanisterEmpty", - props(name = r#"Liquid Canister"#, desc = r#""#, value = "-185207387") - )] - ItemLiquidCanisterEmpty = -185207387i32, - #[strum( - serialize = "ItemMKIIWireCutters", - props( - name = r#"Mk II Wire Cutters"#, - desc = r#"Wirecutters allow you to deconstruct various structures, as well as cross-lay cables when held in your non-active hand, and defuse explosives as needed. Wirecutters are stored in the Tool Belt, along with other essential tools."#, - value = "-178893251" - ) - )] - ItemMkiiWireCutters = -178893251i32, - #[strum( - serialize = "ItemPlantThermogenic_Genepool1", - props( - name = r#"Hades Flower (Alpha strain)"#, - desc = r#"The Agrizero's-created Hades Flower is the result of as dubious experiment to combine the allure of tropical plants with the comfort and homeliness of a heat pump. The plant breathes a 1:3 mix of Volatiles and Oxygen, and exhales heated Pollutant."#, - value = "-177792789" - ) - )] - ItemPlantThermogenicGenepool1 = -177792789i32, - #[strum( - serialize = "StructureInsulatedInLineTankGas1x2", - props( - name = r#"Insulated In-Line Tank Gas"#, - desc = r#""#, - value = "-177610944" - ) - )] - StructureInsulatedInLineTankGas1X2 = -177610944i32, - #[strum( - serialize = "StructureCableCornerBurnt", - props(name = r#"Burnt Cable (Corner)"#, desc = r#""#, value = "-177220914") - )] - StructureCableCornerBurnt = -177220914i32, - #[strum( - serialize = "StructureCableJunction", - props( - name = r#"Cable (Junction)"#, - desc = r#"Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of Stationeer life - so much so, the ODA designated it an official 'tool' during the 3rd Decannual Stationeer Solar Conference. -Normal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy)."#, - value = "-175342021" - ) - )] - StructureCableJunction = -175342021i32, - #[strum( - serialize = "ItemKitLaunchTower", - props( - name = r#"Kit (Rocket Launch Tower)"#, - desc = r#""#, - value = "-174523552" - ) - )] - ItemKitLaunchTower = -174523552i32, - #[strum( - serialize = "StructureBench3", - props(name = r#"Bench (Frame Style)"#, desc = r#""#, value = "-164622691") - )] - StructureBench3 = -164622691i32, - #[strum( - serialize = "MotherboardProgrammableChip", - props( - name = r#"IC Editor Motherboard"#, - desc = r#"When placed in a Computer, the IC Editor allows players to write and edit IC code, which can then be uploaded to a Integrated Circuit (IC10) if housed in an IC Housing."#, - value = "-161107071" - ) - )] - MotherboardProgrammableChip = -161107071i32, - #[strum( - serialize = "ItemSprayCanOrange", - props( - name = r#"Spray Paint (Orange)"#, - desc = r#"Orange is fun, but also suggestive of hazards. Sitting proudly in the middle of the visual spectrum, it has nothing to prove."#, - value = "-158007629" - ) - )] - ItemSprayCanOrange = -158007629i32, - #[strum( - serialize = "StructureWallPaddedCorner", - props(name = r#"Wall (Padded Corner)"#, desc = r#""#, value = "-155945899") - )] - StructureWallPaddedCorner = -155945899i32, - #[strum( - serialize = "StructureCableStraightH", - props(name = r#"Heavy Cable (Straight)"#, desc = r#""#, value = "-146200530") - )] - StructureCableStraightH = -146200530i32, - #[strum( - serialize = "StructureDockPortSide", - props(name = r#"Dock (Port Side)"#, desc = r#""#, value = "-137465079") - )] - StructureDockPortSide = -137465079i32, - #[strum( - serialize = "StructureCircuitHousing", - props(name = r#"IC Housing"#, desc = r#""#, value = "-128473777") - )] - StructureCircuitHousing = -128473777i32, - #[strum( - serialize = "MotherboardMissionControl", - props( - name = r#""#, - desc = r#""#, - value = "-127121474" - ) - )] - MotherboardMissionControl = -127121474i32, - #[strum( - serialize = "ItemKitSpeaker", - props(name = r#"Kit (Speaker)"#, desc = r#""#, value = "-126038526") - )] - ItemKitSpeaker = -126038526i32, - #[strum( - serialize = "StructureLogicReagentReader", - props(name = r#"Reagent Reader"#, desc = r#""#, value = "-124308857") - )] - StructureLogicReagentReader = -124308857i32, - #[strum( - serialize = "ItemGasFilterNitrousOxideInfinite", - props( - name = r#"Catalytic Filter (Nitrous Oxide)"#, - desc = r#"A filter that selectively targets Nitrous Oxide. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle."#, - value = "-123934842" - ) - )] - ItemGasFilterNitrousOxideInfinite = -123934842i32, - #[strum( - serialize = "ItemKitPressureFedGasEngine", - props( - name = r#"Kit (Pressure Fed Gas Engine)"#, - desc = r#""#, - value = "-121514007" - ) - )] - ItemKitPressureFedGasEngine = -121514007i32, - #[strum( - serialize = "StructureCableJunction4HBurnt", - props( - name = r#"Burnt Cable (4-Way Junction)"#, - desc = r#""#, - value = "-115809132" - ) - )] - StructureCableJunction4HBurnt = -115809132i32, - #[strum( - serialize = "ElevatorCarrage", - props(name = r#"Elevator"#, desc = r#""#, value = "-110788403") - )] - ElevatorCarrage = -110788403i32, - #[strum( - serialize = "StructureFairingTypeA2", - props(name = r#"Fairing (Type A2)"#, desc = r#""#, value = "-104908736") - )] - StructureFairingTypeA2 = -104908736i32, - #[strum( - serialize = "ItemKitPressureFedLiquidEngine", - props( - name = r#"Kit (Pressure Fed Liquid Engine)"#, - desc = r#""#, - value = "-99091572" - ) - )] - ItemKitPressureFedLiquidEngine = -99091572i32, - #[strum( - serialize = "Meteorite", - props(name = r#"Meteorite"#, desc = r#""#, value = "-99064335") - )] - Meteorite = -99064335i32, - #[strum( - serialize = "ItemKitArcFurnace", - props(name = r#"Kit (Arc Furnace)"#, desc = r#""#, value = "-98995857") - )] - ItemKitArcFurnace = -98995857i32, - #[strum( - serialize = "StructureInsulatedPipeCrossJunction", - props( - name = r#"Insulated Pipe (Cross Junction)"#, - desc = r#"Insulated pipes greatly reduce heat loss from gases stored in them."#, - value = "-92778058" - ) - )] - StructureInsulatedPipeCrossJunction = -92778058i32, - #[strum( - serialize = "ItemWaterPipeMeter", - props(name = r#"Kit (Liquid Pipe Meter)"#, desc = r#""#, value = "-90898877") - )] - ItemWaterPipeMeter = -90898877i32, - #[strum( - serialize = "FireArmSMG", - props( - name = r#"Fire Arm SMG"#, - desc = r#"0.Single -1.Auto"#, - value = "-86315541" - ) - )] - FireArmSmg = -86315541i32, - #[strum( - serialize = "ItemHardsuitHelmet", - props( - name = r#"Hardsuit Helmet"#, - desc = r#"The Hardsuit Helmet is similar to the Space Helmet, but can withstand higher temperatures and pressures. It's perfect for enduring harsh environments like Venus and Vulcan."#, - value = "-84573099" - ) - )] - ItemHardsuitHelmet = -84573099i32, - #[strum( - serialize = "ItemSolderIngot", - props(name = r#"Ingot (Solder)"#, desc = r#""#, value = "-82508479") - )] - ItemSolderIngot = -82508479i32, - #[strum( - serialize = "CircuitboardGasDisplay", - props( - name = r#"Gas Display"#, - desc = r#"Information is power. Place this circuitboard into a Console to create a display that shows gas pressure or temperature of any connected tank, storage cannister, Kit (Pipe Analyzer) or Kit (Gas Sensor)."#, - value = "-82343730" - ) - )] - CircuitboardGasDisplay = -82343730i32, - #[strum( - serialize = "DynamicGenerator", - props( - name = r#"Portable Generator"#, - desc = r#"Every Stationeer's best friend, the portable generator gets you up and running, fast. Fill it with a Canister (Fuel) to power up and charge a Battery Cell (Small), or attach it to a Power Connector to link it into your electrical network. It's pressure driven, so functions more efficiently at lower temperatures, and REALLY efficiently if supercooled. Perfecting your fuel mix also makes a big difference."#, - value = "-82087220" - ) - )] - DynamicGenerator = -82087220i32, - #[strum( - serialize = "ItemFlowerRed", - props(name = r#"Flower (Red)"#, desc = r#""#, value = "-81376085") - )] - ItemFlowerRed = -81376085i32, - #[strum( - serialize = "KitchenTableSimpleShort", - props( - name = r#"Kitchen Table (Simple Short)"#, - desc = r#""#, - value = "-78099334" - ) - )] - KitchenTableSimpleShort = -78099334i32, - #[strum( - serialize = "ImGuiCircuitboardAirlockControl", - props(name = r#"Airlock (Experimental)"#, desc = r#""#, value = "-73796547") - )] - ImGuiCircuitboardAirlockControl = -73796547i32, - #[strum( - serialize = "StructureInsulatedPipeLiquidCrossJunction6", - props( - name = r#"Insulated Liquid Pipe (6-Way Junction)"#, - desc = r#"Liquid piping with very low temperature loss or gain."#, - value = "-72748982" - ) - )] - StructureInsulatedPipeLiquidCrossJunction6 = -72748982i32, - #[strum( - serialize = "StructureCompositeCladdingAngledCorner", - props( - name = r#"Composite Cladding (Angled Corner)"#, - desc = r#""#, - value = "-69685069" - ) - )] - StructureCompositeCladdingAngledCorner = -69685069i32, - #[strum( - serialize = "StructurePowerTransmitter", - props( - name = r#"Microwave Power Transmitter"#, - desc = r#"The Norsec Wireless Power Transmitter is an uni-directional, A-to-B, far field microwave electrical transmission system.The rotatable base transmitter delivers a narrow, non-lethal microwave beam to a dedicated base receiver. -The transmitter must be aligned to the base station in order to transmit any power. The brightness of the transmitter's collimator arc provides an indication of transmission intensity. Note that there is an attrition over longer ranges, so the unit requires more power over greater distances to deliver the same output."#, - value = "-65087121" - ) - )] - StructurePowerTransmitter = -65087121i32, - #[strum( - serialize = "ItemFrenchFries", - props( - name = r#"Canned French Fries"#, - desc = r#"Because space would suck without 'em."#, - value = "-57608687" - ) - )] - ItemFrenchFries = -57608687i32, - #[strum( - serialize = "StructureConsoleLED1x2", - props( - name = r#"LED Display (Medium)"#, - desc = r#"0.Default -1.Percent -2.Power"#, - value = "-53151617" - ) - )] - StructureConsoleLed1X2 = -53151617i32, - #[strum( - serialize = "UniformMarine", - props(name = r#"Marine Uniform"#, desc = r#""#, value = "-48342840") - )] - UniformMarine = -48342840i32, - #[strum( - serialize = "Battery_Wireless_cell_Big", - props( - name = r#"Battery Wireless Cell (Big)"#, - desc = r#"0.Empty -1.Critical -2.VeryLow -3.Low -4.Medium -5.High -6.Full"#, - value = "-41519077" - ) - )] - BatteryWirelessCellBig = -41519077i32, - #[strum( - serialize = "StructureCableCornerH", - props(name = r#"Heavy Cable (Corner)"#, desc = r#""#, value = "-39359015") - )] - StructureCableCornerH = -39359015i32, - #[strum( - serialize = "ItemPipeCowl", - props( - name = r#"Pipe Cowl"#, - desc = r#"This creates a Pipe Cowl that can be placed on the end of pipes to expose them to the world atmospheres."#, - value = "-38898376" - ) - )] - ItemPipeCowl = -38898376i32, - #[strum( - serialize = "StructureStairwellFrontLeft", - props(name = r#"Stairwell (Front Left)"#, desc = r#""#, value = "-37454456") - )] - StructureStairwellFrontLeft = -37454456i32, - #[strum( - serialize = "StructureWallPaddedWindowThin", - props( - name = r#"Wall (Padded Window Thin)"#, - desc = r#""#, - value = "-37302931" - ) - )] - StructureWallPaddedWindowThin = -37302931i32, - #[strum( - serialize = "StructureInsulatedTankConnector", - props( - name = r#"Insulated Tank Connector"#, - desc = r#""#, - value = "-31273349" - ) - )] - StructureInsulatedTankConnector = -31273349i32, - #[strum( - serialize = "ItemKitInsulatedPipeUtility", - props( - name = r#"Kit (Insulated Pipe Utility Gas)"#, - desc = r#""#, - value = "-27284803" - ) - )] - ItemKitInsulatedPipeUtility = -27284803i32, - #[strum( - serialize = "DynamicLight", - props( - name = r#"Portable Light"#, - desc = r#"Philippe Starck might not applaud, but this battery-powered light source undarkens the corners when illumination's lacking. Powered by any battery, it's a 'no-frills' Xigo design that can be cheaply fabricated with the minimum of fuss. Unless you like fuss. In which case, fuss all you like."#, - value = "-21970188" - ) - )] - DynamicLight = -21970188i32, - #[strum( - serialize = "ItemKitBatteryLarge", - props(name = r#"Kit (Battery Large)"#, desc = r#""#, value = "-21225041") - )] - ItemKitBatteryLarge = -21225041i32, - #[strum( - serialize = "StructureSmallTableThickDouble", - props( - name = r#"Small (Table Thick Double)"#, - desc = r#""#, - value = "-19246131" - ) - )] - StructureSmallTableThickDouble = -19246131i32, - #[strum( - serialize = "ItemAmmoBox", - props(name = r#"Ammo Box"#, desc = r#""#, value = "-9559091") - )] - ItemAmmoBox = -9559091i32, - #[strum( - serialize = "StructurePipeLiquidCrossJunction4", - props( - name = r#"Liquid Pipe (4-Way Junction)"#, - desc = r#"You can upgrade this pipe to an Insulated Liquid Pipe (4-Way Junction) using an Kit (Insulated Liquid Pipe) and a Wrench."#, - value = "-9555593" - ) - )] - StructurePipeLiquidCrossJunction4 = -9555593i32, - #[strum( - serialize = "DynamicGasCanisterRocketFuel", - props( - name = r#"Dynamic Gas Canister Rocket Fuel"#, - desc = r#""#, - value = "-8883951" - ) - )] - DynamicGasCanisterRocketFuel = -8883951i32, - #[strum( - serialize = "ItemPureIcePollutant", - props( - name = r#"Pure Ice Pollutant"#, - desc = r#"A frozen chunk of pure Pollutant"#, - value = "-1755356" - ) - )] - ItemPureIcePollutant = -1755356i32, - #[strum( - serialize = "ItemWreckageLargeExtendableRadiator01", - props( - name = r#"Wreckage Large Extendable Radiator"#, - desc = r#""#, - value = "-997763" - ) - )] - ItemWreckageLargeExtendableRadiator01 = -997763i32, - #[strum( - serialize = "StructureSingleBed", - props( - name = r#"Single Bed"#, - desc = r#"Description coming."#, - value = "-492611" - ) - )] - StructureSingleBed = -492611i32, - #[strum( - serialize = "StructureCableCorner3HBurnt", - props( - name = r#""#, - desc = r#""#, - value = "2393826" - ) - )] - StructureCableCorner3HBurnt = 2393826i32, - #[strum( - serialize = "StructureAutoMinerSmall", - props( - name = r#"Autominer (Small)"#, - desc = r#"The Recurso SquareDig autominer is a structure that when built will mine a vertical 2x2 shaft until it hits bedrock. The autominer can be connected to a chute system, and is controllable by a logic network. Note that the autominer outputs more ore than a conventional Mining Drill over the same area."#, - value = "7274344" - ) - )] - StructureAutoMinerSmall = 7274344i32, - #[strum( - serialize = "CrateMkII", - props( - name = r#"Crate Mk II"#, - desc = r#"A more heavily reinforced version of the iconic Dynamic Crate, the Crate Mk II is resistant to incredibly high pressures and temperatures. Short of disposing of it in a black hole, the Mk II is about as safe as luggage gets."#, - value = "8709219" - ) - )] - CrateMkIi = 8709219i32, - #[strum( - serialize = "ItemGasFilterWaterM", - props(name = r#"Medium Filter (Water)"#, desc = r#""#, value = "8804422") - )] - ItemGasFilterWaterM = 8804422i32, - #[strum( - serialize = "StructureWallPaddedNoBorder", - props(name = r#"Wall (Padded No Border)"#, desc = r#""#, value = "8846501") - )] - StructureWallPaddedNoBorder = 8846501i32, - #[strum( - serialize = "ItemGasFilterVolatiles", - props( - name = r#"Filter (Volatiles)"#, - desc = r#"Filters are used to capture various gases, which can be disposed of or used elsewhere. Volatiles are created by exposing Ice (Volatiles) to heat. The product can then be collected and combined with Oxygen to create fuel, or used within a Furnace to smelt ores and create alloys."#, - value = "15011598" - ) - )] - ItemGasFilterVolatiles = 15011598i32, - #[strum( - serialize = "ItemMiningCharge", - props( - name = r#"Mining Charge"#, - desc = r#"A low cost, high yield explosive with a 10 second timer."#, - value = "15829510" - ) - )] - ItemMiningCharge = 15829510i32, - #[strum( - serialize = "ItemKitEngineSmall", - props(name = r#"Kit (Engine Small)"#, desc = r#""#, value = "19645163") - )] - ItemKitEngineSmall = 19645163i32, - #[strum( - serialize = "StructureHeatExchangerGastoGas", - props( - name = r#"Heat Exchanger - Gas"#, - desc = r#"The original specs for the N Series Flow-P heat exchanger were rumored to have been scrawled on the back of a burger receipt by a bored Sinotai designer riding up the Brazilian space elevator, but that hasn't stopped it becoming one of the most widely-copied heat exchanger designs in the Solar System. -The 'N Flow-P' has four connections, allowing you to pass two gas networks into the unit, which then works to equalize temperature across the two separate networks. -As the N Flow-P is a passive system, it equalizes pressure across the entire of each individual network, unless connected to gas management devices like a Volume Pump or a Back Pressure Regulator."#, - value = "21266291" - ) - )] - StructureHeatExchangerGastoGas = 21266291i32, - #[strum( - serialize = "StructurePressurantValve", - props( - name = r#"Pressurant Valve"#, - desc = r#"Pumps gas into a liquid pipe in order to raise the pressure"#, - value = "23052817" - ) - )] - StructurePressurantValve = 23052817i32, - #[strum( - serialize = "StructureWallHeater", - props( - name = r#"Wall Heater"#, - desc = r#"The Xigo wall heater is a simple device that can be installed on a wall or frame and connected to power. When switched on, it will start heating the surrounding environment. It consumes 1010W of power and can be controlled by logic chips to run when the temperature hits a certain level."#, - value = "24258244" - ) - )] - StructureWallHeater = 24258244i32, - #[strum( - serialize = "StructurePassiveLargeRadiatorLiquid", - props( - name = r#"Medium Convection Radiator Liquid"#, - desc = r#"Has been replaced by Medium Convection Radiator Liquid."#, - value = "24786172" - ) - )] - StructurePassiveLargeRadiatorLiquid = 24786172i32, - #[strum( - serialize = "StructureWallPlating", - props(name = r#"Wall (Plating)"#, desc = r#""#, value = "26167457") - )] - StructureWallPlating = 26167457i32, - #[strum( - serialize = "ItemSprayCanPurple", - props( - name = r#"Spray Paint (Purple)"#, - desc = r#"Purple is a curious color. You need to be careful with purple. It can be very good, or go horribly, horribly wrong."#, - value = "30686509" - ) - )] - ItemSprayCanPurple = 30686509i32, - #[strum( - serialize = "DynamicGasCanisterNitrousOxide", - props( - name = r#"Portable Gas Tank (Nitrous Oxide)"#, - desc = r#""#, - value = "30727200" - ) - )] - DynamicGasCanisterNitrousOxide = 30727200i32, - #[strum( - serialize = "StructureInLineTankGas1x2", - props( - name = r#"In-Line Tank Gas"#, - desc = r#"A small expansion tank that increases the volume of a pipe network."#, - value = "35149429" - ) - )] - StructureInLineTankGas1X2 = 35149429i32, - #[strum( - serialize = "ItemSteelSheets", - props( - name = r#"Steel Sheets"#, - desc = r#"An advanced building material, Ingot (Steel) sheets are used when constructing a Steel Frame and several other wall types."#, - value = "38555961" - ) - )] - ItemSteelSheets = 38555961i32, - #[strum( - serialize = "ItemGasCanisterEmpty", - props(name = r#"Canister"#, desc = r#""#, value = "42280099") - )] - ItemGasCanisterEmpty = 42280099i32, - #[strum( - serialize = "ItemWreckageWallCooler2", - props(name = r#"Wreckage Wall Cooler"#, desc = r#""#, value = "45733800") - )] - ItemWreckageWallCooler2 = 45733800i32, - #[strum( - serialize = "ItemPumpkinPie", - props(name = r#"Pumpkin Pie"#, desc = r#""#, value = "62768076") - )] - ItemPumpkinPie = 62768076i32, - #[strum( - serialize = "ItemGasFilterPollutantsM", - props( - name = r#"Medium Filter (Pollutants)"#, - desc = r#""#, - value = "63677771" - ) - )] - ItemGasFilterPollutantsM = 63677771i32, - #[strum( - serialize = "StructurePipeStraight", - props( - name = r#"Pipe (Straight)"#, - desc = r#"You can upgrade this pipe to an Insulated Pipe (Straight) using an Kit (Insulated Pipe) and a Wrench."#, - value = "73728932" - ) - )] - StructurePipeStraight = 73728932i32, - #[strum( - serialize = "ItemKitDockingPort", - props(name = r#"Kit (Docking Port)"#, desc = r#""#, value = "77421200") - )] - ItemKitDockingPort = 77421200i32, - #[strum( - serialize = "CartridgeTracker", - props(name = r#"Tracker"#, desc = r#""#, value = "81488783") - )] - CartridgeTracker = 81488783i32, - #[strum( - serialize = "ToyLuna", - props(name = r#"Toy Luna"#, desc = r#""#, value = "94730034") - )] - ToyLuna = 94730034i32, - #[strum( - serialize = "ItemWreckageTurbineGenerator2", - props( - name = r#"Wreckage Turbine Generator"#, - desc = r#""#, - value = "98602599" - ) - )] - ItemWreckageTurbineGenerator2 = 98602599i32, - #[strum( - serialize = "StructurePowerUmbilicalFemale", - props( - name = r#"Umbilical Socket (Power)"#, - desc = r#""#, - value = "101488029" - ) - )] - StructurePowerUmbilicalFemale = 101488029i32, - #[strum( - serialize = "DynamicSkeleton", - props(name = r#"Skeleton"#, desc = r#""#, value = "106953348") - )] - DynamicSkeleton = 106953348i32, - #[strum( - serialize = "ItemWaterBottle", - props( - name = r#"Water Bottle"#, - desc = r#"Delicious and pure H20, refined from local sources as varied as Venusian ice and trans-Solar comets. Empty bottles can be refilled using the Water Bottle Filler."#, - value = "107741229" - ) - )] - ItemWaterBottle = 107741229i32, - #[strum( - serialize = "DynamicGasCanisterVolatiles", - props( - name = r#"Portable Gas Tank (Volatiles)"#, - desc = r#"Portable tanks store gas. To refill one, bolt it to a Kit (Tank Connector) using a Wrench, then connect it to a pipe network. Don't fill it above 10 MPa, unless you're the sort who loves complicated, flammable emergencies. You can refill a Canister (Volatiles) by attaching it to the tank's striped section. Or you could use a Wrench to attach to a rocket and show it around the Solar System."#, - value = "108086870" - ) - )] - DynamicGasCanisterVolatiles = 108086870i32, - #[strum( - serialize = "StructureCompositeCladdingRoundedCornerInner", - props( - name = r#"Composite Cladding (Rounded Corner Inner)"#, - desc = r#""#, - value = "110184667" - ) - )] - StructureCompositeCladdingRoundedCornerInner = 110184667i32, - #[strum( - serialize = "ItemTerrainManipulator", - props( - name = r#"Terrain Manipulator"#, - desc = r#"0.Mode0 -1.Mode1"#, - value = "111280987" - ) - )] - ItemTerrainManipulator = 111280987i32, - #[strum( - serialize = "FlareGun", - props(name = r#"Flare Gun"#, desc = r#""#, value = "118685786") - )] - FlareGun = 118685786i32, - #[strum( - serialize = "ItemKitPlanter", - props(name = r#"Kit (Planter)"#, desc = r#""#, value = "119096484") - )] - ItemKitPlanter = 119096484i32, - #[strum( - serialize = "ReagentColorGreen", - props(name = r#"Color Dye (Green)"#, desc = r#""#, value = "120807542") - )] - ReagentColorGreen = 120807542i32, - #[strum( - serialize = "DynamicGasCanisterNitrogen", - props( - name = r#"Portable Gas Tank (Nitrogen)"#, - desc = r#"Portable tanks store gas. If you need to refill a tank, bolt it to a Kit (Tank Connector) using a Wrench, then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or you'll end up with Nitrogen in places you weren't expecting. You can refill a Canister (Nitrogen) by attaching it to the tank's striped section. Or you could use a Wrench to attach it to a rover or rocket for later."#, - value = "121951301" - ) - )] - DynamicGasCanisterNitrogen = 121951301i32, - #[strum( - serialize = "ItemKitPressurePlate", - props(name = r#"Kit (Trigger Plate)"#, desc = r#""#, value = "123504691") - )] - ItemKitPressurePlate = 123504691i32, - #[strum( - serialize = "ItemKitLogicSwitch", - props(name = r#"Kit (Logic Switch)"#, desc = r#""#, value = "124499454") - )] - ItemKitLogicSwitch = 124499454i32, - #[strum( - serialize = "StructureCompositeCladdingSpherical", - props( - name = r#"Composite Cladding (Spherical)"#, - desc = r#""#, - value = "139107321" - ) - )] - StructureCompositeCladdingSpherical = 139107321i32, - #[strum( - serialize = "ItemLaptop", - props( - name = r#"Laptop"#, - desc = r#"The Laptop functions as a portable IC editor. To operate the Laptop it must be powered with a battery, have a IC Editor Motherboard in the motherboard slot, and an Integrated Circuit (IC10) in the Programmable Chip Slot. - -You must place the laptop down to interact with the onsreen UI. - -Connects to Logic Transmitter"#, - value = "141535121" - ) - )] - ItemLaptop = 141535121i32, - #[strum( - serialize = "ApplianceSeedTray", - props( - name = r#"Appliance Seed Tray"#, - desc = r#"The seed tray can hold up to twelve plants or seeds and can be used to facilitate fast experimentation and testing of plant genetics."#, - value = "142831994" - ) - )] - ApplianceSeedTray = 142831994i32, - #[strum( - serialize = "Landingpad_TaxiPieceHold", - props(name = r#"Landingpad Taxi Hold"#, desc = r#""#, value = "146051619") - )] - LandingpadTaxiPieceHold = 146051619i32, - #[strum( - serialize = "StructureFuselageTypeC5", - props(name = r#"Fuselage (Type C5)"#, desc = r#""#, value = "147395155") - )] - StructureFuselageTypeC5 = 147395155i32, - #[strum( - serialize = "ItemKitBasket", - props(name = r#"Kit (Basket)"#, desc = r#""#, value = "148305004") - )] - ItemKitBasket = 148305004i32, - #[strum( - serialize = "StructureRocketCircuitHousing", - props(name = r#"Rocket Circuit Housing"#, desc = r#""#, value = "150135861") - )] - StructureRocketCircuitHousing = 150135861i32, - #[strum( - serialize = "StructurePipeCrossJunction6", - props( - name = r#"Pipe (6-Way Junction)"#, - desc = r#"You can upgrade this pipe to an Insulated Pipe (6-Way Junction) using an Kit (Insulated Pipe) and a Wrench."#, - value = "152378047" - ) - )] - StructurePipeCrossJunction6 = 152378047i32, - #[strum( - serialize = "ItemGasFilterNitrogenInfinite", - props( - name = r#"Catalytic Filter (Nitrogen)"#, - desc = r#"A filter that selectively targets Nitrogen. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle."#, - value = "152751131" - ) - )] - ItemGasFilterNitrogenInfinite = 152751131i32, - #[strum( - serialize = "StructureStairs4x2RailL", - props(name = r#"Stairs with Rail (Left)"#, desc = r#""#, value = "155214029") - )] - StructureStairs4X2RailL = 155214029i32, - #[strum( - serialize = "NpcChick", - props(name = r#"Chick"#, desc = r#""#, value = "155856647") - )] - NpcChick = 155856647i32, - #[strum( - serialize = "ItemWaspaloyIngot", - props(name = r#"Ingot (Waspaloy)"#, desc = r#""#, value = "156348098") - )] - ItemWaspaloyIngot = 156348098i32, - #[strum( - serialize = "StructureReinforcedWallPaddedWindowThin", - props( - name = r#"Reinforced Window (Thin)"#, - desc = r#"Enjoy vistas of even the most savage, alien landscapes with these heavy duty window frames, which are resistant to pressure differentials up to 1MPa."#, - value = "158502707" - ) - )] - StructureReinforcedWallPaddedWindowThin = 158502707i32, - #[strum( - serialize = "ItemKitWaterBottleFiller", - props( - name = r#"Kit (Water Bottle Filler)"#, - desc = r#""#, - value = "159886536" - ) - )] - ItemKitWaterBottleFiller = 159886536i32, - #[strum( - serialize = "ItemEmergencyWrench", - props(name = r#"Emergency Wrench"#, desc = r#""#, value = "162553030") - )] - ItemEmergencyWrench = 162553030i32, - #[strum( - serialize = "StructureChuteDigitalFlipFlopSplitterRight", - props( - name = r#"Chute Digital Flip Flop Splitter Right"#, - desc = r#"The digital flip flop will toggle between two outputs using a specified ratio (n:1). For example, setting the dial to 2 would allow two items to pass through the primary output before flipping to the secondary output."#, - value = "163728359" - ) - )] - StructureChuteDigitalFlipFlopSplitterRight = 163728359i32, - #[strum( - serialize = "StructureChuteStraight", - props( - name = r#"Chute (Straight)"#, - desc = r#"Chutes act as pipes for items. Use them to connect various import/export equipment together such as the Vending Machine and printers like the Autolathe. -The aim for any Stationeer is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps. -Chutes are fundamental components of chute networks, which allow the transport of items between any machine or device with an import/export slot."#, - value = "168307007" - ) - )] - StructureChuteStraight = 168307007i32, - #[strum( - serialize = "ItemKitDoor", - props(name = r#"Kit (Door)"#, desc = r#""#, value = "168615924") - )] - ItemKitDoor = 168615924i32, - #[strum( - serialize = "ItemWreckageAirConditioner2", - props( - name = r#"Wreckage Air Conditioner"#, - desc = r#""#, - value = "169888054" - ) - )] - ItemWreckageAirConditioner2 = 169888054i32, - #[strum( - serialize = "Landingpad_GasCylinderTankPiece", - props( - name = r#"Landingpad Gas Storage"#, - desc = r#"Increases the volume of the landing pads gas storage capacity. This volume is used for buying and selling gas to traders."#, - value = "170818567" - ) - )] - LandingpadGasCylinderTankPiece = 170818567i32, - #[strum( - serialize = "ItemKitStairs", - props(name = r#"Kit (Stairs)"#, desc = r#""#, value = "170878959") - )] - ItemKitStairs = 170878959i32, - #[strum( - serialize = "ItemPlantSampler", - props( - name = r#"Plant Sampler"#, - desc = r#"The Plant Sampler allows you to take a gene sample of a growing plant. The sampler can then be placed in the Plant Genetic Analyzer to attain and interpret the results."#, - value = "173023800" - ) - )] - ItemPlantSampler = 173023800i32, - #[strum( - serialize = "ItemAlienMushroom", - props(name = r#"Alien Mushroom"#, desc = r#""#, value = "176446172") - )] - ItemAlienMushroom = 176446172i32, - #[strum( - serialize = "ItemKitSatelliteDish", - props( - name = r#"Kit (Medium Satellite Dish)"#, - desc = r#""#, - value = "178422810" - ) - )] - ItemKitSatelliteDish = 178422810i32, - #[strum( - serialize = "StructureRocketEngineTiny", - props(name = r#"Rocket Engine (Tiny)"#, desc = r#""#, value = "178472613") - )] - StructureRocketEngineTiny = 178472613i32, - #[strum( - serialize = "StructureWallPaddedNoBorderCorner", - props( - name = r#"Wall (Padded No Border Corner)"#, - desc = r#""#, - value = "179694804" - ) - )] - StructureWallPaddedNoBorderCorner = 179694804i32, - #[strum( - serialize = "StructureShelfMedium", - props( - name = r#"Shelf Medium"#, - desc = r#"A shelf for putting things on, so you can see them."#, - value = "182006674" - ) - )] - StructureShelfMedium = 182006674i32, - #[strum( - serialize = "StructureExpansionValve", - props( - name = r#"Expansion Valve"#, - desc = r#"Allows for moving liquids from a liquid pipe into a gas pipe. Only allows liquids to pass in one direction. Typically this is done to allow the liquid to evaporate into a gas as part of an airconditioning loop."#, - value = "195298587" - ) - )] - StructureExpansionValve = 195298587i32, - #[strum( - serialize = "ItemCableFuse", - props(name = r#"Kit (Cable Fuses)"#, desc = r#""#, value = "195442047") - )] - ItemCableFuse = 195442047i32, - #[strum( - serialize = "ItemKitRoverMKI", - props(name = r#"Kit (Rover Mk I)"#, desc = r#""#, value = "197243872") - )] - ItemKitRoverMki = 197243872i32, - #[strum( - serialize = "DynamicGasCanisterWater", - props( - name = r#"Portable Liquid Tank (Water)"#, - desc = r#"This portable tank stores liquid, and liquid only. You just have to fill it up. To do this, bolt one to a Kit (Tank Connector) using a Wrench, then connect it to Liquid Pipe (Straight) to supply liquid to a network. -Try to keep pressure under 10 MPa, or you'll end up wet, hurt and sorry, without any of the fun. -You can refill a Liquid Canister (Water) by attaching it to the tank's striped section. Or you could use a Wrench to attach it to a rocket and take it somewhere distant and dry, then feel good about yourself."#, - value = "197293625" - ) - )] - DynamicGasCanisterWater = 197293625i32, - #[strum( - serialize = "ItemAngleGrinder", - props( - name = r#"Angle Grinder"#, - desc = r#"Angles-be-gone with the trusty angle grinder."#, - value = "201215010" - ) - )] - ItemAngleGrinder = 201215010i32, - #[strum( - serialize = "StructureCableCornerH4", - props( - name = r#"Heavy Cable (4-Way Corner)"#, - desc = r#""#, - value = "205837861" - ) - )] - StructureCableCornerH4 = 205837861i32, - #[strum( - serialize = "ItemEmergencySpaceHelmet", - props(name = r#"Emergency Space Helmet"#, desc = r#""#, value = "205916793") - )] - ItemEmergencySpaceHelmet = 205916793i32, - #[strum( - serialize = "ItemKitGovernedGasRocketEngine", - props( - name = r#"Kit (Pumped Gas Rocket Engine)"#, - desc = r#""#, - value = "206848766" - ) - )] - ItemKitGovernedGasRocketEngine = 206848766i32, - #[strum( - serialize = "StructurePressureRegulator", - props( - name = r#"Pressure Regulator"#, - desc = r#"Controlling the flow of gas between two pipe networks, pressure regulators shift gas until a set pressure on the outlet side is achieved, or the gas supply is exhausted. The back pressure regulator, by contrast, will only operate when pressure on the intake side exceeds the set value. With a max pressure of over 20,000kPa, it requires power to operate."#, - value = "209854039" - ) - )] - StructurePressureRegulator = 209854039i32, - #[strum( - serialize = "StructureCompositeCladdingCylindrical", - props( - name = r#"Composite Cladding (Cylindrical)"#, - desc = r#""#, - value = "212919006" - ) - )] - StructureCompositeCladdingCylindrical = 212919006i32, - #[strum( - serialize = "ItemCropHay", - props(name = r#"Hay"#, desc = r#""#, value = "215486157") - )] - ItemCropHay = 215486157i32, - #[strum( - serialize = "ItemKitLogicProcessor", - props(name = r#"Kit (Logic Processor)"#, desc = r#""#, value = "220644373") - )] - ItemKitLogicProcessor = 220644373i32, - #[strum( - serialize = "AutolathePrinterMod", - props( - name = r#"Autolathe Printer Mod"#, - desc = r#"Apply to an Autolathe with a Welding Torch or Arc Welder to upgrade for increased processing speed and more recipe options."#, - value = "221058307" - ) - )] - AutolathePrinterMod = 221058307i32, - #[strum( - serialize = "StructureChuteOverflow", - props( - name = r#"Chute Overflow"#, - desc = r#"The overflow chute will direct materials to its overflow port when the thing connected to its default port is already occupied."#, - value = "225377225" - ) - )] - StructureChuteOverflow = 225377225i32, - #[strum( - serialize = "ItemLiquidPipeAnalyzer", - props( - name = r#"Kit (Liquid Pipe Analyzer)"#, - desc = r#""#, - value = "226055671" - ) - )] - ItemLiquidPipeAnalyzer = 226055671i32, - #[strum( - serialize = "ItemGoldIngot", - props( - name = r#"Ingot (Gold)"#, - desc = r#"There is an enduring paradox at the heart of the Stationeers project: An initiative conceived as 'cut-price space exploration' uses Gold as a fundamental ingredient in fabricating so much of its equipment and materiel. "#, - value = "226410516" - ) - )] - ItemGoldIngot = 226410516i32, - #[strum( - serialize = "KitStructureCombustionCentrifuge", - props( - name = r#"Kit (Combustion Centrifuge)"#, - desc = r#""#, - value = "231903234" - ) - )] - KitStructureCombustionCentrifuge = 231903234i32, - #[strum( - serialize = "ItemChocolateBar", - props(name = r#"Chocolate Bar"#, desc = r#""#, value = "234601764") - )] - ItemChocolateBar = 234601764i32, - #[strum( - serialize = "ItemExplosive", - props(name = r#"Remote Explosive"#, desc = r#""#, value = "235361649") - )] - ItemExplosive = 235361649i32, - #[strum( - serialize = "StructureConsole", - props( - name = r#"Console"#, - desc = r#"This Norsec-designed control box manages devices such as the Active Vent, Passive Vent, Gas Sensor and Composite Door, depending on which circuitboard is inserted into the unit. It has a shared data/power port. -A completed console displays all devices connected to the current power network. Any devices not related to the installed circuitboard will be greyed-out and inoperable. Consoles are locked once a Data Disk is removed."#, - value = "235638270" - ) - )] - StructureConsole = 235638270i32, - #[strum( - serialize = "ItemPassiveVent", - props( - name = r#"Passive Vent"#, - desc = r#"This kit creates a Passive Vent among other variants."#, - value = "238631271" - ) - )] - ItemPassiveVent = 238631271i32, - #[strum( - serialize = "ItemMKIIAngleGrinder", - props( - name = r#"Mk II Angle Grinder"#, - desc = r#"Angles-be-gone with the trusty angle grinder. The MK II is more resistant to temperature and pressure."#, - value = "240174650" - ) - )] - ItemMkiiAngleGrinder = 240174650i32, - #[strum( - serialize = "Handgun", - props(name = r#"Handgun"#, desc = r#""#, value = "247238062") - )] - Handgun = 247238062i32, - #[strum( - serialize = "PassiveSpeaker", - props(name = r#"Passive Speaker"#, desc = r#""#, value = "248893646") - )] - PassiveSpeaker = 248893646i32, - #[strum( - serialize = "ItemKitBeacon", - props(name = r#"Kit (Beacon)"#, desc = r#""#, value = "249073136") - )] - ItemKitBeacon = 249073136i32, - #[strum( - serialize = "ItemCharcoal", - props( - name = r#"Charcoal"#, - desc = r#"Charcoal is a lightweight, black carbon residue produced by heating Biomass in a Arc Furnace. It contains less energy potential than Ore (Coal), but can be used as a basic fuel source. Charcoal can also be substituted for coal in alloy recipes."#, - value = "252561409" - ) - )] - ItemCharcoal = 252561409i32, - #[strum( - serialize = "StructureSuitStorage", - props( - name = r#"Suit Storage"#, - desc = r#"As tidy as it is useful, the suit storage rack holds an Eva Suit, Space Helmet and a Jetpack Basic. -When powered and connected to and , it will recharge the suit's batteries, refill the Canister (Oxygen) and your Filter (Nitrogen) Gas Canister. The wastetank will be pumped out to the pipe connected to the waste outlet. -All the rack's pipes must be connected or the unit will show an error state, but it will still charge the battery."#, - value = "255034731" - ) - )] - StructureSuitStorage = 255034731i32, - #[strum( - serialize = "ItemCorn", - props( - name = r#"Corn"#, - desc = r#"A long growth time staple crop. Its low requirement for darkness allows for accelerated growing if provided with extra light."#, - value = "258339687" - ) - )] - ItemCorn = 258339687i32, - #[strum( - serialize = "StructurePipeLiquidTJunction", - props( - name = r#"Liquid Pipe (T Junction)"#, - desc = r#"You can upgrade this pipe to an Insulated Liquid Pipe (T Junction) using an Kit (Insulated Liquid Pipe) and a Wrench."#, - value = "262616717" - ) - )] - StructurePipeLiquidTJunction = 262616717i32, - #[strum( - serialize = "StructureLogicBatchReader", - props(name = r#"Batch Reader"#, desc = r#""#, value = "264413729") - )] - StructureLogicBatchReader = 264413729i32, - #[strum( - serialize = "StructureDeepMiner", - props( - name = r#"Deep Miner"#, - desc = r#"Drills through terrain until it hits bedrock. Once inside bedrock Dirty Ore is produced roughly every 90s"#, - value = "265720906" - ) - )] - StructureDeepMiner = 265720906i32, - #[strum( - serialize = "ItemEmergencyScrewdriver", - props(name = r#"Emergency Screwdriver"#, desc = r#""#, value = "266099983") - )] - ItemEmergencyScrewdriver = 266099983i32, - #[strum( - serialize = "ItemFilterFern", - props( - name = r#"Darga Fern"#, - desc = r#"A fern adapted by Agrizeroto process a much greater volume of Carbon Dioxide into Oxygen than an average plant."#, - value = "266654416" - ) - )] - ItemFilterFern = 266654416i32, - #[strum( - serialize = "StructureCableCorner4Burnt", - props( - name = r#"Burnt Cable (4-Way Corner)"#, - desc = r#""#, - value = "268421361" - ) - )] - StructureCableCorner4Burnt = 268421361i32, - #[strum( - serialize = "StructureFrameCornerCut", - props( - name = r#"Steel Frame (Corner Cut)"#, - desc = r#"0.Mode0 -1.Mode1"#, - value = "271315669" - ) - )] - StructureFrameCornerCut = 271315669i32, - #[strum( - serialize = "StructureTankSmallInsulated", - props(name = r#"Tank Small (Insulated)"#, desc = r#""#, value = "272136332") - )] - StructureTankSmallInsulated = 272136332i32, - #[strum( - serialize = "StructureCableFuse100k", - props(name = r#"Fuse (100kW)"#, desc = r#""#, value = "281380789") - )] - StructureCableFuse100K = 281380789i32, - #[strum( - serialize = "ItemKitIceCrusher", - props(name = r#"Kit (Ice Crusher)"#, desc = r#""#, value = "288111533") - )] - ItemKitIceCrusher = 288111533i32, - #[strum( - serialize = "ItemKitPowerTransmitter", - props(name = r#"Kit (Power Transmitter)"#, desc = r#""#, value = "291368213") - )] - ItemKitPowerTransmitter = 291368213i32, - #[strum( - serialize = "StructurePipeLiquidCrossJunction6", - props( - name = r#"Liquid Pipe (6-Way Junction)"#, - desc = r#"You can upgrade this pipe to an Insulated Liquid Pipe (6-Way Junction) using an Kit (Insulated Liquid Pipe) and a Wrench."#, - value = "291524699" - ) - )] - StructurePipeLiquidCrossJunction6 = 291524699i32, - #[strum( - serialize = "ItemKitLandingPadBasic", - props(name = r#"Kit (Landing Pad Basic)"#, desc = r#""#, value = "293581318") - )] - ItemKitLandingPadBasic = 293581318i32, - #[strum( - serialize = "StructureInsulatedPipeLiquidStraight", - props( - name = r#"Insulated Liquid Pipe (Straight)"#, - desc = r#"Liquid piping with very low temperature loss or gain."#, - value = "295678685" - ) - )] - StructureInsulatedPipeLiquidStraight = 295678685i32, - #[strum( - serialize = "StructureWallFlatCornerSquare", - props( - name = r#"Wall (Flat Corner Square)"#, - desc = r#""#, - value = "298130111" - ) - )] - StructureWallFlatCornerSquare = 298130111i32, - #[strum( - serialize = "ItemHat", - props( - name = r#"Hat"#, - desc = r#"As the name suggests, this is a hat."#, - value = "299189339" - ) - )] - ItemHat = 299189339i32, - #[strum( - serialize = "ItemWaterPipeDigitalValve", - props( - name = r#"Kit (Liquid Digital Valve)"#, - desc = r#""#, - value = "309693520" - ) - )] - ItemWaterPipeDigitalValve = 309693520i32, - #[strum( - serialize = "SeedBag_Mushroom", - props( - name = r#"Mushroom Seeds"#, - desc = r#"Grow a Mushroom."#, - value = "311593418" - ) - )] - SeedBagMushroom = 311593418i32, - #[strum( - serialize = "StructureCableCorner3Burnt", - props( - name = r#"Burnt Cable (3-Way Corner)"#, - desc = r#""#, - value = "318437449" - ) - )] - StructureCableCorner3Burnt = 318437449i32, - #[strum( - serialize = "StructureLogicSwitch2", - props(name = r#"Switch"#, desc = r#""#, value = "321604921") - )] - StructureLogicSwitch2 = 321604921i32, - #[strum( - serialize = "StructureOccupancySensor", - props( - name = r#"Occupancy Sensor"#, - desc = r#"Will be triggered if there is a player in the same room as the sensor. The quantity variable will show the number of players. You can use configure it to only detect players who hold the correct Access Card using a Cartridge (Access Controller) in a Handheld Tablet. This sensor only works when placed in a room."#, - value = "322782515" - ) - )] - StructureOccupancySensor = 322782515i32, - #[strum( - serialize = "ItemKitSDBHopper", - props(name = r#"Kit (SDB Hopper)"#, desc = r#""#, value = "323957548") - )] - ItemKitSdbHopper = 323957548i32, - #[strum( - serialize = "ItemMKIIDrill", - props( - name = r#"Mk II Drill"#, - desc = r#"The ExMin Off-whirled Hand Drill has been a companion to Stationeers for decades. Essential for assembling and deconstructing various items and structures, regardless of gravity, pressure or temperature."#, - value = "324791548" - ) - )] - ItemMkiiDrill = 324791548i32, - #[strum( - serialize = "StructureCompositeFloorGrating", - props( - name = r#"Composite Floor Grating"#, - desc = r#"While aesthetics rank low on the ladder of Stationeer concerns, composite gratings allow the concealment of unsightly cables on floors, walls and ceilings."#, - value = "324868581" - ) - )] - StructureCompositeFloorGrating = 324868581i32, - #[strum( - serialize = "ItemKitSleeper", - props(name = r#"Kit (Sleeper)"#, desc = r#""#, value = "326752036") - )] - ItemKitSleeper = 326752036i32, - #[strum( - serialize = "EntityChickenBrown", - props( - name = r#"Entity Chicken Brown"#, - desc = r#"Like so many of its brethren, this is a chicken. A brown one. It will eat soybeans, corn, and wheat, and lay eggs. Some will be fertilized, producing further chickens. Some will not."#, - value = "334097180" - ) - )] - EntityChickenBrown = 334097180i32, - #[strum( - serialize = "StructurePassiveVent", - props( - name = r#"Passive Vent"#, - desc = r#"Passive vents allow gases to move into and out of pipe networks, which are closed systems unless connected to a device or structure. Passive vents are not powered, merely an aperture, essentially turning an enclosed space into part of the pipe network. "#, - value = "335498166" - ) - )] - StructurePassiveVent = 335498166i32, - #[strum( - serialize = "StructureAutolathe", - props( - name = r#"Autolathe"#, - desc = r#"The foundation of most Stationeer fabrication systems, the ExMin autolathe is a multi-axis molecular compositional system. Its complexity demands considerable time to assemble, but it remains an indispensable creation tool. Upgrade the device using a Autolathe Printer Mod for additional recipes and faster processing speeds. - "#, - value = "336213101" - ) - )] - StructureAutolathe = 336213101i32, - #[strum( - serialize = "AccessCardKhaki", - props(name = r#"Access Card (Khaki)"#, desc = r#""#, value = "337035771") - )] - AccessCardKhaki = 337035771i32, - #[strum( - serialize = "StructureBlastDoor", - props( - name = r#"Blast Door"#, - desc = r#"Airtight and almost undamageable, the original 'Millmar' series of blast door was designed by off-world mining giant Recurso to protect asteroid-mining facilities from nuclear-incident-level explosive decompression. -Short of a pocket-sized singularity blinking into the local space-time frame, there is effectively no limit to the pressure these blast doors can contain - ideal for constructing airlocks in pressure-sensitive environments."#, - value = "337416191" - ) - )] - StructureBlastDoor = 337416191i32, - #[strum( - serialize = "ItemKitWeatherStation", - props(name = r#"Kit (Weather Station)"#, desc = r#""#, value = "337505889") - )] - ItemKitWeatherStation = 337505889i32, - #[strum( - serialize = "StructureStairwellFrontRight", - props(name = r#"Stairwell (Front Right)"#, desc = r#""#, value = "340210934") - )] - StructureStairwellFrontRight = 340210934i32, - #[strum( - serialize = "ItemKitGrowLight", - props(name = r#"Kit (Grow Light)"#, desc = r#""#, value = "341030083") - )] - ItemKitGrowLight = 341030083i32, - #[strum( - serialize = "StructurePictureFrameThickMountLandscapeSmall", - props( - name = r#"Picture Frame Thick Landscape Small"#, - desc = r#""#, - value = "347154462" - ) - )] - StructurePictureFrameThickMountLandscapeSmall = 347154462i32, - #[strum( - serialize = "RoverCargo", - props( - name = r#"Rover (Cargo)"#, - desc = r#"Connects to Logic Transmitter"#, - value = "350726273" - ) - )] - RoverCargo = 350726273i32, - #[strum( - serialize = "StructureInsulatedPipeLiquidCrossJunction4", - props( - name = r#"Insulated Liquid Pipe (4-Way Junction)"#, - desc = r#"Liquid piping with very low temperature loss or gain."#, - value = "363303270" - ) - )] - StructureInsulatedPipeLiquidCrossJunction4 = 363303270i32, - #[strum( - serialize = "ItemHardBackpack", - props( - name = r#"Hardsuit Backpack"#, - desc = r#"This backpack can be useful when you are working inside and don't need to fly around."#, - value = "374891127" - ) - )] - ItemHardBackpack = 374891127i32, - #[strum( - serialize = "ItemKitDynamicLiquidCanister", - props( - name = r#"Kit (Portable Liquid Tank)"#, - desc = r#""#, - value = "375541286" - ) - )] - ItemKitDynamicLiquidCanister = 375541286i32, - #[strum( - serialize = "ItemKitGasGenerator", - props( - name = r#"Kit (Gas Fuel Generator)"#, - desc = r#""#, - value = "377745425" - ) - )] - ItemKitGasGenerator = 377745425i32, - #[strum( - serialize = "StructureBlocker", - props(name = r#"Blocker"#, desc = r#""#, value = "378084505") - )] - StructureBlocker = 378084505i32, - #[strum( - serialize = "StructurePressureFedLiquidEngine", - props( - name = r#"Pressure Fed Liquid Engine"#, - desc = r#"Highly efficient and powerful, the Pressure Fed Liquid Engine is a challenging engine to run in a stable configuration. Liquid is pulled from the input into the engine based on the input gas pressure. Some gas is also moved in this process so Stationeers will need to devise a system to maintain a high gas pressure in the liquid input pipe. The second liquid pipe connection is an optional heat-exchanger connection which exchanges heat between the pipes contents and the engine bell, the Setting variable drives the effectiveness of the heat-exchanger."#, - value = "379750958" - ) - )] - StructurePressureFedLiquidEngine = 379750958i32, - #[strum( - serialize = "ItemPureIceNitrous", - props( - name = r#"Pure Ice NitrousOxide"#, - desc = r#"A frozen chunk of pure Nitrous Oxide"#, - value = "386754635" - ) - )] - ItemPureIceNitrous = 386754635i32, - #[strum( - serialize = "StructureWallSmallPanelsMonoChrome", - props( - name = r#"Wall (Small Panels Mono Chrome)"#, - desc = r#""#, - value = "386820253" - ) - )] - StructureWallSmallPanelsMonoChrome = 386820253i32, - #[strum( - serialize = "ItemMKIIDuctTape", - props( - name = r#"Mk II Duct Tape"#, - desc = r#"In the distant past, one of Earth's great champions taught a generation of 'Fix-It People' that duct tape was the answer to any problem. Stationeers have demonstrated that this is truth holds strong, so long as the problem is a damaged Eva Suit, Jetpack Basic, Space Helmet, or even a Solar Panel. -To use on yourself: put duct tape in your active hand, hold RIGHT MOUSE BUTTON to automatically repair damage."#, - value = "388774906" - ) - )] - ItemMkiiDuctTape = 388774906i32, - #[strum( - serialize = "ItemWreckageStructureRTG1", - props(name = r#"Wreckage Structure RTG"#, desc = r#""#, value = "391453348") - )] - ItemWreckageStructureRtg1 = 391453348i32, - #[strum( - serialize = "ItemPipeLabel", - props( - name = r#"Kit (Pipe Label)"#, - desc = r#"This kit creates a Pipe Label."#, - value = "391769637" - ) - )] - ItemPipeLabel = 391769637i32, - #[strum( - serialize = "DynamicGasCanisterPollutants", - props( - name = r#"Portable Gas Tank (Pollutants)"#, - desc = r#""#, - value = "396065382" - ) - )] - DynamicGasCanisterPollutants = 396065382i32, - #[strum( - serialize = "NpcChicken", - props(name = r#"Chicken"#, desc = r#""#, value = "399074198") - )] - NpcChicken = 399074198i32, - #[strum( - serialize = "RailingElegant01", - props( - name = r#"Railing Elegant (Type 1)"#, - desc = r#""#, - value = "399661231" - ) - )] - RailingElegant01 = 399661231i32, - #[strum( - serialize = "StructureBench1", - props(name = r#"Bench (Counter Style)"#, desc = r#""#, value = "406745009") - )] - StructureBench1 = 406745009i32, - #[strum( - serialize = "ItemAstroloyIngot", - props( - name = r#"Ingot (Astroloy)"#, - desc = r#"Due to the original Stationeer manual collapsing into a singularity, Astroloy recipes have been warped by spacetime contortions. The correct Astroloy recipe, as memorialized for all time in a series of charming plastic icons, is 1.0 Copper, 1.0 Cobalt, and 2.0 Steel."#, - value = "412924554" - ) - )] - ItemAstroloyIngot = 412924554i32, - #[strum( - serialize = "ItemGasFilterCarbonDioxideM", - props( - name = r#"Medium Filter (Carbon Dioxide)"#, - desc = r#""#, - value = "416897318" - ) - )] - ItemGasFilterCarbonDioxideM = 416897318i32, - #[strum( - serialize = "ItemPillStun", - props( - name = r#"Pill (Paralysis)"#, - desc = r#"Through rarely publicized, the existence of this pill is an open secret. For use when all else has failed, the Sayonara Suppository immobilizes and rapidly ends the average Stationeer. The delivery mode ensures that if a Stationeer chooses to take this pill, they really have to want it."#, - value = "418958601" - ) - )] - ItemPillStun = 418958601i32, - #[strum( - serialize = "ItemKitCrate", - props(name = r#"Kit (Crate)"#, desc = r#""#, value = "429365598") - )] - ItemKitCrate = 429365598i32, - #[strum( - serialize = "AccessCardPink", - props(name = r#"Access Card (Pink)"#, desc = r#""#, value = "431317557") - )] - AccessCardPink = 431317557i32, - #[strum( - serialize = "StructureWaterPipeMeter", - props(name = r#"Liquid Pipe Meter"#, desc = r#""#, value = "433184168") - )] - StructureWaterPipeMeter = 433184168i32, - #[strum( - serialize = "Robot", - props( - name = r#"AIMeE Bot"#, - desc = r#"Designed by - presumably drunk - Norsec roboticists, AIMeE (or Automated Independent Mechanical Entity) can be a Stationeer's best friend, or tiresome nemesis, or both several times in the same day. - -Intended to unearth and retrieve ores automatically, the unit requires basic programming knowledge to operate, and IC Editor Motherboard. - -AIMEe has 7 modes: - -RobotMode.None = 0 = Do nothing -RobotMode.None = 1 = Follow nearest player -RobotMode.None = 2 = Move to target in straight line -RobotMode.None = 3 = Wander around looking for ores in 15 co-ords radius -RobotMode.None = 4 = Unload in chute input or chute bin within 3 meters / 1.5 large grids -RobotMode.None = 5 = Path(find) to target -RobotMode.None = 6 = Automatic assigned state, shows when storage slots are fullConnects to Logic Transmitter"#, - value = "434786784" - ) - )] - Robot = 434786784i32, - #[strum( - serialize = "StructureChuteValve", - props( - name = r#"Chute Valve"#, - desc = r#"The Chute Valve will stop the flow of materials when set to closed and when set to open, will act like a straight chute."#, - value = "434875271" - ) - )] - StructureChuteValve = 434875271i32, - #[strum( - serialize = "StructurePipeAnalysizer", - props( - name = r#"Pipe Analyzer"#, - desc = r#"Allegedly the outcome of a weekend father-daughter electronics project by an overzealous {ExMin engineer, the pipe analyzer is essentially a more advanced version of the Pipe Meter. -Displaying the internal pressure of pipe networks, it also reads out temperature and gas contents, and can be connected to a Console or Computer via a {Logic system."#, - value = "435685051" - ) - )] - StructurePipeAnalysizer = 435685051i32, - #[strum( - serialize = "StructureLogicBatchSlotReader", - props(name = r#"Batch Slot Reader"#, desc = r#""#, value = "436888930") - )] - StructureLogicBatchSlotReader = 436888930i32, - #[strum( - serialize = "StructureSatelliteDish", - props( - name = r#"Medium Satellite Dish"#, - desc = r#"This medium communications unit can be used to communicate with nearby trade vessels. - -When connected to a Computer containing a Communications Motherboard motherboard, a Landingpad Center, and a Vending Machine, this allows Stationeers to contact traders. Adjust its horizontal and vertical attributes either directly or through logic."#, - value = "439026183" - ) - )] - StructureSatelliteDish = 439026183i32, - #[strum( - serialize = "StructureIceCrusher", - props( - name = r#"Ice Crusher"#, - desc = r#"The Recurso KoolAuger converts various ices into their respective gases and liquids. -A remarkably smart and compact sublimation-melting unit, it produces gas or liquid depending on the ice being processed. The upper outlet is gas, the lower for liquid, and while you can attach any pipe you like to either outlet, it will only function if the correct network is attached. It will also only pass gas or liquid into a network if it is powered and turned on. -If the KoolAuger is full, it will not accept any further ice until the gas or liquid contents is drained. In this state, it will flash a yellow error state on the activation switch."#, - value = "443849486" - ) - )] - StructureIceCrusher = 443849486i32, - #[strum( - serialize = "PipeBenderMod", - props( - name = r#"Pipe Bender Mod"#, - desc = r#"Apply to an Hydraulic Pipe Bender with a Welding Torch or Arc Welder to upgrade for increased processing speed and more recipe options."#, - value = "443947415" - ) - )] - PipeBenderMod = 443947415i32, - #[strum( - serialize = "StructureAdvancedComposter", - props( - name = r#"Advanced Composter"#, - desc = r#"The advanced composter creates Fertilizer out of organic matter. It accepts food, Decayed Food or Biomass. It requires Water and power to operate, accelerating the natural composting process. -When processing, it releases nitrogen and volatiles, as well a small amount of heat. - -Compost composition -Fertilizer is produced at a 1:3 ratio of fertilizer to ingredients. The fertilizer's effects on plants will vary depending on the respective proportions of its ingredients. - -- Food increases PLANT YIELD up to two times -- Decayed Food increases plant GROWTH SPEED up to two times -- Biomass increases the NUMBER OF GROWTH CYCLES the fertilizer lasts for up to five times -"#, - value = "446212963" - ) - )] - StructureAdvancedComposter = 446212963i32, - #[strum( - serialize = "ItemKitLargeDirectHeatExchanger", - props( - name = r#"Kit (Large Direct Heat Exchanger)"#, - desc = r#""#, - value = "450164077" - ) - )] - ItemKitLargeDirectHeatExchanger = 450164077i32, - #[strum( - serialize = "ItemKitInsulatedPipe", - props(name = r#"Kit (Insulated Pipe)"#, desc = r#""#, value = "452636699") - )] - ItemKitInsulatedPipe = 452636699i32, - #[strum( - serialize = "ItemCocoaPowder", - props(name = r#"Cocoa Powder"#, desc = r#""#, value = "457286516") - )] - ItemCocoaPowder = 457286516i32, - #[strum( - serialize = "AccessCardPurple", - props(name = r#"Access Card (Purple)"#, desc = r#""#, value = "459843265") - )] - AccessCardPurple = 459843265i32, - #[strum( - serialize = "ItemGasFilterNitrousOxideL", - props( - name = r#"Heavy Filter (Nitrous Oxide)"#, - desc = r#""#, - value = "465267979" - ) - )] - ItemGasFilterNitrousOxideL = 465267979i32, - #[strum( - serialize = "StructurePipeCowl", - props(name = r#"Pipe Cowl"#, desc = r#""#, value = "465816159") - )] - StructurePipeCowl = 465816159i32, - #[strum( - serialize = "StructureSDBHopperAdvanced", - props(name = r#"SDB Hopper Advanced"#, desc = r#""#, value = "467225612") - )] - StructureSdbHopperAdvanced = 467225612i32, - #[strum( - serialize = "StructureCableJunctionH", - props( - name = r#"Heavy Cable (3-Way Junction)"#, - desc = r#""#, - value = "469451637" - ) - )] - StructureCableJunctionH = 469451637i32, - #[strum( - serialize = "ItemHEMDroidRepairKit", - props( - name = r#"HEMDroid Repair Kit"#, - desc = r#"Repairs damaged HEM-Droids to full health."#, - value = "470636008" - ) - )] - ItemHemDroidRepairKit = 470636008i32, - #[strum( - serialize = "ItemKitRocketCargoStorage", - props( - name = r#"Kit (Rocket Cargo Storage)"#, - desc = r#""#, - value = "479850239" - ) - )] - ItemKitRocketCargoStorage = 479850239i32, - #[strum( - serialize = "StructureLiquidPressureRegulator", - props( - name = r#"Liquid Volume Regulator"#, - desc = r#"Regulates the volume ratio of liquid in the output Liquid pipe. This is expressed as percentage where 100 is totally full and 0 is empty."#, - value = "482248766" - ) - )] - StructureLiquidPressureRegulator = 482248766i32, - #[strum( - serialize = "SeedBag_Switchgrass", - props(name = r#"Switchgrass Seed"#, desc = r#""#, value = "488360169") - )] - SeedBagSwitchgrass = 488360169i32, - #[strum( - serialize = "ItemKitLadder", - props(name = r#"Kit (Ladder)"#, desc = r#""#, value = "489494578") - )] - ItemKitLadder = 489494578i32, - #[strum( - serialize = "StructureLogicButton", - props(name = r#"Button"#, desc = r#""#, value = "491845673") - )] - StructureLogicButton = 491845673i32, - #[strum( - serialize = "ItemRTG", - props( - name = r#"Kit (Creative RTG)"#, - desc = r#"This kit creates that miracle of modern science, a Kit (Creative RTG)."#, - value = "495305053" - ) - )] - ItemRtg = 495305053i32, - #[strum( - serialize = "ItemKitAIMeE", - props(name = r#"Kit (AIMeE)"#, desc = r#""#, value = "496830914") - )] - ItemKitAiMeE = 496830914i32, - #[strum( - serialize = "ItemSprayCanWhite", - props( - name = r#"Spray Paint (White)"#, - desc = r#"White looks clean, sharp and nice. But Stationeering can be a dirty job. White tends to scuff."#, - value = "498481505" - ) - )] - ItemSprayCanWhite = 498481505i32, - #[strum( - serialize = "ItemElectrumIngot", - props(name = r#"Ingot (Electrum)"#, desc = r#""#, value = "502280180") - )] - ItemElectrumIngot = 502280180i32, - #[strum( - serialize = "MotherboardLogic", - props( - name = r#"Logic Motherboard"#, - desc = r#"Motherboards are connected to Computers to perform various technical functions. -The Norsec-designed K-cops logic motherboard allows Stationeers to set variables and actions on specific logic-controlled items."#, - value = "502555944" - ) - )] - MotherboardLogic = 502555944i32, - #[strum( - serialize = "StructureStairwellBackLeft", - props(name = r#"Stairwell (Back Left)"#, desc = r#""#, value = "505924160") - )] - StructureStairwellBackLeft = 505924160i32, - #[strum( - serialize = "ItemKitAccessBridge", - props(name = r#"Kit (Access Bridge)"#, desc = r#""#, value = "513258369") - )] - ItemKitAccessBridge = 513258369i32, - #[strum( - serialize = "StructureRocketTransformerSmall", - props( - name = r#"Transformer Small (Rocket)"#, - desc = r#""#, - value = "518925193" - ) - )] - StructureRocketTransformerSmall = 518925193i32, - #[strum( - serialize = "DynamicAirConditioner", - props( - name = r#"Portable Air Conditioner"#, - desc = r#"The Sinotai-designed Huxi portable air conditioner cools by drawing heat from the atmosphere and storing it, or adding heat to the atmosphere from its internal tank. With a max internal pressure of 8106kPa, its capacity is relatively limited, physics being clear on this subject. To extend its temperature storage ability, bolt the Huxi to a Tank Connector, then connect it to a pipe network supplying hot or cold gases."#, - value = "519913639" - ) - )] - DynamicAirConditioner = 519913639i32, - #[strum( - serialize = "ItemKitToolManufactory", - props(name = r#"Kit (Tool Manufactory)"#, desc = r#""#, value = "529137748") - )] - ItemKitToolManufactory = 529137748i32, - #[strum( - serialize = "ItemKitSign", - props(name = r#"Kit (Sign)"#, desc = r#""#, value = "529996327") - )] - ItemKitSign = 529996327i32, - #[strum( - serialize = "StructureCompositeCladdingSphericalCap", - props( - name = r#"Composite Cladding (Spherical Cap)"#, - desc = r#""#, - value = "534213209" - ) - )] - StructureCompositeCladdingSphericalCap = 534213209i32, - #[strum( - serialize = "ItemPureIceLiquidOxygen", - props( - name = r#"Pure Ice Liquid Oxygen"#, - desc = r#"A frozen chunk of pure Liquid Oxygen"#, - value = "541621589" - ) - )] - ItemPureIceLiquidOxygen = 541621589i32, - #[strum( - serialize = "ItemWreckageStructureWeatherStation003", - props( - name = r#"Wreckage Structure Weather Station"#, - desc = r#""#, - value = "542009679" - ) - )] - ItemWreckageStructureWeatherStation003 = 542009679i32, - #[strum( - serialize = "StructureInLineTankLiquid1x1", - props( - name = r#"In-Line Tank Small Liquid"#, - desc = r#"A small expansion tank that increases the volume of a pipe network."#, - value = "543645499" - ) - )] - StructureInLineTankLiquid1X1 = 543645499i32, - #[strum( - serialize = "ItemBatteryCellNuclear", - props( - name = r#"Battery Cell (Nuclear)"#, - desc = r#"Illegal on Earth since the Chengdu Event, Norsec nuclear power cells found a new and drastically less safety-conscious market offworld. - -POWER OUTPUT -Pushing the power-weight balance to its limits, the 'nuke' has a 2.3 megawatt charge (2304000W), reflecting its reliance on exotic superalloys."#, - value = "544617306" - ) - )] - ItemBatteryCellNuclear = 544617306i32, - #[strum( - serialize = "ItemCornSoup", - props( - name = r#"Corn Soup"#, - desc = r#"Made using Cooked Corn and an Empty Can in a Basic Packaging Machine or Advanced Packaging Machine. Faily high in nutrition, canned food does not decay."#, - value = "545034114" - ) - )] - ItemCornSoup = 545034114i32, - #[strum( - serialize = "StructureAdvancedFurnace", - props( - name = r#"Advanced Furnace"#, - desc = r#"The advanced furnace comes with integrated inlet and outlet pumps for controlling the unit's internal pressure."#, - value = "545937711" - ) - )] - StructureAdvancedFurnace = 545937711i32, - #[strum( - serialize = "StructureLogicRocketUplink", - props(name = r#"Logic Uplink"#, desc = r#""#, value = "546002924") - )] - StructureLogicRocketUplink = 546002924i32, - #[strum( - serialize = "StructureLogicDial", - props( - name = r#"Dial"#, - desc = r#"An assignable dial with up to 1000 modes."#, - value = "554524804" - ) - )] - StructureLogicDial = 554524804i32, - #[strum( - serialize = "StructureLightLongWide", - props(name = r#"Wall Light (Long Wide)"#, desc = r#""#, value = "555215790") - )] - StructureLightLongWide = 555215790i32, - #[strum( - serialize = "StructureProximitySensor", - props( - name = r#"Proximity Sensor"#, - desc = r#"Will be triggered if there is a player in the range of the sensor (as defined by the setting dial). The quantity variable will show the number of players. You can configure the sensor to only detect players who hold the correct Access Card using a Cartridge (Access Controller) in a Handheld Tablet."#, - value = "568800213" - ) - )] - StructureProximitySensor = 568800213i32, - #[strum( - serialize = "AccessCardYellow", - props(name = r#"Access Card (Yellow)"#, desc = r#""#, value = "568932536") - )] - AccessCardYellow = 568932536i32, - #[strum( - serialize = "StructureDiodeSlide", - props(name = r#"Diode Slide"#, desc = r#""#, value = "576516101") - )] - StructureDiodeSlide = 576516101i32, - #[strum( - serialize = "ItemKitSecurityPrinter", - props(name = r#"Kit (Security Printer)"#, desc = r#""#, value = "578078533") - )] - ItemKitSecurityPrinter = 578078533i32, - #[strum( - serialize = "ItemKitCentrifuge", - props(name = r#"Kit (Centrifuge)"#, desc = r#""#, value = "578182956") - )] - ItemKitCentrifuge = 578182956i32, - #[strum( - serialize = "DynamicHydroponics", - props(name = r#"Portable Hydroponics"#, desc = r#""#, value = "587726607") - )] - DynamicHydroponics = 587726607i32, - #[strum( - serialize = "ItemKitPipeUtilityLiquid", - props( - name = r#"Kit (Pipe Utility Liquid)"#, - desc = r#""#, - value = "595478589" - ) - )] - ItemKitPipeUtilityLiquid = 595478589i32, - #[strum( - serialize = "StructureCompositeFloorGrating4", - props( - name = r#"Composite Floor Grating (Type 4)"#, - desc = r#""#, - value = "600133846" - ) - )] - StructureCompositeFloorGrating4 = 600133846i32, - #[strum( - serialize = "StructureCableStraight", - props( - name = r#"Cable (Straight)"#, - desc = r#"Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of Stationeer life - so much so, the ODA designated it an official 'tool'. -Normal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy)."#, - value = "605357050" - ) - )] - StructureCableStraight = 605357050i32, - #[strum( - serialize = "StructureLiquidTankSmallInsulated", - props( - name = r#"Insulated Liquid Tank Small"#, - desc = r#""#, - value = "608607718" - ) - )] - StructureLiquidTankSmallInsulated = 608607718i32, - #[strum( - serialize = "ItemKitWaterPurifier", - props(name = r#"Kit (Water Purifier)"#, desc = r#""#, value = "611181283") - )] - ItemKitWaterPurifier = 611181283i32, - #[strum( - serialize = "ItemKitLiquidTankInsulated", - props( - name = r#"Kit (Insulated Liquid Tank)"#, - desc = r#""#, - value = "617773453" - ) - )] - ItemKitLiquidTankInsulated = 617773453i32, - #[strum( - serialize = "StructureWallSmallPanelsAndHatch", - props( - name = r#"Wall (Small Panels And Hatch)"#, - desc = r#""#, - value = "619828719" - ) - )] - StructureWallSmallPanelsAndHatch = 619828719i32, - #[strum( - serialize = "ItemGasFilterNitrogen", - props( - name = r#"Filter (Nitrogen)"#, - desc = r#"Filters are used to capture various gases, which can be disposed of or used elsewhere. Nitrogen is a byproduct of smelting various ores, notably Ice (Nitrice), which may be combined with Oxygen to make a breathable - and considerably less flammable - atmosphere."#, - value = "632853248" - ) - )] - ItemGasFilterNitrogen = 632853248i32, - #[strum( - serialize = "ReagentColorYellow", - props(name = r#"Color Dye (Yellow)"#, desc = r#""#, value = "635208006") - )] - ReagentColorYellow = 635208006i32, - #[strum( - serialize = "StructureWallPadding", - props(name = r#"Wall (Padding)"#, desc = r#""#, value = "635995024") - )] - StructureWallPadding = 635995024i32, - #[strum( - serialize = "ItemKitPassthroughHeatExchanger", - props( - name = r#"Kit (CounterFlow Heat Exchanger)"#, - desc = r#""#, - value = "636112787" - ) - )] - ItemKitPassthroughHeatExchanger = 636112787i32, - #[strum( - serialize = "StructureChuteDigitalValveLeft", - props( - name = r#"Chute Digital Valve Left"#, - desc = r#"The Digital Chute Valve will stop the flow of materials when set to closed and when set to open, will act like a straight chute. The valve will automatically close after a certain number of items have passed through. This threshold can be set using the dial."#, - value = "648608238" - ) - )] - StructureChuteDigitalValveLeft = 648608238i32, - #[strum( - serialize = "ItemRocketMiningDrillHeadHighSpeedIce", - props( - name = r#"Mining-Drill Head (High Speed Ice)"#, - desc = r#""#, - value = "653461728" - ) - )] - ItemRocketMiningDrillHeadHighSpeedIce = 653461728i32, - #[strum( - serialize = "ItemWreckageStructureWeatherStation007", - props( - name = r#"Wreckage Structure Weather Station"#, - desc = r#""#, - value = "656649558" - ) - )] - ItemWreckageStructureWeatherStation007 = 656649558i32, - #[strum( - serialize = "ItemRice", - props( - name = r#"Rice"#, - desc = r#"Rice grows at a moderate rate as long as its supplied with plenty of water. Being more dependant on water, rice plants can easily die during periods of drought."#, - value = "658916791" - ) - )] - ItemRice = 658916791i32, - #[strum( - serialize = "ItemPlasticSheets", - props(name = r#"Plastic Sheets"#, desc = r#""#, value = "662053345") - )] - ItemPlasticSheets = 662053345i32, - #[strum( - serialize = "ItemKitTransformerSmall", - props(name = r#"Kit (Transformer Small)"#, desc = r#""#, value = "665194284") - )] - ItemKitTransformerSmall = 665194284i32, - #[strum( - serialize = "StructurePipeLiquidStraight", - props( - name = r#"Liquid Pipe (Straight)"#, - desc = r#"You can upgrade this pipe to an Insulated Liquid Pipe (Straight) using an Kit (Insulated Liquid Pipe) and a Wrench."#, - value = "667597982" - ) - )] - StructurePipeLiquidStraight = 667597982i32, - #[strum( - serialize = "ItemSpaceIce", - props(name = r#"Space Ice"#, desc = r#""#, value = "675686937") - )] - ItemSpaceIce = 675686937i32, - #[strum( - serialize = "ItemRemoteDetonator", - props(name = r#"Remote Detonator"#, desc = r#""#, value = "678483886") - )] - ItemRemoteDetonator = 678483886i32, - #[strum( - serialize = "ItemCocoaTree", - props(name = r#"Cocoa"#, desc = r#""#, value = "680051921") - )] - ItemCocoaTree = 680051921i32, - #[strum( - serialize = "ItemKitAirlockGate", - props(name = r#"Kit (Hangar Door)"#, desc = r#""#, value = "682546947") - )] - ItemKitAirlockGate = 682546947i32, - #[strum( - serialize = "ItemScrewdriver", - props( - name = r#"Screwdriver"#, - desc = r#"This standard issue frictional adherence adjustor is a top of the line, bi-rotational model with a columnated uni-grip. It's definitely not just a screwdriver. Use it for construction and deconstruction of certain kits, and setting values on logic units."#, - value = "687940869" - ) - )] - ItemScrewdriver = 687940869i32, - #[strum( - serialize = "ItemTomatoSoup", - props( - name = r#"Tomato Soup"#, - desc = r#"Made using Cooked Tomatos and an Empty Can in a Basic Packaging Machine or Advanced Packaging Machine."#, - value = "688734890" - ) - )] - ItemTomatoSoup = 688734890i32, - #[strum( - serialize = "StructureCentrifuge", - props( - name = r#"Centrifuge"#, - desc = r#"If a Recycler or unbalanced Furnace outputs reagent mixture rather than the desired ingots, a centrifuge allows you to reclaim the raw ore. - It also refines Dirty Ore produced from the Deep Miner and Dirty Ore produced from the Rocket Miner. - Its bigger brother Combustion Centrifuge can be used to process items significantly faster. Items processed by the centrifuge will be de-gassed. - If openned while powered on, the centrifuge will enter an errored state and reduce its rpm to 0 and then export any items."#, - value = "690945935" - ) - )] - StructureCentrifuge = 690945935i32, - #[strum( - serialize = "StructureBlockBed", - props( - name = r#"Block Bed"#, - desc = r#"Description coming."#, - value = "697908419" - ) - )] - StructureBlockBed = 697908419i32, - #[strum( - serialize = "ItemBatteryCell", - props( - name = r#"Battery Cell (Small)"#, - desc = r#"Harnessing a design pioneered in the early 21st century, the small battery cell is the Stationeer's basic unit of portable electrical power. While it lacks the charge of a Battery Cell (Large) or Battery Cell (Nuclear), it has the humble advantage of being fabricated from basic resources. - -POWER OUTPUT -The small cell stores up to 36000 watts of power."#, - value = "700133157" - ) - )] - ItemBatteryCell = 700133157i32, - #[strum( - serialize = "ItemSpaceHelmet", - props( - name = r#"Space Helmet"#, - desc = r#"The basic space helmet insulates Stationeers against everything from hard vacuum to weird cooking smells. Providing a pressure-controlled, breathable atmosphere, it comes with a built-in light powered by your Eva Suit Battery Cell (Small). -It also incorporates a lock/unlock feature to avoid accidental opening, as well as a flush function to expel and replace the internal atmosphere. If damaged, use Duct Tape to fix it, or paint it any color you like using the Paint Mixer."#, - value = "714830451" - ) - )] - ItemSpaceHelmet = 714830451i32, - #[strum( - serialize = "StructureCompositeWall02", - props(name = r#"Composite Wall (Type 2)"#, desc = r#""#, value = "718343384") - )] - StructureCompositeWall02 = 718343384i32, - #[strum( - serialize = "ItemKitRocketCircuitHousing", - props( - name = r#"Kit (Rocket Circuit Housing)"#, - desc = r#""#, - value = "721251202" - ) - )] - ItemKitRocketCircuitHousing = 721251202i32, - #[strum( - serialize = "ItemKitResearchMachine", - props(name = r#"Kit Research Machine"#, desc = r#""#, value = "724776762") - )] - ItemKitResearchMachine = 724776762i32, - #[strum( - serialize = "ItemElectronicParts", - props(name = r#"Electronic Parts"#, desc = r#""#, value = "731250882") - )] - ItemElectronicParts = 731250882i32, - #[strum( - serialize = "ItemKitShower", - props(name = r#"Kit (Shower)"#, desc = r#""#, value = "735858725") - )] - ItemKitShower = 735858725i32, - #[strum( - serialize = "StructureUnloader", - props( - name = r#"Unloader"#, - desc = r#"The Xigo Re:Gurge is a handy unit for unloading any items inserted into it, and feeding them into a chute network. For instance, if you add a full Mining Belt, the Re:Gurge will empty a mining belt of its contents, insert them into the chute network, then insert the mining belt itself. A Sorter is recommended to reclaim the mining belt. - -Output = 0 exporting the main item -Output = 1 exporting items inside and eventually the main item."#, - value = "750118160" - ) - )] - StructureUnloader = 750118160i32, - #[strum( - serialize = "ItemKitRailing", - props(name = r#"Kit (Railing)"#, desc = r#""#, value = "750176282") - )] - ItemKitRailing = 750176282i32, - #[strum( - serialize = "StructureFridgeSmall", - props( - name = r#"Fridge Small"#, - desc = r#"Essentially a heavily insulated box that allows users to pipe in any desired atmosphere, the Recurso Minibar fridge was a simple solution to the problem of food decay. It stores a small number of items, at any temperature you can muster. - - For more information about food preservation, visit the food decay section of the Stationpedia."#, - value = "751887598" - ) - )] - StructureFridgeSmall = 751887598i32, - #[strum( - serialize = "DynamicScrubber", - props( - name = r#"Portable Air Scrubber"#, - desc = r#"A portable scrubber does just what it sounds like: removes specific substances from the air. For instance, attaching a Filter (Carbon Dioxide) will pull Carbon Dioxide from the surrounding atmosphere. Note that the scrubber has room for one battery and two filters, which will double its operating speed. Neat. When it reaches an internal pressure of 8106kPA, an error signal will flash on the switch, indicating it needs to be emptied. Either vent it directly, or attach it to a pipe network via a Kit (Tank Connector) and a Wrench."#, - value = "755048589" - ) - )] - DynamicScrubber = 755048589i32, - #[strum( - serialize = "ItemKitEngineLarge", - props(name = r#"Kit (Engine Large)"#, desc = r#""#, value = "755302726") - )] - ItemKitEngineLarge = 755302726i32, - #[strum( - serialize = "ItemKitTank", - props(name = r#"Kit (Tank)"#, desc = r#""#, value = "771439840") - )] - ItemKitTank = 771439840i32, - #[strum( - serialize = "ItemLiquidCanisterSmart", - props( - name = r#"Liquid Canister (Smart)"#, - desc = r#"0.Mode0 -1.Mode1"#, - value = "777684475" - ) - )] - ItemLiquidCanisterSmart = 777684475i32, - #[strum( - serialize = "StructureWallArchTwoTone", - props(name = r#"Wall (Arch Two Tone)"#, desc = r#""#, value = "782529714") - )] - StructureWallArchTwoTone = 782529714i32, - #[strum( - serialize = "ItemAuthoringTool", - props(name = r#"Authoring Tool"#, desc = r#""#, value = "789015045") - )] - ItemAuthoringTool = 789015045i32, - #[strum( - serialize = "WeaponEnergy", - props(name = r#"Weapon Energy"#, desc = r#""#, value = "789494694") - )] - WeaponEnergy = 789494694i32, - #[strum( - serialize = "ItemCerealBar", - props( - name = r#"Cereal Bar"#, - desc = r#"Sustains, without decay. If only all our relationships were so well balanced."#, - value = "791746840" - ) - )] - ItemCerealBar = 791746840i32, - #[strum( - serialize = "StructureLargeDirectHeatExchangeLiquidtoLiquid", - props( - name = r#"Large Direct Heat Exchange - Liquid + Liquid"#, - desc = r#"Direct Heat Exchangers equalize the temperature of the two input networks."#, - value = "792686502" - ) - )] - StructureLargeDirectHeatExchangeLiquidtoLiquid = 792686502i32, - #[strum( - serialize = "StructureLightLong", - props(name = r#"Wall Light (Long)"#, desc = r#""#, value = "797794350") - )] - StructureLightLong = 797794350i32, - #[strum( - serialize = "StructureWallIron03", - props(name = r#"Iron Wall (Type 3)"#, desc = r#""#, value = "798439281") - )] - StructureWallIron03 = 798439281i32, - #[strum( - serialize = "ItemPipeValve", - props( - name = r#"Kit (Pipe Valve)"#, - desc = r#"This kit creates a Valve."#, - value = "799323450" - ) - )] - ItemPipeValve = 799323450i32, - #[strum( - serialize = "StructureConsoleMonitor", - props( - name = r#"Console Monitor"#, - desc = r#"This Norsec-designed control box manages devices such as the Active Vent, Passive Vent, Gas Sensor, Security Camera and Composite Door, depending on which circuitboard is inserted into the unit. It has a shared data/power port, and a charming sloped interface. -A completed console displays all devices connected to the current power network. Any devices not related to the installed circuitboard will be greyed-out and inoperable. Consoles are locked once a Data Disk is removed."#, - value = "801677497" - ) - )] - StructureConsoleMonitor = 801677497i32, - #[strum( - serialize = "StructureRover", - props(name = r#"Rover Frame"#, desc = r#""#, value = "806513938") - )] - StructureRover = 806513938i32, - #[strum( - serialize = "StructureRocketAvionics", - props(name = r#"Rocket Avionics"#, desc = r#""#, value = "808389066") - )] - StructureRocketAvionics = 808389066i32, - #[strum( - serialize = "UniformOrangeJumpSuit", - props(name = r#"Jump Suit (Orange)"#, desc = r#""#, value = "810053150") - )] - UniformOrangeJumpSuit = 810053150i32, - #[strum( - serialize = "StructureSolidFuelGenerator", - props( - name = r#"Generator (Solid Fuel)"#, - desc = r#"The mainstay of power generation for Stationeers, this device provides 20kW of power. Multiple solid resources can be loaded. While operating, the device will output its maximum power regardless of whether you have captured it or not. Watch for blown wires! It will output much more power than your regular Cable Coil can handle."#, - value = "813146305" - ) - )] - StructureSolidFuelGenerator = 813146305i32, - #[strum( - serialize = "Landingpad_GasConnectorInwardPiece", - props(name = r#"Landingpad Gas Input"#, desc = r#""#, value = "817945707") - )] - LandingpadGasConnectorInwardPiece = 817945707i32, - #[strum( - serialize = "StructureElevatorShaft", - props(name = r#"Elevator Shaft (Cabled)"#, desc = r#""#, value = "826144419") - )] - StructureElevatorShaft = 826144419i32, - #[strum( - serialize = "StructureTransformerMediumReversed", - props( - name = r#"Transformer Reversed (Medium)"#, - desc = r#"Transformers control the maximum power that will flow down a sub-network of cables, to prevent overloading electrical systems. -Medium transformers are used in larger setups where more than 5000W is required, with output that can be set to a maximum of 25000W. -Note that transformers also operate as data isolators, preventing data flowing into any network beyond it."#, - value = "833912764" - ) - )] - StructureTransformerMediumReversed = 833912764i32, - #[strum( - serialize = "StructureFlatBench", - props(name = r#"Bench (Flat)"#, desc = r#""#, value = "839890807") - )] - StructureFlatBench = 839890807i32, - #[strum( - serialize = "ItemPowerConnector", - props( - name = r#"Kit (Power Connector)"#, - desc = r#"This kit creates a Power Connector."#, - value = "839924019" - ) - )] - ItemPowerConnector = 839924019i32, - #[strum( - serialize = "ItemKitHorizontalAutoMiner", - props(name = r#"Kit (OGRE)"#, desc = r#""#, value = "844391171") - )] - ItemKitHorizontalAutoMiner = 844391171i32, - #[strum( - serialize = "ItemKitSolarPanelBasic", - props(name = r#"Kit (Solar Panel Basic)"#, desc = r#""#, value = "844961456") - )] - ItemKitSolarPanelBasic = 844961456i32, - #[strum( - serialize = "ItemSprayCanBrown", - props( - name = r#"Spray Paint (Brown)"#, - desc = r#"In more artistic Stationeers circles, the absence of brown is often lamented, but seldom changed."#, - value = "845176977" - ) - )] - ItemSprayCanBrown = 845176977i32, - #[strum( - serialize = "ItemKitLargeExtendableRadiator", - props( - name = r#"Kit (Large Extendable Radiator)"#, - desc = r#""#, - value = "847430620" - ) - )] - ItemKitLargeExtendableRadiator = 847430620i32, - #[strum( - serialize = "StructureInteriorDoorPadded", - props( - name = r#"Interior Door Padded"#, - desc = r#"0.Operate -1.Logic"#, - value = "847461335" - ) - )] - StructureInteriorDoorPadded = 847461335i32, - #[strum( - serialize = "ItemKitRecycler", - props(name = r#"Kit (Recycler)"#, desc = r#""#, value = "849148192") - )] - ItemKitRecycler = 849148192i32, - #[strum( - serialize = "StructureCompositeCladdingAngledCornerLong", - props( - name = r#"Composite Cladding (Long Angled Corner)"#, - desc = r#""#, - value = "850558385" - ) - )] - StructureCompositeCladdingAngledCornerLong = 850558385i32, - #[strum( - serialize = "ItemPlantEndothermic_Genepool1", - props( - name = r#"Winterspawn (Alpha variant)"#, - desc = r#"Agrizero's Winterspawn atmospheric bio-processor is a recent addition to their catalog of genespliced environmental decorations. Using ambient heat to split Water into Volatiles and Oxygen, the Winterspawn cools its surroundings, when supplied with sufficient Nitrogen. The alpha variant has a peak cooling and electrolysis capacity of 90Watts and is most efficient operating in air temperatures of 0 to 40 Degrees Celsius."#, - value = "851290561" - ) - )] - ItemPlantEndothermicGenepool1 = 851290561i32, - #[strum( - serialize = "CircuitboardDoorControl", - props( - name = r#"Door Control"#, - desc = r#"A basic tool of Stationeer base construction, this circuit board provides a way to open and close a Composite Door, Blast Door or Glass Door remotely, when connected to a Console. This system can be further linked to Motion Sensor to create automatic doors."#, - value = "855694771" - ) - )] - CircuitboardDoorControl = 855694771i32, - #[strum( - serialize = "ItemCrowbar", - props( - name = r#"Crowbar"#, - desc = r#"Recurso's entry-level crowbar is useful in a variety of everyday Stationeer settings, from opening Area Power Controls and unpowered Airlocks, to splatting pan-dimensional headcrabs, should the need arise."#, - value = "856108234" - ) - )] - ItemCrowbar = 856108234i32, - #[strum( - serialize = "ItemChocolateCerealBar", - props(name = r#"Chocolate Cereal Bar"#, desc = r#""#, value = "860793245") - )] - ItemChocolateCerealBar = 860793245i32, - #[strum( - serialize = "Rover_MkI_build_states", - props(name = r#"Rover MKI"#, desc = r#""#, value = "861674123") - )] - RoverMkIBuildStates = 861674123i32, - #[strum( - serialize = "AppliancePlantGeneticStabilizer", - props( - name = r#"Plant Genetic Stabilizer"#, - desc = r#"The Genetic Stabilizer can be used to manipulate gene stability on a specific Plants or Seeds. It has two modes Stabilize and Destabilize. -Stabilize: Increases all genes stability by 50%. -Destabilize: Decreases all gene stability by 10% other than a chosen gene which will received decreased stability by 50%. - "#, - value = "871432335" - ) - )] - AppliancePlantGeneticStabilizer = 871432335i32, - #[strum( - serialize = "ItemRoadFlare", - props( - name = r#"Road Flare"#, - desc = r#"Designed to burn anywhere in the Solar System, the EZC magnesium fusee supplies its own oxygen to fuel combustion, and dispel the eternal night of space."#, - value = "871811564" - ) - )] - ItemRoadFlare = 871811564i32, - #[strum( - serialize = "CartridgeGuide", - props(name = r#"Guide"#, desc = r#""#, value = "872720793") - )] - CartridgeGuide = 872720793i32, - #[strum( - serialize = "StructureLogicSorter", - props( - name = r#"Logic Sorter"#, - desc = r#"Contains an Internal Memory which is assessed to check whether something should be sorted. When an item is in the Import Slot, the stack is checked and if result is true the thing is moved to the Export 2 slot, otherwise it is moved to the Export slot. The Mode is used in how the stack is assessed, by default the mode is ALL, so every instruction in the stack would need to return true."#, - value = "873418029" - ) - )] - StructureLogicSorter = 873418029i32, - #[strum( - serialize = "StructureLogicRocketDownlink", - props(name = r#"Logic Rocket Downlink"#, desc = r#""#, value = "876108549") - )] - StructureLogicRocketDownlink = 876108549i32, - #[strum( - serialize = "StructureSign1x1", - props(name = r#"Sign 1x1"#, desc = r#""#, value = "879058460") - )] - StructureSign1X1 = 879058460i32, - #[strum( - serialize = "ItemKitLocker", - props(name = r#"Kit (Locker)"#, desc = r#""#, value = "882301399") - )] - ItemKitLocker = 882301399i32, - #[strum( - serialize = "StructureCompositeFloorGratingOpenRotated", - props( - name = r#"Composite Floor Grating Open Rotated"#, - desc = r#""#, - value = "882307910" - ) - )] - StructureCompositeFloorGratingOpenRotated = 882307910i32, - #[strum( - serialize = "StructureWaterPurifier", - props( - name = r#"Water Purifier"#, - desc = r#"Cleans Polluted Water and outputs Water. The purification process requires Charcoal which can be added to the machine via the import bin. The procesing throughput can be improved by increasing the gas pressure of the input pipe relative to the gas pressure of the output pipe."#, - value = "887383294" - ) - )] - StructureWaterPurifier = 887383294i32, - #[strum( - serialize = "ItemIgniter", - props( - name = r#"Kit (Igniter)"#, - desc = r#"This kit creates an Kit (Igniter) unit."#, - value = "890106742" - ) - )] - ItemIgniter = 890106742i32, - #[strum( - serialize = "ItemFern", - props( - name = r#"Fern"#, - desc = r#"There was a time, when Stationeers had to make Fenoxitone Powder using the Reagent Processor. Recent advances in technology allow you to use equivalent quantities of fern directly in recipes."#, - value = "892110467" - ) - )] - ItemFern = 892110467i32, - #[strum( - serialize = "ItemBreadLoaf", - props(name = r#"Bread Loaf"#, desc = r#""#, value = "893514943") - )] - ItemBreadLoaf = 893514943i32, - #[strum( - serialize = "StructureCableJunction5", - props(name = r#"Cable (5-Way Junction)"#, desc = r#""#, value = "894390004") - )] - StructureCableJunction5 = 894390004i32, - #[strum( - serialize = "ItemInsulation", - props( - name = r#"Insulation"#, - desc = r#"Mysterious in the extreme, the function of this item is lost to the ages."#, - value = "897176943" - ) - )] - ItemInsulation = 897176943i32, - #[strum( - serialize = "StructureWallFlatCornerRound", - props( - name = r#"Wall (Flat Corner Round)"#, - desc = r#""#, - value = "898708250" - ) - )] - StructureWallFlatCornerRound = 898708250i32, - #[strum( - serialize = "ItemHardMiningBackPack", - props(name = r#"Hard Mining Backpack"#, desc = r#""#, value = "900366130") - )] - ItemHardMiningBackPack = 900366130i32, - #[strum( - serialize = "ItemDirtCanister", - props( - name = r#"Dirt Canister"#, - desc = r#"A container the will fill with Dirt when using a Mining Drill when placed inside a Mining Belt. You can then use this Dirt Canister with the Terrain Manipulator to adjust the terrain to suit your needs."#, - value = "902565329" - ) - )] - ItemDirtCanister = 902565329i32, - #[strum( - serialize = "StructureSign2x1", - props(name = r#"Sign 2x1"#, desc = r#""#, value = "908320837") - )] - StructureSign2X1 = 908320837i32, - #[strum( - serialize = "CircuitboardAirlockControl", - props( - name = r#"Airlock"#, - desc = r#"Rumored to have been first sketched on a Norsec toilet wall by a disgruntled engineer, the Exgress airlock control circuit board’s versatility and ease of fabrication has made it the Stationeers control system of choice for Airlock cycling protocols. - -To enter setup mode, insert the board into a Console along with a data disk. In this mode, you can see all data-accessible objects currently connected to the Console. Doors, lights, gas sensors and slave consoles can be selected (highlighted green), and will be controlled once the data disk is removed."#, - value = "912176135" - ) - )] - CircuitboardAirlockControl = 912176135i32, - #[strum( - serialize = "Landingpad_BlankPiece", - props(name = r#"Landingpad"#, desc = r#""#, value = "912453390") - )] - LandingpadBlankPiece = 912453390i32, - #[strum( - serialize = "ItemKitPipeRadiator", - props(name = r#"Kit (Pipe Radiator)"#, desc = r#""#, value = "920411066") - )] - ItemKitPipeRadiator = 920411066i32, - #[strum( - serialize = "StructureLogicMinMax", - props( - name = r#"Logic Min/Max"#, - desc = r#"0.Greater -1.Less"#, - value = "929022276" - ) - )] - StructureLogicMinMax = 929022276i32, - #[strum( - serialize = "StructureSolarPanel45Reinforced", - props( - name = r#"Solar Panel (Heavy Angled)"#, - desc = r#"This solar panel is resistant to storm damage."#, - value = "930865127" - ) - )] - StructureSolarPanel45Reinforced = 930865127i32, - #[strum( - serialize = "StructurePoweredVent", - props( - name = r#"Powered Vent"#, - desc = r#"Great for moving large quantities of air into a pipe network. Its primary purpose is for the creation of multi-grid airlocks. It can effeciently pull a vacuum on a small to medium sized room."#, - value = "938836756" - ) - )] - StructurePoweredVent = 938836756i32, - #[strum( - serialize = "ItemPureIceHydrogen", - props( - name = r#"Pure Ice Hydrogen"#, - desc = r#"A frozen chunk of pure Hydrogen"#, - value = "944530361" - ) - )] - ItemPureIceHydrogen = 944530361i32, - #[strum( - serialize = "StructureHeatExchangeLiquidtoGas", - props( - name = r#"Heat Exchanger - Liquid + Gas"#, - desc = r#"The original specs for the N Series Flow-P heat exchanger were rumored to have been scrawled on the back of a burger receipt by a bored Sinotai designer riding up the Brazilian space elevator, but that hasn't stopped it becoming one of the most widely-copied heat exchanger designs in the Solar System. -The 'N Flow-P' has four connections, allowing you to pass separate liquid and gas networks into the unit, which then works to equalize temperature across the two separate networks. -As the N Flow-P is a passive system, it equalizes pressure across the entire of each individual network, unless connected to devices like a Volume Pump or a Liquid Back Volume Regulator."#, - value = "944685608" - ) - )] - StructureHeatExchangeLiquidtoGas = 944685608i32, - #[strum( - serialize = "StructureCompositeCladdingAngledCornerInnerLongL", - props( - name = r#"Composite Cladding (Angled Corner Inner Long L)"#, - desc = r#""#, - value = "947705066" - ) - )] - StructureCompositeCladdingAngledCornerInnerLongL = 947705066i32, - #[strum( - serialize = "StructurePictureFrameThickMountLandscapeLarge", - props( - name = r#"Picture Frame Thick Landscape Large"#, - desc = r#""#, - value = "950004659" - ) - )] - StructurePictureFrameThickMountLandscapeLarge = 950004659i32, - #[strum( - serialize = "StructureTankSmallAir", - props(name = r#"Small Tank (Air)"#, desc = r#""#, value = "955744474") - )] - StructureTankSmallAir = 955744474i32, - #[strum( - serialize = "StructureHarvie", - props( - name = r#"Harvie"#, - desc = r#"Use above a Hydroponics Tray or Hydroponics Device to manage the planting and harvest of your crops. It contains a button that will allow you to activate it's modes, or connect it to a logic system to do this for you. The modes indicate current growth status of the plant below. Import is used for planting, and harvested plants are sent to export."#, - value = "958056199" - ) - )] - StructureHarvie = 958056199i32, - #[strum( - serialize = "StructureFridgeBig", - props( - name = r#"Fridge (Large)"#, - desc = r#"The Xigo Koolaid fridge is a self-cooling storage device with 15 slots that preserves food when powered and turned on. While many users have complained about the placement of the power switch, its place in the pantheon of off-world whiteware is unquestioned. - -With its own permanent internal atmosphere, the Koolaid fridge slows the decay of food by maintaining an optimal internal temperature. Its power usage varies on the external temperature against which it must balance its internal temperature. As such, it must shed heat to operate, so the Koolaid fridge DOES NOT work in a vacuum. - -Also, don't leave the door open, as it will equalize with the current world temperature. And maybe start to beep. - -For more information about food preservation, visit the food decay section of the Stationpedia."#, - value = "958476921" - ) - )] - StructureFridgeBig = 958476921i32, - #[strum( - serialize = "ItemKitAirlock", - props(name = r#"Kit (Airlock)"#, desc = r#""#, value = "964043875") - )] - ItemKitAirlock = 964043875i32, - #[strum( - serialize = "EntityRoosterBlack", - props( - name = r#"Entity Rooster Black"#, - desc = r#"This is a rooster. It is black. There is dignity in this."#, - value = "966959649" - ) - )] - EntityRoosterBlack = 966959649i32, - #[strum( - serialize = "ItemKitSorter", - props(name = r#"Kit (Sorter)"#, desc = r#""#, value = "969522478") - )] - ItemKitSorter = 969522478i32, - #[strum( - serialize = "ItemEmergencyCrowbar", - props(name = r#"Emergency Crowbar"#, desc = r#""#, value = "976699731") - )] - ItemEmergencyCrowbar = 976699731i32, - #[strum( - serialize = "Landingpad_DiagonalPiece01", - props( - name = r#"Landingpad Diagonal"#, - desc = r#"Extends the size of the landing pad area. A basic trader shuttle requires a 3x3 clear landing area."#, - value = "977899131" - ) - )] - LandingpadDiagonalPiece01 = 977899131i32, - #[strum( - serialize = "ReagentColorBlue", - props(name = r#"Color Dye (Blue)"#, desc = r#""#, value = "980054869") - )] - ReagentColorBlue = 980054869i32, - #[strum( - serialize = "StructureCableCorner3", - props( - name = r#"Cable (3-Way Corner)"#, - desc = r#"Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of Stationeer life - so essential, the ODA designated it an official 'tool' during the 3rd Decannual Stationeer Solar Conference. -Normal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy)."#, - value = "980469101" - ) - )] - StructureCableCorner3 = 980469101i32, - #[strum( - serialize = "ItemNVG", - props(name = r#"Night Vision Goggles"#, desc = r#""#, value = "982514123") - )] - ItemNvg = 982514123i32, - #[strum( - serialize = "StructurePlinth", - props(name = r#"Plinth"#, desc = r#""#, value = "989835703") - )] - StructurePlinth = 989835703i32, - #[strum( - serialize = "ItemSprayCanYellow", - props( - name = r#"Spray Paint (Yellow)"#, - desc = r#"A caricature of light itself, yellow lacks the self-confidence of red, or the swagger of purple. It's less fun than orange, but less emotionally limp than khaki. It's hard to know when yellow is appropriate, but it persists as a primary color regardless. Suggesting that yellow gonna yellow, no matter what anyone thinks."#, - value = "995468116" - ) - )] - ItemSprayCanYellow = 995468116i32, - #[strum( - serialize = "StructureRocketCelestialTracker", - props( - name = r#"Rocket Celestial Tracker"#, - desc = r#"The Celestial Tracker can be placed in Rockets and when turned on will provide data that can be used to orientate devices such as the Telescope. The Horizontal and Vertical output is localized to the orientation of the tracker. You can calibrate your alignment by comparing the result for the primary body with the output from the Daylight Sensor. Full functionality will only be available in orbit, but you can configure using the primary body. For aligning with the telescope, have the face plate facing up and the cables facing in the same direction as for the telescope and the output values will be aligned."#, - value = "997453927" - ) - )] - StructureRocketCelestialTracker = 997453927i32, - #[strum( - serialize = "ItemHighVolumeGasCanisterEmpty", - props( - name = r#"High Volume Gas Canister"#, - desc = r#""#, - value = "998653377" - ) - )] - ItemHighVolumeGasCanisterEmpty = 998653377i32, - #[strum( - serialize = "ItemKitLogicTransmitter", - props( - name = r#"Kit (Logic Transmitter)"#, - desc = r#""#, - value = "1005397063" - ) - )] - ItemKitLogicTransmitter = 1005397063i32, - #[strum( - serialize = "StructureIgniter", - props( - name = r#"Igniter"#, - desc = r#"It gets the party started. Especially if that party is an explosive gas mixture."#, - value = "1005491513" - ) - )] - StructureIgniter = 1005491513i32, - #[strum( - serialize = "SeedBag_Potato", - props( - name = r#"Potato Seeds"#, - desc = r#"Grow a Potato."#, - value = "1005571172" - ) - )] - SeedBagPotato = 1005571172i32, - #[strum( - serialize = "ItemDataDisk", - props(name = r#"Data Disk"#, desc = r#""#, value = "1005843700") - )] - ItemDataDisk = 1005843700i32, - #[strum( - serialize = "ItemBatteryChargerSmall", - props(name = r#"Battery Charger Small"#, desc = r#""#, value = "1008295833") - )] - ItemBatteryChargerSmall = 1008295833i32, - #[strum( - serialize = "EntityChickenWhite", - props( - name = r#"Entity Chicken White"#, - desc = r#"It's a chicken, as white as moondust. It will eat soybeans, corn, and wheat, and lay eggs. Some will be fertilized, producing further chickens. Some will not."#, - value = "1010807532" - ) - )] - EntityChickenWhite = 1010807532i32, - #[strum( - serialize = "ItemKitStacker", - props(name = r#"Kit (Stacker)"#, desc = r#""#, value = "1013244511") - )] - ItemKitStacker = 1013244511i32, - #[strum( - serialize = "StructureTankSmall", - props(name = r#"Small Tank"#, desc = r#""#, value = "1013514688") - )] - StructureTankSmall = 1013514688i32, - #[strum( - serialize = "ItemEmptyCan", - props( - name = r#"Empty Can"#, - desc = r#"Used for making soups when combined with food in the Basic Packaging Machine or Advanced Packaging Machine. Fairly high in nutrition, canned food does not decay."#, - value = "1013818348" - ) - )] - ItemEmptyCan = 1013818348i32, - #[strum( - serialize = "ItemKitTankInsulated", - props(name = r#"Kit (Tank Insulated)"#, desc = r#""#, value = "1021053608") - )] - ItemKitTankInsulated = 1021053608i32, - #[strum( - serialize = "ItemKitChute", - props(name = r#"Kit (Basic Chutes)"#, desc = r#""#, value = "1025254665") - )] - ItemKitChute = 1025254665i32, - #[strum( - serialize = "StructureFuselageTypeA1", - props(name = r#"Fuselage (Type A1)"#, desc = r#""#, value = "1033024712") - )] - StructureFuselageTypeA1 = 1033024712i32, - #[strum( - serialize = "StructureCableAnalysizer", - props(name = r#"Cable Analyzer"#, desc = r#""#, value = "1036015121") - )] - StructureCableAnalysizer = 1036015121i32, - #[strum( - serialize = "StructureCableJunctionH6", - props( - name = r#"Heavy Cable (6-Way Junction)"#, - desc = r#""#, - value = "1036780772" - ) - )] - StructureCableJunctionH6 = 1036780772i32, - #[strum( - serialize = "ItemGasFilterVolatilesM", - props( - name = r#"Medium Filter (Volatiles)"#, - desc = r#""#, - value = "1037507240" - ) - )] - ItemGasFilterVolatilesM = 1037507240i32, - #[strum( - serialize = "ItemKitPortablesConnector", - props( - name = r#"Kit (Portables Connector)"#, - desc = r#""#, - value = "1041148999" - ) - )] - ItemKitPortablesConnector = 1041148999i32, - #[strum( - serialize = "StructureFloorDrain", - props( - name = r#"Passive Liquid Inlet"#, - desc = r#"A passive liquid floor inlet that quickly removes liquids in one direction from the world into the connected pipe network. It will equalise gasses with the world atmosphere also."#, - value = "1048813293" - ) - )] - StructureFloorDrain = 1048813293i32, - #[strum( - serialize = "StructureWallGeometryStreight", - props( - name = r#"Wall (Geometry Straight)"#, - desc = r#""#, - value = "1049735537" - ) - )] - StructureWallGeometryStreight = 1049735537i32, - #[strum( - serialize = "StructureTransformerSmallReversed", - props( - name = r#"Transformer Reversed (Small)"#, - desc = r#"Transformers control the maximum power that will flow down a cable subnetwork, to prevent overloading electrical systems. Output on small transformers can be set from 0 to 5000W. -Note that transformers operate as data isolators, preventing data flowing into any network beyond it."#, - value = "1054059374" - ) - )] - StructureTransformerSmallReversed = 1054059374i32, - #[strum( - serialize = "ItemMiningDrill", - props( - name = r#"Mining Drill"#, - desc = r#"The handheld 'Topo' tri-cone rotary mining drill was made for one thing: quick digging. Modeled on a classic Recurso zero-g design, it functions equally well in vacuum and atmosphere, with cemented carbide bits to increase resilience and bearing life, and reduce spalling. As Jenk Murtons once said, 'The Topo don't stopo.'"#, - value = "1055173191" - ) - )] - ItemMiningDrill = 1055173191i32, - #[strum( - serialize = "ItemConstantanIngot", - props(name = r#"Ingot (Constantan)"#, desc = r#""#, value = "1058547521") - )] - ItemConstantanIngot = 1058547521i32, - #[strum( - serialize = "StructureInsulatedPipeCrossJunction6", - props( - name = r#"Insulated Pipe (6-Way Junction)"#, - desc = r#"Insulated pipes greatly reduce heat loss from gases stored in them."#, - value = "1061164284" - ) - )] - StructureInsulatedPipeCrossJunction6 = 1061164284i32, - #[strum( - serialize = "Landingpad_CenterPiece01", - props( - name = r#"Landingpad Center"#, - desc = r#"The target point where the trader shuttle will land. Requires a clear view of the sky."#, - value = "1070143159" - ) - )] - LandingpadCenterPiece01 = 1070143159i32, - #[strum( - serialize = "StructureHorizontalAutoMiner", - props( - name = r#"OGRE"#, - desc = r#"The Recurso OGRE (Orthogonal Ground Rotating Excavator) is a base structure with attached mining vehicle, which will mine a horizontal shaft up to X meters long. When full, the mining vehicle will return to the base to empty itself, before returning to dig. If it encounters empty space, it will also return to base and await instruction. The unit will return if deactivated. - -The OGRE can be connected to a chute system, and is controllable by a logic network. Note that the OGRE outputs more ore than a conventional Mining Drill over the same area, due to more efficient processing. - -MODES -Idle - 0 -Mining - 1 -Returning - 2 -DepostingOre - 3 -Finished - 4 -"#, - value = "1070427573" - ) - )] - StructureHorizontalAutoMiner = 1070427573i32, - #[strum( - serialize = "ItemDynamicAirCon", - props( - name = r#"Kit (Portable Air Conditioner)"#, - desc = r#""#, - value = "1072914031" - ) - )] - ItemDynamicAirCon = 1072914031i32, - #[strum( - serialize = "ItemMarineHelmet", - props(name = r#"Marine Helmet"#, desc = r#""#, value = "1073631646") - )] - ItemMarineHelmet = 1073631646i32, - #[strum( - serialize = "StructureDaylightSensor", - props( - name = r#"Daylight Sensor"#, - desc = r#"Daylight sensors provide data on whether the current region of your base is in sunlight, and report the exact solar angle. Note that the orientation of the sensor alters the reported solar angle, while Logic systems can be used to offset it."#, - value = "1076425094" - ) - )] - StructureDaylightSensor = 1076425094i32, - #[strum( - serialize = "StructureCompositeCladdingCylindricalPanel", - props( - name = r#"Composite Cladding (Cylindrical Panel)"#, - desc = r#""#, - value = "1077151132" - ) - )] - StructureCompositeCladdingCylindricalPanel = 1077151132i32, - #[strum( - serialize = "ItemRocketMiningDrillHeadMineral", - props( - name = r#"Mining-Drill Head (Mineral)"#, - desc = r#""#, - value = "1083675581" - ) - )] - ItemRocketMiningDrillHeadMineral = 1083675581i32, - #[strum( - serialize = "ItemKitSuitStorage", - props(name = r#"Kit (Suit Storage)"#, desc = r#""#, value = "1088892825") - )] - ItemKitSuitStorage = 1088892825i32, - #[strum( - serialize = "StructurePictureFrameThinMountPortraitLarge", - props( - name = r#"Picture Frame Thin Portrait Large"#, - desc = r#""#, - value = "1094895077" - ) - )] - StructurePictureFrameThinMountPortraitLarge = 1094895077i32, - #[strum( - serialize = "StructureLiquidTankBig", - props(name = r#"Liquid Tank Big"#, desc = r#""#, value = "1098900430") - )] - StructureLiquidTankBig = 1098900430i32, - #[strum( - serialize = "Landingpad_CrossPiece", - props( - name = r#"Landingpad Cross"#, - desc = r#"Extends the size of the landing pad area. A basic trader shuttle requires a 3x3 clear landing area."#, - value = "1101296153" - ) - )] - LandingpadCrossPiece = 1101296153i32, - #[strum( - serialize = "CartridgePlantAnalyser", - props( - name = r#"Cartridge Plant Analyser"#, - desc = r#""#, - value = "1101328282" - ) - )] - CartridgePlantAnalyser = 1101328282i32, - #[strum( - serialize = "ItemSiliconOre", - props( - name = r#"Ore (Silicon)"#, - desc = r#"Silicon is a chemical element with the symbol "Si" and is one of the most useful elements to Stationeers. Readily available throughout the universe, silicon is used in a range of alloys, glass, plastics and various electronic components a Stationeer may need to complete their mission."#, - value = "1103972403" - ) - )] - ItemSiliconOre = 1103972403i32, - #[strum( - serialize = "ItemWallLight", - props( - name = r#"Kit (Lights)"#, - desc = r#"This kit creates any one of ten Kit (Lights) variants."#, - value = "1108423476" - ) - )] - ItemWallLight = 1108423476i32, - #[strum( - serialize = "StructureCableJunction4", - props( - name = r#"Cable (4-Way Junction)"#, - desc = r#"Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of Stationeer life - so much so, the ODA designated it an official 'tool' during the 3rd Decannual Stationeer Solar Conference. -Normal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy)."#, - value = "1112047202" - ) - )] - StructureCableJunction4 = 1112047202i32, - #[strum( - serialize = "ItemPillHeal", - props( - name = r#"Pill (Medical)"#, - desc = r#"Three centuries of pharmaceutical technology compressed into one small, easy to ingest pill: the Heal Pill, aka the Proton Pill, aka Mr Happy contains active enzymes, therapeutic proteins, modified microbial strains, and mammalian cell line analogues in a single-dose boost of high purity, efficacy, and potency that potentiates a swift parasympathetic immune response."#, - value = "1118069417" - ) - )] - ItemPillHeal = 1118069417i32, - #[strum( - serialize = "SeedBag_Cocoa", - props(name = r#"Cocoa Seeds"#, desc = r#""#, value = "1139887531") - )] - SeedBagCocoa = 1139887531i32, - #[strum( - serialize = "StructureMediumRocketLiquidFuelTank", - props( - name = r#"Liquid Capsule Tank Medium"#, - desc = r#""#, - value = "1143639539" - ) - )] - StructureMediumRocketLiquidFuelTank = 1143639539i32, - #[strum( - serialize = "StructureCargoStorageMedium", - props(name = r#"Cargo Storage (Medium)"#, desc = r#""#, value = "1151864003") - )] - StructureCargoStorageMedium = 1151864003i32, - #[strum( - serialize = "WeaponRifleEnergy", - props( - name = r#"Energy Rifle"#, - desc = r#"0.Stun -1.Kill"#, - value = "1154745374" - ) - )] - WeaponRifleEnergy = 1154745374i32, - #[strum( - serialize = "StructureSDBSilo", - props( - name = r#"SDB Silo"#, - desc = r#"The majestic silo holds large quantities of almost anything. While it is doing that, it cannot be deconstructed. Note also, that any food you put into a silo is likely to decay extremely rapidly. The silo can hold up to 600 stacks."#, - value = "1155865682" - ) - )] - StructureSdbSilo = 1155865682i32, - #[strum( - serialize = "Flag_ODA_4m", - props(name = r#"Flag (ODA 4m)"#, desc = r#""#, value = "1159126354") - )] - FlagOda4M = 1159126354i32, - #[strum( - serialize = "ItemCannedPowderedEggs", - props( - name = r#"Canned Powdered Eggs"#, - desc = r#"Made in an Advanced Packaging Machine or Basic Packaging Machine, using Powdered Eggs and an Empty Can, canned powdered eggs are an exciting, dynamic food that's fairly high in nutrition, and does not decay."#, - value = "1161510063" - ) - )] - ItemCannedPowderedEggs = 1161510063i32, - #[strum( - serialize = "ItemKitFurniture", - props(name = r#"Kit (Furniture)"#, desc = r#""#, value = "1162905029") - )] - ItemKitFurniture = 1162905029i32, - #[strum( - serialize = "StructureGasGenerator", - props(name = r#"Gas Fuel Generator"#, desc = r#""#, value = "1165997963") - )] - StructureGasGenerator = 1165997963i32, - #[strum( - serialize = "StructureChair", - props( - name = r#"Chair"#, - desc = r#"One of the universe's many chairs, optimized for bipeds with somewhere between zero and two upper limbs."#, - value = "1167659360" - ) - )] - StructureChair = 1167659360i32, - #[strum( - serialize = "StructureWallPaddedArchLightFittingTop", - props( - name = r#"Wall (Padded Arch Light Fitting Top)"#, - desc = r#""#, - value = "1171987947" - ) - )] - StructureWallPaddedArchLightFittingTop = 1171987947i32, - #[strum( - serialize = "StructureShelf", - props(name = r#"Shelf"#, desc = r#""#, value = "1172114950") - )] - StructureShelf = 1172114950i32, - #[strum( - serialize = "ApplianceDeskLampRight", - props( - name = r#"Appliance Desk Lamp Right"#, - desc = r#""#, - value = "1174360780" - ) - )] - ApplianceDeskLampRight = 1174360780i32, - #[strum( - serialize = "ItemKitRegulator", - props( - name = r#"Kit (Pressure Regulator)"#, - desc = r#""#, - value = "1181371795" - ) - )] - ItemKitRegulator = 1181371795i32, - #[strum( - serialize = "ItemKitCompositeFloorGrating", - props(name = r#"Kit (Floor Grating)"#, desc = r#""#, value = "1182412869") - )] - ItemKitCompositeFloorGrating = 1182412869i32, - #[strum( - serialize = "StructureWallArchPlating", - props(name = r#"Wall (Arch Plating)"#, desc = r#""#, value = "1182510648") - )] - StructureWallArchPlating = 1182510648i32, - #[strum( - serialize = "StructureWallPaddedCornerThin", - props( - name = r#"Wall (Padded Corner Thin)"#, - desc = r#""#, - value = "1183203913" - ) - )] - StructureWallPaddedCornerThin = 1183203913i32, - #[strum( - serialize = "StructurePowerTransmitterReceiver", - props( - name = r#"Microwave Power Receiver"#, - desc = r#"The Norsec Wireless Power Transmitter is an uni-directional, A-to-B, far field microwave electrical transmission system.The rotatable base transmitter delivers a narrow, non-lethal microwave beam to a dedicated base receiver. -The transmitter must be aligned to the base station in order to transmit any power. The brightness of the transmitter's collimator arc provides an indication of transmission intensity. Note that there is an attrition over longer ranges, so the unit requires more power over greater distances to deliver the same output.Connects to Logic Transmitter"#, - value = "1195820278" - ) - )] - StructurePowerTransmitterReceiver = 1195820278i32, - #[strum( - serialize = "ItemPipeMeter", - props( - name = r#"Kit (Pipe Meter)"#, - desc = r#"This kit creates a Pipe Meter."#, - value = "1207939683" - ) - )] - ItemPipeMeter = 1207939683i32, - #[strum( - serialize = "StructurePictureFrameThinPortraitLarge", - props( - name = r#"Picture Frame Thin Portrait Large"#, - desc = r#""#, - value = "1212777087" - ) - )] - StructurePictureFrameThinPortraitLarge = 1212777087i32, - #[strum( - serialize = "StructureSleeperLeft", - props( - name = r#"Sleeper Left"#, - desc = r#"A horizontal variant of the sleeper. Will keep players hydrated and fed while they are logged out - as long as a breathable atmosphere is provided."#, - value = "1213495833" - ) - )] - StructureSleeperLeft = 1213495833i32, - #[strum( - serialize = "ItemIce", - props( - name = r#"Ice (Water)"#, - desc = r#"Water ice can be found on most planets in the Solar System, though not all worlds visited by Stationeers possess this resource. Highly sensitive to temperature, ice will begin to melt as soon as it is mined, unless kept in the Mining Belt. When melting, ice produces a mixture of Steam and Nitrogen gas."#, - value = "1217489948" - ) - )] - ItemIce = 1217489948i32, - #[strum( - serialize = "StructureLogicSwitch", - props(name = r#"Lever"#, desc = r#""#, value = "1220484876") - )] - StructureLogicSwitch = 1220484876i32, - #[strum( - serialize = "StructureLiquidUmbilicalFemaleSide", - props( - name = r#"Umbilical Socket Angle (Liquid)"#, - desc = r#""#, - value = "1220870319" - ) - )] - StructureLiquidUmbilicalFemaleSide = 1220870319i32, - #[strum( - serialize = "ItemKitAtmospherics", - props(name = r#"Kit (Atmospherics)"#, desc = r#""#, value = "1222286371") - )] - ItemKitAtmospherics = 1222286371i32, - #[strum( - serialize = "ItemChemLightYellow", - props( - name = r#"Chem Light (Yellow)"#, - desc = r#"Dispel the darkness with this yellow glowstick."#, - value = "1224819963" - ) - )] - ItemChemLightYellow = 1224819963i32, - #[strum( - serialize = "ItemIronFrames", - props(name = r#"Iron Frames"#, desc = r#""#, value = "1225836666") - )] - ItemIronFrames = 1225836666i32, - #[strum( - serialize = "CompositeRollCover", - props( - name = r#"Composite Roll Cover"#, - desc = r#"0.Operate -1.Logic"#, - value = "1228794916" - ) - )] - CompositeRollCover = 1228794916i32, - #[strum( - serialize = "StructureCompositeWall", - props( - name = r#"Composite Wall (Type 1)"#, - desc = r#"Air-tight and resistant to extreme temperatures, composite walls favor form over function, coming in a range of slightly different, functionally identical varieties."#, - value = "1237302061" - ) - )] - StructureCompositeWall = 1237302061i32, - #[strum( - serialize = "StructureCombustionCentrifuge", - props( - name = r#"Combustion Centrifuge"#, - desc = r#"The Combustion Centrifuge is a gas powered version of the Centrifuge. If a Recycler or unbalanced Furnace outputs reagent mixture rather than the desired ingots, a centrifuge allows you to reclaim the raw ore. - It also refines Dirty Ore produced from the Deep Miner and Dirty Ore produced from the Rocket Miner. A combustible fuel mix should be supplied to the gas input, and waste gasses should be vented from the output. - The machine's RPMs must be controlled via the throttle and combustion limiter levers. If the Combustion Centrifuge gains, or loses, RPMs too fast it will experience stress, and eventually grind to a halt. Higher RPMs directly result in faster processing speeds. - The throttle lever controls the amount of fuel being pulled into the machine, increasing the temperature inside the engine, and leading to an increase in RPM. The limiter lever influences the speed of the combustion, and how much uncombusted gas is in the exhaust. - Ejecting ore from the Combustion Centrifuge while it is at high RPMs will result in additional stress build up. If turned off while not stressed, the machine will automatically start to brake, and reduce RPMs in a controlled manner. - "#, - value = "1238905683" - ) - )] - StructureCombustionCentrifuge = 1238905683i32, - #[strum( - serialize = "ItemVolatiles", - props( - name = r#"Ice (Volatiles)"#, - desc = r#"An extremely reactive ice with numerous hydrocarbons trapped inside. For simplicity's sake, these are often displayed as H2 by devices like the Atmos Analyzer. - -Volatiles combust in a 2:1 ratio with Oxygen, creating Carbon Dioxide and pollutants. However when catalysed via devices such as the H2 Combustor in the presence of Oxygen, they produce - Steam and heat with a modicum of Carbon Dioxide and Pollutant due to the autoignition of the volatiles in the chamber. Along with Oxygen, volatiles gas is also the major component of fuel for such devices as the Welding Torch. -"#, - value = "1253102035" - ) - )] - ItemVolatiles = 1253102035i32, - #[strum( - serialize = "HandgunMagazine", - props(name = r#"Handgun Magazine"#, desc = r#""#, value = "1254383185") - )] - HandgunMagazine = 1254383185i32, - #[strum( - serialize = "ItemGasFilterVolatilesL", - props( - name = r#"Heavy Filter (Volatiles)"#, - desc = r#""#, - value = "1255156286" - ) - )] - ItemGasFilterVolatilesL = 1255156286i32, - #[strum( - serialize = "ItemMiningDrillPneumatic", - props( - name = r#"Pneumatic Mining Drill"#, - desc = r#"0.Default -1.Flatten"#, - value = "1258187304" - ) - )] - ItemMiningDrillPneumatic = 1258187304i32, - #[strum( - serialize = "StructureSmallTableDinnerSingle", - props( - name = r#"Small (Table Dinner Single)"#, - desc = r#""#, - value = "1260651529" - ) - )] - StructureSmallTableDinnerSingle = 1260651529i32, - #[strum( - serialize = "ApplianceReagentProcessor", - props( - name = r#"Reagent Processor"#, - desc = r#"Sitting somewhere between a high powered juicer and an alchemist's alembic, the Xigo reagent processor turns certain raw materials and food items into cooking and crafting ingredients. Indispensible in any space kitchen, just bolt it to the bench, and you're ready to go."#, - value = "1260918085" - ) - )] - ApplianceReagentProcessor = 1260918085i32, - #[strum( - serialize = "StructurePressurePlateMedium", - props(name = r#"Trigger Plate (Medium)"#, desc = r#""#, value = "1269458680") - )] - StructurePressurePlateMedium = 1269458680i32, - #[strum( - serialize = "ItemPumpkin", - props( - name = r#"Pumpkin"#, - desc = r#"Pumpkins are a perennial plant, with both a long growth time, and a long time between harvests. Its low requirement for darkness allows for accelerated growing if provided with extra light."#, - value = "1277828144" - ) - )] - ItemPumpkin = 1277828144i32, - #[strum( - serialize = "ItemPumpkinSoup", - props( - name = r#"Pumpkin Soup"#, - desc = r#"Made using Cooked Pumpkin and an Empty Can in a Basic Packaging Machine or Advanced Packaging Machine. Fairly high in nutrition, canned food does not decay"#, - value = "1277979876" - ) - )] - ItemPumpkinSoup = 1277979876i32, - #[strum( - serialize = "StructureTankBigInsulated", - props(name = r#"Tank Big (Insulated)"#, desc = r#""#, value = "1280378227") - )] - StructureTankBigInsulated = 1280378227i32, - #[strum( - serialize = "StructureWallArchCornerTriangle", - props( - name = r#"Wall (Arch Corner Triangle)"#, - desc = r#""#, - value = "1281911841" - ) - )] - StructureWallArchCornerTriangle = 1281911841i32, - #[strum( - serialize = "StructureTurbineGenerator", - props(name = r#"Turbine Generator"#, desc = r#""#, value = "1282191063") - )] - StructureTurbineGenerator = 1282191063i32, - #[strum( - serialize = "StructurePipeIgniter", - props( - name = r#"Pipe Igniter"#, - desc = r#"Ignites the atmosphere inside the attached pipe network."#, - value = "1286441942" - ) - )] - StructurePipeIgniter = 1286441942i32, - #[strum( - serialize = "StructureWallIron", - props(name = r#"Iron Wall (Type 1)"#, desc = r#""#, value = "1287324802") - )] - StructureWallIron = 1287324802i32, - #[strum( - serialize = "ItemSprayGun", - props( - name = r#"Spray Gun"#, - desc = r#"Use with Spray cans in the Spray Can to paint structures, cables and pipes. Much more efficient and faster than doing it with individual spray cans."#, - value = "1289723966" - ) - )] - ItemSprayGun = 1289723966i32, - #[strum( - serialize = "ItemKitSolidGenerator", - props(name = r#"Kit (Solid Generator)"#, desc = r#""#, value = "1293995736") - )] - ItemKitSolidGenerator = 1293995736i32, - #[strum( - serialize = "StructureAccessBridge", - props( - name = r#"Access Bridge"#, - desc = r#"Extendable bridge that spans three grids"#, - value = "1298920475" - ) - )] - StructureAccessBridge = 1298920475i32, - #[strum( - serialize = "StructurePipeOrgan", - props( - name = r#"Pipe Organ"#, - desc = r#"The pipe organ can be attached to one end of a Kit (Pipe Valve). The length of the pipe after the pipe organ changes the pitch of the note it will play when the valve is opened. Use Logic to open and close the valves to create some custom tunes for your base or an audible warning."#, - value = "1305252611" - ) - )] - StructurePipeOrgan = 1305252611i32, - #[strum( - serialize = "StructureElectronicsPrinter", - props( - name = r#"Electronics Printer"#, - desc = r#"The electronic printer will create any electronic part you need. From circuit boards and electronic devices to solar panels. The choice is yours. Upgrade the device using a Electronic Printer Mod for additional recipes and faster processing speeds."#, - value = "1307165496" - ) - )] - StructureElectronicsPrinter = 1307165496i32, - #[strum( - serialize = "StructureFuselageTypeA4", - props(name = r#"Fuselage (Type A4)"#, desc = r#""#, value = "1308115015") - )] - StructureFuselageTypeA4 = 1308115015i32, - #[strum( - serialize = "StructureSmallDirectHeatExchangeGastoGas", - props( - name = r#"Small Direct Heat Exchanger - Gas + Gas"#, - desc = r#"Direct Heat Exchangers equalize the temperature of the two input networks."#, - value = "1310303582" - ) - )] - StructureSmallDirectHeatExchangeGastoGas = 1310303582i32, - #[strum( - serialize = "StructureTurboVolumePump", - props( - name = r#"Turbo Volume Pump (Gas)"#, - desc = r#"Shifts 10 times more gas than a basic Volume Pump, with a mode that can be set to flow in either direction."#, - value = "1310794736" - ) - )] - StructureTurboVolumePump = 1310794736i32, - #[strum( - serialize = "ItemChemLightWhite", - props( - name = r#"Chem Light (White)"#, - desc = r#"Snap the glowstick to activate a pale radiance that keeps the darkness at bay."#, - value = "1312166823" - ) - )] - ItemChemLightWhite = 1312166823i32, - #[strum( - serialize = "ItemMilk", - props( - name = r#"Milk"#, - desc = r#"Full disclosure, it's not actually 'milk', but an Agrizero-invented synthesis of 5ml Soy Oil and 5g Fern, delicately blended in the Chemistry Station. Surprisingly filling, it can be used as an ingredient to cook other food in the Microwave or Automated Oven. Think, Muffin."#, - value = "1327248310" - ) - )] - ItemMilk = 1327248310i32, - #[strum( - serialize = "StructureInsulatedPipeCrossJunction3", - props( - name = r#"Insulated Pipe (3-Way Junction)"#, - desc = r#"Insulated pipes greatly reduce heat loss from gases stored in them."#, - value = "1328210035" - ) - )] - StructureInsulatedPipeCrossJunction3 = 1328210035i32, - #[strum( - serialize = "StructureShortCornerLocker", - props(name = r#"Short Corner Locker"#, desc = r#""#, value = "1330754486") - )] - StructureShortCornerLocker = 1330754486i32, - #[strum( - serialize = "StructureTankConnectorLiquid", - props( - name = r#"Liquid Tank Connector"#, - desc = r#"These basic mounting devices allow you to attach a Portable Liquid Tank to a liquid pipe network."#, - value = "1331802518" - ) - )] - StructureTankConnectorLiquid = 1331802518i32, - #[strum( - serialize = "ItemSprayCanPink", - props( - name = r#"Spray Paint (Pink)"#, - desc = r#"With the invention of enduring chemical dyes, the 20th century bestowed associations with innocence and tenderness upon this pale tint of red. Yet classically, it was the color of seduction and eroticism. Things change."#, - value = "1344257263" - ) - )] - ItemSprayCanPink = 1344257263i32, - #[strum( - serialize = "CircuitboardGraphDisplay", - props(name = r#"Graph Display"#, desc = r#""#, value = "1344368806") - )] - CircuitboardGraphDisplay = 1344368806i32, - #[strum( - serialize = "ItemWreckageStructureWeatherStation006", - props( - name = r#"Wreckage Structure Weather Station"#, - desc = r#""#, - value = "1344576960" - ) - )] - ItemWreckageStructureWeatherStation006 = 1344576960i32, - #[strum( - serialize = "ItemCookedCorn", - props( - name = r#"Cooked Corn"#, - desc = r#"A high-nutrient cooked food, which can be canned."#, - value = "1344773148" - ) - )] - ItemCookedCorn = 1344773148i32, - #[strum( - serialize = "ItemCookedSoybean", - props( - name = r#"Cooked Soybean"#, - desc = r#"A high-nutrient cooked food, which can be canned."#, - value = "1353449022" - ) - )] - ItemCookedSoybean = 1353449022i32, - #[strum( - serialize = "StructureChuteCorner", - props( - name = r#"Chute (Corner)"#, - desc = r#"Chutes act as pipes for items. Use them to connect various import/export equipment together such as the Vending Machine and printers like the Autolathe. -The aim for any Stationeer is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps. -Chute corners are fundamental components of chute networks, which allow the transport of items between machines with import/export slots, such as the Furnace and other automatable structures."#, - value = "1360330136" - ) - )] - StructureChuteCorner = 1360330136i32, - #[strum( - serialize = "DynamicGasCanisterOxygen", - props( - name = r#"Portable Gas Tank (Oxygen)"#, - desc = r#"Portable tanks store gas. If you need to refill a tank, bolt it to a Kit (Tank Connector) using a Wrench, then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or you'll be picking tank shards out of your face. You can refill a Canister (Oxygen) by attaching it to the tank's striped section. Or you could vent it into a sealed room to create an atmosphere. Or even paint it pink, call it Steve and fill that sad space in your heart."#, - value = "1360925836" - ) - )] - DynamicGasCanisterOxygen = 1360925836i32, - #[strum( - serialize = "StructurePassiveVentInsulated", - props(name = r#"Insulated Passive Vent"#, desc = r#""#, value = "1363077139") - )] - StructurePassiveVentInsulated = 1363077139i32, - #[strum( - serialize = "ApplianceChemistryStation", - props(name = r#"Chemistry Station"#, desc = r#""#, value = "1365789392") - )] - ApplianceChemistryStation = 1365789392i32, - #[strum( - serialize = "ItemPipeIgniter", - props(name = r#"Kit (Pipe Igniter)"#, desc = r#""#, value = "1366030599") - )] - ItemPipeIgniter = 1366030599i32, - #[strum( - serialize = "ItemFries", - props(name = r#"French Fries"#, desc = r#""#, value = "1371786091") - )] - ItemFries = 1371786091i32, - #[strum( - serialize = "StructureSleeperVerticalDroid", - props( - name = r#"Droid Sleeper Vertical"#, - desc = r#"The Droid Sleeper will recharge robot batteries and equiped suit batteries if present. This sleeper variant is only safe for robots. Entering as a non robot character will cause you to take damage."#, - value = "1382098999" - ) - )] - StructureSleeperVerticalDroid = 1382098999i32, - #[strum( - serialize = "ItemArcWelder", - props(name = r#"Arc Welder"#, desc = r#""#, value = "1385062886") - )] - ItemArcWelder = 1385062886i32, - #[strum( - serialize = "ItemSoyOil", - props(name = r#"Soy Oil"#, desc = r#""#, value = "1387403148") - )] - ItemSoyOil = 1387403148i32, - #[strum( - serialize = "ItemKitRocketAvionics", - props(name = r#"Kit (Avionics)"#, desc = r#""#, value = "1396305045") - )] - ItemKitRocketAvionics = 1396305045i32, - #[strum( - serialize = "ItemMarineBodyArmor", - props(name = r#"Marine Armor"#, desc = r#""#, value = "1399098998") - )] - ItemMarineBodyArmor = 1399098998i32, - #[strum( - serialize = "StructureStairs4x2", - props(name = r#"Stairs"#, desc = r#""#, value = "1405018945") - )] - StructureStairs4X2 = 1405018945i32, - #[strum( - serialize = "ItemKitBattery", - props(name = r#"Kit (Battery)"#, desc = r#""#, value = "1406656973") - )] - ItemKitBattery = 1406656973i32, - #[strum( - serialize = "StructureLargeDirectHeatExchangeGastoLiquid", - props( - name = r#"Large Direct Heat Exchanger - Gas + Liquid"#, - desc = r#"Direct Heat Exchangers equalize the temperature of the two input networks."#, - value = "1412338038" - ) - )] - StructureLargeDirectHeatExchangeGastoLiquid = 1412338038i32, - #[strum( - serialize = "AccessCardBrown", - props(name = r#"Access Card (Brown)"#, desc = r#""#, value = "1412428165") - )] - AccessCardBrown = 1412428165i32, - #[strum( - serialize = "StructureCapsuleTankLiquid", - props( - name = r#"Liquid Capsule Tank Small"#, - desc = r#""#, - value = "1415396263" - ) - )] - StructureCapsuleTankLiquid = 1415396263i32, - #[strum( - serialize = "StructureLogicBatchWriter", - props(name = r#"Batch Writer"#, desc = r#""#, value = "1415443359") - )] - StructureLogicBatchWriter = 1415443359i32, - #[strum( - serialize = "StructureCondensationChamber", - props( - name = r#"Condensation Chamber"#, - desc = r#"A device for safely condensing gasses into liquids. Liquids and Gasses will both exist safely inside the device. The Chamber will pressurise using its in-built pressure regulator to the target set by the setting wheel. - The secondary gas input on the left is a heat-exchanger input and allows for heat exchange between the secondary input pipe and the internal atmosphere of the Condensation Chamber. - Paired with Evaporation Chamber Stationeers can exploit the phase change properties of gases to build a DIY air conditioner."#, - value = "1420719315" - ) - )] - StructureCondensationChamber = 1420719315i32, - #[strum( - serialize = "SeedBag_Pumpkin", - props( - name = r#"Pumpkin Seeds"#, - desc = r#"Grow a Pumpkin."#, - value = "1423199840" - ) - )] - SeedBagPumpkin = 1423199840i32, - #[strum( - serialize = "ItemPureIceLiquidNitrous", - props( - name = r#"Pure Ice Liquid Nitrous"#, - desc = r#"A frozen chunk of pure Liquid Nitrous Oxide"#, - value = "1428477399" - ) - )] - ItemPureIceLiquidNitrous = 1428477399i32, - #[strum( - serialize = "StructureFrame", - props( - name = r#"Steel Frame"#, - desc = r#"More durable than the Iron Frame, steel frames also have several variations for more complex constructions, such as the Steel Frame (Corner) and Steel Frame (Corner Cut). Like iron frames, they are placed then completed by welding Steel Sheets to the open framework."#, - value = "1432512808" - ) - )] - StructureFrame = 1432512808i32, - #[strum( - serialize = "StructureWaterBottleFillerBottom", - props( - name = r#"Water Bottle Filler Bottom"#, - desc = r#""#, - value = "1433754995" - ) - )] - StructureWaterBottleFillerBottom = 1433754995i32, - #[strum( - serialize = "StructureLightRoundSmall", - props( - name = r#"Light Round (Small)"#, - desc = r#"Description coming."#, - value = "1436121888" - ) - )] - StructureLightRoundSmall = 1436121888i32, - #[strum( - serialize = "ItemRocketMiningDrillHeadHighSpeedMineral", - props( - name = r#"Mining-Drill Head (High Speed Mineral)"#, - desc = r#""#, - value = "1440678625" - ) - )] - ItemRocketMiningDrillHeadHighSpeedMineral = 1440678625i32, - #[strum( - serialize = "ItemMKIICrowbar", - props( - name = r#"Mk II Crowbar"#, - desc = r#"Recurso's entry-level crowbar is useful in a variety of everyday Stationeer settings, from opening Area Power Controls and unpowered Airlocks, to splatting pan-dimensional headcrabs, should the need arise. The MK II is more resistant to temperature and pressure."#, - value = "1440775434" - ) - )] - ItemMkiiCrowbar = 1440775434i32, - #[strum( - serialize = "StructureHydroponicsStation", - props(name = r#"Hydroponics Station"#, desc = r#""#, value = "1441767298") - )] - StructureHydroponicsStation = 1441767298i32, - #[strum( - serialize = "StructureCryoTubeHorizontal", - props( - name = r#"Cryo Tube Horizontal"#, - desc = r#"The horizontal variant of the cryo tube. Will heal players and organs as well as revive dead players when provided with an atmosphere of Nitrogen below -150C."#, - value = "1443059329" - ) - )] - StructureCryoTubeHorizontal = 1443059329i32, - #[strum( - serialize = "StructureInsulatedInLineTankLiquid1x2", - props( - name = r#"Insulated In-Line Tank Liquid"#, - desc = r#""#, - value = "1452100517" - ) - )] - StructureInsulatedInLineTankLiquid1X2 = 1452100517i32, - #[strum( - serialize = "ItemKitPassiveLargeRadiatorLiquid", - props( - name = r#"Kit (Medium Radiator Liquid)"#, - desc = r#""#, - value = "1453961898" - ) - )] - ItemKitPassiveLargeRadiatorLiquid = 1453961898i32, - #[strum( - serialize = "ItemKitReinforcedWindows", - props( - name = r#"Kit (Reinforced Windows)"#, - desc = r#""#, - value = "1459985302" - ) - )] - ItemKitReinforcedWindows = 1459985302i32, - #[strum( - serialize = "ItemWreckageStructureWeatherStation002", - props( - name = r#"Wreckage Structure Weather Station"#, - desc = r#""#, - value = "1464424921" - ) - )] - ItemWreckageStructureWeatherStation002 = 1464424921i32, - #[strum( - serialize = "StructureHydroponicsTray", - props( - name = r#"Hydroponics Tray"#, - desc = r#"The Agrizero hydroponics tray is the ideal vessel for growing a range of plantlife. It must be supplied with water using a pipe network, and sufficient light to generate photosynthesis. -It can be automated using the Harvie."#, - value = "1464854517" - ) - )] - StructureHydroponicsTray = 1464854517i32, - #[strum( - serialize = "ItemMkIIToolbelt", - props( - name = r#"Tool Belt MK II"#, - desc = r#"A large, ten-slot tool belt with two extra generic slots for carrying whatever takes your fancy."#, - value = "1467558064" - ) - )] - ItemMkIiToolbelt = 1467558064i32, - #[strum( - serialize = "StructureOverheadShortLocker", - props(name = r#"Overhead Locker"#, desc = r#""#, value = "1468249454") - )] - StructureOverheadShortLocker = 1468249454i32, - #[strum( - serialize = "ItemMiningBeltMKII", - props( - name = r#"Mining Belt MK II"#, - desc = r#"A larger and more capacious mining belt, the Mk II is similar to the Mining Belt, but has 13 slots instead of the basic 8, to increase the length of your mining trips. It also has space for two tools. "#, - value = "1470787934" - ) - )] - ItemMiningBeltMkii = 1470787934i32, - #[strum( - serialize = "StructureTorpedoRack", - props(name = r#"Torpedo Rack"#, desc = r#""#, value = "1473807953") - )] - StructureTorpedoRack = 1473807953i32, - #[strum( - serialize = "StructureWallIron02", - props(name = r#"Iron Wall (Type 2)"#, desc = r#""#, value = "1485834215") - )] - StructureWallIron02 = 1485834215i32, - #[strum( - serialize = "StructureWallLargePanel", - props(name = r#"Wall (Large Panel)"#, desc = r#""#, value = "1492930217") - )] - StructureWallLargePanel = 1492930217i32, - #[strum( - serialize = "ItemKitLogicCircuit", - props(name = r#"Kit (IC Housing)"#, desc = r#""#, value = "1512322581") - )] - ItemKitLogicCircuit = 1512322581i32, - #[strum( - serialize = "ItemSprayCanRed", - props( - name = r#"Spray Paint (Red)"#, - desc = r#"The king of colors, red is perhaps the defining tone of the universe. Linked to blood, royalty, fire and damnation, it is the chromatic expression of power."#, - value = "1514393921" - ) - )] - ItemSprayCanRed = 1514393921i32, - #[strum( - serialize = "StructureLightRound", - props( - name = r#"Light Round"#, - desc = r#"Description coming."#, - value = "1514476632" - ) - )] - StructureLightRound = 1514476632i32, - #[strum( - serialize = "Fertilizer", - props( - name = r#"Fertilizer"#, - desc = r#"Fertilizer alters plant growth processes, and is created by the basic composter and the Advanced Composter using organic matter. -Fertilizer's affects depend on its ingredients: - -- Food increases PLANT YIELD up to two times -- Decayed Food increases plant GROWTH SPEED up to two times -- Biomass increases the NUMBER OF GROWTH CYCLES the fertilizer lasts for - -The effect of these ingredients depends on their respective proportions in the composter when processing is activated. "#, - value = "1517856652" - ) - )] - Fertilizer = 1517856652i32, - #[strum( - serialize = "StructurePowerUmbilicalMale", - props( - name = r#"Umbilical (Power)"#, - desc = r#"0.Left -1.Center -2.Right"#, - value = "1529453938" - ) - )] - StructurePowerUmbilicalMale = 1529453938i32, - #[strum( - serialize = "ItemRocketMiningDrillHeadDurable", - props( - name = r#"Mining-Drill Head (Durable)"#, - desc = r#""#, - value = "1530764483" - ) - )] - ItemRocketMiningDrillHeadDurable = 1530764483i32, - #[strum( - serialize = "DecayedFood", - props( - name = r#"Decayed Food"#, - desc = r#"When your food decays, it turns into this. ODA scientists have attempted to determine the exact constituents of this substance, but it remains evasive and mysterious. Suffice to say, eating it is a bad idea. Research has determined, however, that The exact speed of decay varies individually by: - -- TEMPERATURE - Refrigeration will slow decay, but many foods will be damaged by exposure to extreme low pressure, as well as extreme heat. The optimum temperature is 0 kelvin (-272 C). - -- FOOD TYPE - Each food type has its own decay properties. Tomato Soup lasts a lot longer than a Tomato, for instance. - -- PRESSURE - Food decays faster when the pressure drops below 1 atmosphere (101kPa). Decay happens exponentially more quickly as the atmosphere approaches a perfect vacuum. There is no effect from higher pressures. - -- ATMOSPHERE - Different gases can slow and accelerate the decay process. The process will take account of respective gas ratios in mixed atmospheres in calculating the decay modifier. The following rates apply across all foods: - -> Oxygen x 1.3 -> Nitrogen x 0.6 -> Carbon Dioxide x 0.8 -> Volatiles x 1 -> Pollutant x 3 -> Nitrous Oxide x 1.5 -> Steam x 2 -> Vacuum (see PRESSURE above) - -"#, - value = "1531087544" - ) - )] - DecayedFood = 1531087544i32, - #[strum( - serialize = "LogicStepSequencer8", - props( - name = r#"Logic Step Sequencer"#, - desc = r#"The ODA does not approve of soundtracks or other distractions. -As such, Stationeers have had to create their own musical accompaniment to the demanding labor of building and maintaining off-world infrastructure. -Central to this pastime is the step sequencer, which allows Stationeers to sequence short musical patterns or loops. - -DIY MUSIC - GETTING STARTED - -1: Connect 8 Device Step Units to your step sequencer via the data port on the left hand side. - -2: Label each step unit, then assign step units 1 through 8 on the step sequencer using the screwdriver. - -3: Select the output speaker (eg Passive Speaker) where the sequencer will play the sounds. This needs to be connected to the logic network on the right hand side of the sequencer. - -4: Place a Stop Watch and use a Logic Reader and Logic Writer to write the time to the time variable on the sequencer. - -5: Set the BPM on the sequencer using a Dial and a Logic Writer to write to the sequencer's BPM variable. A higher bpm will play the sequence faster. - -6: Insert a sound cartridge of your choosing and select which variant of sound you wish to play by pushing the arrow buttons located above and below the sound cartridge slot. - -7: Choose the pitch of the sounds to play by setting the dial on each of your 8 step units to the desired note. With drums, each note is a different drum sounds. You can trial your sounds by pushing the activate button on each step unit (with the sequencer inactive). - -8: Get freaky with the Low frequency oscillator. - -9: Finally, activate the sequencer, Vibeoneer."#, - value = "1531272458" - ) - )] - LogicStepSequencer8 = 1531272458i32, - #[strum( - serialize = "ItemKitDynamicGasTankAdvanced", - props( - name = r#"Kit (Portable Gas Tank Mk II)"#, - desc = r#""#, - value = "1533501495" - ) - )] - ItemKitDynamicGasTankAdvanced = 1533501495i32, - #[strum( - serialize = "ItemWireCutters", - props( - name = r#"Wire Cutters"#, - desc = r#"Wirecutters allow you to deconstruct various structures, as well as cross-lay cables when held in your non-active hand, and defuse explosives as needed. Wirecutters are stored in the Tool Belt, along with other essential tools."#, - value = "1535854074" - ) - )] - ItemWireCutters = 1535854074i32, - #[strum( - serialize = "StructureLadderEnd", - props(name = r#"Ladder End"#, desc = r#""#, value = "1541734993") - )] - StructureLadderEnd = 1541734993i32, - #[strum( - serialize = "ItemGrenade", - props( - name = r#"Hand Grenade"#, - desc = r#"Invented by the Romans, who threw Greek Fire at their enemies in ceramic jars, the word 'grenade' is derived from the Old French word for 'pomegranate', as many modern grenades resemble this round, many-seeded fruit. Also like many grenades before it, this one goes boom and breaks stuff."#, - value = "1544275894" - ) - )] - ItemGrenade = 1544275894i32, - #[strum( - serialize = "StructureCableJunction5Burnt", - props( - name = r#"Burnt Cable (5-Way Junction)"#, - desc = r#""#, - value = "1545286256" - ) - )] - StructureCableJunction5Burnt = 1545286256i32, - #[strum( - serialize = "StructurePlatformLadderOpen", - props(name = r#"Ladder Platform"#, desc = r#""#, value = "1559586682") - )] - StructurePlatformLadderOpen = 1559586682i32, - #[strum( - serialize = "StructureTraderWaypoint", - props(name = r#"Trader Waypoint"#, desc = r#""#, value = "1570931620") - )] - StructureTraderWaypoint = 1570931620i32, - #[strum( - serialize = "ItemKitLiquidUmbilical", - props(name = r#"Kit (Liquid Umbilical)"#, desc = r#""#, value = "1571996765") - )] - ItemKitLiquidUmbilical = 1571996765i32, - #[strum( - serialize = "StructureCompositeWall03", - props( - name = r#"Composite Wall (Type 3)"#, - desc = r#""#, - value = "1574321230" - ) - )] - StructureCompositeWall03 = 1574321230i32, - #[strum( - serialize = "ItemKitRespawnPointWallMounted", - props(name = r#"Kit (Respawn)"#, desc = r#""#, value = "1574688481") - )] - ItemKitRespawnPointWallMounted = 1574688481i32, - #[strum( - serialize = "ItemHastelloyIngot", - props(name = r#"Ingot (Hastelloy)"#, desc = r#""#, value = "1579842814") - )] - ItemHastelloyIngot = 1579842814i32, - #[strum( - serialize = "StructurePipeOneWayValve", - props( - name = r#"One Way Valve (Gas)"#, - desc = r#"The one way valve moves gas in one direction only: from input side to output side. It only permits flow if the input pressure is higher than output pressure. -"#, - value = "1580412404" - ) - )] - StructurePipeOneWayValve = 1580412404i32, - #[strum( - serialize = "StructureStackerReverse", - props( - name = r#"Stacker"#, - desc = r#"A stacker is an important part of any automated chute network. The Xigo ProKompile can be set manually or via logic, to make sure items passing through the stacker are maximized for your storage needs. The reversed stacker has power and data on the opposite side. -The ProKompile can stack a wide variety of things such as ingots, as well as splitting stacks into appropriate sizes as needed."#, - value = "1585641623" - ) - )] - StructureStackerReverse = 1585641623i32, - #[strum( - serialize = "ItemKitEvaporationChamber", - props( - name = r#"Kit (Phase Change Device)"#, - desc = r#""#, - value = "1587787610" - ) - )] - ItemKitEvaporationChamber = 1587787610i32, - #[strum( - serialize = "ItemGlassSheets", - props( - name = r#"Glass Sheets"#, - desc = r#"A fundamental construction component, glass sheets are created from Silicon. Fabricated on the Autolathe, they are used to make {THING:StructureSolarPanel;Solar Panels}, and many other structures."#, - value = "1588896491" - ) - )] - ItemGlassSheets = 1588896491i32, - #[strum( - serialize = "StructureWallPaddedArch", - props(name = r#"Wall (Padded Arch)"#, desc = r#""#, value = "1590330637") - )] - StructureWallPaddedArch = 1590330637i32, - #[strum( - serialize = "StructureLightRoundAngled", - props( - name = r#"Light Round (Angled)"#, - desc = r#"Description coming."#, - value = "1592905386" - ) - )] - StructureLightRoundAngled = 1592905386i32, - #[strum( - serialize = "StructureWallGeometryT", - props(name = r#"Wall (Geometry T)"#, desc = r#""#, value = "1602758612") - )] - StructureWallGeometryT = 1602758612i32, - #[strum( - serialize = "ItemKitElectricUmbilical", - props(name = r#"Kit (Power Umbilical)"#, desc = r#""#, value = "1603046970") - )] - ItemKitElectricUmbilical = 1603046970i32, - #[strum( - serialize = "Lander", - props(name = r#"Lander"#, desc = r#""#, value = "1605130615") - )] - Lander = 1605130615i32, - #[strum( - serialize = "CartridgeNetworkAnalyser", - props( - name = r#"Network Analyzer"#, - desc = r#"A minor masterpiece of micro-electronic engineering, the network analyzer displays the current, voltage and wattage of a cable network, as well as any devices connected to it. Based on a widely-copied Sinotai design, it's used in conjunction with the OreCore Handheld Tablet."#, - value = "1606989119" - ) - )] - CartridgeNetworkAnalyser = 1606989119i32, - #[strum( - serialize = "CircuitboardAirControl", - props( - name = r#"Air Control"#, - desc = r#"When added to a Console, air control circuit boards allow you to program an Active Vent. As with small dogs and 83% of people, air control circuits have only three modes: Pressure, Draft and Offline. Pressure mode maintains a 100kPa atmosphere, switching the active vent between inward and outward flow until target pressure is achieved. Draft mode allows you to pair active vents to circulate air. Offline mode deactivates the vent. "#, - value = "1618019559" - ) - )] - CircuitboardAirControl = 1618019559i32, - #[strum( - serialize = "StructureUprightWindTurbine", - props( - name = r#"Upright Wind Turbine"#, - desc = r#"Norsec's basic wind turbine is an easily fabricated, rapidly deployed design that is strong enough to withstand the worst that environments can throw at it. -While the wind turbine is optimized to produce power even on low atmosphere worlds (up to 200W), it performs best in denser environments. Output varies with wind speed, and during storms, may increase dramatically (up to 800W), so be careful to design your power networks with that in mind."#, - value = "1622183451" - ) - )] - StructureUprightWindTurbine = 1622183451i32, - #[strum( - serialize = "StructureFairingTypeA1", - props(name = r#"Fairing (Type A1)"#, desc = r#""#, value = "1622567418") - )] - StructureFairingTypeA1 = 1622567418i32, - #[strum( - serialize = "ItemKitWallArch", - props(name = r#"Kit (Arched Wall)"#, desc = r#""#, value = "1625214531") - )] - ItemKitWallArch = 1625214531i32, - #[strum( - serialize = "StructurePipeLiquidCrossJunction3", - props( - name = r#"Liquid Pipe (3-Way Junction)"#, - desc = r#"You can upgrade this pipe to an using an Kit (Insulated Liquid Pipe) and a Wrench."#, - value = "1628087508" - ) - )] - StructurePipeLiquidCrossJunction3 = 1628087508i32, - #[strum( - serialize = "StructureGasTankStorage", - props( - name = r#"Gas Tank Storage"#, - desc = r#"When connected to a pipe network, the tank storage unit allows you to refill a Canister, as well as read various atmospheric data from the Gas Canister."#, - value = "1632165346" - ) - )] - StructureGasTankStorage = 1632165346i32, - #[strum( - serialize = "CircuitboardHashDisplay", - props(name = r#"Hash Display"#, desc = r#""#, value = "1633074601") - )] - CircuitboardHashDisplay = 1633074601i32, - #[strum( - serialize = "CircuitboardAdvAirlockControl", - props(name = r#"Advanced Airlock"#, desc = r#""#, value = "1633663176") - )] - CircuitboardAdvAirlockControl = 1633663176i32, - #[strum( - serialize = "ItemGasFilterCarbonDioxide", - props( - name = r#"Filter (Carbon Dioxide)"#, - desc = r#"Given humanity's obsession with exhaling Carbon Dioxide, all Stationeers are issued two basic Sinotai Carbon Dioxide Gas Filter as part of their standard deployment kit (SDK). These filters allow passage of Carbon Dioxide into the suit's waste Canister, but are also critical components of the Portable Air Scrubber and the Filtration. The Medium Filter (Carbon Dioxide) and Heavy Filter (Carbon Dioxide) are also available."#, - value = "1635000764" - ) - )] - ItemGasFilterCarbonDioxide = 1635000764i32, - #[strum( - serialize = "StructureWallFlat", - props(name = r#"Wall (Flat)"#, desc = r#""#, value = "1635864154") - )] - StructureWallFlat = 1635864154i32, - #[strum( - serialize = "StructureChairBoothMiddle", - props(name = r#"Chair (Booth Middle)"#, desc = r#""#, value = "1640720378") - )] - StructureChairBoothMiddle = 1640720378i32, - #[strum( - serialize = "StructureWallArchArrow", - props(name = r#"Wall (Arch Arrow)"#, desc = r#""#, value = "1649708822") - )] - StructureWallArchArrow = 1649708822i32, - #[strum( - serialize = "StructureInsulatedPipeLiquidCrossJunction5", - props( - name = r#"Insulated Liquid Pipe (5-Way Junction)"#, - desc = r#"Liquid piping with very low temperature loss or gain."#, - value = "1654694384" - ) - )] - StructureInsulatedPipeLiquidCrossJunction5 = 1654694384i32, - #[strum( - serialize = "StructureLogicMath", - props( - name = r#"Logic Math"#, - desc = r#"0.Add -1.Subtract -2.Multiply -3.Divide -4.Mod -5.Atan2 -6.Pow -7.Log"#, - value = "1657691323" - ) - )] - StructureLogicMath = 1657691323i32, - #[strum( - serialize = "ItemKitFridgeSmall", - props(name = r#"Kit (Fridge Small)"#, desc = r#""#, value = "1661226524") - )] - ItemKitFridgeSmall = 1661226524i32, - #[strum( - serialize = "ItemScanner", - props( - name = r#"Handheld Scanner"#, - desc = r#"A mysterious piece of technology, rumored to have Zrillian origins."#, - value = "1661270830" - ) - )] - ItemScanner = 1661270830i32, - #[strum( - serialize = "ItemEmergencyToolBelt", - props(name = r#"Emergency Tool Belt"#, desc = r#""#, value = "1661941301") - )] - ItemEmergencyToolBelt = 1661941301i32, - #[strum( - serialize = "StructureEmergencyButton", - props( - name = r#"Important Button"#, - desc = r#"Description coming."#, - value = "1668452680" - ) - )] - StructureEmergencyButton = 1668452680i32, - #[strum( - serialize = "ItemKitAutoMinerSmall", - props(name = r#"Kit (Autominer Small)"#, desc = r#""#, value = "1668815415") - )] - ItemKitAutoMinerSmall = 1668815415i32, - #[strum( - serialize = "StructureChairBacklessSingle", - props( - name = r#"Chair (Backless Single)"#, - desc = r#""#, - value = "1672275150" - ) - )] - StructureChairBacklessSingle = 1672275150i32, - #[strum( - serialize = "ItemPureIceLiquidNitrogen", - props( - name = r#"Pure Ice Liquid Nitrogen"#, - desc = r#"A frozen chunk of pure Liquid Nitrogen"#, - value = "1674576569" - ) - )] - ItemPureIceLiquidNitrogen = 1674576569i32, - #[strum( - serialize = "ItemEvaSuit", - props( - name = r#"Eva Suit"#, - desc = r#"The EVA suit is the basic suit Stationeers need to survive in the inhospitable environment of space. For more information on EVA suits, consult the EVA suit guide."#, - value = "1677018918" - ) - )] - ItemEvaSuit = 1677018918i32, - #[strum( - serialize = "StructurePictureFrameThinPortraitSmall", - props( - name = r#"Picture Frame Thin Portrait Small"#, - desc = r#""#, - value = "1684488658" - ) - )] - StructurePictureFrameThinPortraitSmall = 1684488658i32, - #[strum( - serialize = "StructureLiquidDrain", - props( - name = r#"Active Liquid Outlet"#, - desc = r#"When connected to power and activated, it pumps liquid from a liquid network into the world."#, - value = "1687692899" - ) - )] - StructureLiquidDrain = 1687692899i32, - #[strum( - serialize = "StructureLiquidTankStorage", - props( - name = r#"Liquid Tank Storage"#, - desc = r#"When connected to a liquid pipe network, the tank storage unit allows you to refill a Liquid Canister, as well as read various atmospheric data from the Gas Canister. It will not accept gas canisters."#, - value = "1691898022" - ) - )] - StructureLiquidTankStorage = 1691898022i32, - #[strum( - serialize = "StructurePipeRadiator", - props( - name = r#"Pipe Convection Radiator"#, - desc = r#"A simple heat exchanger, pipe radiators can be placed on pipes to shed or gain heat, depending on the temperature of the surrounding atmosphere. If the atmosphere is hotter, heat will be added the gas within the pipe network, and visa versa if colder. In a vacuum, heat will be radiated. -The speed of heat gain or loss will depend on the gas in question. Adding multiple radiators will speed up heat transfer."#, - value = "1696603168" - ) - )] - StructurePipeRadiator = 1696603168i32, - #[strum( - serialize = "StructureSolarPanelFlatReinforced", - props( - name = r#"Solar Panel (Heavy Flat)"#, - desc = r#"This solar panel is resistant to storm damage."#, - value = "1697196770" - ) - )] - StructureSolarPanelFlatReinforced = 1697196770i32, - #[strum( - serialize = "ToolPrinterMod", - props( - name = r#"Tool Printer Mod"#, - desc = r#"Apply to an Tool Manufactory with a Welding Torch or Arc Welder to upgrade for increased processing speed and more recipe options."#, - value = "1700018136" - ) - )] - ToolPrinterMod = 1700018136i32, - #[strum( - serialize = "StructureCableJunctionH5Burnt", - props( - name = r#"Burnt Heavy Cable (5-Way Junction)"#, - desc = r#""#, - value = "1701593300" - ) - )] - StructureCableJunctionH5Burnt = 1701593300i32, - #[strum( - serialize = "ItemKitFlagODA", - props(name = r#"Kit (ODA Flag)"#, desc = r#""#, value = "1701764190") - )] - ItemKitFlagOda = 1701764190i32, - #[strum( - serialize = "StructureWallSmallPanelsTwoTone", - props( - name = r#"Wall (Small Panels Two Tone)"#, - desc = r#""#, - value = "1709994581" - ) - )] - StructureWallSmallPanelsTwoTone = 1709994581i32, - #[strum( - serialize = "ItemFlowerYellow", - props(name = r#"Flower (Yellow)"#, desc = r#""#, value = "1712822019") - )] - ItemFlowerYellow = 1712822019i32, - #[strum( - serialize = "StructureInsulatedPipeLiquidCorner", - props( - name = r#"Insulated Liquid Pipe (Corner)"#, - desc = r#"Liquid piping with very low temperature loss or gain."#, - value = "1713710802" - ) - )] - StructureInsulatedPipeLiquidCorner = 1713710802i32, - #[strum( - serialize = "ItemCookedCondensedMilk", - props( - name = r#"Condensed Milk"#, - desc = r#"A high-nutrient cooked food, which can be canned."#, - value = "1715917521" - ) - )] - ItemCookedCondensedMilk = 1715917521i32, - #[strum( - serialize = "ItemGasSensor", - props(name = r#"Kit (Gas Sensor)"#, desc = r#""#, value = "1717593480") - )] - ItemGasSensor = 1717593480i32, - #[strum( - serialize = "ItemAdvancedTablet", - props( - name = r#"Advanced Tablet"#, - desc = r#"The advanced Xigo Padi 2 tablet is an improved version of the basic Handheld Tablet, boasting two cartridge slots. The Padi 2 accepts Atmos Analyzer, Tracker, Medical Analyzer, Ore Scanner, eReader, and various other cartridges. - - With a Integrated Circuit (IC10) in the Programmable Chip, you can access variable slots on the carrying human using the device numbers (d0, d1, etc...), so long as the item can be access via logic, such as the Hardsuit.Connects to Logic Transmitter"#, - value = "1722785341" - ) - )] - ItemAdvancedTablet = 1722785341i32, - #[strum( - serialize = "ItemCoalOre", - props( - name = r#"Ore (Coal)"#, - desc = r#"Humanity wouldn't have got to space without humble, combustible coal. Burn it in a , smelt it in the Furnace to create alloys, or use it in the Reagent Processor to make Spray Paint (Black)."#, - value = "1724793494" - ) - )] - ItemCoalOre = 1724793494i32, - #[strum( - serialize = "EntityChick", - props( - name = r#"Entity Chick"#, - desc = r#"Once a chick is hatched, it gets hungry. It will eat soybeans, corn, and wheat, and lay eggs. Some will be fertilized, producing further chickens. Some will not."#, - value = "1730165908" - ) - )] - EntityChick = 1730165908i32, - #[strum( - serialize = "StructureLiquidUmbilicalFemale", - props( - name = r#"Umbilical Socket (Liquid)"#, - desc = r#""#, - value = "1734723642" - ) - )] - StructureLiquidUmbilicalFemale = 1734723642i32, - #[strum( - serialize = "StructureAirlockGate", - props( - name = r#"Small Hangar Door"#, - desc = r#"1 x 1 modular door piece for building hangar doors."#, - value = "1736080881" - ) - )] - StructureAirlockGate = 1736080881i32, - #[strum( - serialize = "CartridgeOreScannerColor", - props( - name = r#"Ore Scanner (Color)"#, - desc = r#"When inserted into a Handheld Tablet the scanner will display minerals hidden underground in different colors on the tablet."#, - value = "1738236580" - ) - )] - CartridgeOreScannerColor = 1738236580i32, - #[strum( - serialize = "StructureBench4", - props( - name = r#"Bench (Workbench Style)"#, - desc = r#""#, - value = "1750375230" - ) - )] - StructureBench4 = 1750375230i32, - #[strum( - serialize = "StructureCompositeCladdingSphericalCorner", - props( - name = r#"Composite Cladding (Spherical Corner)"#, - desc = r#""#, - value = "1751355139" - ) - )] - StructureCompositeCladdingSphericalCorner = 1751355139i32, - #[strum( - serialize = "ItemKitRocketScanner", - props(name = r#"Kit (Rocket Scanner)"#, desc = r#""#, value = "1753647154") - )] - ItemKitRocketScanner = 1753647154i32, - #[strum( - serialize = "ItemAreaPowerControl", - props( - name = r#"Kit (Power Controller)"#, - desc = r#"This kit places a Area Power Control (APC) on any support structure. The APC kit has two options, selecting which direction you would like the APC power to flow."#, - value = "1757673317" - ) - )] - ItemAreaPowerControl = 1757673317i32, - #[strum( - serialize = "ItemIronOre", - props( - name = r#"Ore (Iron)"#, - desc = r#"Abundant throughout the Solar System, iron is the ore most commonly used by Stationeers constructing offworld bases. It can be smelted into both Ingot (Iron)s and Ingot (Steel)s."#, - value = "1758427767" - ) - )] - ItemIronOre = 1758427767i32, - #[strum( - serialize = "DeviceStepUnit", - props( - name = r#"Device Step Unit"#, - desc = r#"0.C-2 -1.C#-2 -2.D-2 -3.D#-2 -4.E-2 -5.F-2 -6.F#-2 -7.G-2 -8.G#-2 -9.A-2 -10.A#-2 -11.B-2 -12.C-1 -13.C#-1 -14.D-1 -15.D#-1 -16.E-1 -17.F-1 -18.F#-1 -19.G-1 -20.G#-1 -21.A-1 -22.A#-1 -23.B-1 -24.C0 -25.C#0 -26.D0 -27.D#0 -28.E0 -29.F0 -30.F#0 -31.G0 -32.G#0 -33.A0 -34.A#0 -35.B0 -36.C1 -37.C#1 -38.D1 -39.D#1 -40.E1 -41.F1 -42.F#1 -43.G1 -44.G#1 -45.A1 -46.A#1 -47.B1 -48.C2 -49.C#2 -50.D2 -51.D#2 -52.E2 -53.F2 -54.F#2 -55.G2 -56.G#2 -57.A2 -58.A#2 -59.B2 -60.C3 -61.C#3 -62.D3 -63.D#3 -64.E3 -65.F3 -66.F#3 -67.G3 -68.G#3 -69.A3 -70.A#3 -71.B3 -72.C4 -73.C#4 -74.D4 -75.D#4 -76.E4 -77.F4 -78.F#4 -79.G4 -80.G#4 -81.A4 -82.A#4 -83.B4 -84.C5 -85.C#5 -86.D5 -87.D#5 -88.E5 -89.F5 -90.F#5 -91.G5 -92.G#5 -93.A5 -94.A#5 -95.B5 -96.C6 -97.C#6 -98.D6 -99.D#6 -100.E6 -101.F6 -102.F#6 -103.G6 -104.G#6 -105.A6 -106.A#6 -107.B6 -108.C7 -109.C#7 -110.D7 -111.D#7 -112.E7 -113.F7 -114.F#7 -115.G7 -116.G#7 -117.A7 -118.A#7 -119.B7 -120.C8 -121.C#8 -122.D8 -123.D#8 -124.E8 -125.F8 -126.F#8 -127.G8"#, - value = "1762696475" - ) - )] - DeviceStepUnit = 1762696475i32, - #[strum( - serialize = "StructureWallPaddedThinNoBorderCorner", - props( - name = r#"Wall (Padded Thin No Border Corner)"#, - desc = r#""#, - value = "1769527556" - ) - )] - StructureWallPaddedThinNoBorderCorner = 1769527556i32, - #[strum( - serialize = "ItemKitWindowShutter", - props(name = r#"Kit (Window Shutter)"#, desc = r#""#, value = "1779979754") - )] - ItemKitWindowShutter = 1779979754i32, - #[strum( - serialize = "StructureRocketManufactory", - props(name = r#"Rocket Manufactory"#, desc = r#""#, value = "1781051034") - )] - StructureRocketManufactory = 1781051034i32, - #[strum( - serialize = "SeedBag_Soybean", - props( - name = r#"Soybean Seeds"#, - desc = r#"Grow some Soybean."#, - value = "1783004244" - ) - )] - SeedBagSoybean = 1783004244i32, - #[strum( - serialize = "ItemEmergencyEvaSuit", - props(name = r#"Emergency Eva Suit"#, desc = r#""#, value = "1791306431") - )] - ItemEmergencyEvaSuit = 1791306431i32, - #[strum( - serialize = "StructureWallArchCornerRound", - props( - name = r#"Wall (Arch Corner Round)"#, - desc = r#""#, - value = "1794588890" - ) - )] - StructureWallArchCornerRound = 1794588890i32, - #[strum( - serialize = "ItemCoffeeMug", - props(name = r#"Coffee Mug"#, desc = r#""#, value = "1800622698") - )] - ItemCoffeeMug = 1800622698i32, - #[strum( - serialize = "StructureAngledBench", - props(name = r#"Bench (Angled)"#, desc = r#""#, value = "1811979158") - )] - StructureAngledBench = 1811979158i32, - #[strum( - serialize = "StructurePassiveLiquidDrain", - props( - name = r#"Passive Liquid Drain"#, - desc = r#"Moves liquids from a pipe network to the world atmosphere."#, - value = "1812364811" - ) - )] - StructurePassiveLiquidDrain = 1812364811i32, - #[strum( - serialize = "ItemKitLandingPadAtmos", - props( - name = r#"Kit (Landing Pad Atmospherics)"#, - desc = r#""#, - value = "1817007843" - ) - )] - ItemKitLandingPadAtmos = 1817007843i32, - #[strum( - serialize = "ItemRTGSurvival", - props( - name = r#"Kit (RTG)"#, - desc = r#"This kit creates a Kit (RTG)."#, - value = "1817645803" - ) - )] - ItemRtgSurvival = 1817645803i32, - #[strum( - serialize = "StructureInsulatedInLineTankGas1x1", - props( - name = r#"Insulated In-Line Tank Small Gas"#, - desc = r#""#, - value = "1818267386" - ) - )] - StructureInsulatedInLineTankGas1X1 = 1818267386i32, - #[strum( - serialize = "ItemPlantThermogenic_Genepool2", - props( - name = r#"Hades Flower (Beta strain)"#, - desc = r#"The Agrizero's-created Hades Flower is the result of as dubious experiment to combine the allure of tropical plants with the comfort and homeliness of a heat pump. The plant breathes a 1:3 mix of Volatiles and Oxygen, and exhales heated Pollutant. The beta strain is notably more efficient than the earlier, more experimental alpha variant."#, - value = "1819167057" - ) - )] - ItemPlantThermogenicGenepool2 = 1819167057i32, - #[strum( - serialize = "StructureLogicSelect", - props( - name = r#"Logic Select"#, - desc = r#"0.Equals -1.Greater -2.Less -3.NotEquals"#, - value = "1822736084" - ) - )] - StructureLogicSelect = 1822736084i32, - #[strum( - serialize = "ItemGasFilterNitrousOxideM", - props( - name = r#"Medium Filter (Nitrous Oxide)"#, - desc = r#""#, - value = "1824284061" - ) - )] - ItemGasFilterNitrousOxideM = 1824284061i32, - #[strum( - serialize = "StructureSmallDirectHeatExchangeLiquidtoGas", - props( - name = r#"Small Direct Heat Exchanger - Liquid + Gas "#, - desc = r#"Direct Heat Exchangers equalize the temperature of the two input networks."#, - value = "1825212016" - ) - )] - StructureSmallDirectHeatExchangeLiquidtoGas = 1825212016i32, - #[strum( - serialize = "ItemKitRoverFrame", - props(name = r#"Kit (Rover Frame)"#, desc = r#""#, value = "1827215803") - )] - ItemKitRoverFrame = 1827215803i32, - #[strum( - serialize = "ItemNickelOre", - props( - name = r#"Ore (Nickel)"#, - desc = r#"Nickel is a chemical element with the symbol "Ni" and is a rare metal commonly used as a plating to prevent corrosion. Sought after by many Stationeers, Nickel is also commonly used to create several alloys."#, - value = "1830218956" - ) - )] - ItemNickelOre = 1830218956i32, - #[strum( - serialize = "StructurePictureFrameThinMountPortraitSmall", - props( - name = r#"Picture Frame Thin Portrait Small"#, - desc = r#""#, - value = "1835796040" - ) - )] - StructurePictureFrameThinMountPortraitSmall = 1835796040i32, - #[strum( - serialize = "H2Combustor", - props( - name = r#"H2 Combustor"#, - desc = r#"Adapted slightly from its original Recurso design, the Volatiles Combustor does exactly what its name suggests - it burns a mixture of volatiles and Oxygen to create water. Extremely useful in hot or arid environments, users need to be aware that the combustor outputs considerable waste heat. The device is also less than perfectly efficient, resulting in the autoignition of volatiles in the chamber, and the production of waste gases which must be dealt with."#, - value = "1840108251" - ) - )] - H2Combustor = 1840108251i32, - #[strum( - serialize = "Flag_ODA_10m", - props(name = r#"Flag (ODA 10m)"#, desc = r#""#, value = "1845441951") - )] - FlagOda10M = 1845441951i32, - #[strum( - serialize = "StructureLightLongAngled", - props( - name = r#"Wall Light (Long Angled)"#, - desc = r#""#, - value = "1847265835" - ) - )] - StructureLightLongAngled = 1847265835i32, - #[strum( - serialize = "StructurePipeLiquidCrossJunction", - props( - name = r#"Liquid Pipe (Cross Junction)"#, - desc = r#"You can upgrade this pipe to an Insulated Liquid Pipe (Cross Junction) using an Kit (Insulated Liquid Pipe) and a Wrench."#, - value = "1848735691" - ) - )] - StructurePipeLiquidCrossJunction = 1848735691i32, - #[strum( - serialize = "ItemCookedPumpkin", - props( - name = r#"Cooked Pumpkin"#, - desc = r#"A high-nutrient cooked food, which can be canned."#, - value = "1849281546" - ) - )] - ItemCookedPumpkin = 1849281546i32, - #[strum( - serialize = "StructureLiquidValve", - props(name = r#"Liquid Valve"#, desc = r#""#, value = "1849974453") - )] - StructureLiquidValve = 1849974453i32, - #[strum( - serialize = "ApplianceTabletDock", - props(name = r#"Tablet Dock"#, desc = r#""#, value = "1853941363") - )] - ApplianceTabletDock = 1853941363i32, - #[strum( - serialize = "StructureCableJunction6HBurnt", - props( - name = r#"Burnt Cable (6-Way Junction)"#, - desc = r#""#, - value = "1854404029" - ) - )] - StructureCableJunction6HBurnt = 1854404029i32, - #[strum( - serialize = "ItemMKIIWrench", - props( - name = r#"Mk II Wrench"#, - desc = r#"One of humanity's enduring contributions to the cosmos, the wrench represents the essence of our species. A simple, effective and spiritually barren tool, use it to build and deconstruct a variety of structures The MK II is more resistant to temperature and pressure."#, - value = "1862001680" - ) - )] - ItemMkiiWrench = 1862001680i32, - #[strum( - serialize = "ItemAdhesiveInsulation", - props(name = r#"Adhesive Insulation"#, desc = r#""#, value = "1871048978") - )] - ItemAdhesiveInsulation = 1871048978i32, - #[strum( - serialize = "ItemGasFilterCarbonDioxideL", - props( - name = r#"Heavy Filter (Carbon Dioxide)"#, - desc = r#""#, - value = "1876847024" - ) - )] - ItemGasFilterCarbonDioxideL = 1876847024i32, - #[strum( - serialize = "ItemWallHeater", - props( - name = r#"Kit (Wall Heater)"#, - desc = r#"This kit creates a Kit (Wall Heater)."#, - value = "1880134612" - ) - )] - ItemWallHeater = 1880134612i32, - #[strum( - serialize = "StructureNitrolyzer", - props( - name = r#"Nitrolyzer"#, - desc = r#"This device is used to create Nitrous Oxide from Oxygen, Nitrogen, and a large amount of energy. The process does not completely transform all the available gas at once, so the output is a mix of all three gasses, which may need further processing. More NOS will be created, if the gas inside the machine is close to a 1/1 ratio of Oxygen to Nitrogen. The second gas input line in optional, and not required if the gas is pre mixed."#, - value = "1898243702" - ) - )] - StructureNitrolyzer = 1898243702i32, - #[strum( - serialize = "StructureLargeSatelliteDish", - props( - name = r#"Large Satellite Dish"#, - desc = r#"This large communications unit can be used to communicate with nearby trade vessels. - - When connected to a Computer containing a Communications Motherboard motherboard, a Landingpad Center, and a Vending Machine, this allows Stationeers to contact traders. Adjust its horizontal and vertical attributes either directly or through logic."#, - value = "1913391845" - ) - )] - StructureLargeSatelliteDish = 1913391845i32, - #[strum( - serialize = "ItemGasFilterPollutants", - props( - name = r#"Filter (Pollutant)"#, - desc = r#"Filters are used to capture various gases, such as waste emissions from a Furnace or Arc Furnace. Adding Sinotai-designed Pollutant filters to a Kit (Portable Scrubber) allows you to isolate this gas, then add it to a pipe network and employ its excellent coolant properties in a Wall Cooler. Try not to inhale."#, - value = "1915566057" - ) - )] - ItemGasFilterPollutants = 1915566057i32, - #[strum( - serialize = "ItemSprayCanKhaki", - props( - name = r#"Spray Paint (Khaki)"#, - desc = r#"Not so much a single color, as a category of boredom, khaki is the pigmentation equivalent of a mild depressive episode."#, - value = "1918456047" - ) - )] - ItemSprayCanKhaki = 1918456047i32, - #[strum( - serialize = "ItemKitPumpedLiquidEngine", - props( - name = r#"Kit (Pumped Liquid Engine)"#, - desc = r#""#, - value = "1921918951" - ) - )] - ItemKitPumpedLiquidEngine = 1921918951i32, - #[strum( - serialize = "StructurePowerUmbilicalFemaleSide", - props( - name = r#"Umbilical Socket Angle (Power)"#, - desc = r#""#, - value = "1922506192" - ) - )] - StructurePowerUmbilicalFemaleSide = 1922506192i32, - #[strum( - serialize = "ItemSoybean", - props( - name = r#"Soybean"#, - desc = r#" Soybeans grow at a moderate rate, but require atmospheric Nitrogen to grow. Its main use is to create Soy Oil"#, - value = "1924673028" - ) - )] - ItemSoybean = 1924673028i32, - #[strum( - serialize = "StructureInsulatedPipeLiquidCrossJunction", - props( - name = r#"Insulated Liquid Pipe (3-Way Junction)"#, - desc = r#"Liquid piping with very low temperature loss or gain."#, - value = "1926651727" - ) - )] - StructureInsulatedPipeLiquidCrossJunction = 1926651727i32, - #[strum( - serialize = "ItemWreckageTurbineGenerator3", - props( - name = r#"Wreckage Turbine Generator"#, - desc = r#""#, - value = "1927790321" - ) - )] - ItemWreckageTurbineGenerator3 = 1927790321i32, - #[strum( - serialize = "StructurePassthroughHeatExchangerGasToLiquid", - props( - name = r#"CounterFlow Heat Exchanger - Gas + Liquid"#, - desc = r#"Exchange heat from one pipe network to another. By drawing down the pressure of the outputs with a pump or regulator and regulating input pressures, the temperatures of two counterflowing networks can be effectively exchanged. - Balancing the throughput of both inputs is key to creating a good exhange of temperatures."#, - value = "1928991265" - ) - )] - StructurePassthroughHeatExchangerGasToLiquid = 1928991265i32, - #[strum( - serialize = "ItemPotato", - props( - name = r#"Potato"#, - desc = r#" Potatoes are a simple, fast growing crop that can keep Stationeers alive in emergencies."#, - value = "1929046963" - ) - )] - ItemPotato = 1929046963i32, - #[strum( - serialize = "StructureCableCornerHBurnt", - props(name = r#"Burnt Cable (Corner)"#, desc = r#""#, value = "1931412811") - )] - StructureCableCornerHBurnt = 1931412811i32, - #[strum( - serialize = "KitSDBSilo", - props( - name = r#"Kit (SDB Silo)"#, - desc = r#"This kit creates a SDB Silo."#, - value = "1932952652" - ) - )] - KitSdbSilo = 1932952652i32, - #[strum( - serialize = "ItemKitPipeUtility", - props(name = r#"Kit (Pipe Utility Gas)"#, desc = r#""#, value = "1934508338") - )] - ItemKitPipeUtility = 1934508338i32, - #[strum( - serialize = "ItemKitInteriorDoors", - props(name = r#"Kit (Interior Doors)"#, desc = r#""#, value = "1935945891") - )] - ItemKitInteriorDoors = 1935945891i32, - #[strum( - serialize = "StructureCryoTube", - props( - name = r#"CryoTube"#, - desc = r#"The exact operation of the Longsleep cryotube remains a commercial secret, with Norsec merely licensing the design. Able to regenerate organ damage when supplied with power and an atmosphere, the Longsleep is a minor miracle of modern medical technology."#, - value = "1938254586" - ) - )] - StructureCryoTube = 1938254586i32, - #[strum( - serialize = "StructureReinforcedWallPaddedWindow", - props( - name = r#"Reinforced Window (Padded)"#, - desc = r#"Enjoy vistas of even the most savage, alien landscapes with these heavy duty window frames, which are resistant to pressure differentials up to 1MPa."#, - value = "1939061729" - ) - )] - StructureReinforcedWallPaddedWindow = 1939061729i32, - #[strum( - serialize = "DynamicCrate", - props( - name = r#"Dynamic Crate"#, - desc = r#"The humble dynamic crate has become a symbol of Stationeer invention and independence. With twelve slots and handles at either end for ease of carriage, it's both standard issue and critical kit for cadets and Commanders alike."#, - value = "1941079206" - ) - )] - DynamicCrate = 1941079206i32, - #[strum( - serialize = "StructureLogicGate", - props( - name = r#"Logic Gate"#, - desc = r#"A logic device that performs a logical operation on one or more binary inputs that produces a single binary output. An input greater than zero is considered true for operations."#, - value = "1942143074" - ) - )] - StructureLogicGate = 1942143074i32, - #[strum( - serialize = "StructureDiode", - props(name = r#"LED"#, desc = r#""#, value = "1944485013") - )] - StructureDiode = 1944485013i32, - #[strum( - serialize = "StructureChairBacklessDouble", - props( - name = r#"Chair (Backless Double)"#, - desc = r#""#, - value = "1944858936" - ) - )] - StructureChairBacklessDouble = 1944858936i32, - #[strum( - serialize = "StructureBatteryCharger", - props( - name = r#"Battery Cell Charger"#, - desc = r#"The 5-slot Xigo battery charger fits the Battery Cell (Small), Battery Cell (Large) and Battery Cell (Nuclear), providing up to 500W to any connected cell. Note: the older design means this device has minor power draw (10W) even when not charging."#, - value = "1945930022" - ) - )] - StructureBatteryCharger = 1945930022i32, - #[strum( - serialize = "StructureFurnace", - props( - name = r#"Furnace"#, - desc = r#"The Zhurong furnace employs a high-temperature gas mixture of Oxygen and Volatiles to smelt ingots and a range of alloys as raw materials for fabricators. -A basic gas mixture can be achieved by adding Ice (Oxite) and Ice (Volatiles) in a 1:2 ratio directly to the furnace, but more complex alloys will require careful management of a dedicated gas mixing network. Exact ingredient ratios must be observed. Likewise, smelting ores at insufficient temperatures will produce reagents, which must be recycled. -If liquids are present in the furnace, they will gather there until the furnace is connected to a liquid pipe network."#, - value = "1947944864" - ) - )] - StructureFurnace = 1947944864i32, - #[strum( - serialize = "ItemLightSword", - props( - name = r#"Light Sword"#, - desc = r#"A charming, if useless, pseudo-weapon. (Creative only.)"#, - value = "1949076595" - ) - )] - ItemLightSword = 1949076595i32, - #[strum( - serialize = "ItemKitLiquidRegulator", - props(name = r#"Kit (Liquid Regulator)"#, desc = r#""#, value = "1951126161") - )] - ItemKitLiquidRegulator = 1951126161i32, - #[strum( - serialize = "StructureCompositeCladdingRoundedCorner", - props( - name = r#"Composite Cladding (Rounded Corner)"#, - desc = r#""#, - value = "1951525046" - ) - )] - StructureCompositeCladdingRoundedCorner = 1951525046i32, - #[strum( - serialize = "ItemGasFilterPollutantsL", - props( - name = r#"Heavy Filter (Pollutants)"#, - desc = r#""#, - value = "1959564765" - ) - )] - ItemGasFilterPollutantsL = 1959564765i32, - #[strum( - serialize = "ItemKitSmallSatelliteDish", - props( - name = r#"Kit (Small Satellite Dish)"#, - desc = r#""#, - value = "1960952220" - ) - )] - ItemKitSmallSatelliteDish = 1960952220i32, - #[strum( - serialize = "StructureSolarPanelFlat", - props( - name = r#"Solar Panel (Flat)"#, - desc = r#"Sinotai basic solar panels generate power from sunlight. They lie flat to the ground, and their efficiency is reduced during storms and when damaged. You can repair these using some trusty Duct Tape."#, - value = "1968102968" - ) - )] - StructureSolarPanelFlat = 1968102968i32, - #[strum( - serialize = "StructureDrinkingFountain", - props( - name = r#""#, - desc = r#""#, - value = "1968371847" - ) - )] - StructureDrinkingFountain = 1968371847i32, - #[strum( - serialize = "ItemJetpackBasic", - props( - name = r#"Jetpack Basic"#, - desc = r#"The basic CHAC jetpack isn't 'technically' a jetpack, it's a gas thruster. It can be powered by any gas, so long as the internal pressure of the canister is higher than the ambient external pressure. If the external pressure is greater, the spacepack will not function. -Indispensable for building, mining and general movement, it has ten storage slots and lets Stationeers fly at 3m/s, compared to the more powerful Hardsuit Jetpack. Adjusting the thrust value alters your rate of acceleration, while activating the stabilizer causes the spacepack to hover when a given height is reached. -USE: 'J' to activate; 'space' to fly up; 'left ctrl' to descend; and 'WASD' to move."#, - value = "1969189000" - ) - )] - ItemJetpackBasic = 1969189000i32, - #[strum( - serialize = "ItemKitEngineMedium", - props(name = r#"Kit (Engine Medium)"#, desc = r#""#, value = "1969312177") - )] - ItemKitEngineMedium = 1969312177i32, - #[strum( - serialize = "StructureWallGeometryCorner", - props(name = r#"Wall (Geometry Corner)"#, desc = r#""#, value = "1979212240") - )] - StructureWallGeometryCorner = 1979212240i32, - #[strum( - serialize = "StructureInteriorDoorPaddedThin", - props( - name = r#"Interior Door Padded Thin"#, - desc = r#"0.Operate -1.Logic"#, - value = "1981698201" - ) - )] - StructureInteriorDoorPaddedThin = 1981698201i32, - #[strum( - serialize = "StructureWaterBottleFillerPoweredBottom", - props(name = r#"Waterbottle Filler"#, desc = r#""#, value = "1986658780") - )] - StructureWaterBottleFillerPoweredBottom = 1986658780i32, - #[strum( - serialize = "StructureLiquidTankSmall", - props(name = r#"Liquid Tank Small"#, desc = r#""#, value = "1988118157") - )] - StructureLiquidTankSmall = 1988118157i32, - #[strum( - serialize = "ItemKitComputer", - props(name = r#"Kit (Computer)"#, desc = r#""#, value = "1990225489") - )] - ItemKitComputer = 1990225489i32, - #[strum( - serialize = "StructureWeatherStation", - props( - name = r#"Weather Station"#, - desc = r#"0.NoStorm -1.StormIncoming -2.InStorm"#, - value = "1997212478" - ) - )] - StructureWeatherStation = 1997212478i32, - #[strum( - serialize = "ItemKitLogicInputOutput", - props(name = r#"Kit (Logic I/O)"#, desc = r#""#, value = "1997293610") - )] - ItemKitLogicInputOutput = 1997293610i32, - #[strum( - serialize = "StructureCompositeCladdingPanel", - props( - name = r#"Composite Cladding (Panel)"#, - desc = r#""#, - value = "1997436771" - ) - )] - StructureCompositeCladdingPanel = 1997436771i32, - #[strum( - serialize = "StructureElevatorShaftIndustrial", - props(name = r#"Elevator Shaft"#, desc = r#""#, value = "1998354978") - )] - StructureElevatorShaftIndustrial = 1998354978i32, - #[strum( - serialize = "ReagentColorRed", - props(name = r#"Color Dye (Red)"#, desc = r#""#, value = "1998377961") - )] - ReagentColorRed = 1998377961i32, - #[strum( - serialize = "Flag_ODA_6m", - props(name = r#"Flag (ODA 6m)"#, desc = r#""#, value = "1998634960") - )] - FlagOda6M = 1998634960i32, - #[strum( - serialize = "StructureAreaPowerControl", - props( - name = r#"Area Power Control"#, - desc = r#"An Area Power Control (APC) has three main functions: -Its primary purpose is to regulate power flow, ensuring uninterrupted performance from devices and machinery, especially those with a fluctuating draw. -APCs also create sub-networks, as no devices on the far side of an APC are visible on the main network. -Lastly, an APC charges batteries, which can provide backup power to the sub-network in the case of an outage. Note that an APC requires a battery to stabilize power draw. It also has two variants, each allowing power to flow in one direction only."#, - value = "1999523701" - ) - )] - StructureAreaPowerControl = 1999523701i32, - #[strum( - serialize = "ItemGasFilterWaterL", - props(name = r#"Heavy Filter (Water)"#, desc = r#""#, value = "2004969680") - )] - ItemGasFilterWaterL = 2004969680i32, - #[strum( - serialize = "ItemDrill", - props( - name = r#"Hand Drill"#, - desc = r#"The ExMin Off-whirled Hand Drill has been a companion to Stationeers for decades. Essential for assembling and deconstructing various items and structures, regardless of gravity, pressure or temperature."#, - value = "2009673399" - ) - )] - ItemDrill = 2009673399i32, - #[strum( - serialize = "ItemFlagSmall", - props(name = r#"Kit (Small Flag)"#, desc = r#""#, value = "2011191088") - )] - ItemFlagSmall = 2011191088i32, - #[strum( - serialize = "ItemCookedRice", - props( - name = r#"Cooked Rice"#, - desc = r#"A high-nutrient cooked food, which can be canned."#, - value = "2013539020" - ) - )] - ItemCookedRice = 2013539020i32, - #[strum( - serialize = "StructureRocketScanner", - props(name = r#"Rocket Scanner"#, desc = r#""#, value = "2014252591") - )] - StructureRocketScanner = 2014252591i32, - #[strum( - serialize = "ItemKitPoweredVent", - props(name = r#"Kit (Powered Vent)"#, desc = r#""#, value = "2015439334") - )] - ItemKitPoweredVent = 2015439334i32, - #[strum( - serialize = "CircuitboardSolarControl", - props( - name = r#"Solar Control"#, - desc = r#"Adding a solar control board to a Console lets you manually control the horizontal and vertical angles of any connected Solar Panel."#, - value = "2020180320" - ) - )] - CircuitboardSolarControl = 2020180320i32, - #[strum( - serialize = "StructurePipeRadiatorFlatLiquid", - props( - name = r#"Pipe Radiator Liquid"#, - desc = r#"A liquid pipe mounted radiator optimized for radiating heat in vacuums."#, - value = "2024754523" - ) - )] - StructurePipeRadiatorFlatLiquid = 2024754523i32, - #[strum( - serialize = "StructureWallPaddingLightFitting", - props( - name = r#"Wall (Padding Light Fitting)"#, - desc = r#""#, - value = "2024882687" - ) - )] - StructureWallPaddingLightFitting = 2024882687i32, - #[strum( - serialize = "StructureReinforcedCompositeWindow", - props( - name = r#"Reinforced Window (Composite)"#, - desc = r#"Enjoy vistas of even the most savage, alien landscapes with these heavy duty window frames, which are resistant to pressure differentials up to 1MPa."#, - value = "2027713511" - ) - )] - StructureReinforcedCompositeWindow = 2027713511i32, - #[strum( - serialize = "ItemKitRocketLiquidFuelTank", - props( - name = r#"Kit (Rocket Liquid Fuel Tank)"#, - desc = r#""#, - value = "2032027950" - ) - )] - ItemKitRocketLiquidFuelTank = 2032027950i32, - #[strum( - serialize = "StructureEngineMountTypeA1", - props(name = r#"Engine Mount (Type A1)"#, desc = r#""#, value = "2035781224") - )] - StructureEngineMountTypeA1 = 2035781224i32, - #[strum( - serialize = "ItemLiquidDrain", - props(name = r#"Kit (Liquid Drain)"#, desc = r#""#, value = "2036225202") - )] - ItemLiquidDrain = 2036225202i32, - #[strum( - serialize = "ItemLiquidTankStorage", - props( - name = r#"Kit (Liquid Canister Storage)"#, - desc = r#"This kit produces a Kit (Liquid Canister Storage) for refilling a Liquid Canister."#, - value = "2037427578" - ) - )] - ItemLiquidTankStorage = 2037427578i32, - #[strum( - serialize = "StructurePipeCrossJunction3", - props( - name = r#"Pipe (3-Way Junction)"#, - desc = r#"You can upgrade this pipe to an Insulated Pipe (3-Way Junction) using an Kit (Insulated Pipe) and a Wrench."#, - value = "2038427184" - ) - )] - StructurePipeCrossJunction3 = 2038427184i32, - #[strum( - serialize = "ItemPeaceLily", - props( - name = r#"Peace Lily"#, - desc = r#"A fetching lily with greater resistance to cold temperatures."#, - value = "2042955224" - ) - )] - ItemPeaceLily = 2042955224i32, - #[strum( - serialize = "PortableSolarPanel", - props(name = r#"Portable Solar Panel"#, desc = r#""#, value = "2043318949") - )] - PortableSolarPanel = 2043318949i32, - #[strum( - serialize = "ItemMushroom", - props( - name = r#"Mushroom"#, - desc = r#"A tasty food item. Unlike normal plants, it consumes Oxygen and outputs Carbon Dioxide. Mushrooms will only mature at a moderate rate in darkness, and prolonged light will kill it."#, - value = "2044798572" - ) - )] - ItemMushroom = 2044798572i32, - #[strum( - serialize = "StructureStairwellNoDoors", - props(name = r#"Stairwell (No Doors)"#, desc = r#""#, value = "2049879875") - )] - StructureStairwellNoDoors = 2049879875i32, - #[strum( - serialize = "StructureWindowShutter", - props( - name = r#"Window Shutter"#, - desc = r#"For those special, private moments, a window that can be closed to prying eyes. - -When closed, has the heat transfer characteristics of a basic wall. Requires power, and can be connected to logic systems."#, - value = "2056377335" - ) - )] - StructureWindowShutter = 2056377335i32, - #[strum( - serialize = "ItemKitHydroponicStation", - props( - name = r#"Kit (Hydroponic Station)"#, - desc = r#""#, - value = "2057179799" - ) - )] - ItemKitHydroponicStation = 2057179799i32, - #[strum( - serialize = "ItemCableCoilHeavy", - props( - name = r#"Cable Coil (Heavy)"#, - desc = r#"Use heavy cable coil for power systems with large draws. Unlike , which can only safely conduct 5kW, heavy cables can transmit up to 100kW."#, - value = "2060134443" - ) - )] - ItemCableCoilHeavy = 2060134443i32, - #[strum( - serialize = "StructureElevatorLevelIndustrial", - props(name = r#"Elevator Level"#, desc = r#""#, value = "2060648791") - )] - StructureElevatorLevelIndustrial = 2060648791i32, - #[strum( - serialize = "StructurePassiveLargeRadiatorGas", - props( - name = r#"Medium Convection Radiator"#, - desc = r#"Has been replaced by Medium Convection Radiator."#, - value = "2066977095" - ) - )] - StructurePassiveLargeRadiatorGas = 2066977095i32, - #[strum( - serialize = "ItemKitInsulatedLiquidPipe", - props( - name = r#"Kit (Insulated Liquid Pipe)"#, - desc = r#""#, - value = "2067655311" - ) - )] - ItemKitInsulatedLiquidPipe = 2067655311i32, - #[strum( - serialize = "StructureLiquidPipeRadiator", - props( - name = r#"Liquid Pipe Convection Radiator"#, - desc = r#"A simple heat exchanger, pipe radiators can be placed on pipes to shed or gain heat, depending on the temperature of the surrounding atmosphere. If the atmosphere is hotter, heat will be added to the liquid within the pipe network, and visa versa if colder. In a vacuum, heat will be radiated. -The speed of heat gain or loss will depend on the liquid in question. Adding multiple radiators will speed up heat transfer."#, - value = "2072805863" - ) - )] - StructureLiquidPipeRadiator = 2072805863i32, - #[strum( - serialize = "StructureLogicHashGen", - props(name = r#"Logic Hash Generator"#, desc = r#""#, value = "2077593121") - )] - StructureLogicHashGen = 2077593121i32, - #[strum( - serialize = "AccessCardWhite", - props(name = r#"Access Card (White)"#, desc = r#""#, value = "2079959157") - )] - AccessCardWhite = 2079959157i32, - #[strum( - serialize = "StructureCableStraightHBurnt", - props(name = r#"Burnt Cable (Straight)"#, desc = r#""#, value = "2085762089") - )] - StructureCableStraightHBurnt = 2085762089i32, - #[strum( - serialize = "StructureWallPaddedWindow", - props(name = r#"Wall (Padded Window)"#, desc = r#""#, value = "2087628940") - )] - StructureWallPaddedWindow = 2087628940i32, - #[strum( - serialize = "StructureLogicMirror", - props(name = r#"Logic Mirror"#, desc = r#""#, value = "2096189278") - )] - StructureLogicMirror = 2096189278i32, - #[strum( - serialize = "StructureWallFlatCornerTriangle", - props( - name = r#"Wall (Flat Corner Triangle)"#, - desc = r#""#, - value = "2097419366" - ) - )] - StructureWallFlatCornerTriangle = 2097419366i32, - #[strum( - serialize = "StructureBackLiquidPressureRegulator", - props( - name = r#"Liquid Back Volume Regulator"#, - desc = r#"Regulates the volume ratio of liquid in the input Liquid pipe. This is expressed as percentage where 100 is totally full and 0 is empty."#, - value = "2099900163" - ) - )] - StructureBackLiquidPressureRegulator = 2099900163i32, - #[strum( - serialize = "StructureTankSmallFuel", - props(name = r#"Small Tank (Fuel)"#, desc = r#""#, value = "2102454415") - )] - StructureTankSmallFuel = 2102454415i32, - #[strum( - serialize = "ItemEmergencyWireCutters", - props(name = r#"Emergency Wire Cutters"#, desc = r#""#, value = "2102803952") - )] - ItemEmergencyWireCutters = 2102803952i32, - #[strum( - serialize = "StructureGasMixer", - props( - name = r#"Gas Mixer"#, - desc = r#"Indispensable for producing precise atmospheric ratios, this gas mixer blends two gases in proportions ranging anywhere from 0-100%."#, - value = "2104106366" - ) - )] - StructureGasMixer = 2104106366i32, - #[strum( - serialize = "StructureCompositeFloorGratingOpen", - props( - name = r#"Composite Floor Grating Open"#, - desc = r#""#, - value = "2109695912" - ) - )] - StructureCompositeFloorGratingOpen = 2109695912i32, - #[strum( - serialize = "ItemRocketMiningDrillHead", - props( - name = r#"Mining-Drill Head (Basic)"#, - desc = r#"Replaceable drill head for Rocket Miner"#, - value = "2109945337" - ) - )] - ItemRocketMiningDrillHead = 2109945337i32, - #[strum( - serialize = "ItemSugar", - props(name = r#"Sugar"#, desc = r#""#, value = "2111910840") - )] - ItemSugar = 2111910840i32, - #[strum( - serialize = "DynamicMKIILiquidCanisterEmpty", - props( - name = r#"Portable Liquid Tank Mk II"#, - desc = r#"An empty, insulated liquid Gas Canister."#, - value = "2130739600" - ) - )] - DynamicMkiiLiquidCanisterEmpty = 2130739600i32, - #[strum( - serialize = "ItemSpaceOre", - props( - name = r#"Dirty Ore"#, - desc = r#"Ore mined from asteroids via the Rocket Miner which then must be processed in the Centrifuge, or Combustion Centrifuge to produce smeltable ores."#, - value = "2131916219" - ) - )] - ItemSpaceOre = 2131916219i32, - #[strum( - serialize = "ItemKitStandardChute", - props(name = r#"Kit (Powered Chutes)"#, desc = r#""#, value = "2133035682") - )] - ItemKitStandardChute = 2133035682i32, - #[strum( - serialize = "StructureInsulatedPipeStraight", - props( - name = r#"Insulated Pipe (Straight)"#, - desc = r#"Insulated pipes greatly reduce heat loss from gases stored in them."#, - value = "2134172356" - ) - )] - StructureInsulatedPipeStraight = 2134172356i32, - #[strum( - serialize = "ItemLeadIngot", - props(name = r#"Ingot (Lead)"#, desc = r#""#, value = "2134647745") - )] - ItemLeadIngot = 2134647745i32, - #[strum( - serialize = "ItemGasCanisterNitrogen", - props(name = r#"Canister (Nitrogen)"#, desc = r#""#, value = "2145068424") - )] - ItemGasCanisterNitrogen = 2145068424i32, -} diff --git a/ic10emu/src/vm/enums/script_enums.rs b/ic10emu/src/vm/enums/script_enums.rs deleted file mode 100644 index 2308f1c..0000000 --- a/ic10emu/src/vm/enums/script_enums.rs +++ /dev/null @@ -1,2287 +0,0 @@ -// ================================================= -// !! <-----> DO NOT MODIFY <-----> !! -// -// This module was automatically generated by an -// xtask -// -// run `cargo xtask generate` from the workspace -// to regenerate -// -// ================================================= - -use serde_derive::{Deserialize, Serialize}; -use strum::{AsRefStr, Display, EnumIter, EnumProperty, EnumString, FromRepr}; -#[derive( - Debug, - Display, - Clone, - Copy, - PartialEq, - Eq, - PartialOrd, - Ord, - Hash, - EnumString, - AsRefStr, - EnumProperty, - EnumIter, - FromRepr, - Serialize, - Deserialize, -)] -#[strum(use_phf)] -#[repr(u8)] -pub enum LogicBatchMethod { - #[strum(serialize = "Average", props(docs = r#""#, value = "0"))] - Average = 0u8, - #[strum(serialize = "Sum", props(docs = r#""#, value = "1"))] - Sum = 1u8, - #[strum(serialize = "Minimum", props(docs = r#""#, value = "2"))] - Minimum = 2u8, - #[strum(serialize = "Maximum", props(docs = r#""#, value = "3"))] - Maximum = 3u8, -} -#[derive( - Debug, - Display, - Clone, - Copy, - PartialEq, - Eq, - PartialOrd, - Ord, - Hash, - EnumString, - AsRefStr, - EnumProperty, - EnumIter, - FromRepr, - Serialize, - Deserialize, -)] -#[strum(use_phf)] -#[repr(u8)] -pub enum LogicReagentMode { - #[strum(serialize = "Contents", props(docs = r#""#, value = "0"))] - Contents = 0u8, - #[strum(serialize = "Required", props(docs = r#""#, value = "1"))] - Required = 1u8, - #[strum(serialize = "Recipe", props(docs = r#""#, value = "2"))] - Recipe = 2u8, - #[strum(serialize = "TotalContents", props(docs = r#""#, value = "3"))] - TotalContents = 3u8, -} -#[derive( - Debug, - Default, - Display, - Clone, - Copy, - PartialEq, - Eq, - PartialOrd, - Ord, - Hash, - EnumString, - AsRefStr, - EnumProperty, - EnumIter, - FromRepr, - Serialize, - Deserialize, -)] -#[strum(use_phf)] -#[repr(u8)] -pub enum LogicSlotType { - #[strum(serialize = "None", props(docs = r#"No description"#, value = "0"))] - #[default] - None = 0u8, - #[strum( - serialize = "Occupied", - props( - docs = r#"returns 0 when slot is not occupied, 1 when it is"#, - value = "1" - ) - )] - Occupied = 1u8, - #[strum( - serialize = "OccupantHash", - props( - docs = r#"returns the has of the current occupant, the unique identifier of the thing"#, - value = "2" - ) - )] - OccupantHash = 2u8, - #[strum( - serialize = "Quantity", - props( - docs = r#"returns the current quantity, such as stack size, of the item in the slot"#, - value = "3" - ) - )] - Quantity = 3u8, - #[strum( - serialize = "Damage", - props( - docs = r#"returns the damage state of the item in the slot"#, - value = "4" - ) - )] - Damage = 4u8, - #[strum( - serialize = "Efficiency", - props( - docs = r#"returns the growth efficiency of the plant in the slot"#, - value = "5" - ) - )] - Efficiency = 5u8, - #[strum( - serialize = "Health", - props(docs = r#"returns the health of the plant in the slot"#, value = "6") - )] - Health = 6u8, - #[strum( - serialize = "Growth", - props( - docs = r#"returns the current growth state of the plant in the slot"#, - value = "7" - ) - )] - Growth = 7u8, - #[strum( - serialize = "Pressure", - props( - docs = r#"returns pressure of the slot occupants internal atmosphere"#, - value = "8" - ) - )] - Pressure = 8u8, - #[strum( - serialize = "Temperature", - props( - docs = r#"returns temperature of the slot occupants internal atmosphere"#, - value = "9" - ) - )] - Temperature = 9u8, - #[strum( - serialize = "Charge", - props( - docs = r#"returns current energy charge the slot occupant is holding"#, - value = "10" - ) - )] - Charge = 10u8, - #[strum( - serialize = "ChargeRatio", - props( - docs = r#"returns current energy charge the slot occupant is holding as a ratio between 0 and 1 of its maximum"#, - value = "11" - ) - )] - ChargeRatio = 11u8, - #[strum( - serialize = "Class", - props( - docs = r#"returns integer representing the class of object"#, - value = "12" - ) - )] - Class = 12u8, - #[strum( - serialize = "PressureWaste", - props( - docs = r#"returns pressure in the waste tank of the jetpack in this slot"#, - value = "13" - ) - )] - PressureWaste = 13u8, - #[strum( - serialize = "PressureAir", - props( - docs = r#"returns pressure in the air tank of the jetpack in this slot"#, - value = "14" - ) - )] - PressureAir = 14u8, - #[strum( - serialize = "MaxQuantity", - props( - docs = r#"returns the max stack size of the item in the slot"#, - value = "15" - ) - )] - MaxQuantity = 15u8, - #[strum( - serialize = "Mature", - props( - docs = r#"returns 1 if the plant in this slot is mature, 0 when it isn't"#, - value = "16" - ) - )] - Mature = 16u8, - #[strum( - serialize = "PrefabHash", - props( - docs = r#"returns the hash of the structure in the slot"#, - value = "17" - ) - )] - PrefabHash = 17u8, - #[strum( - serialize = "Seeding", - props( - docs = r#"Whether a plant is seeding (ready to harvest seeds from). Returns 1 if seeding or 0 if not."#, - value = "18" - ) - )] - Seeding = 18u8, - #[strum( - serialize = "LineNumber", - props( - docs = r#"The line number of current execution for an integrated circuit running on this device. While this number can be written, use with caution"#, - value = "19" - ) - )] - LineNumber = 19u8, - #[strum( - serialize = "Volume", - props(docs = r#"No description available"#, value = "20") - )] - Volume = 20u8, - #[strum( - serialize = "Open", - props(docs = r#"No description available"#, value = "21") - )] - Open = 21u8, - #[strum( - serialize = "On", - props(docs = r#"No description available"#, value = "22") - )] - On = 22u8, - #[strum( - serialize = "Lock", - props(docs = r#"No description available"#, value = "23") - )] - Lock = 23u8, - #[strum( - serialize = "SortingClass", - props(docs = r#"No description available"#, value = "24") - )] - SortingClass = 24u8, - #[strum( - serialize = "FilterType", - props(docs = r#"No description available"#, value = "25") - )] - FilterType = 25u8, - #[strum( - serialize = "ReferenceId", - props(docs = r#"Unique Reference Identifier for this object"#, value = "26") - )] - ReferenceId = 26u8, -} -#[derive( - Debug, - Default, - Display, - Clone, - Copy, - PartialEq, - Eq, - PartialOrd, - Ord, - Hash, - EnumString, - AsRefStr, - EnumProperty, - EnumIter, - FromRepr, - Serialize, - Deserialize, -)] -#[strum(use_phf)] -#[repr(u16)] -pub enum LogicType { - #[strum( - serialize = "None", - props(deprecated = "true", docs = r#"No description"#, value = "0") - )] - #[default] - None = 0u16, - #[strum( - serialize = "Power", - props( - docs = r#"Can be read to return if the device is correctly powered or not, set via the power system, return 1 if powered and 0 if not"#, - value = "1" - ) - )] - Power = 1u16, - #[strum( - serialize = "Open", - props(docs = r#"1 if device is open, otherwise 0"#, value = "2") - )] - Open = 2u16, - #[strum( - serialize = "Mode", - props( - docs = r#"Integer for mode state, different devices will have different mode states available to them"#, - value = "3" - ) - )] - Mode = 3u16, - #[strum( - serialize = "Error", - props(docs = r#"1 if device is in error state, otherwise 0"#, value = "4") - )] - Error = 4u16, - #[strum( - serialize = "Pressure", - props(docs = r#"The current pressure reading of the device"#, value = "5") - )] - Pressure = 5u16, - #[strum( - serialize = "Temperature", - props(docs = r#"The current temperature reading of the device"#, value = "6") - )] - Temperature = 6u16, - #[strum( - serialize = "PressureExternal", - props(docs = r#"Setting for external pressure safety, in KPa"#, value = "7") - )] - PressureExternal = 7u16, - #[strum( - serialize = "PressureInternal", - props(docs = r#"Setting for internal pressure safety, in KPa"#, value = "8") - )] - PressureInternal = 8u16, - #[strum( - serialize = "Activate", - props( - docs = r#"1 if device is activated (usually means running), otherwise 0"#, - value = "9" - ) - )] - Activate = 9u16, - #[strum( - serialize = "Lock", - props( - docs = r#"1 if device is locked, otherwise 0, can be set in most devices and prevents the user from access the values"#, - value = "10" - ) - )] - Lock = 10u16, - #[strum( - serialize = "Charge", - props(docs = r#"The current charge the device has"#, value = "11") - )] - Charge = 11u16, - #[strum( - serialize = "Setting", - props( - docs = r#"A variable setting that can be read or written, depending on the device"#, - value = "12" - ) - )] - Setting = 12u16, - #[strum( - serialize = "Reagents", - props( - docs = r#"Total number of reagents recorded by the device"#, - value = "13" - ) - )] - Reagents = 13u16, - #[strum( - serialize = "RatioOxygen", - props(docs = r#"The ratio of oxygen in device atmosphere"#, value = "14") - )] - RatioOxygen = 14u16, - #[strum( - serialize = "RatioCarbonDioxide", - props( - docs = r#"The ratio of Carbon Dioxide in device atmosphere"#, - value = "15" - ) - )] - RatioCarbonDioxide = 15u16, - #[strum( - serialize = "RatioNitrogen", - props(docs = r#"The ratio of nitrogen in device atmosphere"#, value = "16") - )] - RatioNitrogen = 16u16, - #[strum( - serialize = "RatioPollutant", - props(docs = r#"The ratio of pollutant in device atmosphere"#, value = "17") - )] - RatioPollutant = 17u16, - #[strum( - serialize = "RatioVolatiles", - props(docs = r#"The ratio of volatiles in device atmosphere"#, value = "18") - )] - RatioVolatiles = 18u16, - #[strum( - serialize = "RatioWater", - props(docs = r#"The ratio of water in device atmosphere"#, value = "19") - )] - RatioWater = 19u16, - #[strum( - serialize = "Horizontal", - props(docs = r#"Horizontal setting of the device"#, value = "20") - )] - Horizontal = 20u16, - #[strum( - serialize = "Vertical", - props(docs = r#"Vertical setting of the device"#, value = "21") - )] - Vertical = 21u16, - #[strum( - serialize = "SolarAngle", - props(docs = r#"Solar angle of the device"#, value = "22") - )] - SolarAngle = 22u16, - #[strum( - serialize = "Maximum", - props(docs = r#"Maximum setting of the device"#, value = "23") - )] - Maximum = 23u16, - #[strum( - serialize = "Ratio", - props( - docs = r#"Context specific value depending on device, 0 to 1 based ratio"#, - value = "24" - ) - )] - Ratio = 24u16, - #[strum( - serialize = "PowerPotential", - props( - docs = r#"How much energy the device or network potentially provides"#, - value = "25" - ) - )] - PowerPotential = 25u16, - #[strum( - serialize = "PowerActual", - props( - docs = r#"How much energy the device or network is actually using"#, - value = "26" - ) - )] - PowerActual = 26u16, - #[strum( - serialize = "Quantity", - props(docs = r#"Total quantity on the device"#, value = "27") - )] - Quantity = 27u16, - #[strum( - serialize = "On", - props( - docs = r#"The current state of the device, 0 for off, 1 for on"#, - value = "28" - ) - )] - On = 28u16, - #[strum( - serialize = "ImportQuantity", - props( - deprecated = "true", - docs = r#"Total quantity of items imported by the device"#, - value = "29" - ) - )] - ImportQuantity = 29u16, - #[strum( - serialize = "ImportSlotOccupant", - props(deprecated = "true", docs = r#"DEPRECATED"#, value = "30") - )] - ImportSlotOccupant = 30u16, - #[strum( - serialize = "ExportQuantity", - props( - deprecated = "true", - docs = r#"Total quantity of items exported by the device"#, - value = "31" - ) - )] - ExportQuantity = 31u16, - #[strum( - serialize = "ExportSlotOccupant", - props(deprecated = "true", docs = r#"DEPRECATED"#, value = "32") - )] - ExportSlotOccupant = 32u16, - #[strum( - serialize = "RequiredPower", - props( - docs = r#"Idle operating power quantity, does not necessarily include extra demand power"#, - value = "33" - ) - )] - RequiredPower = 33u16, - #[strum( - serialize = "HorizontalRatio", - props(docs = r#"Radio of horizontal setting for device"#, value = "34") - )] - HorizontalRatio = 34u16, - #[strum( - serialize = "VerticalRatio", - props(docs = r#"Radio of vertical setting for device"#, value = "35") - )] - VerticalRatio = 35u16, - #[strum( - serialize = "PowerRequired", - props( - docs = r#"Power requested from the device and/or network"#, - value = "36" - ) - )] - PowerRequired = 36u16, - #[strum( - serialize = "Idle", - props( - docs = r#"Returns 1 if the device is currently idle, otherwise 0"#, - value = "37" - ) - )] - Idle = 37u16, - #[strum( - serialize = "Color", - props( - docs = r#" - Whether driven by concerns for clarity, safety or simple aesthetics, Stationeers have access to a small rainbow of colors for their constructions. These are the color setting for devices, represented as an integer. - -0: Blue -1: Grey -2: Green -3: Orange -4: Red -5: Yellow -6: White -7: Black -8: Brown -9: Khaki -10: Pink -11: Purple - - It is an unwavering universal law that anything higher than 11 will be purple. The ODA is powerless to change this. Similarly, anything lower than 0 will be Blue. - "#, - value = "38" - ) - )] - Color = 38u16, - #[strum( - serialize = "ElevatorSpeed", - props(docs = r#"Current speed of the elevator"#, value = "39") - )] - ElevatorSpeed = 39u16, - #[strum( - serialize = "ElevatorLevel", - props(docs = r#"Level the elevator is currently at"#, value = "40") - )] - ElevatorLevel = 40u16, - #[strum( - serialize = "RecipeHash", - props( - docs = r#"Current hash of the recipe the device is set to produce"#, - value = "41" - ) - )] - RecipeHash = 41u16, - #[strum( - serialize = "ExportSlotHash", - props(deprecated = "true", docs = r#"DEPRECATED"#, value = "42") - )] - ExportSlotHash = 42u16, - #[strum( - serialize = "ImportSlotHash", - props(deprecated = "true", docs = r#"DEPRECATED"#, value = "43") - )] - ImportSlotHash = 43u16, - #[strum( - serialize = "PlantHealth1", - props(deprecated = "true", docs = r#"DEPRECATED"#, value = "44") - )] - PlantHealth1 = 44u16, - #[strum( - serialize = "PlantHealth2", - props(deprecated = "true", docs = r#"DEPRECATED"#, value = "45") - )] - PlantHealth2 = 45u16, - #[strum( - serialize = "PlantHealth3", - props(deprecated = "true", docs = r#"DEPRECATED"#, value = "46") - )] - PlantHealth3 = 46u16, - #[strum( - serialize = "PlantHealth4", - props(deprecated = "true", docs = r#"DEPRECATED"#, value = "47") - )] - PlantHealth4 = 47u16, - #[strum( - serialize = "PlantGrowth1", - props(deprecated = "true", docs = r#"DEPRECATED"#, value = "48") - )] - PlantGrowth1 = 48u16, - #[strum( - serialize = "PlantGrowth2", - props(deprecated = "true", docs = r#"DEPRECATED"#, value = "49") - )] - PlantGrowth2 = 49u16, - #[strum( - serialize = "PlantGrowth3", - props(deprecated = "true", docs = r#"DEPRECATED"#, value = "50") - )] - PlantGrowth3 = 50u16, - #[strum( - serialize = "PlantGrowth4", - props(deprecated = "true", docs = r#"DEPRECATED"#, value = "51") - )] - PlantGrowth4 = 51u16, - #[strum( - serialize = "PlantEfficiency1", - props(deprecated = "true", docs = r#"DEPRECATED"#, value = "52") - )] - PlantEfficiency1 = 52u16, - #[strum( - serialize = "PlantEfficiency2", - props(deprecated = "true", docs = r#"DEPRECATED"#, value = "53") - )] - PlantEfficiency2 = 53u16, - #[strum( - serialize = "PlantEfficiency3", - props(deprecated = "true", docs = r#"DEPRECATED"#, value = "54") - )] - PlantEfficiency3 = 54u16, - #[strum( - serialize = "PlantEfficiency4", - props(deprecated = "true", docs = r#"DEPRECATED"#, value = "55") - )] - PlantEfficiency4 = 55u16, - #[strum( - serialize = "PlantHash1", - props(deprecated = "true", docs = r#"DEPRECATED"#, value = "56") - )] - PlantHash1 = 56u16, - #[strum( - serialize = "PlantHash2", - props(deprecated = "true", docs = r#"DEPRECATED"#, value = "57") - )] - PlantHash2 = 57u16, - #[strum( - serialize = "PlantHash3", - props(deprecated = "true", docs = r#"DEPRECATED"#, value = "58") - )] - PlantHash3 = 58u16, - #[strum( - serialize = "PlantHash4", - props(deprecated = "true", docs = r#"DEPRECATED"#, value = "59") - )] - PlantHash4 = 59u16, - #[strum( - serialize = "RequestHash", - props( - docs = r#"When set to the unique identifier, requests an item of the provided type from the device"#, - value = "60" - ) - )] - RequestHash = 60u16, - #[strum( - serialize = "CompletionRatio", - props( - docs = r#"How complete the current production is for this device, between 0 and 1"#, - value = "61" - ) - )] - CompletionRatio = 61u16, - #[strum( - serialize = "ClearMemory", - props( - docs = r#"When set to 1, clears the counter memory (e.g. ExportCount). Will set itself back to 0 when actioned"#, - value = "62" - ) - )] - ClearMemory = 62u16, - #[strum( - serialize = "ExportCount", - props( - docs = r#"How many items exported since last ClearMemory"#, - value = "63" - ) - )] - ExportCount = 63u16, - #[strum( - serialize = "ImportCount", - props( - docs = r#"How many items imported since last ClearMemory"#, - value = "64" - ) - )] - ImportCount = 64u16, - #[strum( - serialize = "PowerGeneration", - props(docs = r#"Returns how much power is being generated"#, value = "65") - )] - PowerGeneration = 65u16, - #[strum( - serialize = "TotalMoles", - props(docs = r#"Returns the total moles of the device"#, value = "66") - )] - TotalMoles = 66u16, - #[strum( - serialize = "Volume", - props(docs = r#"Returns the device atmosphere volume"#, value = "67") - )] - Volume = 67u16, - #[strum( - serialize = "Plant", - props( - docs = r#"Performs the planting action for any plant based machinery"#, - value = "68" - ) - )] - Plant = 68u16, - #[strum( - serialize = "Harvest", - props( - docs = r#"Performs the harvesting action for any plant based machinery"#, - value = "69" - ) - )] - Harvest = 69u16, - #[strum( - serialize = "Output", - props( - docs = r#"The output operation for a sort handling device, such as a stacker or sorter, when in logic mode the device will only action one repetition when set zero or above and then back to -1 and await further instructions"#, - value = "70" - ) - )] - Output = 70u16, - #[strum( - serialize = "PressureSetting", - props( - docs = r#"The current setting for the internal pressure of the object (e.g. the Hardsuit Air release), in KPa"#, - value = "71" - ) - )] - PressureSetting = 71u16, - #[strum( - serialize = "TemperatureSetting", - props( - docs = r#"The current setting for the internal temperature of the object (e.g. the Hardsuit A/C)"#, - value = "72" - ) - )] - TemperatureSetting = 72u16, - #[strum( - serialize = "TemperatureExternal", - props( - docs = r#"The temperature of the outside of the device, usually the world atmosphere surrounding it"#, - value = "73" - ) - )] - TemperatureExternal = 73u16, - #[strum( - serialize = "Filtration", - props( - docs = r#"The current state of the filtration system, for example Filtration = 1 for a Hardsuit sets filtration to On"#, - value = "74" - ) - )] - Filtration = 74u16, - #[strum( - serialize = "AirRelease", - props( - docs = r#"The current state of the air release system, for example AirRelease = 1 for a Hardsuit sets Air Release to On"#, - value = "75" - ) - )] - AirRelease = 75u16, - #[strum( - serialize = "PositionX", - props( - docs = r#"The current position in X dimension in world coordinates"#, - value = "76" - ) - )] - PositionX = 76u16, - #[strum( - serialize = "PositionY", - props( - docs = r#"The current position in Y dimension in world coordinates"#, - value = "77" - ) - )] - PositionY = 77u16, - #[strum( - serialize = "PositionZ", - props( - docs = r#"The current position in Z dimension in world coordinates"#, - value = "78" - ) - )] - PositionZ = 78u16, - #[strum( - serialize = "VelocityMagnitude", - props(docs = r#"The current magnitude of the velocity vector"#, value = "79") - )] - VelocityMagnitude = 79u16, - #[strum( - serialize = "VelocityRelativeX", - props( - docs = r#"The current velocity X relative to the forward vector of this"#, - value = "80" - ) - )] - VelocityRelativeX = 80u16, - #[strum( - serialize = "VelocityRelativeY", - props( - docs = r#"The current velocity Y relative to the forward vector of this"#, - value = "81" - ) - )] - VelocityRelativeY = 81u16, - #[strum( - serialize = "VelocityRelativeZ", - props( - docs = r#"The current velocity Z relative to the forward vector of this"#, - value = "82" - ) - )] - VelocityRelativeZ = 82u16, - #[strum( - serialize = "RatioNitrousOxide", - props( - docs = r#"The ratio of Nitrous Oxide in device atmosphere"#, - value = "83" - ) - )] - RatioNitrousOxide = 83u16, - #[strum( - serialize = "PrefabHash", - props(docs = r#"The hash of the structure"#, value = "84") - )] - PrefabHash = 84u16, - #[strum( - serialize = "ForceWrite", - props(docs = r#"Forces Logic Writer devices to rewrite value"#, value = "85") - )] - ForceWrite = 85u16, - #[strum( - serialize = "SignalStrength", - props( - docs = r#"Returns the degree offset of the strongest contact"#, - value = "86" - ) - )] - SignalStrength = 86u16, - #[strum( - serialize = "SignalID", - props( - docs = r#"Returns the contact ID of the strongest signal from this Satellite"#, - value = "87" - ) - )] - SignalId = 87u16, - #[strum( - serialize = "TargetX", - props( - docs = r#"The target position in X dimension in world coordinates"#, - value = "88" - ) - )] - TargetX = 88u16, - #[strum( - serialize = "TargetY", - props( - docs = r#"The target position in Y dimension in world coordinates"#, - value = "89" - ) - )] - TargetY = 89u16, - #[strum( - serialize = "TargetZ", - props( - docs = r#"The target position in Z dimension in world coordinates"#, - value = "90" - ) - )] - TargetZ = 90u16, - #[strum( - serialize = "SettingInput", - props(docs = r#""#, value = "91") - )] - SettingInput = 91u16, - #[strum( - serialize = "SettingOutput", - props(docs = r#""#, value = "92") - )] - SettingOutput = 92u16, - #[strum( - serialize = "CurrentResearchPodType", - props(docs = r#""#, value = "93") - )] - CurrentResearchPodType = 93u16, - #[strum( - serialize = "ManualResearchRequiredPod", - props( - docs = r#"Sets the pod type to search for a certain pod when breaking down a pods."#, - value = "94" - ) - )] - ManualResearchRequiredPod = 94u16, - #[strum( - serialize = "MineablesInVicinity", - props( - docs = r#"Returns the amount of potential mineables within an extended area around AIMEe."#, - value = "95" - ) - )] - MineablesInVicinity = 95u16, - #[strum( - serialize = "MineablesInQueue", - props( - docs = r#"Returns the amount of mineables AIMEe has queued up to mine."#, - value = "96" - ) - )] - MineablesInQueue = 96u16, - #[strum( - serialize = "NextWeatherEventTime", - props( - docs = r#"Returns in seconds when the next weather event is inbound."#, - value = "97" - ) - )] - NextWeatherEventTime = 97u16, - #[strum( - serialize = "Combustion", - props( - docs = r#"The assess atmosphere is on fire. Returns 1 if atmosphere is on fire, 0 if not."#, - value = "98" - ) - )] - Combustion = 98u16, - #[strum( - serialize = "Fuel", - props( - docs = r#"Gets the cost of fuel to return the rocket to your current world."#, - value = "99" - ) - )] - Fuel = 99u16, - #[strum( - serialize = "ReturnFuelCost", - props( - docs = r#"Gets the fuel remaining in your rocket's fuel tank."#, - value = "100" - ) - )] - ReturnFuelCost = 100u16, - #[strum( - serialize = "CollectableGoods", - props( - docs = r#"Gets the cost of fuel to return the rocket to your current world."#, - value = "101" - ) - )] - CollectableGoods = 101u16, - #[strum(serialize = "Time", props(docs = r#"Time"#, value = "102"))] - Time = 102u16, - #[strum(serialize = "Bpm", props(docs = r#"Bpm"#, value = "103"))] - Bpm = 103u16, - #[strum( - serialize = "EnvironmentEfficiency", - props( - docs = r#"The Environment Efficiency reported by the machine, as a float between 0 and 1"#, - value = "104" - ) - )] - EnvironmentEfficiency = 104u16, - #[strum( - serialize = "WorkingGasEfficiency", - props( - docs = r#"The Working Gas Efficiency reported by the machine, as a float between 0 and 1"#, - value = "105" - ) - )] - WorkingGasEfficiency = 105u16, - #[strum( - serialize = "PressureInput", - props( - docs = r#"The current pressure reading of the device's Input Network"#, - value = "106" - ) - )] - PressureInput = 106u16, - #[strum( - serialize = "TemperatureInput", - props( - docs = r#"The current temperature reading of the device's Input Network"#, - value = "107" - ) - )] - TemperatureInput = 107u16, - #[strum( - serialize = "RatioOxygenInput", - props( - docs = r#"The ratio of oxygen in device's input network"#, - value = "108" - ) - )] - RatioOxygenInput = 108u16, - #[strum( - serialize = "RatioCarbonDioxideInput", - props( - docs = r#"The ratio of Carbon Dioxide in device's input network"#, - value = "109" - ) - )] - RatioCarbonDioxideInput = 109u16, - #[strum( - serialize = "RatioNitrogenInput", - props( - docs = r#"The ratio of nitrogen in device's input network"#, - value = "110" - ) - )] - RatioNitrogenInput = 110u16, - #[strum( - serialize = "RatioPollutantInput", - props( - docs = r#"The ratio of pollutant in device's input network"#, - value = "111" - ) - )] - RatioPollutantInput = 111u16, - #[strum( - serialize = "RatioVolatilesInput", - props( - docs = r#"The ratio of volatiles in device's input network"#, - value = "112" - ) - )] - RatioVolatilesInput = 112u16, - #[strum( - serialize = "RatioWaterInput", - props( - docs = r#"The ratio of water in device's input network"#, - value = "113" - ) - )] - RatioWaterInput = 113u16, - #[strum( - serialize = "RatioNitrousOxideInput", - props( - docs = r#"The ratio of Nitrous Oxide in device's input network"#, - value = "114" - ) - )] - RatioNitrousOxideInput = 114u16, - #[strum( - serialize = "TotalMolesInput", - props( - docs = r#"Returns the total moles of the device's Input Network"#, - value = "115" - ) - )] - TotalMolesInput = 115u16, - #[strum( - serialize = "PressureInput2", - props( - docs = r#"The current pressure reading of the device's Input2 Network"#, - value = "116" - ) - )] - PressureInput2 = 116u16, - #[strum( - serialize = "TemperatureInput2", - props( - docs = r#"The current temperature reading of the device's Input2 Network"#, - value = "117" - ) - )] - TemperatureInput2 = 117u16, - #[strum( - serialize = "RatioOxygenInput2", - props( - docs = r#"The ratio of oxygen in device's Input2 network"#, - value = "118" - ) - )] - RatioOxygenInput2 = 118u16, - #[strum( - serialize = "RatioCarbonDioxideInput2", - props( - docs = r#"The ratio of Carbon Dioxide in device's Input2 network"#, - value = "119" - ) - )] - RatioCarbonDioxideInput2 = 119u16, - #[strum( - serialize = "RatioNitrogenInput2", - props( - docs = r#"The ratio of nitrogen in device's Input2 network"#, - value = "120" - ) - )] - RatioNitrogenInput2 = 120u16, - #[strum( - serialize = "RatioPollutantInput2", - props( - docs = r#"The ratio of pollutant in device's Input2 network"#, - value = "121" - ) - )] - RatioPollutantInput2 = 121u16, - #[strum( - serialize = "RatioVolatilesInput2", - props( - docs = r#"The ratio of volatiles in device's Input2 network"#, - value = "122" - ) - )] - RatioVolatilesInput2 = 122u16, - #[strum( - serialize = "RatioWaterInput2", - props( - docs = r#"The ratio of water in device's Input2 network"#, - value = "123" - ) - )] - RatioWaterInput2 = 123u16, - #[strum( - serialize = "RatioNitrousOxideInput2", - props( - docs = r#"The ratio of Nitrous Oxide in device's Input2 network"#, - value = "124" - ) - )] - RatioNitrousOxideInput2 = 124u16, - #[strum( - serialize = "TotalMolesInput2", - props( - docs = r#"Returns the total moles of the device's Input2 Network"#, - value = "125" - ) - )] - TotalMolesInput2 = 125u16, - #[strum( - serialize = "PressureOutput", - props( - docs = r#"The current pressure reading of the device's Output Network"#, - value = "126" - ) - )] - PressureOutput = 126u16, - #[strum( - serialize = "TemperatureOutput", - props( - docs = r#"The current temperature reading of the device's Output Network"#, - value = "127" - ) - )] - TemperatureOutput = 127u16, - #[strum( - serialize = "RatioOxygenOutput", - props( - docs = r#"The ratio of oxygen in device's Output network"#, - value = "128" - ) - )] - RatioOxygenOutput = 128u16, - #[strum( - serialize = "RatioCarbonDioxideOutput", - props( - docs = r#"The ratio of Carbon Dioxide in device's Output network"#, - value = "129" - ) - )] - RatioCarbonDioxideOutput = 129u16, - #[strum( - serialize = "RatioNitrogenOutput", - props( - docs = r#"The ratio of nitrogen in device's Output network"#, - value = "130" - ) - )] - RatioNitrogenOutput = 130u16, - #[strum( - serialize = "RatioPollutantOutput", - props( - docs = r#"The ratio of pollutant in device's Output network"#, - value = "131" - ) - )] - RatioPollutantOutput = 131u16, - #[strum( - serialize = "RatioVolatilesOutput", - props( - docs = r#"The ratio of volatiles in device's Output network"#, - value = "132" - ) - )] - RatioVolatilesOutput = 132u16, - #[strum( - serialize = "RatioWaterOutput", - props( - docs = r#"The ratio of water in device's Output network"#, - value = "133" - ) - )] - RatioWaterOutput = 133u16, - #[strum( - serialize = "RatioNitrousOxideOutput", - props( - docs = r#"The ratio of Nitrous Oxide in device's Output network"#, - value = "134" - ) - )] - RatioNitrousOxideOutput = 134u16, - #[strum( - serialize = "TotalMolesOutput", - props( - docs = r#"Returns the total moles of the device's Output Network"#, - value = "135" - ) - )] - TotalMolesOutput = 135u16, - #[strum( - serialize = "PressureOutput2", - props( - docs = r#"The current pressure reading of the device's Output2 Network"#, - value = "136" - ) - )] - PressureOutput2 = 136u16, - #[strum( - serialize = "TemperatureOutput2", - props( - docs = r#"The current temperature reading of the device's Output2 Network"#, - value = "137" - ) - )] - TemperatureOutput2 = 137u16, - #[strum( - serialize = "RatioOxygenOutput2", - props( - docs = r#"The ratio of oxygen in device's Output2 network"#, - value = "138" - ) - )] - RatioOxygenOutput2 = 138u16, - #[strum( - serialize = "RatioCarbonDioxideOutput2", - props( - docs = r#"The ratio of Carbon Dioxide in device's Output2 network"#, - value = "139" - ) - )] - RatioCarbonDioxideOutput2 = 139u16, - #[strum( - serialize = "RatioNitrogenOutput2", - props( - docs = r#"The ratio of nitrogen in device's Output2 network"#, - value = "140" - ) - )] - RatioNitrogenOutput2 = 140u16, - #[strum( - serialize = "RatioPollutantOutput2", - props( - docs = r#"The ratio of pollutant in device's Output2 network"#, - value = "141" - ) - )] - RatioPollutantOutput2 = 141u16, - #[strum( - serialize = "RatioVolatilesOutput2", - props( - docs = r#"The ratio of volatiles in device's Output2 network"#, - value = "142" - ) - )] - RatioVolatilesOutput2 = 142u16, - #[strum( - serialize = "RatioWaterOutput2", - props( - docs = r#"The ratio of water in device's Output2 network"#, - value = "143" - ) - )] - RatioWaterOutput2 = 143u16, - #[strum( - serialize = "RatioNitrousOxideOutput2", - props( - docs = r#"The ratio of Nitrous Oxide in device's Output2 network"#, - value = "144" - ) - )] - RatioNitrousOxideOutput2 = 144u16, - #[strum( - serialize = "TotalMolesOutput2", - props( - docs = r#"Returns the total moles of the device's Output2 Network"#, - value = "145" - ) - )] - TotalMolesOutput2 = 145u16, - #[strum( - serialize = "CombustionInput", - props( - docs = r#"The assess atmosphere is on fire. Returns 1 if device's input network is on fire, 0 if not."#, - value = "146" - ) - )] - CombustionInput = 146u16, - #[strum( - serialize = "CombustionInput2", - props( - docs = r#"The assess atmosphere is on fire. Returns 1 if device's Input2 network is on fire, 0 if not."#, - value = "147" - ) - )] - CombustionInput2 = 147u16, - #[strum( - serialize = "CombustionOutput", - props( - docs = r#"The assess atmosphere is on fire. Returns 1 if device's Output network is on fire, 0 if not."#, - value = "148" - ) - )] - CombustionOutput = 148u16, - #[strum( - serialize = "CombustionOutput2", - props( - docs = r#"The assess atmosphere is on fire. Returns 1 if device's Output2 network is on fire, 0 if not."#, - value = "149" - ) - )] - CombustionOutput2 = 149u16, - #[strum( - serialize = "OperationalTemperatureEfficiency", - props( - docs = r#"How the input pipe's temperature effects the machines efficiency"#, - value = "150" - ) - )] - OperationalTemperatureEfficiency = 150u16, - #[strum( - serialize = "TemperatureDifferentialEfficiency", - props( - docs = r#"How the difference between the input pipe and waste pipe temperatures effect the machines efficiency"#, - value = "151" - ) - )] - TemperatureDifferentialEfficiency = 151u16, - #[strum( - serialize = "PressureEfficiency", - props( - docs = r#"How the pressure of the input pipe and waste pipe effect the machines efficiency"#, - value = "152" - ) - )] - PressureEfficiency = 152u16, - #[strum( - serialize = "CombustionLimiter", - props( - docs = r#"Retards the rate of combustion inside the machine (range: 0-100), with 0 being the slowest rate of combustion and 100 being the fastest"#, - value = "153" - ) - )] - CombustionLimiter = 153u16, - #[strum( - serialize = "Throttle", - props( - docs = r#"Increases the rate at which the machine works (range: 0-100)"#, - value = "154" - ) - )] - Throttle = 154u16, - #[strum( - serialize = "Rpm", - props( - docs = r#"The number of revolutions per minute that the device's spinning mechanism is doing"#, - value = "155" - ) - )] - Rpm = 155u16, - #[strum( - serialize = "Stress", - props( - docs = r#"Machines get stressed when working hard. When Stress reaches 100 the machine will automatically shut down"#, - value = "156" - ) - )] - Stress = 156u16, - #[strum( - serialize = "InterrogationProgress", - props( - docs = r#"Progress of this sattellite dish's interrogation of its current target, as a ratio from 0-1"#, - value = "157" - ) - )] - InterrogationProgress = 157u16, - #[strum( - serialize = "TargetPadIndex", - props( - docs = r#"The index of the trader landing pad on this devices data network that it will try to call a trader in to land"#, - value = "158" - ) - )] - TargetPadIndex = 158u16, - #[strum( - serialize = "SizeX", - props( - docs = r#"Size on the X (right) axis of the object in largeGrids (a largeGrid is 2meters)"#, - value = "160" - ) - )] - SizeX = 160u16, - #[strum( - serialize = "SizeY", - props( - docs = r#"Size on the Y(Up) axis of the object in largeGrids (a largeGrid is 2meters)"#, - value = "161" - ) - )] - SizeY = 161u16, - #[strum( - serialize = "SizeZ", - props( - docs = r#"Size on the Z(Forward) axis of the object in largeGrids (a largeGrid is 2meters)"#, - value = "162" - ) - )] - SizeZ = 162u16, - #[strum( - serialize = "MinimumWattsToContact", - props( - docs = r#"Minimum required amount of watts from the dish hitting the target trader contact to start interrogating the contact"#, - value = "163" - ) - )] - MinimumWattsToContact = 163u16, - #[strum( - serialize = "WattsReachingContact", - props( - docs = r#"The amount of watts actually hitting the contact. This is effected by the power of the dish and how far off-axis the dish is from the contact vector"#, - value = "164" - ) - )] - WattsReachingContact = 164u16, - #[strum( - serialize = "Channel0", - props( - docs = r#"Channel on a cable network which should be considered volatile"#, - value = "165" - ) - )] - Channel0 = 165u16, - #[strum( - serialize = "Channel1", - props( - docs = r#"Channel on a cable network which should be considered volatile"#, - value = "166" - ) - )] - Channel1 = 166u16, - #[strum( - serialize = "Channel2", - props( - docs = r#"Channel on a cable network which should be considered volatile"#, - value = "167" - ) - )] - Channel2 = 167u16, - #[strum( - serialize = "Channel3", - props( - docs = r#"Channel on a cable network which should be considered volatile"#, - value = "168" - ) - )] - Channel3 = 168u16, - #[strum( - serialize = "Channel4", - props( - docs = r#"Channel on a cable network which should be considered volatile"#, - value = "169" - ) - )] - Channel4 = 169u16, - #[strum( - serialize = "Channel5", - props( - docs = r#"Channel on a cable network which should be considered volatile"#, - value = "170" - ) - )] - Channel5 = 170u16, - #[strum( - serialize = "Channel6", - props( - docs = r#"Channel on a cable network which should be considered volatile"#, - value = "171" - ) - )] - Channel6 = 171u16, - #[strum( - serialize = "Channel7", - props( - docs = r#"Channel on a cable network which should be considered volatile"#, - value = "172" - ) - )] - Channel7 = 172u16, - #[strum( - serialize = "LineNumber", - props( - docs = r#"The line number of current execution for an integrated circuit running on this device. While this number can be written, use with caution"#, - value = "173" - ) - )] - LineNumber = 173u16, - #[strum( - serialize = "Flush", - props( - docs = r#"Set to 1 to activate the flush function on the device"#, - value = "174" - ) - )] - Flush = 174u16, - #[strum( - serialize = "SoundAlert", - props(docs = r#"Plays a sound alert on the devices speaker"#, value = "175") - )] - SoundAlert = 175u16, - #[strum( - serialize = "SolarIrradiance", - props(docs = r#""#, value = "176") - )] - SolarIrradiance = 176u16, - #[strum( - serialize = "RatioLiquidNitrogen", - props( - docs = r#"The ratio of Liquid Nitrogen in device atmosphere"#, - value = "177" - ) - )] - RatioLiquidNitrogen = 177u16, - #[strum( - serialize = "RatioLiquidNitrogenInput", - props( - docs = r#"The ratio of Liquid Nitrogen in device's input network"#, - value = "178" - ) - )] - RatioLiquidNitrogenInput = 178u16, - #[strum( - serialize = "RatioLiquidNitrogenInput2", - props( - docs = r#"The ratio of Liquid Nitrogen in device's Input2 network"#, - value = "179" - ) - )] - RatioLiquidNitrogenInput2 = 179u16, - #[strum( - serialize = "RatioLiquidNitrogenOutput", - props( - docs = r#"The ratio of Liquid Nitrogen in device's Output network"#, - value = "180" - ) - )] - RatioLiquidNitrogenOutput = 180u16, - #[strum( - serialize = "RatioLiquidNitrogenOutput2", - props( - docs = r#"The ratio of Liquid Nitrogen in device's Output2 network"#, - value = "181" - ) - )] - RatioLiquidNitrogenOutput2 = 181u16, - #[strum( - serialize = "VolumeOfLiquid", - props( - docs = r#"The total volume of all liquids in Liters in the atmosphere"#, - value = "182" - ) - )] - VolumeOfLiquid = 182u16, - #[strum( - serialize = "RatioLiquidOxygen", - props( - docs = r#"The ratio of Liquid Oxygen in device's Atmosphere"#, - value = "183" - ) - )] - RatioLiquidOxygen = 183u16, - #[strum( - serialize = "RatioLiquidOxygenInput", - props( - docs = r#"The ratio of Liquid Oxygen in device's Input Atmosphere"#, - value = "184" - ) - )] - RatioLiquidOxygenInput = 184u16, - #[strum( - serialize = "RatioLiquidOxygenInput2", - props( - docs = r#"The ratio of Liquid Oxygen in device's Input2 Atmosphere"#, - value = "185" - ) - )] - RatioLiquidOxygenInput2 = 185u16, - #[strum( - serialize = "RatioLiquidOxygenOutput", - props( - docs = r#"The ratio of Liquid Oxygen in device's device's Output Atmosphere"#, - value = "186" - ) - )] - RatioLiquidOxygenOutput = 186u16, - #[strum( - serialize = "RatioLiquidOxygenOutput2", - props( - docs = r#"The ratio of Liquid Oxygen in device's Output2 Atmopshere"#, - value = "187" - ) - )] - RatioLiquidOxygenOutput2 = 187u16, - #[strum( - serialize = "RatioLiquidVolatiles", - props( - docs = r#"The ratio of Liquid Volatiles in device's Atmosphere"#, - value = "188" - ) - )] - RatioLiquidVolatiles = 188u16, - #[strum( - serialize = "RatioLiquidVolatilesInput", - props( - docs = r#"The ratio of Liquid Volatiles in device's Input Atmosphere"#, - value = "189" - ) - )] - RatioLiquidVolatilesInput = 189u16, - #[strum( - serialize = "RatioLiquidVolatilesInput2", - props( - docs = r#"The ratio of Liquid Volatiles in device's Input2 Atmosphere"#, - value = "190" - ) - )] - RatioLiquidVolatilesInput2 = 190u16, - #[strum( - serialize = "RatioLiquidVolatilesOutput", - props( - docs = r#"The ratio of Liquid Volatiles in device's device's Output Atmosphere"#, - value = "191" - ) - )] - RatioLiquidVolatilesOutput = 191u16, - #[strum( - serialize = "RatioLiquidVolatilesOutput2", - props( - docs = r#"The ratio of Liquid Volatiles in device's Output2 Atmopshere"#, - value = "192" - ) - )] - RatioLiquidVolatilesOutput2 = 192u16, - #[strum( - serialize = "RatioSteam", - props( - docs = r#"The ratio of Steam in device's Atmosphere"#, - value = "193" - ) - )] - RatioSteam = 193u16, - #[strum( - serialize = "RatioSteamInput", - props( - docs = r#"The ratio of Steam in device's Input Atmosphere"#, - value = "194" - ) - )] - RatioSteamInput = 194u16, - #[strum( - serialize = "RatioSteamInput2", - props( - docs = r#"The ratio of Steam in device's Input2 Atmosphere"#, - value = "195" - ) - )] - RatioSteamInput2 = 195u16, - #[strum( - serialize = "RatioSteamOutput", - props( - docs = r#"The ratio of Steam in device's device's Output Atmosphere"#, - value = "196" - ) - )] - RatioSteamOutput = 196u16, - #[strum( - serialize = "RatioSteamOutput2", - props( - docs = r#"The ratio of Steam in device's Output2 Atmopshere"#, - value = "197" - ) - )] - RatioSteamOutput2 = 197u16, - #[strum( - serialize = "ContactTypeId", - props(docs = r#"The type id of the contact."#, value = "198") - )] - ContactTypeId = 198u16, - #[strum( - serialize = "RatioLiquidCarbonDioxide", - props( - docs = r#"The ratio of Liquid Carbon Dioxide in device's Atmosphere"#, - value = "199" - ) - )] - RatioLiquidCarbonDioxide = 199u16, - #[strum( - serialize = "RatioLiquidCarbonDioxideInput", - props( - docs = r#"The ratio of Liquid Carbon Dioxide in device's Input Atmosphere"#, - value = "200" - ) - )] - RatioLiquidCarbonDioxideInput = 200u16, - #[strum( - serialize = "RatioLiquidCarbonDioxideInput2", - props( - docs = r#"The ratio of Liquid Carbon Dioxide in device's Input2 Atmosphere"#, - value = "201" - ) - )] - RatioLiquidCarbonDioxideInput2 = 201u16, - #[strum( - serialize = "RatioLiquidCarbonDioxideOutput", - props( - docs = r#"The ratio of Liquid Carbon Dioxide in device's device's Output Atmosphere"#, - value = "202" - ) - )] - RatioLiquidCarbonDioxideOutput = 202u16, - #[strum( - serialize = "RatioLiquidCarbonDioxideOutput2", - props( - docs = r#"The ratio of Liquid Carbon Dioxide in device's Output2 Atmopshere"#, - value = "203" - ) - )] - RatioLiquidCarbonDioxideOutput2 = 203u16, - #[strum( - serialize = "RatioLiquidPollutant", - props( - docs = r#"The ratio of Liquid Pollutant in device's Atmosphere"#, - value = "204" - ) - )] - RatioLiquidPollutant = 204u16, - #[strum( - serialize = "RatioLiquidPollutantInput", - props( - docs = r#"The ratio of Liquid Pollutant in device's Input Atmosphere"#, - value = "205" - ) - )] - RatioLiquidPollutantInput = 205u16, - #[strum( - serialize = "RatioLiquidPollutantInput2", - props( - docs = r#"The ratio of Liquid Pollutant in device's Input2 Atmosphere"#, - value = "206" - ) - )] - RatioLiquidPollutantInput2 = 206u16, - #[strum( - serialize = "RatioLiquidPollutantOutput", - props( - docs = r#"The ratio of Liquid Pollutant in device's device's Output Atmosphere"#, - value = "207" - ) - )] - RatioLiquidPollutantOutput = 207u16, - #[strum( - serialize = "RatioLiquidPollutantOutput2", - props( - docs = r#"The ratio of Liquid Pollutant in device's Output2 Atmopshere"#, - value = "208" - ) - )] - RatioLiquidPollutantOutput2 = 208u16, - #[strum( - serialize = "RatioLiquidNitrousOxide", - props( - docs = r#"The ratio of Liquid Nitrous Oxide in device's Atmosphere"#, - value = "209" - ) - )] - RatioLiquidNitrousOxide = 209u16, - #[strum( - serialize = "RatioLiquidNitrousOxideInput", - props( - docs = r#"The ratio of Liquid Nitrous Oxide in device's Input Atmosphere"#, - value = "210" - ) - )] - RatioLiquidNitrousOxideInput = 210u16, - #[strum( - serialize = "RatioLiquidNitrousOxideInput2", - props( - docs = r#"The ratio of Liquid Nitrous Oxide in device's Input2 Atmosphere"#, - value = "211" - ) - )] - RatioLiquidNitrousOxideInput2 = 211u16, - #[strum( - serialize = "RatioLiquidNitrousOxideOutput", - props( - docs = r#"The ratio of Liquid Nitrous Oxide in device's device's Output Atmosphere"#, - value = "212" - ) - )] - RatioLiquidNitrousOxideOutput = 212u16, - #[strum( - serialize = "RatioLiquidNitrousOxideOutput2", - props( - docs = r#"The ratio of Liquid Nitrous Oxide in device's Output2 Atmopshere"#, - value = "213" - ) - )] - RatioLiquidNitrousOxideOutput2 = 213u16, - #[strum( - serialize = "Progress", - props( - docs = r#"Progress of the rocket to the next node on the map expressed as a value between 0-1."#, - value = "214" - ) - )] - Progress = 214u16, - #[strum( - serialize = "DestinationCode", - props( - docs = r#"The Space Map Address of the rockets target Space Map Location"#, - value = "215" - ) - )] - DestinationCode = 215u16, - #[strum( - serialize = "Acceleration", - props( - docs = r#"Change in velocity. Rockets that are deccelerating when landing will show this as negative value."#, - value = "216" - ) - )] - Acceleration = 216u16, - #[strum( - serialize = "ReferenceId", - props(docs = r#"Unique Reference Identifier for this object"#, value = "217") - )] - ReferenceId = 217u16, - #[strum( - serialize = "AutoShutOff", - props( - docs = r#"Turns off all devices in the rocket upon reaching destination"#, - value = "218" - ) - )] - AutoShutOff = 218u16, - #[strum( - serialize = "Mass", - props( - docs = r#"The total Mass of the rocket in kilograms including fuel and cargo. The more massive the rocket the more fuel will be required to move to a new location in space."#, - value = "219" - ) - )] - Mass = 219u16, - #[strum( - serialize = "DryMass", - props( - docs = r#"The Mass in kilograms of the rocket excluding fuel. The more massive the rocket the more fuel will be required to move to a new location in space."#, - value = "220" - ) - )] - DryMass = 220u16, - #[strum( - serialize = "Thrust", - props( - docs = r#"Total current thrust of all rocket engines on the rocket in Newtons."#, - value = "221" - ) - )] - Thrust = 221u16, - #[strum( - serialize = "Weight", - props( - docs = r#"Weight of Rocket in Newtons (Including fuel and cargo). Weight is effected by local body gravity."#, - value = "222" - ) - )] - Weight = 222u16, - #[strum( - serialize = "ThrustToWeight", - props( - docs = r#"Ratio of thrust to weight of rocket. Weight is effected by local body gravity. A rocket with a low thrust to weight will expend more fuel during launch and landing."#, - value = "223" - ) - )] - ThrustToWeight = 223u16, - #[strum( - serialize = "TimeToDestination", - props( - docs = r#"Estimated time in seconds until rocket arrives at target destination."#, - value = "224" - ) - )] - TimeToDestination = 224u16, - #[strum( - serialize = "BurnTimeRemaining", - props( - docs = r#"Estimated time in seconds until fuel is depleted. Calculated based on current fuel usage."#, - value = "225" - ) - )] - BurnTimeRemaining = 225u16, - #[strum( - serialize = "AutoLand", - props( - docs = r#"Engages the automatic landing algorithm. The rocket will automatically throttle and turn on and off its engines to achieve a smooth landing."#, - value = "226" - ) - )] - AutoLand = 226u16, - #[strum( - serialize = "ForwardX", - props( - docs = r#"The direction the entity is facing expressed as a normalized vector"#, - value = "227" - ) - )] - ForwardX = 227u16, - #[strum( - serialize = "ForwardY", - props( - docs = r#"The direction the entity is facing expressed as a normalized vector"#, - value = "228" - ) - )] - ForwardY = 228u16, - #[strum( - serialize = "ForwardZ", - props( - docs = r#"The direction the entity is facing expressed as a normalized vector"#, - value = "229" - ) - )] - ForwardZ = 229u16, - #[strum( - serialize = "Orientation", - props( - docs = r#"The orientation of the entity in degrees in a plane relative towards the north origin"#, - value = "230" - ) - )] - Orientation = 230u16, - #[strum( - serialize = "VelocityX", - props( - docs = r#"The world velocity of the entity in the X axis"#, - value = "231" - ) - )] - VelocityX = 231u16, - #[strum( - serialize = "VelocityY", - props( - docs = r#"The world velocity of the entity in the Y axis"#, - value = "232" - ) - )] - VelocityY = 232u16, - #[strum( - serialize = "VelocityZ", - props( - docs = r#"The world velocity of the entity in the Z axis"#, - value = "233" - ) - )] - VelocityZ = 233u16, - #[strum( - serialize = "PassedMoles", - props( - docs = r#"The number of moles that passed through this device on the previous simulation tick"#, - value = "234" - ) - )] - PassedMoles = 234u16, - #[strum( - serialize = "ExhaustVelocity", - props(docs = r#"The velocity of the exhaust gas in m/s"#, value = "235") - )] - ExhaustVelocity = 235u16, - #[strum( - serialize = "FlightControlRule", - props( - docs = r#"Flight control rule of rocket. None = 0, No AutoPilot. Normal = 1, Target Decent Apex of 60m. Alternate = 2, Velocity to High - Full throttle. Alternate2 = 3, Target an appropriate decent velocity as velocity is too low. FinalApproach = 4, Descend towards launch mount in a controlled manner."#, - value = "236" - ) - )] - FlightControlRule = 236u16, - #[strum( - serialize = "ReEntryAltitude", - props( - docs = r#"The altitude that the rocket will begin its decent to the pad. Must be between 25km and 120km"#, - value = "237" - ) - )] - ReEntryAltitude = 237u16, - #[strum( - serialize = "Apex", - props( - docs = r#"The lowest altitude that the rocket will reach before it starts travelling upwards again."#, - value = "238" - ) - )] - Apex = 238u16, - #[strum( - serialize = "EntityState", - props( - docs = r#"The current entity state, such as whether it is dead, unconscious or alive, expressed as a state integer."#, - value = "239" - ) - )] - EntityState = 239u16, - #[strum( - serialize = "DrillCondition", - props( - docs = r#"The current condition of the drill head in this devices drill slot. Expressed as a ratio between 0 and 1."#, - value = "240" - ) - )] - DrillCondition = 240u16, - #[strum( - serialize = "Index", - props(docs = r#"The current index for the device."#, value = "241") - )] - Index = 241u16, - #[strum( - serialize = "CelestialHash", - props( - docs = r#"The current hash of the targeted celestial object."#, - value = "242" - ) - )] - CelestialHash = 242u16, - #[strum( - serialize = "AlignmentError", - props( - docs = r#"The angular discrepancy between the telescope's current orientation and the target. Indicates how 'off target' the telescope is. Returns NaN when no target."#, - value = "243" - ) - )] - AlignmentError = 243u16, - #[strum( - serialize = "DistanceAu", - props( - docs = r#"The current distance to the celestial object, measured in astronomical units."#, - value = "244" - ) - )] - DistanceAu = 244u16, - #[strum( - serialize = "OrbitPeriod", - props( - docs = r#"The time it takes for an object to complete one full orbit around another object, measured in days. Indicates the duration of the orbital cycle."#, - value = "245" - ) - )] - OrbitPeriod = 245u16, - #[strum( - serialize = "Inclination", - props( - docs = r#"The tilt of an orbit's plane relative to the equatorial plane, measured in degrees. Defines the orbital plane's angle."#, - value = "246" - ) - )] - Inclination = 246u16, - #[strum( - serialize = "Eccentricity", - props( - docs = r#"A measure of how elliptical (oval) an orbit is. Ranges from 0 (a perfect circle) to 1 (a parabolic trajectory)."#, - value = "247" - ) - )] - Eccentricity = 247u16, - #[strum( - serialize = "SemiMajorAxis", - props( - docs = r#"The longest radius of an elliptical orbit in astronomical units, measuring half the major axis. Determines the size of the orbit."#, - value = "248" - ) - )] - SemiMajorAxis = 248u16, - #[strum( - serialize = "DistanceKm", - props( - docs = r#"The current distance to the celestial object, measured in kilometers."#, - value = "249" - ) - )] - DistanceKm = 249u16, - #[strum( - serialize = "CelestialParentHash", - props( - docs = r#"The hash for the name of the parent the celestial is orbiting, 0 if there is no parent celestial."#, - value = "250" - ) - )] - CelestialParentHash = 250u16, - #[strum( - serialize = "TrueAnomaly", - props( - docs = r#"An angular parameter that defines the position of a body moving along a Keplerian orbit. It is the angle between the direction of periapsis and the current position of the body, as seen from the main focus of the ellipse (the point around which the object orbits)."#, - value = "251" - ) - )] - TrueAnomaly = 251u16, - #[strum( - serialize = "RatioHydrogen", - props( - docs = r#"The ratio of Hydrogen in device's Atmopshere"#, - value = "252" - ) - )] - RatioHydrogen = 252u16, - #[strum( - serialize = "RatioLiquidHydrogen", - props( - docs = r#"The ratio of Liquid Hydrogen in device's Atmopshere"#, - value = "253" - ) - )] - RatioLiquidHydrogen = 253u16, - #[strum( - serialize = "RatioPollutedWater", - props( - docs = r#"The ratio of polluted water in device atmosphere"#, - value = "254" - ) - )] - RatioPollutedWater = 254u16, - #[strum( - serialize = "Discover", - props( - docs = r#"Progress status of Discovery scan at the rocket's target Space Map Location. Returns a clamped normalised value. If Discovery scan is not available returns -1."#, - value = "255" - ) - )] - Discover = 255u16, - #[strum( - serialize = "Chart", - props( - docs = r#"Progress status of Chart scan at the rocket's target Space Map Location. Returns a clamped normalised value. If Chart scan is not available returns -1."#, - value = "256" - ) - )] - Chart = 256u16, - #[strum( - serialize = "Survey", - props( - docs = r#"Progress status of Survey scan at the rocket's target Space Map Location. Returns a normalised value where 100% surveyed is equal to 1. If Survey scan is not available returns -1."#, - value = "257" - ) - )] - Survey = 257u16, - #[strum( - serialize = "NavPoints", - props( - docs = r#"The number of NavPoints at the rocket's target Space Map Location."#, - value = "258" - ) - )] - NavPoints = 258u16, - #[strum( - serialize = "ChartedNavPoints", - props( - docs = r#"The number of charted NavPoints at the rocket's target Space Map Location."#, - value = "259" - ) - )] - ChartedNavPoints = 259u16, - #[strum( - serialize = "Sites", - props( - docs = r#"The number of Sites that have been discovered at the rockets target Space Map location."#, - value = "260" - ) - )] - Sites = 260u16, - #[strum( - serialize = "CurrentCode", - props( - docs = r#"The Space Map Address of the rockets current Space Map Location"#, - value = "261" - ) - )] - CurrentCode = 261u16, - #[strum( - serialize = "Density", - props( - docs = r#"The density of the rocket's target site's mine-able deposit."#, - value = "262" - ) - )] - Density = 262u16, - #[strum( - serialize = "Richness", - props( - docs = r#"The richness of the rocket's target site's mine-able deposit."#, - value = "263" - ) - )] - Richness = 263u16, - #[strum( - serialize = "Size", - props( - docs = r#"The size of the rocket's target site's mine-able deposit."#, - value = "264" - ) - )] - Size = 264u16, - #[strum( - serialize = "TotalQuantity", - props( - docs = r#"The estimated total quantity of resources available to mine at the rocket's target Space Map Site."#, - value = "265" - ) - )] - TotalQuantity = 265u16, - #[strum( - serialize = "MinedQuantity", - props( - docs = r#"The total number of resources that have been mined at the rocket's target Space Map Site."#, - value = "266" - ) - )] - MinedQuantity = 266u16, - #[strum( - serialize = "BestContactFilter", - props( - docs = r#"Filters the satellite's auto selection of targets to a single reference ID."#, - value = "267" - ) - )] - BestContactFilter = 267u16, - #[strum( - serialize = "NameHash", - props( - docs = r#"Provides the hash value for the name of the object as a 32 bit integer."#, - value = "268" - ) - )] - NameHash = 268u16, -} diff --git a/ic10emu/src/vm/instructions/enums.rs b/ic10emu/src/vm/instructions/enums.rs index d3be1de..9ceb1f4 100644 --- a/ic10emu/src/vm/instructions/enums.rs +++ b/ic10emu/src/vm/instructions/enums.rs @@ -1,17 +1,5 @@ -// ================================================= -// !! <-----> DO NOT MODIFY <-----> !! -// -// This module was automatically generated by an -// xtask -// -// run `cargo xtask generate` from the workspace -// to regenerate -// -// ================================================= - use serde_derive::{Deserialize, Serialize}; use strum::{Display, EnumIter, EnumProperty, EnumString, FromRepr}; - use crate::vm::object::traits::Programmable; #[derive( Debug, @@ -23,857 +11,1128 @@ use crate::vm::object::traits::Programmable; Clone, Copy, Serialize, - Deserialize, - EnumIter, - EnumString, - EnumProperty, - FromRepr, + Deserialize )] +#[derive(EnumIter, EnumString, EnumProperty, FromRepr)] #[strum(use_phf, serialize_all = "lowercase")] #[serde(rename_all = "lowercase")] pub enum InstructionOp { Nop, - #[strum(props( - example = "abs r? a(r?|num)", - desc = "Register = the absolute value of a", - operands = "2" - ))] + #[strum( + props( + example = "abs r? a(r?|num)", + desc = "Register = the absolute value of a", + operands = "2" + ) + )] Abs, - #[strum(props( - example = "acos r? a(r?|num)", - desc = "Returns the cosine of the specified angle (radians)", - operands = "2" - ))] + #[strum( + props( + example = "acos r? a(r?|num)", + desc = "Returns the cosine of the specified angle (radians)", + operands = "2" + ) + )] Acos, - #[strum(props( - example = "add r? a(r?|num) b(r?|num)", - desc = "Register = a + b.", - operands = "3" - ))] + #[strum( + props( + example = "add r? a(r?|num) b(r?|num)", + desc = "Register = a + b.", + operands = "3" + ) + )] Add, - #[strum(props( - example = "alias str r?|d?", - desc = "Labels register or device reference with name, device references also affect what shows on the screws on the IC base.", - operands = "2" - ))] + #[strum( + props( + example = "alias str r?|d?", + desc = "Labels register or device reference with name, device references also affect what shows on the screws on the IC base.", + operands = "2" + ) + )] Alias, - #[strum(props( - example = "and r? a(r?|num) b(r?|num)", - desc = "Performs a bitwise logical AND operation on the binary representation of two values. Each bit of the result is determined by evaluating the corresponding bits of the input values. If both bits are 1, the resulting bit is set to 1. Otherwise the resulting bit is set to 0.", - operands = "3" - ))] + #[strum( + props( + example = "and r? a(r?|num) b(r?|num)", + desc = "Performs a bitwise logical AND operation on the binary representation of two values. Each bit of the result is determined by evaluating the corresponding bits of the input values. If both bits are 1, the resulting bit is set to 1. Otherwise the resulting bit is set to 0.", + operands = "3" + ) + )] And, - #[strum(props( - example = "asin r? a(r?|num)", - desc = "Returns the angle (radians) whos sine is the specified value", - operands = "2" - ))] + #[strum( + props( + example = "asin r? a(r?|num)", + desc = "Returns the angle (radians) whos sine is the specified value", + operands = "2" + ) + )] Asin, - #[strum(props( - example = "atan r? a(r?|num)", - desc = "Returns the angle (radians) whos tan is the specified value", - operands = "2" - ))] + #[strum( + props( + example = "atan r? a(r?|num)", + desc = "Returns the angle (radians) whos tan is the specified value", + operands = "2" + ) + )] Atan, - #[strum(props( - example = "atan2 r? a(r?|num) b(r?|num)", - desc = "Returns the angle (radians) whose tangent is the quotient of two specified values: a (y) and b (x)", - operands = "3" - ))] + #[strum( + props( + example = "atan2 r? a(r?|num) b(r?|num)", + desc = "Returns the angle (radians) whose tangent is the quotient of two specified values: a (y) and b (x)", + operands = "3" + ) + )] Atan2, - #[strum(props( - example = "bap a(r?|num) b(r?|num) c(r?|num) d(r?|num)", - desc = "Branch to line d if abs(a - b) <= max(c * max(abs(a), abs(b)), float.epsilon * 8)", - operands = "4" - ))] + #[strum( + props( + example = "bap a(r?|num) b(r?|num) c(r?|num) d(r?|num)", + desc = "Branch to line d if abs(a - b) <= max(c * max(abs(a), abs(b)), float.epsilon * 8)", + operands = "4" + ) + )] Bap, - #[strum(props( - example = "bapal a(r?|num) b(r?|num) c(r?|num) d(r?|num)", - desc = "Branch to line c if a != b and store next line number in ra", - operands = "4" - ))] + #[strum( + props( + example = "bapal a(r?|num) b(r?|num) c(r?|num) d(r?|num)", + desc = "Branch to line c if a != b and store next line number in ra", + operands = "4" + ) + )] Bapal, - #[strum(props( - example = "bapz a(r?|num) b(r?|num) c(r?|num)", - desc = "Branch to line c if abs(a) <= max(b * abs(a), float.epsilon * 8)", - operands = "3" - ))] + #[strum( + props( + example = "bapz a(r?|num) b(r?|num) c(r?|num)", + desc = "Branch to line c if abs(a) <= max(b * abs(a), float.epsilon * 8)", + operands = "3" + ) + )] Bapz, - #[strum(props( - example = "bapzal a(r?|num) b(r?|num) c(r?|num)", - desc = "Branch to line c if abs(a) <= max(b * abs(a), float.epsilon * 8) and store next line number in ra", - operands = "3" - ))] + #[strum( + props( + example = "bapzal a(r?|num) b(r?|num) c(r?|num)", + desc = "Branch to line c if abs(a) <= max(b * abs(a), float.epsilon * 8) and store next line number in ra", + operands = "3" + ) + )] Bapzal, - #[strum(props( - example = "bdns d? a(r?|num)", - desc = "Branch to line a if device d isn't set", - operands = "2" - ))] + #[strum( + props( + example = "bdns d? a(r?|num)", + desc = "Branch to line a if device d isn't set", + operands = "2" + ) + )] Bdns, - #[strum(props( - example = "bdnsal d? a(r?|num)", - desc = "Jump execution to line a and store next line number if device is not set", - operands = "2" - ))] + #[strum( + props( + example = "bdnsal d? a(r?|num)", + desc = "Jump execution to line a and store next line number if device is not set", + operands = "2" + ) + )] Bdnsal, - #[strum(props( - example = "bdse d? a(r?|num)", - desc = "Branch to line a if device d is set", - operands = "2" - ))] + #[strum( + props( + example = "bdse d? a(r?|num)", + desc = "Branch to line a if device d is set", + operands = "2" + ) + )] Bdse, - #[strum(props( - example = "bdseal d? a(r?|num)", - desc = "Jump execution to line a and store next line number if device is set", - operands = "2" - ))] + #[strum( + props( + example = "bdseal d? a(r?|num)", + desc = "Jump execution to line a and store next line number if device is set", + operands = "2" + ) + )] Bdseal, - #[strum(props( - example = "beq a(r?|num) b(r?|num) c(r?|num)", - desc = "Branch to line c if a == b", - operands = "3" - ))] + #[strum( + props( + example = "beq a(r?|num) b(r?|num) c(r?|num)", + desc = "Branch to line c if a == b", + operands = "3" + ) + )] Beq, - #[strum(props( - example = "beqal a(r?|num) b(r?|num) c(r?|num)", - desc = "Branch to line c if a == b and store next line number in ra", - operands = "3" - ))] + #[strum( + props( + example = "beqal a(r?|num) b(r?|num) c(r?|num)", + desc = "Branch to line c if a == b and store next line number in ra", + operands = "3" + ) + )] Beqal, - #[strum(props( - example = "beqz a(r?|num) b(r?|num)", - desc = "Branch to line b if a == 0", - operands = "2" - ))] + #[strum( + props( + example = "beqz a(r?|num) b(r?|num)", + desc = "Branch to line b if a == 0", + operands = "2" + ) + )] Beqz, - #[strum(props( - example = "beqzal a(r?|num) b(r?|num)", - desc = "Branch to line b if a == 0 and store next line number in ra", - operands = "2" - ))] + #[strum( + props( + example = "beqzal a(r?|num) b(r?|num)", + desc = "Branch to line b if a == 0 and store next line number in ra", + operands = "2" + ) + )] Beqzal, - #[strum(props( - example = "bge a(r?|num) b(r?|num) c(r?|num)", - desc = "Branch to line c if a >= b", - operands = "3" - ))] + #[strum( + props( + example = "bge a(r?|num) b(r?|num) c(r?|num)", + desc = "Branch to line c if a >= b", + operands = "3" + ) + )] Bge, - #[strum(props( - example = "bgeal a(r?|num) b(r?|num) c(r?|num)", - desc = "Branch to line c if a >= b and store next line number in ra", - operands = "3" - ))] + #[strum( + props( + example = "bgeal a(r?|num) b(r?|num) c(r?|num)", + desc = "Branch to line c if a >= b and store next line number in ra", + operands = "3" + ) + )] Bgeal, - #[strum(props( - example = "bgez a(r?|num) b(r?|num)", - desc = "Branch to line b if a >= 0", - operands = "2" - ))] + #[strum( + props( + example = "bgez a(r?|num) b(r?|num)", + desc = "Branch to line b if a >= 0", + operands = "2" + ) + )] Bgez, - #[strum(props( - example = "bgezal a(r?|num) b(r?|num)", - desc = "Branch to line b if a >= 0 and store next line number in ra", - operands = "2" - ))] + #[strum( + props( + example = "bgezal a(r?|num) b(r?|num)", + desc = "Branch to line b if a >= 0 and store next line number in ra", + operands = "2" + ) + )] Bgezal, - #[strum(props( - example = "bgt a(r?|num) b(r?|num) c(r?|num)", - desc = "Branch to line c if a > b", - operands = "3" - ))] + #[strum( + props( + example = "bgt a(r?|num) b(r?|num) c(r?|num)", + desc = "Branch to line c if a > b", + operands = "3" + ) + )] Bgt, - #[strum(props( - example = "bgtal a(r?|num) b(r?|num) c(r?|num)", - desc = "Branch to line c if a > b and store next line number in ra", - operands = "3" - ))] + #[strum( + props( + example = "bgtal a(r?|num) b(r?|num) c(r?|num)", + desc = "Branch to line c if a > b and store next line number in ra", + operands = "3" + ) + )] Bgtal, - #[strum(props( - example = "bgtz a(r?|num) b(r?|num)", - desc = "Branch to line b if a > 0", - operands = "2" - ))] + #[strum( + props( + example = "bgtz a(r?|num) b(r?|num)", + desc = "Branch to line b if a > 0", + operands = "2" + ) + )] Bgtz, - #[strum(props( - example = "bgtzal a(r?|num) b(r?|num)", - desc = "Branch to line b if a > 0 and store next line number in ra", - operands = "2" - ))] + #[strum( + props( + example = "bgtzal a(r?|num) b(r?|num)", + desc = "Branch to line b if a > 0 and store next line number in ra", + operands = "2" + ) + )] Bgtzal, - #[strum(props( - example = "ble a(r?|num) b(r?|num) c(r?|num)", - desc = "Branch to line c if a <= b", - operands = "3" - ))] + #[strum( + props( + example = "ble a(r?|num) b(r?|num) c(r?|num)", + desc = "Branch to line c if a <= b", + operands = "3" + ) + )] Ble, - #[strum(props( - example = "bleal a(r?|num) b(r?|num) c(r?|num)", - desc = "Branch to line c if a <= b and store next line number in ra", - operands = "3" - ))] + #[strum( + props( + example = "bleal a(r?|num) b(r?|num) c(r?|num)", + desc = "Branch to line c if a <= b and store next line number in ra", + operands = "3" + ) + )] Bleal, - #[strum(props( - example = "blez a(r?|num) b(r?|num)", - desc = "Branch to line b if a <= 0", - operands = "2" - ))] + #[strum( + props( + example = "blez a(r?|num) b(r?|num)", + desc = "Branch to line b if a <= 0", + operands = "2" + ) + )] Blez, - #[strum(props( - example = "blezal a(r?|num) b(r?|num)", - desc = "Branch to line b if a <= 0 and store next line number in ra", - operands = "2" - ))] + #[strum( + props( + example = "blezal a(r?|num) b(r?|num)", + desc = "Branch to line b if a <= 0 and store next line number in ra", + operands = "2" + ) + )] Blezal, - #[strum(props( - example = "blt a(r?|num) b(r?|num) c(r?|num)", - desc = "Branch to line c if a < b", - operands = "3" - ))] + #[strum( + props( + example = "blt a(r?|num) b(r?|num) c(r?|num)", + desc = "Branch to line c if a < b", + operands = "3" + ) + )] Blt, - #[strum(props( - example = "bltal a(r?|num) b(r?|num) c(r?|num)", - desc = "Branch to line c if a < b and store next line number in ra", - operands = "3" - ))] + #[strum( + props( + example = "bltal a(r?|num) b(r?|num) c(r?|num)", + desc = "Branch to line c if a < b and store next line number in ra", + operands = "3" + ) + )] Bltal, - #[strum(props( - example = "bltz a(r?|num) b(r?|num)", - desc = "Branch to line b if a < 0", - operands = "2" - ))] + #[strum( + props( + example = "bltz a(r?|num) b(r?|num)", + desc = "Branch to line b if a < 0", + operands = "2" + ) + )] Bltz, - #[strum(props( - example = "bltzal a(r?|num) b(r?|num)", - desc = "Branch to line b if a < 0 and store next line number in ra", - operands = "2" - ))] + #[strum( + props( + example = "bltzal a(r?|num) b(r?|num)", + desc = "Branch to line b if a < 0 and store next line number in ra", + operands = "2" + ) + )] Bltzal, - #[strum(props( - example = "bna a(r?|num) b(r?|num) c(r?|num) d(r?|num)", - desc = "Branch to line d if abs(a - b) > max(c * max(abs(a), abs(b)), float.epsilon * 8)", - operands = "4" - ))] + #[strum( + props( + example = "bna a(r?|num) b(r?|num) c(r?|num) d(r?|num)", + desc = "Branch to line d if abs(a - b) > max(c * max(abs(a), abs(b)), float.epsilon * 8)", + operands = "4" + ) + )] Bna, - #[strum(props( - example = "bnaal a(r?|num) b(r?|num) c(r?|num) d(r?|num)", - desc = "Branch to line d if abs(a - b) <= max(c * max(abs(a), abs(b)), float.epsilon * 8) and store next line number in ra", - operands = "4" - ))] + #[strum( + props( + example = "bnaal a(r?|num) b(r?|num) c(r?|num) d(r?|num)", + desc = "Branch to line d if abs(a - b) <= max(c * max(abs(a), abs(b)), float.epsilon * 8) and store next line number in ra", + operands = "4" + ) + )] Bnaal, - #[strum(props( - example = "bnan a(r?|num) b(r?|num)", - desc = "Branch to line b if a is not a number (NaN)", - operands = "2" - ))] + #[strum( + props( + example = "bnan a(r?|num) b(r?|num)", + desc = "Branch to line b if a is not a number (NaN)", + operands = "2" + ) + )] Bnan, - #[strum(props( - example = "bnaz a(r?|num) b(r?|num) c(r?|num)", - desc = "Branch to line c if abs(a) > max (b * abs(a), float.epsilon * 8)", - operands = "3" - ))] + #[strum( + props( + example = "bnaz a(r?|num) b(r?|num) c(r?|num)", + desc = "Branch to line c if abs(a) > max (b * abs(a), float.epsilon * 8)", + operands = "3" + ) + )] Bnaz, - #[strum(props( - example = "bnazal a(r?|num) b(r?|num) c(r?|num)", - desc = "Branch to line c if abs(a) > max (b * abs(a), float.epsilon * 8) and store next line number in ra", - operands = "3" - ))] + #[strum( + props( + example = "bnazal a(r?|num) b(r?|num) c(r?|num)", + desc = "Branch to line c if abs(a) > max (b * abs(a), float.epsilon * 8) and store next line number in ra", + operands = "3" + ) + )] Bnazal, - #[strum(props( - example = "bne a(r?|num) b(r?|num) c(r?|num)", - desc = "Branch to line c if a != b", - operands = "3" - ))] + #[strum( + props( + example = "bne a(r?|num) b(r?|num) c(r?|num)", + desc = "Branch to line c if a != b", + operands = "3" + ) + )] Bne, - #[strum(props( - example = "bneal a(r?|num) b(r?|num) c(r?|num)", - desc = "Branch to line c if a != b and store next line number in ra", - operands = "3" - ))] + #[strum( + props( + example = "bneal a(r?|num) b(r?|num) c(r?|num)", + desc = "Branch to line c if a != b and store next line number in ra", + operands = "3" + ) + )] Bneal, - #[strum(props( - example = "bnez a(r?|num) b(r?|num)", - desc = "branch to line b if a != 0", - operands = "2" - ))] + #[strum( + props( + example = "bnez a(r?|num) b(r?|num)", + desc = "branch to line b if a != 0", + operands = "2" + ) + )] Bnez, - #[strum(props( - example = "bnezal a(r?|num) b(r?|num)", - desc = "Branch to line b if a != 0 and store next line number in ra", - operands = "2" - ))] + #[strum( + props( + example = "bnezal a(r?|num) b(r?|num)", + desc = "Branch to line b if a != 0 and store next line number in ra", + operands = "2" + ) + )] Bnezal, - #[strum(props( - example = "brap a(r?|num) b(r?|num) c(r?|num) d(r?|num)", - desc = "Relative branch to line d if abs(a - b) <= max(c * max(abs(a), abs(b)), float.epsilon * 8)", - operands = "4" - ))] + #[strum( + props( + example = "brap a(r?|num) b(r?|num) c(r?|num) d(r?|num)", + desc = "Relative branch to line d if abs(a - b) <= max(c * max(abs(a), abs(b)), float.epsilon * 8)", + operands = "4" + ) + )] Brap, - #[strum(props( - example = "brapz a(r?|num) b(r?|num) c(r?|num)", - desc = "Relative branch to line c if abs(a) <= max(b * abs(a), float.epsilon * 8)", - operands = "3" - ))] + #[strum( + props( + example = "brapz a(r?|num) b(r?|num) c(r?|num)", + desc = "Relative branch to line c if abs(a) <= max(b * abs(a), float.epsilon * 8)", + operands = "3" + ) + )] Brapz, - #[strum(props( - example = "brdns d? a(r?|num)", - desc = "Relative jump to line a if device is not set", - operands = "2" - ))] + #[strum( + props( + example = "brdns d? a(r?|num)", + desc = "Relative jump to line a if device is not set", + operands = "2" + ) + )] Brdns, - #[strum(props( - example = "brdse d? a(r?|num)", - desc = "Relative jump to line a if device is set", - operands = "2" - ))] + #[strum( + props( + example = "brdse d? a(r?|num)", + desc = "Relative jump to line a if device is set", + operands = "2" + ) + )] Brdse, - #[strum(props( - example = "breq a(r?|num) b(r?|num) c(r?|num)", - desc = "Relative branch to line c if a == b", - operands = "3" - ))] + #[strum( + props( + example = "breq a(r?|num) b(r?|num) c(r?|num)", + desc = "Relative branch to line c if a == b", + operands = "3" + ) + )] Breq, - #[strum(props( - example = "breqz a(r?|num) b(r?|num)", - desc = "Relative branch to line b if a == 0", - operands = "2" - ))] + #[strum( + props( + example = "breqz a(r?|num) b(r?|num)", + desc = "Relative branch to line b if a == 0", + operands = "2" + ) + )] Breqz, - #[strum(props( - example = "brge a(r?|num) b(r?|num) c(r?|num)", - desc = "Relative jump to line c if a >= b", - operands = "3" - ))] + #[strum( + props( + example = "brge a(r?|num) b(r?|num) c(r?|num)", + desc = "Relative jump to line c if a >= b", + operands = "3" + ) + )] Brge, - #[strum(props( - example = "brgez a(r?|num) b(r?|num)", - desc = "Relative branch to line b if a >= 0", - operands = "2" - ))] + #[strum( + props( + example = "brgez a(r?|num) b(r?|num)", + desc = "Relative branch to line b if a >= 0", + operands = "2" + ) + )] Brgez, - #[strum(props( - example = "brgt a(r?|num) b(r?|num) c(r?|num)", - desc = "relative jump to line c if a > b", - operands = "3" - ))] + #[strum( + props( + example = "brgt a(r?|num) b(r?|num) c(r?|num)", + desc = "relative jump to line c if a > b", + operands = "3" + ) + )] Brgt, - #[strum(props( - example = "brgtz a(r?|num) b(r?|num)", - desc = "Relative branch to line b if a > 0", - operands = "2" - ))] + #[strum( + props( + example = "brgtz a(r?|num) b(r?|num)", + desc = "Relative branch to line b if a > 0", + operands = "2" + ) + )] Brgtz, - #[strum(props( - example = "brle a(r?|num) b(r?|num) c(r?|num)", - desc = "Relative jump to line c if a <= b", - operands = "3" - ))] + #[strum( + props( + example = "brle a(r?|num) b(r?|num) c(r?|num)", + desc = "Relative jump to line c if a <= b", + operands = "3" + ) + )] Brle, - #[strum(props( - example = "brlez a(r?|num) b(r?|num)", - desc = "Relative branch to line b if a <= 0", - operands = "2" - ))] + #[strum( + props( + example = "brlez a(r?|num) b(r?|num)", + desc = "Relative branch to line b if a <= 0", + operands = "2" + ) + )] Brlez, - #[strum(props( - example = "brlt a(r?|num) b(r?|num) c(r?|num)", - desc = "Relative jump to line c if a < b", - operands = "3" - ))] + #[strum( + props( + example = "brlt a(r?|num) b(r?|num) c(r?|num)", + desc = "Relative jump to line c if a < b", + operands = "3" + ) + )] Brlt, - #[strum(props( - example = "brltz a(r?|num) b(r?|num)", - desc = "Relative branch to line b if a < 0", - operands = "2" - ))] + #[strum( + props( + example = "brltz a(r?|num) b(r?|num)", + desc = "Relative branch to line b if a < 0", + operands = "2" + ) + )] Brltz, - #[strum(props( - example = "brna a(r?|num) b(r?|num) c(r?|num) d(r?|num)", - desc = "Relative branch to line d if abs(a - b) > max(c * max(abs(a), abs(b)), float.epsilon * 8)", - operands = "4" - ))] + #[strum( + props( + example = "brna a(r?|num) b(r?|num) c(r?|num) d(r?|num)", + desc = "Relative branch to line d if abs(a - b) > max(c * max(abs(a), abs(b)), float.epsilon * 8)", + operands = "4" + ) + )] Brna, - #[strum(props( - example = "brnan a(r?|num) b(r?|num)", - desc = "Relative branch to line b if a is not a number (NaN)", - operands = "2" - ))] + #[strum( + props( + example = "brnan a(r?|num) b(r?|num)", + desc = "Relative branch to line b if a is not a number (NaN)", + operands = "2" + ) + )] Brnan, - #[strum(props( - example = "brnaz a(r?|num) b(r?|num) c(r?|num)", - desc = "Relative branch to line c if abs(a) > max(b * abs(a), float.epsilon * 8)", - operands = "3" - ))] + #[strum( + props( + example = "brnaz a(r?|num) b(r?|num) c(r?|num)", + desc = "Relative branch to line c if abs(a) > max(b * abs(a), float.epsilon * 8)", + operands = "3" + ) + )] Brnaz, - #[strum(props( - example = "brne a(r?|num) b(r?|num) c(r?|num)", - desc = "Relative branch to line c if a != b", - operands = "3" - ))] + #[strum( + props( + example = "brne a(r?|num) b(r?|num) c(r?|num)", + desc = "Relative branch to line c if a != b", + operands = "3" + ) + )] Brne, - #[strum(props( - example = "brnez a(r?|num) b(r?|num)", - desc = "Relative branch to line b if a != 0", - operands = "2" - ))] + #[strum( + props( + example = "brnez a(r?|num) b(r?|num)", + desc = "Relative branch to line b if a != 0", + operands = "2" + ) + )] Brnez, - #[strum(props( - example = "ceil r? a(r?|num)", - desc = "Register = smallest integer greater than a", - operands = "2" - ))] + #[strum( + props( + example = "ceil r? a(r?|num)", + desc = "Register = smallest integer greater than a", + operands = "2" + ) + )] Ceil, - #[strum(props( - example = "clr d?", - desc = "Clears the stack memory for the provided device.", - operands = "1" - ))] + #[strum( + props( + example = "clr d?", + desc = "Clears the stack memory for the provided device.", + operands = "1" + ) + )] Clr, - #[strum(props( - example = "clrd id(r?|num)", - desc = "Seeks directly for the provided device id and clears the stack memory of that device", - operands = "1" - ))] + #[strum( + props( + example = "clrd id(r?|num)", + desc = "Seeks directly for the provided device id and clears the stack memory of that device", + operands = "1" + ) + )] Clrd, - #[strum(props( - example = "cos r? a(r?|num)", - desc = "Returns the cosine of the specified angle (radians)", - operands = "2" - ))] + #[strum( + props( + example = "cos r? a(r?|num)", + desc = "Returns the cosine of the specified angle (radians)", + operands = "2" + ) + )] Cos, - #[strum(props( - example = "define str num", - desc = "Creates a label that will be replaced throughout the program with the provided value.", - operands = "2" - ))] + #[strum( + props( + example = "define str num", + desc = "Creates a label that will be replaced throughout the program with the provided value.", + operands = "2" + ) + )] Define, - #[strum(props( - example = "div r? a(r?|num) b(r?|num)", - desc = "Register = a / b", - operands = "3" - ))] + #[strum( + props( + example = "div r? a(r?|num) b(r?|num)", + desc = "Register = a / b", + operands = "3" + ) + )] Div, - #[strum(props( - example = "exp r? a(r?|num)", - desc = "Register = exp(a) or e^a", - operands = "2" - ))] + #[strum( + props( + example = "exp r? a(r?|num)", + desc = "Register = exp(a) or e^a", + operands = "2" + ) + )] Exp, - #[strum(props( - example = "floor r? a(r?|num)", - desc = "Register = largest integer less than a", - operands = "2" - ))] + #[strum( + props( + example = "floor r? a(r?|num)", + desc = "Register = largest integer less than a", + operands = "2" + ) + )] Floor, - #[strum(props( - example = "get r? d? address(r?|num)", - desc = "Using the provided device, attempts to read the stack value at the provided address, and places it in the register.", - operands = "3" - ))] + #[strum( + props( + example = "get r? d? address(r?|num)", + desc = "Using the provided device, attempts to read the stack value at the provided address, and places it in the register.", + operands = "3" + ) + )] Get, - #[strum(props( - example = "getd r? id(r?|num) address(r?|num)", - desc = "Seeks directly for the provided device id, attempts to read the stack value at the provided address, and places it in the register.", - operands = "3" - ))] + #[strum( + props( + example = "getd r? id(r?|num) address(r?|num)", + desc = "Seeks directly for the provided device id, attempts to read the stack value at the provided address, and places it in the register.", + operands = "3" + ) + )] Getd, #[strum(props(example = "hcf", desc = "Halt and catch fire", operands = "0"))] Hcf, #[strum(props(example = "j int", desc = "Jump execution to line a", operands = "1"))] J, - #[strum(props( - example = "jal int", - desc = "Jump execution to line a and store next line number in ra", - operands = "1" - ))] + #[strum( + props( + example = "jal int", + desc = "Jump execution to line a and store next line number in ra", + operands = "1" + ) + )] Jal, #[strum(props(example = "jr int", desc = "Relative jump to line a", operands = "1"))] Jr, - #[strum(props( - example = "l r? d? logicType", - desc = "Loads device LogicType to register by housing index value.", - operands = "3" - ))] + #[strum( + props( + example = "l r? d? logicType", + desc = "Loads device LogicType to register by housing index value.", + operands = "3" + ) + )] L, #[strum(props(example = "label d? str", desc = "DEPRECATED", operands = "2"))] Label, - #[strum(props( - example = "lb r? deviceHash logicType batchMode", - desc = "Loads LogicType from all output network devices with provided type hash using the provide batch mode. Average (0), Sum (1), Minimum (2), Maximum (3). Can use either the word, or the number.", - operands = "4" - ))] + #[strum( + props( + example = "lb r? deviceHash logicType batchMode", + desc = "Loads LogicType from all output network devices with provided type hash using the provide batch mode. Average (0), Sum (1), Minimum (2), Maximum (3). Can use either the word, or the number.", + operands = "4" + ) + )] Lb, - #[strum(props( - example = "lbn r? deviceHash nameHash logicType batchMode", - desc = "Loads LogicType from all output network devices with provided type and name hashes using the provide batch mode. Average (0), Sum (1), Minimum (2), Maximum (3). Can use either the word, or the number.", - operands = "5" - ))] + #[strum( + props( + example = "lbn r? deviceHash nameHash logicType batchMode", + desc = "Loads LogicType from all output network devices with provided type and name hashes using the provide batch mode. Average (0), Sum (1), Minimum (2), Maximum (3). Can use either the word, or the number.", + operands = "5" + ) + )] Lbn, - #[strum(props( - example = "lbns r? deviceHash nameHash slotIndex logicSlotType batchMode", - desc = "Loads LogicSlotType from slotIndex from all output network devices with provided type and name hashes using the provide batch mode. Average (0), Sum (1), Minimum (2), Maximum (3). Can use either the word, or the number.", - operands = "6" - ))] + #[strum( + props( + example = "lbns r? deviceHash nameHash slotIndex logicSlotType batchMode", + desc = "Loads LogicSlotType from slotIndex from all output network devices with provided type and name hashes using the provide batch mode. Average (0), Sum (1), Minimum (2), Maximum (3). Can use either the word, or the number.", + operands = "6" + ) + )] Lbns, - #[strum(props( - example = "lbs r? deviceHash slotIndex logicSlotType batchMode", - desc = "Loads LogicSlotType from slotIndex from all output network devices with provided type hash using the provide batch mode. Average (0), Sum (1), Minimum (2), Maximum (3). Can use either the word, or the number.", - operands = "5" - ))] + #[strum( + props( + example = "lbs r? deviceHash slotIndex logicSlotType batchMode", + desc = "Loads LogicSlotType from slotIndex from all output network devices with provided type hash using the provide batch mode. Average (0), Sum (1), Minimum (2), Maximum (3). Can use either the word, or the number.", + operands = "5" + ) + )] Lbs, - #[strum(props( - example = "ld r? id(r?|num) logicType", - desc = "Loads device LogicType to register by direct ID reference.", - operands = "3" - ))] + #[strum( + props( + example = "ld r? id(r?|num) logicType", + desc = "Loads device LogicType to register by direct ID reference.", + operands = "3" + ) + )] Ld, - #[strum(props( - example = "log r? a(r?|num)", - desc = "Register = base e log(a) or ln(a)", - operands = "2" - ))] + #[strum( + props( + example = "log r? a(r?|num)", + desc = "Register = base e log(a) or ln(a)", + operands = "2" + ) + )] Log, - #[strum(props( - example = "lr r? d? reagentMode int", - desc = "Loads reagent of device's ReagentMode where a hash of the reagent type to check for. ReagentMode can be either Contents (0), Required (1), Recipe (2). Can use either the word, or the number.", - operands = "4" - ))] + #[strum( + props( + example = "lr r? d? reagentMode int", + desc = "Loads reagent of device's ReagentMode where a hash of the reagent type to check for. ReagentMode can be either Contents (0), Required (1), Recipe (2). Can use either the word, or the number.", + operands = "4" + ) + )] Lr, - #[strum(props( - example = "ls r? d? slotIndex logicSlotType", - desc = "Loads slot LogicSlotType on device to register.", - operands = "4" - ))] + #[strum( + props( + example = "ls r? d? slotIndex logicSlotType", + desc = "Loads slot LogicSlotType on device to register.", + operands = "4" + ) + )] Ls, - #[strum(props( - example = "max r? a(r?|num) b(r?|num)", - desc = "Register = max of a or b", - operands = "3" - ))] + #[strum( + props( + example = "max r? a(r?|num) b(r?|num)", + desc = "Register = max of a or b", + operands = "3" + ) + )] Max, - #[strum(props( - example = "min r? a(r?|num) b(r?|num)", - desc = "Register = min of a or b", - operands = "3" - ))] + #[strum( + props( + example = "min r? a(r?|num) b(r?|num)", + desc = "Register = min of a or b", + operands = "3" + ) + )] Min, - #[strum(props( - example = "mod r? a(r?|num) b(r?|num)", - desc = "Register = a mod b (note: NOT a % b)", - operands = "3" - ))] + #[strum( + props( + example = "mod r? a(r?|num) b(r?|num)", + desc = "Register = a mod b (note: NOT a % b)", + operands = "3" + ) + )] Mod, - #[strum(props( - example = "move r? a(r?|num)", - desc = "Register = provided num or register value.", - operands = "2" - ))] + #[strum( + props( + example = "move r? a(r?|num)", + desc = "Register = provided num or register value.", + operands = "2" + ) + )] Move, - #[strum(props( - example = "mul r? a(r?|num) b(r?|num)", - desc = "Register = a * b", - operands = "3" - ))] + #[strum( + props( + example = "mul r? a(r?|num) b(r?|num)", + desc = "Register = a * b", + operands = "3" + ) + )] Mul, - #[strum(props( - example = "nor r? a(r?|num) b(r?|num)", - desc = "Performs a bitwise logical NOR (NOT OR) operation on the binary representation of two values. Each bit of the result is determined by evaluating the corresponding bits of the input values. If both bits are 0, the resulting bit is set to 1. Otherwise, if at least one bit is 1, the resulting bit is set to 0.", - operands = "3" - ))] + #[strum( + props( + example = "nor r? a(r?|num) b(r?|num)", + desc = "Performs a bitwise logical NOR (NOT OR) operation on the binary representation of two values. Each bit of the result is determined by evaluating the corresponding bits of the input values. If both bits are 0, the resulting bit is set to 1. Otherwise, if at least one bit is 1, the resulting bit is set to 0.", + operands = "3" + ) + )] Nor, - #[strum(props( - example = "not r? a(r?|num)", - desc = "Performs a bitwise logical NOT operation flipping each bit of the input value, resulting in a binary complement. If a bit is 1, it becomes 0, and if a bit is 0, it becomes 1.", - operands = "2" - ))] + #[strum( + props( + example = "not r? a(r?|num)", + desc = "Performs a bitwise logical NOT operation flipping each bit of the input value, resulting in a binary complement. If a bit is 1, it becomes 0, and if a bit is 0, it becomes 1.", + operands = "2" + ) + )] Not, - #[strum(props( - example = "or r? a(r?|num) b(r?|num)", - desc = "Performs a bitwise logical OR operation on the binary representation of two values. Each bit of the result is determined by evaluating the corresponding bits of the input values. If either bit is 1, the resulting bit is set to 1. If both bits are 0, the resulting bit is set to 0.", - operands = "3" - ))] + #[strum( + props( + example = "or r? a(r?|num) b(r?|num)", + desc = "Performs a bitwise logical OR operation on the binary representation of two values. Each bit of the result is determined by evaluating the corresponding bits of the input values. If either bit is 1, the resulting bit is set to 1. If both bits are 0, the resulting bit is set to 0.", + operands = "3" + ) + )] Or, - #[strum(props( - example = "peek r?", - desc = "Register = the value at the top of the stack", - operands = "1" - ))] + #[strum( + props( + example = "peek r?", + desc = "Register = the value at the top of the stack", + operands = "1" + ) + )] Peek, - #[strum(props( - example = "poke address(r?|num) value(r?|num)", - desc = "Stores the provided value at the provided address in the stack.", - operands = "2" - ))] + #[strum( + props( + example = "poke address(r?|num) value(r?|num)", + desc = "Stores the provided value at the provided address in the stack.", + operands = "2" + ) + )] Poke, - #[strum(props( - example = "pop r?", - desc = "Register = the value at the top of the stack and decrements sp", - operands = "1" - ))] + #[strum( + props( + example = "pop r?", + desc = "Register = the value at the top of the stack and decrements sp", + operands = "1" + ) + )] Pop, - #[strum(props( - example = "push a(r?|num)", - desc = "Pushes the value of a to the stack at sp and increments sp", - operands = "1" - ))] + #[strum( + props( + example = "push a(r?|num)", + desc = "Pushes the value of a to the stack at sp and increments sp", + operands = "1" + ) + )] Push, - #[strum(props( - example = "put d? address(r?|num) value(r?|num)", - desc = "Using the provided device, attempts to write the provided value to the stack at the provided address.", - operands = "3" - ))] + #[strum( + props( + example = "put d? address(r?|num) value(r?|num)", + desc = "Using the provided device, attempts to write the provided value to the stack at the provided address.", + operands = "3" + ) + )] Put, - #[strum(props( - example = "putd id(r?|num) address(r?|num) value(r?|num)", - desc = "Seeks directly for the provided device id, attempts to write the provided value to the stack at the provided address.", - operands = "3" - ))] + #[strum( + props( + example = "putd id(r?|num) address(r?|num) value(r?|num)", + desc = "Seeks directly for the provided device id, attempts to write the provided value to the stack at the provided address.", + operands = "3" + ) + )] Putd, - #[strum(props( - example = "rand r?", - desc = "Register = a random value x with 0 <= x < 1", - operands = "1" - ))] + #[strum( + props( + example = "rand r?", + desc = "Register = a random value x with 0 <= x < 1", + operands = "1" + ) + )] Rand, - #[strum(props( - example = "round r? a(r?|num)", - desc = "Register = a rounded to nearest integer", - operands = "2" - ))] + #[strum( + props( + example = "round r? a(r?|num)", + desc = "Register = a rounded to nearest integer", + operands = "2" + ) + )] Round, - #[strum(props( - example = "s d? logicType r?", - desc = "Stores register value to LogicType on device by housing index value.", - operands = "3" - ))] + #[strum( + props( + example = "s d? logicType r?", + desc = "Stores register value to LogicType on device by housing index value.", + operands = "3" + ) + )] S, - #[strum(props( - example = "sap r? a(r?|num) b(r?|num) c(r?|num)", - desc = "Register = 1 if abs(a - b) <= max(c * max(abs(a), abs(b)), float.epsilon * 8), otherwise 0", - operands = "4" - ))] + #[strum( + props( + example = "sap r? a(r?|num) b(r?|num) c(r?|num)", + desc = "Register = 1 if abs(a - b) <= max(c * max(abs(a), abs(b)), float.epsilon * 8), otherwise 0", + operands = "4" + ) + )] Sap, - #[strum(props( - example = "sapz r? a(r?|num) b(r?|num)", - desc = "Register = 1 if abs(a) <= max(b * abs(a), float.epsilon * 8), otherwise 0", - operands = "3" - ))] + #[strum( + props( + example = "sapz r? a(r?|num) b(r?|num)", + desc = "Register = 1 if abs(a) <= max(b * abs(a), float.epsilon * 8), otherwise 0", + operands = "3" + ) + )] Sapz, - #[strum(props( - example = "sb deviceHash logicType r?", - desc = "Stores register value to LogicType on all output network devices with provided type hash.", - operands = "3" - ))] + #[strum( + props( + example = "sb deviceHash logicType r?", + desc = "Stores register value to LogicType on all output network devices with provided type hash.", + operands = "3" + ) + )] Sb, - #[strum(props( - example = "sbn deviceHash nameHash logicType r?", - desc = "Stores register value to LogicType on all output network devices with provided type hash and name.", - operands = "4" - ))] + #[strum( + props( + example = "sbn deviceHash nameHash logicType r?", + desc = "Stores register value to LogicType on all output network devices with provided type hash and name.", + operands = "4" + ) + )] Sbn, - #[strum(props( - example = "sbs deviceHash slotIndex logicSlotType r?", - desc = "Stores register value to LogicSlotType on all output network devices with provided type hash in the provided slot.", - operands = "4" - ))] + #[strum( + props( + example = "sbs deviceHash slotIndex logicSlotType r?", + desc = "Stores register value to LogicSlotType on all output network devices with provided type hash in the provided slot.", + operands = "4" + ) + )] Sbs, - #[strum(props( - example = "sd id(r?|num) logicType r?", - desc = "Stores register value to LogicType on device by direct ID reference.", - operands = "3" - ))] + #[strum( + props( + example = "sd id(r?|num) logicType r?", + desc = "Stores register value to LogicType on device by direct ID reference.", + operands = "3" + ) + )] Sd, - #[strum(props( - example = "sdns r? d?", - desc = "Register = 1 if device is not set, otherwise 0", - operands = "2" - ))] + #[strum( + props( + example = "sdns r? d?", + desc = "Register = 1 if device is not set, otherwise 0", + operands = "2" + ) + )] Sdns, - #[strum(props( - example = "sdse r? d?", - desc = "Register = 1 if device is set, otherwise 0.", - operands = "2" - ))] + #[strum( + props( + example = "sdse r? d?", + desc = "Register = 1 if device is set, otherwise 0.", + operands = "2" + ) + )] Sdse, - #[strum(props( - example = "select r? a(r?|num) b(r?|num) c(r?|num)", - desc = "Register = b if a is non-zero, otherwise c", - operands = "4" - ))] + #[strum( + props( + example = "select r? a(r?|num) b(r?|num) c(r?|num)", + desc = "Register = b if a is non-zero, otherwise c", + operands = "4" + ) + )] Select, - #[strum(props( - example = "seq r? a(r?|num) b(r?|num)", - desc = "Register = 1 if a == b, otherwise 0", - operands = "3" - ))] + #[strum( + props( + example = "seq r? a(r?|num) b(r?|num)", + desc = "Register = 1 if a == b, otherwise 0", + operands = "3" + ) + )] Seq, - #[strum(props( - example = "seqz r? a(r?|num)", - desc = "Register = 1 if a == 0, otherwise 0", - operands = "2" - ))] + #[strum( + props( + example = "seqz r? a(r?|num)", + desc = "Register = 1 if a == 0, otherwise 0", + operands = "2" + ) + )] Seqz, - #[strum(props( - example = "sge r? a(r?|num) b(r?|num)", - desc = "Register = 1 if a >= b, otherwise 0", - operands = "3" - ))] + #[strum( + props( + example = "sge r? a(r?|num) b(r?|num)", + desc = "Register = 1 if a >= b, otherwise 0", + operands = "3" + ) + )] Sge, - #[strum(props( - example = "sgez r? a(r?|num)", - desc = "Register = 1 if a >= 0, otherwise 0", - operands = "2" - ))] + #[strum( + props( + example = "sgez r? a(r?|num)", + desc = "Register = 1 if a >= 0, otherwise 0", + operands = "2" + ) + )] Sgez, - #[strum(props( - example = "sgt r? a(r?|num) b(r?|num)", - desc = "Register = 1 if a > b, otherwise 0", - operands = "3" - ))] + #[strum( + props( + example = "sgt r? a(r?|num) b(r?|num)", + desc = "Register = 1 if a > b, otherwise 0", + operands = "3" + ) + )] Sgt, - #[strum(props( - example = "sgtz r? a(r?|num)", - desc = "Register = 1 if a > 0, otherwise 0", - operands = "2" - ))] + #[strum( + props( + example = "sgtz r? a(r?|num)", + desc = "Register = 1 if a > 0, otherwise 0", + operands = "2" + ) + )] Sgtz, - #[strum(props( - example = "sin r? a(r?|num)", - desc = "Returns the sine of the specified angle (radians)", - operands = "2" - ))] + #[strum( + props( + example = "sin r? a(r?|num)", + desc = "Returns the sine of the specified angle (radians)", + operands = "2" + ) + )] Sin, - #[strum(props( - example = "sla r? a(r?|num) b(r?|num)", - desc = "Performs a bitwise arithmetic left shift operation on the binary representation of a value. It shifts the bits to the left and fills the vacated rightmost bits with a copy of the sign bit (the most significant bit).", - operands = "3" - ))] + #[strum( + props( + example = "sla r? a(r?|num) b(r?|num)", + desc = "Performs a bitwise arithmetic left shift operation on the binary representation of a value. It shifts the bits to the left and fills the vacated rightmost bits with a copy of the sign bit (the most significant bit).", + operands = "3" + ) + )] Sla, - #[strum(props( - example = "sle r? a(r?|num) b(r?|num)", - desc = "Register = 1 if a <= b, otherwise 0", - operands = "3" - ))] + #[strum( + props( + example = "sle r? a(r?|num) b(r?|num)", + desc = "Register = 1 if a <= b, otherwise 0", + operands = "3" + ) + )] Sle, - #[strum(props( - example = "sleep a(r?|num)", - desc = "Pauses execution on the IC for a seconds", - operands = "1" - ))] + #[strum( + props( + example = "sleep a(r?|num)", + desc = "Pauses execution on the IC for a seconds", + operands = "1" + ) + )] Sleep, - #[strum(props( - example = "slez r? a(r?|num)", - desc = "Register = 1 if a <= 0, otherwise 0", - operands = "2" - ))] + #[strum( + props( + example = "slez r? a(r?|num)", + desc = "Register = 1 if a <= 0, otherwise 0", + operands = "2" + ) + )] Slez, - #[strum(props( - example = "sll r? a(r?|num) b(r?|num)", - desc = "Performs a bitwise logical left shift operation on the binary representation of a value. It shifts the bits to the left and fills the vacated rightmost bits with zeros.", - operands = "3" - ))] + #[strum( + props( + example = "sll r? a(r?|num) b(r?|num)", + desc = "Performs a bitwise logical left shift operation on the binary representation of a value. It shifts the bits to the left and fills the vacated rightmost bits with zeros.", + operands = "3" + ) + )] Sll, - #[strum(props( - example = "slt r? a(r?|num) b(r?|num)", - desc = "Register = 1 if a < b, otherwise 0", - operands = "3" - ))] + #[strum( + props( + example = "slt r? a(r?|num) b(r?|num)", + desc = "Register = 1 if a < b, otherwise 0", + operands = "3" + ) + )] Slt, - #[strum(props( - example = "sltz r? a(r?|num)", - desc = "Register = 1 if a < 0, otherwise 0", - operands = "2" - ))] + #[strum( + props( + example = "sltz r? a(r?|num)", + desc = "Register = 1 if a < 0, otherwise 0", + operands = "2" + ) + )] Sltz, - #[strum(props( - example = "sna r? a(r?|num) b(r?|num) c(r?|num)", - desc = "Register = 1 if abs(a - b) > max(c * max(abs(a), abs(b)), float.epsilon * 8), otherwise 0", - operands = "4" - ))] + #[strum( + props( + example = "sna r? a(r?|num) b(r?|num) c(r?|num)", + desc = "Register = 1 if abs(a - b) > max(c * max(abs(a), abs(b)), float.epsilon * 8), otherwise 0", + operands = "4" + ) + )] Sna, - #[strum(props( - example = "snan r? a(r?|num)", - desc = "Register = 1 if a is NaN, otherwise 0", - operands = "2" - ))] + #[strum( + props( + example = "snan r? a(r?|num)", + desc = "Register = 1 if a is NaN, otherwise 0", + operands = "2" + ) + )] Snan, - #[strum(props( - example = "snanz r? a(r?|num)", - desc = "Register = 0 if a is NaN, otherwise 1", - operands = "2" - ))] + #[strum( + props( + example = "snanz r? a(r?|num)", + desc = "Register = 0 if a is NaN, otherwise 1", + operands = "2" + ) + )] Snanz, - #[strum(props( - example = "snaz r? a(r?|num) b(r?|num)", - desc = "Register = 1 if abs(a) > max(b * abs(a), float.epsilon), otherwise 0", - operands = "3" - ))] + #[strum( + props( + example = "snaz r? a(r?|num) b(r?|num)", + desc = "Register = 1 if abs(a) > max(b * abs(a), float.epsilon), otherwise 0", + operands = "3" + ) + )] Snaz, - #[strum(props( - example = "sne r? a(r?|num) b(r?|num)", - desc = "Register = 1 if a != b, otherwise 0", - operands = "3" - ))] + #[strum( + props( + example = "sne r? a(r?|num) b(r?|num)", + desc = "Register = 1 if a != b, otherwise 0", + operands = "3" + ) + )] Sne, - #[strum(props( - example = "snez r? a(r?|num)", - desc = "Register = 1 if a != 0, otherwise 0", - operands = "2" - ))] + #[strum( + props( + example = "snez r? a(r?|num)", + desc = "Register = 1 if a != 0, otherwise 0", + operands = "2" + ) + )] Snez, - #[strum(props( - example = "sqrt r? a(r?|num)", - desc = "Register = square root of a", - operands = "2" - ))] + #[strum( + props( + example = "sqrt r? a(r?|num)", + desc = "Register = square root of a", + operands = "2" + ) + )] Sqrt, - #[strum(props( - example = "sra r? a(r?|num) b(r?|num)", - desc = "Performs a bitwise arithmetic right shift operation on the binary representation of a value. It shifts the bits to the right and fills the vacated leftmost bits with a copy of the sign bit (the most significant bit).", - operands = "3" - ))] + #[strum( + props( + example = "sra r? a(r?|num) b(r?|num)", + desc = "Performs a bitwise arithmetic right shift operation on the binary representation of a value. It shifts the bits to the right and fills the vacated leftmost bits with a copy of the sign bit (the most significant bit).", + operands = "3" + ) + )] Sra, - #[strum(props( - example = "srl r? a(r?|num) b(r?|num)", - desc = "Performs a bitwise logical right shift operation on the binary representation of a value. It shifts the bits to the right and fills the vacated leftmost bits with zeros", - operands = "3" - ))] + #[strum( + props( + example = "srl r? a(r?|num) b(r?|num)", + desc = "Performs a bitwise logical right shift operation on the binary representation of a value. It shifts the bits to the right and fills the vacated leftmost bits with zeros", + operands = "3" + ) + )] Srl, - #[strum(props( - example = "ss d? slotIndex logicSlotType r?", - desc = "Stores register value to device stored in a slot LogicSlotType on device.", - operands = "4" - ))] + #[strum( + props( + example = "ss d? slotIndex logicSlotType r?", + desc = "Stores register value to device stored in a slot LogicSlotType on device.", + operands = "4" + ) + )] Ss, - #[strum(props( - example = "sub r? a(r?|num) b(r?|num)", - desc = "Register = a - b.", - operands = "3" - ))] + #[strum( + props( + example = "sub r? a(r?|num) b(r?|num)", + desc = "Register = a - b.", + operands = "3" + ) + )] Sub, - #[strum(props( - example = "tan r? a(r?|num)", - desc = "Returns the tan of the specified angle (radians) ", - operands = "2" - ))] + #[strum( + props( + example = "tan r? a(r?|num)", + desc = "Returns the tan of the specified angle (radians) ", + operands = "2" + ) + )] Tan, - #[strum(props( - example = "trunc r? a(r?|num)", - desc = "Register = a with fractional part removed", - operands = "2" - ))] + #[strum( + props( + example = "trunc r? a(r?|num)", + desc = "Register = a with fractional part removed", + operands = "2" + ) + )] Trunc, - #[strum(props( - example = "xor r? a(r?|num) b(r?|num)", - desc = "Performs a bitwise logical XOR (exclusive OR) operation on the binary representation of two values. Each bit of the result is determined by evaluating the corresponding bits of the input values. If the bits are different (one bit is 0 and the other is 1), the resulting bit is set to 1. If the bits are the same (both 0 or both 1), the resulting bit is set to 0.", - operands = "3" - ))] + #[strum( + props( + example = "xor r? a(r?|num) b(r?|num)", + desc = "Performs a bitwise logical XOR (exclusive OR) operation on the binary representation of two values. Each bit of the result is determined by evaluating the corresponding bits of the input values. If the bits are different (one bit is 0 and the other is 1), the resulting bit is set to 1. If the bits are the same (both 0 or both 1), the resulting bit is set to 0.", + operands = "3" + ) + )] Xor, - #[strum(props( - example = "yield", - desc = "Pauses execution for 1 tick", - operands = "0" - ))] + #[strum( + props(example = "yield", desc = "Pauses execution for 1 tick", operands = "0") + )] Yield, } impl InstructionOp { @@ -883,7 +1142,6 @@ impl InstructionOp { .parse::() .expect("invalid instruction operand property") } - pub fn execute( &self, ic: &mut T, @@ -894,176 +1152,409 @@ impl InstructionOp { { let num_operands = self.num_operands(); if operands.len() != num_operands { - return Err(crate::errors::ICError::mismatch_operands( - operands.len(), - num_operands as u32, - )); + return Err( + crate::errors::ICError::mismatch_operands( + operands.len(), + num_operands as u32, + ), + ); } match self { Self::Nop => Ok(()), - Self::Abs => ic.execute_abs(&operands[0], &operands[1]), - Self::Acos => ic.execute_acos(&operands[0], &operands[1]), - Self::Add => ic.execute_add(&operands[0], &operands[1], &operands[2]), - Self::Alias => ic.execute_alias(&operands[0], &operands[1]), - Self::And => ic.execute_and(&operands[0], &operands[1], &operands[2]), - Self::Asin => ic.execute_asin(&operands[0], &operands[1]), - Self::Atan => ic.execute_atan(&operands[0], &operands[1]), - Self::Atan2 => ic.execute_atan2(&operands[0], &operands[1], &operands[2]), - Self::Bap => ic.execute_bap(&operands[0], &operands[1], &operands[2], &operands[3]), - Self::Bapal => ic.execute_bapal(&operands[0], &operands[1], &operands[2], &operands[3]), - Self::Bapz => ic.execute_bapz(&operands[0], &operands[1], &operands[2]), - Self::Bapzal => ic.execute_bapzal(&operands[0], &operands[1], &operands[2]), - Self::Bdns => ic.execute_bdns(&operands[0], &operands[1]), - Self::Bdnsal => ic.execute_bdnsal(&operands[0], &operands[1]), - Self::Bdse => ic.execute_bdse(&operands[0], &operands[1]), - Self::Bdseal => ic.execute_bdseal(&operands[0], &operands[1]), - Self::Beq => ic.execute_beq(&operands[0], &operands[1], &operands[2]), - Self::Beqal => ic.execute_beqal(&operands[0], &operands[1], &operands[2]), - Self::Beqz => ic.execute_beqz(&operands[0], &operands[1]), - Self::Beqzal => ic.execute_beqzal(&operands[0], &operands[1]), - Self::Bge => ic.execute_bge(&operands[0], &operands[1], &operands[2]), - Self::Bgeal => ic.execute_bgeal(&operands[0], &operands[1], &operands[2]), - Self::Bgez => ic.execute_bgez(&operands[0], &operands[1]), - Self::Bgezal => ic.execute_bgezal(&operands[0], &operands[1]), - Self::Bgt => ic.execute_bgt(&operands[0], &operands[1], &operands[2]), - Self::Bgtal => ic.execute_bgtal(&operands[0], &operands[1], &operands[2]), - Self::Bgtz => ic.execute_bgtz(&operands[0], &operands[1]), - Self::Bgtzal => ic.execute_bgtzal(&operands[0], &operands[1]), - Self::Ble => ic.execute_ble(&operands[0], &operands[1], &operands[2]), - Self::Bleal => ic.execute_bleal(&operands[0], &operands[1], &operands[2]), - Self::Blez => ic.execute_blez(&operands[0], &operands[1]), - Self::Blezal => ic.execute_blezal(&operands[0], &operands[1]), - Self::Blt => ic.execute_blt(&operands[0], &operands[1], &operands[2]), - Self::Bltal => ic.execute_bltal(&operands[0], &operands[1], &operands[2]), - Self::Bltz => ic.execute_bltz(&operands[0], &operands[1]), - Self::Bltzal => ic.execute_bltzal(&operands[0], &operands[1]), - Self::Bna => ic.execute_bna(&operands[0], &operands[1], &operands[2], &operands[3]), - Self::Bnaal => ic.execute_bnaal(&operands[0], &operands[1], &operands[2], &operands[3]), - Self::Bnan => ic.execute_bnan(&operands[0], &operands[1]), - Self::Bnaz => ic.execute_bnaz(&operands[0], &operands[1], &operands[2]), - Self::Bnazal => ic.execute_bnazal(&operands[0], &operands[1], &operands[2]), - Self::Bne => ic.execute_bne(&operands[0], &operands[1], &operands[2]), - Self::Bneal => ic.execute_bneal(&operands[0], &operands[1], &operands[2]), - Self::Bnez => ic.execute_bnez(&operands[0], &operands[1]), - Self::Bnezal => ic.execute_bnezal(&operands[0], &operands[1]), - Self::Brap => ic.execute_brap(&operands[0], &operands[1], &operands[2], &operands[3]), - Self::Brapz => ic.execute_brapz(&operands[0], &operands[1], &operands[2]), - Self::Brdns => ic.execute_brdns(&operands[0], &operands[1]), - Self::Brdse => ic.execute_brdse(&operands[0], &operands[1]), - Self::Breq => ic.execute_breq(&operands[0], &operands[1], &operands[2]), - Self::Breqz => ic.execute_breqz(&operands[0], &operands[1]), - Self::Brge => ic.execute_brge(&operands[0], &operands[1], &operands[2]), - Self::Brgez => ic.execute_brgez(&operands[0], &operands[1]), - Self::Brgt => ic.execute_brgt(&operands[0], &operands[1], &operands[2]), - Self::Brgtz => ic.execute_brgtz(&operands[0], &operands[1]), - Self::Brle => ic.execute_brle(&operands[0], &operands[1], &operands[2]), - Self::Brlez => ic.execute_brlez(&operands[0], &operands[1]), - Self::Brlt => ic.execute_brlt(&operands[0], &operands[1], &operands[2]), - Self::Brltz => ic.execute_brltz(&operands[0], &operands[1]), - Self::Brna => ic.execute_brna(&operands[0], &operands[1], &operands[2], &operands[3]), - Self::Brnan => ic.execute_brnan(&operands[0], &operands[1]), - Self::Brnaz => ic.execute_brnaz(&operands[0], &operands[1], &operands[2]), - Self::Brne => ic.execute_brne(&operands[0], &operands[1], &operands[2]), - Self::Brnez => ic.execute_brnez(&operands[0], &operands[1]), - Self::Ceil => ic.execute_ceil(&operands[0], &operands[1]), - Self::Clr => ic.execute_clr(&operands[0]), - Self::Clrd => ic.execute_clrd(&operands[0]), - Self::Cos => ic.execute_cos(&operands[0], &operands[1]), - Self::Define => ic.execute_define(&operands[0], &operands[1]), - Self::Div => ic.execute_div(&operands[0], &operands[1], &operands[2]), - Self::Exp => ic.execute_exp(&operands[0], &operands[1]), - Self::Floor => ic.execute_floor(&operands[0], &operands[1]), - Self::Get => ic.execute_get(&operands[0], &operands[1], &operands[2]), - Self::Getd => ic.execute_getd(&operands[0], &operands[1], &operands[2]), - Self::Hcf => ic.execute_hcf(), - Self::J => ic.execute_j(&operands[0]), - Self::Jal => ic.execute_jal(&operands[0]), - Self::Jr => ic.execute_jr(&operands[0]), - Self::L => ic.execute_l(&operands[0], &operands[1], &operands[2]), - Self::Label => ic.execute_label(&operands[0], &operands[1]), - Self::Lb => ic.execute_lb(&operands[0], &operands[1], &operands[2], &operands[3]), - Self::Lbn => ic.execute_lbn( - &operands[0], - &operands[1], - &operands[2], - &operands[3], - &operands[4], - ), - Self::Lbns => ic.execute_lbns( - &operands[0], - &operands[1], - &operands[2], - &operands[3], - &operands[4], - &operands[5], - ), - Self::Lbs => ic.execute_lbs( - &operands[0], - &operands[1], - &operands[2], - &operands[3], - &operands[4], - ), - Self::Ld => ic.execute_ld(&operands[0], &operands[1], &operands[2]), - Self::Log => ic.execute_log(&operands[0], &operands[1]), - Self::Lr => ic.execute_lr(&operands[0], &operands[1], &operands[2], &operands[3]), - Self::Ls => ic.execute_ls(&operands[0], &operands[1], &operands[2], &operands[3]), - Self::Max => ic.execute_max(&operands[0], &operands[1], &operands[2]), - Self::Min => ic.execute_min(&operands[0], &operands[1], &operands[2]), - Self::Mod => ic.execute_mod(&operands[0], &operands[1], &operands[2]), - Self::Move => ic.execute_move(&operands[0], &operands[1]), - Self::Mul => ic.execute_mul(&operands[0], &operands[1], &operands[2]), - Self::Nor => ic.execute_nor(&operands[0], &operands[1], &operands[2]), - Self::Not => ic.execute_not(&operands[0], &operands[1]), - Self::Or => ic.execute_or(&operands[0], &operands[1], &operands[2]), - Self::Peek => ic.execute_peek(&operands[0]), - Self::Poke => ic.execute_poke(&operands[0], &operands[1]), - Self::Pop => ic.execute_pop(&operands[0]), - Self::Push => ic.execute_push(&operands[0]), - Self::Put => ic.execute_put(&operands[0], &operands[1], &operands[2]), - Self::Putd => ic.execute_putd(&operands[0], &operands[1], &operands[2]), - Self::Rand => ic.execute_rand(&operands[0]), - Self::Round => ic.execute_round(&operands[0], &operands[1]), - Self::S => ic.execute_s(&operands[0], &operands[1], &operands[2]), - Self::Sap => ic.execute_sap(&operands[0], &operands[1], &operands[2], &operands[3]), - Self::Sapz => ic.execute_sapz(&operands[0], &operands[1], &operands[2]), - Self::Sb => ic.execute_sb(&operands[0], &operands[1], &operands[2]), - Self::Sbn => ic.execute_sbn(&operands[0], &operands[1], &operands[2], &operands[3]), - Self::Sbs => ic.execute_sbs(&operands[0], &operands[1], &operands[2], &operands[3]), - Self::Sd => ic.execute_sd(&operands[0], &operands[1], &operands[2]), - Self::Sdns => ic.execute_sdns(&operands[0], &operands[1]), - Self::Sdse => ic.execute_sdse(&operands[0], &operands[1]), - Self::Select => { - ic.execute_select(&operands[0], &operands[1], &operands[2], &operands[3]) + Self::Abs => ic.execute_abs(&operands[0usize], &operands[1usize]), + Self::Acos => ic.execute_acos(&operands[0usize], &operands[1usize]), + Self::Add => { + ic.execute_add(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Alias => ic.execute_alias(&operands[0usize], &operands[1usize]), + Self::And => { + ic.execute_and(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Asin => ic.execute_asin(&operands[0usize], &operands[1usize]), + Self::Atan => ic.execute_atan(&operands[0usize], &operands[1usize]), + Self::Atan2 => { + ic.execute_atan2(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Bap => { + ic.execute_bap( + &operands[0usize], + &operands[1usize], + &operands[2usize], + &operands[3usize], + ) + } + Self::Bapal => { + ic.execute_bapal( + &operands[0usize], + &operands[1usize], + &operands[2usize], + &operands[3usize], + ) + } + Self::Bapz => { + ic.execute_bapz(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Bapzal => { + ic.execute_bapzal( + &operands[0usize], + &operands[1usize], + &operands[2usize], + ) + } + Self::Bdns => ic.execute_bdns(&operands[0usize], &operands[1usize]), + Self::Bdnsal => ic.execute_bdnsal(&operands[0usize], &operands[1usize]), + Self::Bdse => ic.execute_bdse(&operands[0usize], &operands[1usize]), + Self::Bdseal => ic.execute_bdseal(&operands[0usize], &operands[1usize]), + Self::Beq => { + ic.execute_beq(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Beqal => { + ic.execute_beqal(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Beqz => ic.execute_beqz(&operands[0usize], &operands[1usize]), + Self::Beqzal => ic.execute_beqzal(&operands[0usize], &operands[1usize]), + Self::Bge => { + ic.execute_bge(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Bgeal => { + ic.execute_bgeal(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Bgez => ic.execute_bgez(&operands[0usize], &operands[1usize]), + Self::Bgezal => ic.execute_bgezal(&operands[0usize], &operands[1usize]), + Self::Bgt => { + ic.execute_bgt(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Bgtal => { + ic.execute_bgtal(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Bgtz => ic.execute_bgtz(&operands[0usize], &operands[1usize]), + Self::Bgtzal => ic.execute_bgtzal(&operands[0usize], &operands[1usize]), + Self::Ble => { + ic.execute_ble(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Bleal => { + ic.execute_bleal(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Blez => ic.execute_blez(&operands[0usize], &operands[1usize]), + Self::Blezal => ic.execute_blezal(&operands[0usize], &operands[1usize]), + Self::Blt => { + ic.execute_blt(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Bltal => { + ic.execute_bltal(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Bltz => ic.execute_bltz(&operands[0usize], &operands[1usize]), + Self::Bltzal => ic.execute_bltzal(&operands[0usize], &operands[1usize]), + Self::Bna => { + ic.execute_bna( + &operands[0usize], + &operands[1usize], + &operands[2usize], + &operands[3usize], + ) + } + Self::Bnaal => { + ic.execute_bnaal( + &operands[0usize], + &operands[1usize], + &operands[2usize], + &operands[3usize], + ) + } + Self::Bnan => ic.execute_bnan(&operands[0usize], &operands[1usize]), + Self::Bnaz => { + ic.execute_bnaz(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Bnazal => { + ic.execute_bnazal( + &operands[0usize], + &operands[1usize], + &operands[2usize], + ) + } + Self::Bne => { + ic.execute_bne(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Bneal => { + ic.execute_bneal(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Bnez => ic.execute_bnez(&operands[0usize], &operands[1usize]), + Self::Bnezal => ic.execute_bnezal(&operands[0usize], &operands[1usize]), + Self::Brap => { + ic.execute_brap( + &operands[0usize], + &operands[1usize], + &operands[2usize], + &operands[3usize], + ) + } + Self::Brapz => { + ic.execute_brapz(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Brdns => ic.execute_brdns(&operands[0usize], &operands[1usize]), + Self::Brdse => ic.execute_brdse(&operands[0usize], &operands[1usize]), + Self::Breq => { + ic.execute_breq(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Breqz => ic.execute_breqz(&operands[0usize], &operands[1usize]), + Self::Brge => { + ic.execute_brge(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Brgez => ic.execute_brgez(&operands[0usize], &operands[1usize]), + Self::Brgt => { + ic.execute_brgt(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Brgtz => ic.execute_brgtz(&operands[0usize], &operands[1usize]), + Self::Brle => { + ic.execute_brle(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Brlez => ic.execute_brlez(&operands[0usize], &operands[1usize]), + Self::Brlt => { + ic.execute_brlt(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Brltz => ic.execute_brltz(&operands[0usize], &operands[1usize]), + Self::Brna => { + ic.execute_brna( + &operands[0usize], + &operands[1usize], + &operands[2usize], + &operands[3usize], + ) + } + Self::Brnan => ic.execute_brnan(&operands[0usize], &operands[1usize]), + Self::Brnaz => { + ic.execute_brnaz(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Brne => { + ic.execute_brne(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Brnez => ic.execute_brnez(&operands[0usize], &operands[1usize]), + Self::Ceil => ic.execute_ceil(&operands[0usize], &operands[1usize]), + Self::Clr => ic.execute_clr(&operands[0usize]), + Self::Clrd => ic.execute_clrd(&operands[0usize]), + Self::Cos => ic.execute_cos(&operands[0usize], &operands[1usize]), + Self::Define => ic.execute_define(&operands[0usize], &operands[1usize]), + Self::Div => { + ic.execute_div(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Exp => ic.execute_exp(&operands[0usize], &operands[1usize]), + Self::Floor => ic.execute_floor(&operands[0usize], &operands[1usize]), + Self::Get => { + ic.execute_get(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Getd => { + ic.execute_getd(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Hcf => ic.execute_hcf(), + Self::J => ic.execute_j(&operands[0usize]), + Self::Jal => ic.execute_jal(&operands[0usize]), + Self::Jr => ic.execute_jr(&operands[0usize]), + Self::L => { + ic.execute_l(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Label => ic.execute_label(&operands[0usize], &operands[1usize]), + Self::Lb => { + ic.execute_lb( + &operands[0usize], + &operands[1usize], + &operands[2usize], + &operands[3usize], + ) + } + Self::Lbn => { + ic.execute_lbn( + &operands[0usize], + &operands[1usize], + &operands[2usize], + &operands[3usize], + &operands[4usize], + ) + } + Self::Lbns => { + ic.execute_lbns( + &operands[0usize], + &operands[1usize], + &operands[2usize], + &operands[3usize], + &operands[4usize], + &operands[5usize], + ) + } + Self::Lbs => { + ic.execute_lbs( + &operands[0usize], + &operands[1usize], + &operands[2usize], + &operands[3usize], + &operands[4usize], + ) + } + Self::Ld => { + ic.execute_ld(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Log => ic.execute_log(&operands[0usize], &operands[1usize]), + Self::Lr => { + ic.execute_lr( + &operands[0usize], + &operands[1usize], + &operands[2usize], + &operands[3usize], + ) + } + Self::Ls => { + ic.execute_ls( + &operands[0usize], + &operands[1usize], + &operands[2usize], + &operands[3usize], + ) + } + Self::Max => { + ic.execute_max(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Min => { + ic.execute_min(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Mod => { + ic.execute_mod(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Move => ic.execute_move(&operands[0usize], &operands[1usize]), + Self::Mul => { + ic.execute_mul(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Nor => { + ic.execute_nor(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Not => ic.execute_not(&operands[0usize], &operands[1usize]), + Self::Or => { + ic.execute_or(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Peek => ic.execute_peek(&operands[0usize]), + Self::Poke => ic.execute_poke(&operands[0usize], &operands[1usize]), + Self::Pop => ic.execute_pop(&operands[0usize]), + Self::Push => ic.execute_push(&operands[0usize]), + Self::Put => { + ic.execute_put(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Putd => { + ic.execute_putd(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Rand => ic.execute_rand(&operands[0usize]), + Self::Round => ic.execute_round(&operands[0usize], &operands[1usize]), + Self::S => { + ic.execute_s(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Sap => { + ic.execute_sap( + &operands[0usize], + &operands[1usize], + &operands[2usize], + &operands[3usize], + ) + } + Self::Sapz => { + ic.execute_sapz(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Sb => { + ic.execute_sb(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Sbn => { + ic.execute_sbn( + &operands[0usize], + &operands[1usize], + &operands[2usize], + &operands[3usize], + ) + } + Self::Sbs => { + ic.execute_sbs( + &operands[0usize], + &operands[1usize], + &operands[2usize], + &operands[3usize], + ) + } + Self::Sd => { + ic.execute_sd(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Sdns => ic.execute_sdns(&operands[0usize], &operands[1usize]), + Self::Sdse => ic.execute_sdse(&operands[0usize], &operands[1usize]), + Self::Select => { + ic.execute_select( + &operands[0usize], + &operands[1usize], + &operands[2usize], + &operands[3usize], + ) + } + Self::Seq => { + ic.execute_seq(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Seqz => ic.execute_seqz(&operands[0usize], &operands[1usize]), + Self::Sge => { + ic.execute_sge(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Sgez => ic.execute_sgez(&operands[0usize], &operands[1usize]), + Self::Sgt => { + ic.execute_sgt(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Sgtz => ic.execute_sgtz(&operands[0usize], &operands[1usize]), + Self::Sin => ic.execute_sin(&operands[0usize], &operands[1usize]), + Self::Sla => { + ic.execute_sla(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Sle => { + ic.execute_sle(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Sleep => ic.execute_sleep(&operands[0usize]), + Self::Slez => ic.execute_slez(&operands[0usize], &operands[1usize]), + Self::Sll => { + ic.execute_sll(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Slt => { + ic.execute_slt(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Sltz => ic.execute_sltz(&operands[0usize], &operands[1usize]), + Self::Sna => { + ic.execute_sna( + &operands[0usize], + &operands[1usize], + &operands[2usize], + &operands[3usize], + ) + } + Self::Snan => ic.execute_snan(&operands[0usize], &operands[1usize]), + Self::Snanz => ic.execute_snanz(&operands[0usize], &operands[1usize]), + Self::Snaz => { + ic.execute_snaz(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Sne => { + ic.execute_sne(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Snez => ic.execute_snez(&operands[0usize], &operands[1usize]), + Self::Sqrt => ic.execute_sqrt(&operands[0usize], &operands[1usize]), + Self::Sra => { + ic.execute_sra(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Srl => { + ic.execute_srl(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Ss => { + ic.execute_ss( + &operands[0usize], + &operands[1usize], + &operands[2usize], + &operands[3usize], + ) + } + Self::Sub => { + ic.execute_sub(&operands[0usize], &operands[1usize], &operands[2usize]) + } + Self::Tan => ic.execute_tan(&operands[0usize], &operands[1usize]), + Self::Trunc => ic.execute_trunc(&operands[0usize], &operands[1usize]), + Self::Xor => { + ic.execute_xor(&operands[0usize], &operands[1usize], &operands[2usize]) } - Self::Seq => ic.execute_seq(&operands[0], &operands[1], &operands[2]), - Self::Seqz => ic.execute_seqz(&operands[0], &operands[1]), - Self::Sge => ic.execute_sge(&operands[0], &operands[1], &operands[2]), - Self::Sgez => ic.execute_sgez(&operands[0], &operands[1]), - Self::Sgt => ic.execute_sgt(&operands[0], &operands[1], &operands[2]), - Self::Sgtz => ic.execute_sgtz(&operands[0], &operands[1]), - Self::Sin => ic.execute_sin(&operands[0], &operands[1]), - Self::Sla => ic.execute_sla(&operands[0], &operands[1], &operands[2]), - Self::Sle => ic.execute_sle(&operands[0], &operands[1], &operands[2]), - Self::Sleep => ic.execute_sleep(&operands[0]), - Self::Slez => ic.execute_slez(&operands[0], &operands[1]), - Self::Sll => ic.execute_sll(&operands[0], &operands[1], &operands[2]), - Self::Slt => ic.execute_slt(&operands[0], &operands[1], &operands[2]), - Self::Sltz => ic.execute_sltz(&operands[0], &operands[1]), - Self::Sna => ic.execute_sna(&operands[0], &operands[1], &operands[2], &operands[3]), - Self::Snan => ic.execute_snan(&operands[0], &operands[1]), - Self::Snanz => ic.execute_snanz(&operands[0], &operands[1]), - Self::Snaz => ic.execute_snaz(&operands[0], &operands[1], &operands[2]), - Self::Sne => ic.execute_sne(&operands[0], &operands[1], &operands[2]), - Self::Snez => ic.execute_snez(&operands[0], &operands[1]), - Self::Sqrt => ic.execute_sqrt(&operands[0], &operands[1]), - Self::Sra => ic.execute_sra(&operands[0], &operands[1], &operands[2]), - Self::Srl => ic.execute_srl(&operands[0], &operands[1], &operands[2]), - Self::Ss => ic.execute_ss(&operands[0], &operands[1], &operands[2], &operands[3]), - Self::Sub => ic.execute_sub(&operands[0], &operands[1], &operands[2]), - Self::Tan => ic.execute_tan(&operands[0], &operands[1]), - Self::Trunc => ic.execute_trunc(&operands[0], &operands[1]), - Self::Xor => ic.execute_xor(&operands[0], &operands[1], &operands[2]), Self::Yield => ic.execute_yield(), } } diff --git a/ic10emu/src/vm/instructions/operands.rs b/ic10emu/src/vm/instructions/operands.rs index 3ad3d88..3957ba9 100644 --- a/ic10emu/src/vm/instructions/operands.rs +++ b/ic10emu/src/vm/instructions/operands.rs @@ -1,13 +1,10 @@ use crate::errors::ICError; use crate::interpreter; -use crate::vm::{ - enums::script_enums::{ - LogicBatchMethod as BatchMode, LogicReagentMode as ReagentMode, LogicSlotType, LogicType, - }, - instructions::enums::InstructionOp, - object::traits::IntegratedCircuit, -}; +use crate::vm::{instructions::enums::InstructionOp, object::traits::IntegratedCircuit}; use serde_derive::{Deserialize, Serialize}; +use stationeers_data::enums::script_enums::{ + LogicBatchMethod as BatchMode, LogicReagentMode as ReagentMode, LogicSlotType, LogicType, +}; use strum::EnumProperty; #[derive(PartialEq, Eq, Debug, Clone, Copy, Serialize, Deserialize)] @@ -249,7 +246,10 @@ impl InstOperand { logic_type: Some(lt), .. } => Ok(*lt), - _ => LogicType::try_from(self.as_value(ic)?), + _ => { + let val = self.as_value(ic)?; + LogicType::try_from(val).map_err(|| ICError::UnknownLogicType(val)) + } } } @@ -262,7 +262,10 @@ impl InstOperand { slot_logic_type: Some(slt), .. } => Ok(*slt), - _ => LogicSlotType::try_from(self.as_value(ic)?), + _ => { + let val = self.as_value(ic)?; + LogicSlotType::try_from(val).map_err(|| ICError::UnknownLogicSlotType(val)) + } } } @@ -272,7 +275,10 @@ impl InstOperand { batch_mode: Some(bm), .. } => Ok(*bm), - _ => BatchMode::try_from(self.as_value(ic)?), + _ => { + let val = self.as_value(ic)?; + BatchMode::try_from(val).map_err(|| ICError::UnknownBatchMode(val)) + } } } @@ -282,7 +288,10 @@ impl InstOperand { reagent_mode: Some(rm), .. } => Ok(*rm), - _ => ReagentMode::try_from(self.as_value(ic)?), + _ => { + let val = self.as_value(ic)?; + ReagentMode::try_from(val).map_err(|| ICError::UnknownReagentMode(val)) + } } } diff --git a/ic10emu/src/vm/instructions/traits.rs b/ic10emu/src/vm/instructions/traits.rs index 518a513..f92e2a3 100644 --- a/ic10emu/src/vm/instructions/traits.rs +++ b/ic10emu/src/vm/instructions/traits.rs @@ -1,18 +1,7 @@ -// ================================================= -// !! <-----> DO NOT MODIFY <-----> !! -// -// This module was automatically generated by an -// xtask -// -// run `cargo xtask generate` from the workspace -// to regenerate -// -// ================================================= - -use crate::vm::instructions::enums::InstructionOp; use crate::vm::object::traits::IntegratedCircuit; +use crate::vm::instructions::enums::InstructionOp; pub trait AbsInstruction: IntegratedCircuit { - /// abs r? a(r?|num) + ///abs r? a(r?|num) fn execute_abs( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -20,11 +9,19 @@ pub trait AbsInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { AbsInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Abs, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Abs, 1), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Abs, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Abs, + 1usize, + ), ) } - /// abs r? a(r?|num) + ///abs r? a(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -32,7 +29,7 @@ pub trait AbsInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait AcosInstruction: IntegratedCircuit { - /// acos r? a(r?|num) + ///acos r? a(r?|num) fn execute_acos( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -40,11 +37,19 @@ pub trait AcosInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { AcosInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Acos, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Acos, 1), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Acos, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Acos, + 1usize, + ), ) } - /// acos r? a(r?|num) + ///acos r? a(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -52,7 +57,7 @@ pub trait AcosInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait AddInstruction: IntegratedCircuit { - /// add r? a(r?|num) b(r?|num) + ///add r? a(r?|num) b(r?|num) fn execute_add( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -61,12 +66,24 @@ pub trait AddInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { AddInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Add, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Add, 1), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Add, 2), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Add, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Add, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Add, + 2usize, + ), ) } - /// add r? a(r?|num) b(r?|num) + ///add r? a(r?|num) b(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -75,7 +92,7 @@ pub trait AddInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait AliasInstruction: IntegratedCircuit { - /// alias str r?|d? + ///alias str r?|d? fn execute_alias( &mut self, string: &crate::vm::instructions::operands::Operand, @@ -83,11 +100,19 @@ pub trait AliasInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { AliasInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(string, InstructionOp::Alias, 0), - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Alias, 1), + &crate::vm::instructions::operands::InstOperand::new( + string, + InstructionOp::Alias, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Alias, + 1usize, + ), ) } - /// alias str r?|d? + ///alias str r?|d? fn execute_inner( &mut self, string: &crate::vm::instructions::operands::InstOperand, @@ -95,7 +120,7 @@ pub trait AliasInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait AndInstruction: IntegratedCircuit { - /// and r? a(r?|num) b(r?|num) + ///and r? a(r?|num) b(r?|num) fn execute_and( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -104,12 +129,24 @@ pub trait AndInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { AndInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::And, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::And, 1), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::And, 2), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::And, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::And, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::And, + 2usize, + ), ) } - /// and r? a(r?|num) b(r?|num) + ///and r? a(r?|num) b(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -118,7 +155,7 @@ pub trait AndInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait AsinInstruction: IntegratedCircuit { - /// asin r? a(r?|num) + ///asin r? a(r?|num) fn execute_asin( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -126,11 +163,19 @@ pub trait AsinInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { AsinInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Asin, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Asin, 1), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Asin, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Asin, + 1usize, + ), ) } - /// asin r? a(r?|num) + ///asin r? a(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -138,7 +183,7 @@ pub trait AsinInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait AtanInstruction: IntegratedCircuit { - /// atan r? a(r?|num) + ///atan r? a(r?|num) fn execute_atan( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -146,11 +191,19 @@ pub trait AtanInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { AtanInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Atan, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Atan, 1), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Atan, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Atan, + 1usize, + ), ) } - /// atan r? a(r?|num) + ///atan r? a(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -158,7 +211,7 @@ pub trait AtanInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait Atan2Instruction: IntegratedCircuit { - /// atan2 r? a(r?|num) b(r?|num) + ///atan2 r? a(r?|num) b(r?|num) fn execute_atan2( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -167,12 +220,24 @@ pub trait Atan2Instruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { Atan2Instruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Atan2, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Atan2, 1), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Atan2, 2), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Atan2, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Atan2, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Atan2, + 2usize, + ), ) } - /// atan2 r? a(r?|num) b(r?|num) + ///atan2 r? a(r?|num) b(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -181,7 +246,7 @@ pub trait Atan2Instruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BapInstruction: IntegratedCircuit { - /// bap a(r?|num) b(r?|num) c(r?|num) d(r?|num) + ///bap a(r?|num) b(r?|num) c(r?|num) d(r?|num) fn execute_bap( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -191,13 +256,29 @@ pub trait BapInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BapInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Bap, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Bap, 1), - &crate::vm::instructions::operands::InstOperand::new(c, InstructionOp::Bap, 2), - &crate::vm::instructions::operands::InstOperand::new(d, InstructionOp::Bap, 3), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Bap, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Bap, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + c, + InstructionOp::Bap, + 2usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + d, + InstructionOp::Bap, + 3usize, + ), ) } - /// bap a(r?|num) b(r?|num) c(r?|num) d(r?|num) + ///bap a(r?|num) b(r?|num) c(r?|num) d(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -207,7 +288,7 @@ pub trait BapInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BapalInstruction: IntegratedCircuit { - /// bapal a(r?|num) b(r?|num) c(r?|num) d(r?|num) + ///bapal a(r?|num) b(r?|num) c(r?|num) d(r?|num) fn execute_bapal( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -217,13 +298,29 @@ pub trait BapalInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BapalInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Bapal, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Bapal, 1), - &crate::vm::instructions::operands::InstOperand::new(c, InstructionOp::Bapal, 2), - &crate::vm::instructions::operands::InstOperand::new(d, InstructionOp::Bapal, 3), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Bapal, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Bapal, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + c, + InstructionOp::Bapal, + 2usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + d, + InstructionOp::Bapal, + 3usize, + ), ) } - /// bapal a(r?|num) b(r?|num) c(r?|num) d(r?|num) + ///bapal a(r?|num) b(r?|num) c(r?|num) d(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -233,7 +330,7 @@ pub trait BapalInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BapzInstruction: IntegratedCircuit { - /// bapz a(r?|num) b(r?|num) c(r?|num) + ///bapz a(r?|num) b(r?|num) c(r?|num) fn execute_bapz( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -242,12 +339,24 @@ pub trait BapzInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BapzInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Bapz, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Bapz, 1), - &crate::vm::instructions::operands::InstOperand::new(c, InstructionOp::Bapz, 2), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Bapz, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Bapz, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + c, + InstructionOp::Bapz, + 2usize, + ), ) } - /// bapz a(r?|num) b(r?|num) c(r?|num) + ///bapz a(r?|num) b(r?|num) c(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -256,7 +365,7 @@ pub trait BapzInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BapzalInstruction: IntegratedCircuit { - /// bapzal a(r?|num) b(r?|num) c(r?|num) + ///bapzal a(r?|num) b(r?|num) c(r?|num) fn execute_bapzal( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -265,12 +374,24 @@ pub trait BapzalInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BapzalInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Bapzal, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Bapzal, 1), - &crate::vm::instructions::operands::InstOperand::new(c, InstructionOp::Bapzal, 2), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Bapzal, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Bapzal, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + c, + InstructionOp::Bapzal, + 2usize, + ), ) } - /// bapzal a(r?|num) b(r?|num) c(r?|num) + ///bapzal a(r?|num) b(r?|num) c(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -279,7 +400,7 @@ pub trait BapzalInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BdnsInstruction: IntegratedCircuit { - /// bdns d? a(r?|num) + ///bdns d? a(r?|num) fn execute_bdns( &mut self, d: &crate::vm::instructions::operands::Operand, @@ -287,11 +408,19 @@ pub trait BdnsInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BdnsInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(d, InstructionOp::Bdns, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Bdns, 1), + &crate::vm::instructions::operands::InstOperand::new( + d, + InstructionOp::Bdns, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Bdns, + 1usize, + ), ) } - /// bdns d? a(r?|num) + ///bdns d? a(r?|num) fn execute_inner( &mut self, d: &crate::vm::instructions::operands::InstOperand, @@ -299,7 +428,7 @@ pub trait BdnsInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BdnsalInstruction: IntegratedCircuit { - /// bdnsal d? a(r?|num) + ///bdnsal d? a(r?|num) fn execute_bdnsal( &mut self, d: &crate::vm::instructions::operands::Operand, @@ -307,11 +436,19 @@ pub trait BdnsalInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BdnsalInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(d, InstructionOp::Bdnsal, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Bdnsal, 1), + &crate::vm::instructions::operands::InstOperand::new( + d, + InstructionOp::Bdnsal, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Bdnsal, + 1usize, + ), ) } - /// bdnsal d? a(r?|num) + ///bdnsal d? a(r?|num) fn execute_inner( &mut self, d: &crate::vm::instructions::operands::InstOperand, @@ -319,7 +456,7 @@ pub trait BdnsalInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BdseInstruction: IntegratedCircuit { - /// bdse d? a(r?|num) + ///bdse d? a(r?|num) fn execute_bdse( &mut self, d: &crate::vm::instructions::operands::Operand, @@ -327,11 +464,19 @@ pub trait BdseInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BdseInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(d, InstructionOp::Bdse, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Bdse, 1), + &crate::vm::instructions::operands::InstOperand::new( + d, + InstructionOp::Bdse, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Bdse, + 1usize, + ), ) } - /// bdse d? a(r?|num) + ///bdse d? a(r?|num) fn execute_inner( &mut self, d: &crate::vm::instructions::operands::InstOperand, @@ -339,7 +484,7 @@ pub trait BdseInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BdsealInstruction: IntegratedCircuit { - /// bdseal d? a(r?|num) + ///bdseal d? a(r?|num) fn execute_bdseal( &mut self, d: &crate::vm::instructions::operands::Operand, @@ -347,11 +492,19 @@ pub trait BdsealInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BdsealInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(d, InstructionOp::Bdseal, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Bdseal, 1), + &crate::vm::instructions::operands::InstOperand::new( + d, + InstructionOp::Bdseal, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Bdseal, + 1usize, + ), ) } - /// bdseal d? a(r?|num) + ///bdseal d? a(r?|num) fn execute_inner( &mut self, d: &crate::vm::instructions::operands::InstOperand, @@ -359,7 +512,7 @@ pub trait BdsealInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BeqInstruction: IntegratedCircuit { - /// beq a(r?|num) b(r?|num) c(r?|num) + ///beq a(r?|num) b(r?|num) c(r?|num) fn execute_beq( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -368,12 +521,24 @@ pub trait BeqInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BeqInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Beq, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Beq, 1), - &crate::vm::instructions::operands::InstOperand::new(c, InstructionOp::Beq, 2), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Beq, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Beq, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + c, + InstructionOp::Beq, + 2usize, + ), ) } - /// beq a(r?|num) b(r?|num) c(r?|num) + ///beq a(r?|num) b(r?|num) c(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -382,7 +547,7 @@ pub trait BeqInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BeqalInstruction: IntegratedCircuit { - /// beqal a(r?|num) b(r?|num) c(r?|num) + ///beqal a(r?|num) b(r?|num) c(r?|num) fn execute_beqal( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -391,12 +556,24 @@ pub trait BeqalInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BeqalInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Beqal, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Beqal, 1), - &crate::vm::instructions::operands::InstOperand::new(c, InstructionOp::Beqal, 2), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Beqal, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Beqal, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + c, + InstructionOp::Beqal, + 2usize, + ), ) } - /// beqal a(r?|num) b(r?|num) c(r?|num) + ///beqal a(r?|num) b(r?|num) c(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -405,7 +582,7 @@ pub trait BeqalInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BeqzInstruction: IntegratedCircuit { - /// beqz a(r?|num) b(r?|num) + ///beqz a(r?|num) b(r?|num) fn execute_beqz( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -413,11 +590,19 @@ pub trait BeqzInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BeqzInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Beqz, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Beqz, 1), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Beqz, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Beqz, + 1usize, + ), ) } - /// beqz a(r?|num) b(r?|num) + ///beqz a(r?|num) b(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -425,7 +610,7 @@ pub trait BeqzInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BeqzalInstruction: IntegratedCircuit { - /// beqzal a(r?|num) b(r?|num) + ///beqzal a(r?|num) b(r?|num) fn execute_beqzal( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -433,11 +618,19 @@ pub trait BeqzalInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BeqzalInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Beqzal, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Beqzal, 1), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Beqzal, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Beqzal, + 1usize, + ), ) } - /// beqzal a(r?|num) b(r?|num) + ///beqzal a(r?|num) b(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -445,7 +638,7 @@ pub trait BeqzalInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BgeInstruction: IntegratedCircuit { - /// bge a(r?|num) b(r?|num) c(r?|num) + ///bge a(r?|num) b(r?|num) c(r?|num) fn execute_bge( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -454,12 +647,24 @@ pub trait BgeInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BgeInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Bge, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Bge, 1), - &crate::vm::instructions::operands::InstOperand::new(c, InstructionOp::Bge, 2), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Bge, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Bge, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + c, + InstructionOp::Bge, + 2usize, + ), ) } - /// bge a(r?|num) b(r?|num) c(r?|num) + ///bge a(r?|num) b(r?|num) c(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -468,7 +673,7 @@ pub trait BgeInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BgealInstruction: IntegratedCircuit { - /// bgeal a(r?|num) b(r?|num) c(r?|num) + ///bgeal a(r?|num) b(r?|num) c(r?|num) fn execute_bgeal( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -477,12 +682,24 @@ pub trait BgealInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BgealInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Bgeal, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Bgeal, 1), - &crate::vm::instructions::operands::InstOperand::new(c, InstructionOp::Bgeal, 2), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Bgeal, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Bgeal, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + c, + InstructionOp::Bgeal, + 2usize, + ), ) } - /// bgeal a(r?|num) b(r?|num) c(r?|num) + ///bgeal a(r?|num) b(r?|num) c(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -491,7 +708,7 @@ pub trait BgealInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BgezInstruction: IntegratedCircuit { - /// bgez a(r?|num) b(r?|num) + ///bgez a(r?|num) b(r?|num) fn execute_bgez( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -499,11 +716,19 @@ pub trait BgezInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BgezInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Bgez, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Bgez, 1), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Bgez, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Bgez, + 1usize, + ), ) } - /// bgez a(r?|num) b(r?|num) + ///bgez a(r?|num) b(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -511,7 +736,7 @@ pub trait BgezInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BgezalInstruction: IntegratedCircuit { - /// bgezal a(r?|num) b(r?|num) + ///bgezal a(r?|num) b(r?|num) fn execute_bgezal( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -519,11 +744,19 @@ pub trait BgezalInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BgezalInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Bgezal, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Bgezal, 1), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Bgezal, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Bgezal, + 1usize, + ), ) } - /// bgezal a(r?|num) b(r?|num) + ///bgezal a(r?|num) b(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -531,7 +764,7 @@ pub trait BgezalInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BgtInstruction: IntegratedCircuit { - /// bgt a(r?|num) b(r?|num) c(r?|num) + ///bgt a(r?|num) b(r?|num) c(r?|num) fn execute_bgt( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -540,12 +773,24 @@ pub trait BgtInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BgtInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Bgt, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Bgt, 1), - &crate::vm::instructions::operands::InstOperand::new(c, InstructionOp::Bgt, 2), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Bgt, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Bgt, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + c, + InstructionOp::Bgt, + 2usize, + ), ) } - /// bgt a(r?|num) b(r?|num) c(r?|num) + ///bgt a(r?|num) b(r?|num) c(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -554,7 +799,7 @@ pub trait BgtInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BgtalInstruction: IntegratedCircuit { - /// bgtal a(r?|num) b(r?|num) c(r?|num) + ///bgtal a(r?|num) b(r?|num) c(r?|num) fn execute_bgtal( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -563,12 +808,24 @@ pub trait BgtalInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BgtalInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Bgtal, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Bgtal, 1), - &crate::vm::instructions::operands::InstOperand::new(c, InstructionOp::Bgtal, 2), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Bgtal, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Bgtal, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + c, + InstructionOp::Bgtal, + 2usize, + ), ) } - /// bgtal a(r?|num) b(r?|num) c(r?|num) + ///bgtal a(r?|num) b(r?|num) c(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -577,7 +834,7 @@ pub trait BgtalInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BgtzInstruction: IntegratedCircuit { - /// bgtz a(r?|num) b(r?|num) + ///bgtz a(r?|num) b(r?|num) fn execute_bgtz( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -585,11 +842,19 @@ pub trait BgtzInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BgtzInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Bgtz, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Bgtz, 1), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Bgtz, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Bgtz, + 1usize, + ), ) } - /// bgtz a(r?|num) b(r?|num) + ///bgtz a(r?|num) b(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -597,7 +862,7 @@ pub trait BgtzInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BgtzalInstruction: IntegratedCircuit { - /// bgtzal a(r?|num) b(r?|num) + ///bgtzal a(r?|num) b(r?|num) fn execute_bgtzal( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -605,11 +870,19 @@ pub trait BgtzalInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BgtzalInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Bgtzal, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Bgtzal, 1), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Bgtzal, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Bgtzal, + 1usize, + ), ) } - /// bgtzal a(r?|num) b(r?|num) + ///bgtzal a(r?|num) b(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -617,7 +890,7 @@ pub trait BgtzalInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BleInstruction: IntegratedCircuit { - /// ble a(r?|num) b(r?|num) c(r?|num) + ///ble a(r?|num) b(r?|num) c(r?|num) fn execute_ble( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -626,12 +899,24 @@ pub trait BleInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BleInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Ble, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Ble, 1), - &crate::vm::instructions::operands::InstOperand::new(c, InstructionOp::Ble, 2), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Ble, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Ble, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + c, + InstructionOp::Ble, + 2usize, + ), ) } - /// ble a(r?|num) b(r?|num) c(r?|num) + ///ble a(r?|num) b(r?|num) c(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -640,7 +925,7 @@ pub trait BleInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BlealInstruction: IntegratedCircuit { - /// bleal a(r?|num) b(r?|num) c(r?|num) + ///bleal a(r?|num) b(r?|num) c(r?|num) fn execute_bleal( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -649,12 +934,24 @@ pub trait BlealInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BlealInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Bleal, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Bleal, 1), - &crate::vm::instructions::operands::InstOperand::new(c, InstructionOp::Bleal, 2), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Bleal, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Bleal, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + c, + InstructionOp::Bleal, + 2usize, + ), ) } - /// bleal a(r?|num) b(r?|num) c(r?|num) + ///bleal a(r?|num) b(r?|num) c(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -663,7 +960,7 @@ pub trait BlealInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BlezInstruction: IntegratedCircuit { - /// blez a(r?|num) b(r?|num) + ///blez a(r?|num) b(r?|num) fn execute_blez( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -671,11 +968,19 @@ pub trait BlezInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BlezInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Blez, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Blez, 1), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Blez, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Blez, + 1usize, + ), ) } - /// blez a(r?|num) b(r?|num) + ///blez a(r?|num) b(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -683,7 +988,7 @@ pub trait BlezInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BlezalInstruction: IntegratedCircuit { - /// blezal a(r?|num) b(r?|num) + ///blezal a(r?|num) b(r?|num) fn execute_blezal( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -691,11 +996,19 @@ pub trait BlezalInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BlezalInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Blezal, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Blezal, 1), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Blezal, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Blezal, + 1usize, + ), ) } - /// blezal a(r?|num) b(r?|num) + ///blezal a(r?|num) b(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -703,7 +1016,7 @@ pub trait BlezalInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BltInstruction: IntegratedCircuit { - /// blt a(r?|num) b(r?|num) c(r?|num) + ///blt a(r?|num) b(r?|num) c(r?|num) fn execute_blt( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -712,12 +1025,24 @@ pub trait BltInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BltInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Blt, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Blt, 1), - &crate::vm::instructions::operands::InstOperand::new(c, InstructionOp::Blt, 2), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Blt, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Blt, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + c, + InstructionOp::Blt, + 2usize, + ), ) } - /// blt a(r?|num) b(r?|num) c(r?|num) + ///blt a(r?|num) b(r?|num) c(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -726,7 +1051,7 @@ pub trait BltInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BltalInstruction: IntegratedCircuit { - /// bltal a(r?|num) b(r?|num) c(r?|num) + ///bltal a(r?|num) b(r?|num) c(r?|num) fn execute_bltal( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -735,12 +1060,24 @@ pub trait BltalInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BltalInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Bltal, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Bltal, 1), - &crate::vm::instructions::operands::InstOperand::new(c, InstructionOp::Bltal, 2), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Bltal, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Bltal, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + c, + InstructionOp::Bltal, + 2usize, + ), ) } - /// bltal a(r?|num) b(r?|num) c(r?|num) + ///bltal a(r?|num) b(r?|num) c(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -749,7 +1086,7 @@ pub trait BltalInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BltzInstruction: IntegratedCircuit { - /// bltz a(r?|num) b(r?|num) + ///bltz a(r?|num) b(r?|num) fn execute_bltz( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -757,11 +1094,19 @@ pub trait BltzInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BltzInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Bltz, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Bltz, 1), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Bltz, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Bltz, + 1usize, + ), ) } - /// bltz a(r?|num) b(r?|num) + ///bltz a(r?|num) b(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -769,7 +1114,7 @@ pub trait BltzInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BltzalInstruction: IntegratedCircuit { - /// bltzal a(r?|num) b(r?|num) + ///bltzal a(r?|num) b(r?|num) fn execute_bltzal( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -777,11 +1122,19 @@ pub trait BltzalInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BltzalInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Bltzal, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Bltzal, 1), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Bltzal, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Bltzal, + 1usize, + ), ) } - /// bltzal a(r?|num) b(r?|num) + ///bltzal a(r?|num) b(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -789,7 +1142,7 @@ pub trait BltzalInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BnaInstruction: IntegratedCircuit { - /// bna a(r?|num) b(r?|num) c(r?|num) d(r?|num) + ///bna a(r?|num) b(r?|num) c(r?|num) d(r?|num) fn execute_bna( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -799,13 +1152,29 @@ pub trait BnaInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BnaInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Bna, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Bna, 1), - &crate::vm::instructions::operands::InstOperand::new(c, InstructionOp::Bna, 2), - &crate::vm::instructions::operands::InstOperand::new(d, InstructionOp::Bna, 3), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Bna, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Bna, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + c, + InstructionOp::Bna, + 2usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + d, + InstructionOp::Bna, + 3usize, + ), ) } - /// bna a(r?|num) b(r?|num) c(r?|num) d(r?|num) + ///bna a(r?|num) b(r?|num) c(r?|num) d(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -815,7 +1184,7 @@ pub trait BnaInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BnaalInstruction: IntegratedCircuit { - /// bnaal a(r?|num) b(r?|num) c(r?|num) d(r?|num) + ///bnaal a(r?|num) b(r?|num) c(r?|num) d(r?|num) fn execute_bnaal( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -825,13 +1194,29 @@ pub trait BnaalInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BnaalInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Bnaal, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Bnaal, 1), - &crate::vm::instructions::operands::InstOperand::new(c, InstructionOp::Bnaal, 2), - &crate::vm::instructions::operands::InstOperand::new(d, InstructionOp::Bnaal, 3), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Bnaal, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Bnaal, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + c, + InstructionOp::Bnaal, + 2usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + d, + InstructionOp::Bnaal, + 3usize, + ), ) } - /// bnaal a(r?|num) b(r?|num) c(r?|num) d(r?|num) + ///bnaal a(r?|num) b(r?|num) c(r?|num) d(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -841,7 +1226,7 @@ pub trait BnaalInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BnanInstruction: IntegratedCircuit { - /// bnan a(r?|num) b(r?|num) + ///bnan a(r?|num) b(r?|num) fn execute_bnan( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -849,11 +1234,19 @@ pub trait BnanInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BnanInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Bnan, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Bnan, 1), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Bnan, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Bnan, + 1usize, + ), ) } - /// bnan a(r?|num) b(r?|num) + ///bnan a(r?|num) b(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -861,7 +1254,7 @@ pub trait BnanInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BnazInstruction: IntegratedCircuit { - /// bnaz a(r?|num) b(r?|num) c(r?|num) + ///bnaz a(r?|num) b(r?|num) c(r?|num) fn execute_bnaz( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -870,12 +1263,24 @@ pub trait BnazInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BnazInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Bnaz, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Bnaz, 1), - &crate::vm::instructions::operands::InstOperand::new(c, InstructionOp::Bnaz, 2), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Bnaz, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Bnaz, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + c, + InstructionOp::Bnaz, + 2usize, + ), ) } - /// bnaz a(r?|num) b(r?|num) c(r?|num) + ///bnaz a(r?|num) b(r?|num) c(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -884,7 +1289,7 @@ pub trait BnazInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BnazalInstruction: IntegratedCircuit { - /// bnazal a(r?|num) b(r?|num) c(r?|num) + ///bnazal a(r?|num) b(r?|num) c(r?|num) fn execute_bnazal( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -893,12 +1298,24 @@ pub trait BnazalInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BnazalInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Bnazal, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Bnazal, 1), - &crate::vm::instructions::operands::InstOperand::new(c, InstructionOp::Bnazal, 2), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Bnazal, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Bnazal, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + c, + InstructionOp::Bnazal, + 2usize, + ), ) } - /// bnazal a(r?|num) b(r?|num) c(r?|num) + ///bnazal a(r?|num) b(r?|num) c(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -907,7 +1324,7 @@ pub trait BnazalInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BneInstruction: IntegratedCircuit { - /// bne a(r?|num) b(r?|num) c(r?|num) + ///bne a(r?|num) b(r?|num) c(r?|num) fn execute_bne( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -916,12 +1333,24 @@ pub trait BneInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BneInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Bne, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Bne, 1), - &crate::vm::instructions::operands::InstOperand::new(c, InstructionOp::Bne, 2), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Bne, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Bne, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + c, + InstructionOp::Bne, + 2usize, + ), ) } - /// bne a(r?|num) b(r?|num) c(r?|num) + ///bne a(r?|num) b(r?|num) c(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -930,7 +1359,7 @@ pub trait BneInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BnealInstruction: IntegratedCircuit { - /// bneal a(r?|num) b(r?|num) c(r?|num) + ///bneal a(r?|num) b(r?|num) c(r?|num) fn execute_bneal( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -939,12 +1368,24 @@ pub trait BnealInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BnealInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Bneal, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Bneal, 1), - &crate::vm::instructions::operands::InstOperand::new(c, InstructionOp::Bneal, 2), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Bneal, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Bneal, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + c, + InstructionOp::Bneal, + 2usize, + ), ) } - /// bneal a(r?|num) b(r?|num) c(r?|num) + ///bneal a(r?|num) b(r?|num) c(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -953,7 +1394,7 @@ pub trait BnealInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BnezInstruction: IntegratedCircuit { - /// bnez a(r?|num) b(r?|num) + ///bnez a(r?|num) b(r?|num) fn execute_bnez( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -961,11 +1402,19 @@ pub trait BnezInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BnezInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Bnez, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Bnez, 1), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Bnez, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Bnez, + 1usize, + ), ) } - /// bnez a(r?|num) b(r?|num) + ///bnez a(r?|num) b(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -973,7 +1422,7 @@ pub trait BnezInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BnezalInstruction: IntegratedCircuit { - /// bnezal a(r?|num) b(r?|num) + ///bnezal a(r?|num) b(r?|num) fn execute_bnezal( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -981,11 +1430,19 @@ pub trait BnezalInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BnezalInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Bnezal, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Bnezal, 1), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Bnezal, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Bnezal, + 1usize, + ), ) } - /// bnezal a(r?|num) b(r?|num) + ///bnezal a(r?|num) b(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -993,7 +1450,7 @@ pub trait BnezalInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BrapInstruction: IntegratedCircuit { - /// brap a(r?|num) b(r?|num) c(r?|num) d(r?|num) + ///brap a(r?|num) b(r?|num) c(r?|num) d(r?|num) fn execute_brap( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -1003,13 +1460,29 @@ pub trait BrapInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BrapInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Brap, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Brap, 1), - &crate::vm::instructions::operands::InstOperand::new(c, InstructionOp::Brap, 2), - &crate::vm::instructions::operands::InstOperand::new(d, InstructionOp::Brap, 3), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Brap, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Brap, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + c, + InstructionOp::Brap, + 2usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + d, + InstructionOp::Brap, + 3usize, + ), ) } - /// brap a(r?|num) b(r?|num) c(r?|num) d(r?|num) + ///brap a(r?|num) b(r?|num) c(r?|num) d(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -1019,7 +1492,7 @@ pub trait BrapInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BrapzInstruction: IntegratedCircuit { - /// brapz a(r?|num) b(r?|num) c(r?|num) + ///brapz a(r?|num) b(r?|num) c(r?|num) fn execute_brapz( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -1028,12 +1501,24 @@ pub trait BrapzInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BrapzInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Brapz, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Brapz, 1), - &crate::vm::instructions::operands::InstOperand::new(c, InstructionOp::Brapz, 2), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Brapz, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Brapz, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + c, + InstructionOp::Brapz, + 2usize, + ), ) } - /// brapz a(r?|num) b(r?|num) c(r?|num) + ///brapz a(r?|num) b(r?|num) c(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -1042,7 +1527,7 @@ pub trait BrapzInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BrdnsInstruction: IntegratedCircuit { - /// brdns d? a(r?|num) + ///brdns d? a(r?|num) fn execute_brdns( &mut self, d: &crate::vm::instructions::operands::Operand, @@ -1050,11 +1535,19 @@ pub trait BrdnsInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BrdnsInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(d, InstructionOp::Brdns, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Brdns, 1), + &crate::vm::instructions::operands::InstOperand::new( + d, + InstructionOp::Brdns, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Brdns, + 1usize, + ), ) } - /// brdns d? a(r?|num) + ///brdns d? a(r?|num) fn execute_inner( &mut self, d: &crate::vm::instructions::operands::InstOperand, @@ -1062,7 +1555,7 @@ pub trait BrdnsInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BrdseInstruction: IntegratedCircuit { - /// brdse d? a(r?|num) + ///brdse d? a(r?|num) fn execute_brdse( &mut self, d: &crate::vm::instructions::operands::Operand, @@ -1070,11 +1563,19 @@ pub trait BrdseInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BrdseInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(d, InstructionOp::Brdse, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Brdse, 1), + &crate::vm::instructions::operands::InstOperand::new( + d, + InstructionOp::Brdse, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Brdse, + 1usize, + ), ) } - /// brdse d? a(r?|num) + ///brdse d? a(r?|num) fn execute_inner( &mut self, d: &crate::vm::instructions::operands::InstOperand, @@ -1082,7 +1583,7 @@ pub trait BrdseInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BreqInstruction: IntegratedCircuit { - /// breq a(r?|num) b(r?|num) c(r?|num) + ///breq a(r?|num) b(r?|num) c(r?|num) fn execute_breq( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -1091,12 +1592,24 @@ pub trait BreqInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BreqInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Breq, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Breq, 1), - &crate::vm::instructions::operands::InstOperand::new(c, InstructionOp::Breq, 2), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Breq, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Breq, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + c, + InstructionOp::Breq, + 2usize, + ), ) } - /// breq a(r?|num) b(r?|num) c(r?|num) + ///breq a(r?|num) b(r?|num) c(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -1105,7 +1618,7 @@ pub trait BreqInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BreqzInstruction: IntegratedCircuit { - /// breqz a(r?|num) b(r?|num) + ///breqz a(r?|num) b(r?|num) fn execute_breqz( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -1113,11 +1626,19 @@ pub trait BreqzInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BreqzInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Breqz, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Breqz, 1), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Breqz, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Breqz, + 1usize, + ), ) } - /// breqz a(r?|num) b(r?|num) + ///breqz a(r?|num) b(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -1125,7 +1646,7 @@ pub trait BreqzInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BrgeInstruction: IntegratedCircuit { - /// brge a(r?|num) b(r?|num) c(r?|num) + ///brge a(r?|num) b(r?|num) c(r?|num) fn execute_brge( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -1134,12 +1655,24 @@ pub trait BrgeInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BrgeInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Brge, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Brge, 1), - &crate::vm::instructions::operands::InstOperand::new(c, InstructionOp::Brge, 2), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Brge, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Brge, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + c, + InstructionOp::Brge, + 2usize, + ), ) } - /// brge a(r?|num) b(r?|num) c(r?|num) + ///brge a(r?|num) b(r?|num) c(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -1148,7 +1681,7 @@ pub trait BrgeInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BrgezInstruction: IntegratedCircuit { - /// brgez a(r?|num) b(r?|num) + ///brgez a(r?|num) b(r?|num) fn execute_brgez( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -1156,11 +1689,19 @@ pub trait BrgezInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BrgezInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Brgez, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Brgez, 1), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Brgez, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Brgez, + 1usize, + ), ) } - /// brgez a(r?|num) b(r?|num) + ///brgez a(r?|num) b(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -1168,7 +1709,7 @@ pub trait BrgezInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BrgtInstruction: IntegratedCircuit { - /// brgt a(r?|num) b(r?|num) c(r?|num) + ///brgt a(r?|num) b(r?|num) c(r?|num) fn execute_brgt( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -1177,12 +1718,24 @@ pub trait BrgtInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BrgtInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Brgt, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Brgt, 1), - &crate::vm::instructions::operands::InstOperand::new(c, InstructionOp::Brgt, 2), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Brgt, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Brgt, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + c, + InstructionOp::Brgt, + 2usize, + ), ) } - /// brgt a(r?|num) b(r?|num) c(r?|num) + ///brgt a(r?|num) b(r?|num) c(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -1191,7 +1744,7 @@ pub trait BrgtInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BrgtzInstruction: IntegratedCircuit { - /// brgtz a(r?|num) b(r?|num) + ///brgtz a(r?|num) b(r?|num) fn execute_brgtz( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -1199,11 +1752,19 @@ pub trait BrgtzInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BrgtzInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Brgtz, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Brgtz, 1), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Brgtz, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Brgtz, + 1usize, + ), ) } - /// brgtz a(r?|num) b(r?|num) + ///brgtz a(r?|num) b(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -1211,7 +1772,7 @@ pub trait BrgtzInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BrleInstruction: IntegratedCircuit { - /// brle a(r?|num) b(r?|num) c(r?|num) + ///brle a(r?|num) b(r?|num) c(r?|num) fn execute_brle( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -1220,12 +1781,24 @@ pub trait BrleInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BrleInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Brle, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Brle, 1), - &crate::vm::instructions::operands::InstOperand::new(c, InstructionOp::Brle, 2), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Brle, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Brle, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + c, + InstructionOp::Brle, + 2usize, + ), ) } - /// brle a(r?|num) b(r?|num) c(r?|num) + ///brle a(r?|num) b(r?|num) c(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -1234,7 +1807,7 @@ pub trait BrleInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BrlezInstruction: IntegratedCircuit { - /// brlez a(r?|num) b(r?|num) + ///brlez a(r?|num) b(r?|num) fn execute_brlez( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -1242,11 +1815,19 @@ pub trait BrlezInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BrlezInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Brlez, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Brlez, 1), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Brlez, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Brlez, + 1usize, + ), ) } - /// brlez a(r?|num) b(r?|num) + ///brlez a(r?|num) b(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -1254,7 +1835,7 @@ pub trait BrlezInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BrltInstruction: IntegratedCircuit { - /// brlt a(r?|num) b(r?|num) c(r?|num) + ///brlt a(r?|num) b(r?|num) c(r?|num) fn execute_brlt( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -1263,12 +1844,24 @@ pub trait BrltInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BrltInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Brlt, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Brlt, 1), - &crate::vm::instructions::operands::InstOperand::new(c, InstructionOp::Brlt, 2), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Brlt, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Brlt, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + c, + InstructionOp::Brlt, + 2usize, + ), ) } - /// brlt a(r?|num) b(r?|num) c(r?|num) + ///brlt a(r?|num) b(r?|num) c(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -1277,7 +1870,7 @@ pub trait BrltInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BrltzInstruction: IntegratedCircuit { - /// brltz a(r?|num) b(r?|num) + ///brltz a(r?|num) b(r?|num) fn execute_brltz( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -1285,11 +1878,19 @@ pub trait BrltzInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BrltzInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Brltz, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Brltz, 1), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Brltz, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Brltz, + 1usize, + ), ) } - /// brltz a(r?|num) b(r?|num) + ///brltz a(r?|num) b(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -1297,7 +1898,7 @@ pub trait BrltzInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BrnaInstruction: IntegratedCircuit { - /// brna a(r?|num) b(r?|num) c(r?|num) d(r?|num) + ///brna a(r?|num) b(r?|num) c(r?|num) d(r?|num) fn execute_brna( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -1307,13 +1908,29 @@ pub trait BrnaInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BrnaInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Brna, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Brna, 1), - &crate::vm::instructions::operands::InstOperand::new(c, InstructionOp::Brna, 2), - &crate::vm::instructions::operands::InstOperand::new(d, InstructionOp::Brna, 3), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Brna, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Brna, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + c, + InstructionOp::Brna, + 2usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + d, + InstructionOp::Brna, + 3usize, + ), ) } - /// brna a(r?|num) b(r?|num) c(r?|num) d(r?|num) + ///brna a(r?|num) b(r?|num) c(r?|num) d(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -1323,7 +1940,7 @@ pub trait BrnaInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BrnanInstruction: IntegratedCircuit { - /// brnan a(r?|num) b(r?|num) + ///brnan a(r?|num) b(r?|num) fn execute_brnan( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -1331,11 +1948,19 @@ pub trait BrnanInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BrnanInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Brnan, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Brnan, 1), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Brnan, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Brnan, + 1usize, + ), ) } - /// brnan a(r?|num) b(r?|num) + ///brnan a(r?|num) b(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -1343,7 +1968,7 @@ pub trait BrnanInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BrnazInstruction: IntegratedCircuit { - /// brnaz a(r?|num) b(r?|num) c(r?|num) + ///brnaz a(r?|num) b(r?|num) c(r?|num) fn execute_brnaz( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -1352,12 +1977,24 @@ pub trait BrnazInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BrnazInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Brnaz, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Brnaz, 1), - &crate::vm::instructions::operands::InstOperand::new(c, InstructionOp::Brnaz, 2), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Brnaz, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Brnaz, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + c, + InstructionOp::Brnaz, + 2usize, + ), ) } - /// brnaz a(r?|num) b(r?|num) c(r?|num) + ///brnaz a(r?|num) b(r?|num) c(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -1366,7 +2003,7 @@ pub trait BrnazInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BrneInstruction: IntegratedCircuit { - /// brne a(r?|num) b(r?|num) c(r?|num) + ///brne a(r?|num) b(r?|num) c(r?|num) fn execute_brne( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -1375,12 +2012,24 @@ pub trait BrneInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BrneInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Brne, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Brne, 1), - &crate::vm::instructions::operands::InstOperand::new(c, InstructionOp::Brne, 2), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Brne, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Brne, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + c, + InstructionOp::Brne, + 2usize, + ), ) } - /// brne a(r?|num) b(r?|num) c(r?|num) + ///brne a(r?|num) b(r?|num) c(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -1389,7 +2038,7 @@ pub trait BrneInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait BrnezInstruction: IntegratedCircuit { - /// brnez a(r?|num) b(r?|num) + ///brnez a(r?|num) b(r?|num) fn execute_brnez( &mut self, a: &crate::vm::instructions::operands::Operand, @@ -1397,11 +2046,19 @@ pub trait BrnezInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { BrnezInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Brnez, 0), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Brnez, 1), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Brnez, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Brnez, + 1usize, + ), ) } - /// brnez a(r?|num) b(r?|num) + ///brnez a(r?|num) b(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, @@ -1409,7 +2066,7 @@ pub trait BrnezInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait CeilInstruction: IntegratedCircuit { - /// ceil r? a(r?|num) + ///ceil r? a(r?|num) fn execute_ceil( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -1417,11 +2074,19 @@ pub trait CeilInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { CeilInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Ceil, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Ceil, 1), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Ceil, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Ceil, + 1usize, + ), ) } - /// ceil r? a(r?|num) + ///ceil r? a(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -1429,41 +2094,49 @@ pub trait CeilInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait ClrInstruction: IntegratedCircuit { - /// clr d? + ///clr d? fn execute_clr( &mut self, d: &crate::vm::instructions::operands::Operand, ) -> Result<(), crate::errors::ICError> { ClrInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(d, InstructionOp::Clr, 0), + &crate::vm::instructions::operands::InstOperand::new( + d, + InstructionOp::Clr, + 0usize, + ), ) } - /// clr d? + ///clr d? fn execute_inner( &mut self, d: &crate::vm::instructions::operands::InstOperand, ) -> Result<(), crate::errors::ICError>; } pub trait ClrdInstruction: IntegratedCircuit { - /// clrd id(r?|num) + ///clrd id(r?|num) fn execute_clrd( &mut self, id: &crate::vm::instructions::operands::Operand, ) -> Result<(), crate::errors::ICError> { ClrdInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(id, InstructionOp::Clrd, 0), + &crate::vm::instructions::operands::InstOperand::new( + id, + InstructionOp::Clrd, + 0usize, + ), ) } - /// clrd id(r?|num) + ///clrd id(r?|num) fn execute_inner( &mut self, id: &crate::vm::instructions::operands::InstOperand, ) -> Result<(), crate::errors::ICError>; } pub trait CosInstruction: IntegratedCircuit { - /// cos r? a(r?|num) + ///cos r? a(r?|num) fn execute_cos( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -1471,11 +2144,19 @@ pub trait CosInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { CosInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Cos, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Cos, 1), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Cos, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Cos, + 1usize, + ), ) } - /// cos r? a(r?|num) + ///cos r? a(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -1483,7 +2164,7 @@ pub trait CosInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait DefineInstruction: IntegratedCircuit { - /// define str num + ///define str num fn execute_define( &mut self, string: &crate::vm::instructions::operands::Operand, @@ -1491,11 +2172,19 @@ pub trait DefineInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { DefineInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(string, InstructionOp::Define, 0), - &crate::vm::instructions::operands::InstOperand::new(num, InstructionOp::Define, 1), + &crate::vm::instructions::operands::InstOperand::new( + string, + InstructionOp::Define, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + num, + InstructionOp::Define, + 1usize, + ), ) } - /// define str num + ///define str num fn execute_inner( &mut self, string: &crate::vm::instructions::operands::InstOperand, @@ -1503,7 +2192,7 @@ pub trait DefineInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait DivInstruction: IntegratedCircuit { - /// div r? a(r?|num) b(r?|num) + ///div r? a(r?|num) b(r?|num) fn execute_div( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -1512,12 +2201,24 @@ pub trait DivInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { DivInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Div, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Div, 1), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Div, 2), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Div, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Div, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Div, + 2usize, + ), ) } - /// div r? a(r?|num) b(r?|num) + ///div r? a(r?|num) b(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -1526,7 +2227,7 @@ pub trait DivInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait ExpInstruction: IntegratedCircuit { - /// exp r? a(r?|num) + ///exp r? a(r?|num) fn execute_exp( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -1534,11 +2235,19 @@ pub trait ExpInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { ExpInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Exp, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Exp, 1), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Exp, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Exp, + 1usize, + ), ) } - /// exp r? a(r?|num) + ///exp r? a(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -1546,7 +2255,7 @@ pub trait ExpInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait FloorInstruction: IntegratedCircuit { - /// floor r? a(r?|num) + ///floor r? a(r?|num) fn execute_floor( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -1554,11 +2263,19 @@ pub trait FloorInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { FloorInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Floor, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Floor, 1), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Floor, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Floor, + 1usize, + ), ) } - /// floor r? a(r?|num) + ///floor r? a(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -1566,7 +2283,7 @@ pub trait FloorInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait GetInstruction: IntegratedCircuit { - /// get r? d? address(r?|num) + ///get r? d? address(r?|num) fn execute_get( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -1575,12 +2292,24 @@ pub trait GetInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { GetInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Get, 0), - &crate::vm::instructions::operands::InstOperand::new(d, InstructionOp::Get, 1), - &crate::vm::instructions::operands::InstOperand::new(address, InstructionOp::Get, 2), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Get, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + d, + InstructionOp::Get, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + address, + InstructionOp::Get, + 2usize, + ), ) } - /// get r? d? address(r?|num) + ///get r? d? address(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -1589,7 +2318,7 @@ pub trait GetInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait GetdInstruction: IntegratedCircuit { - /// getd r? id(r?|num) address(r?|num) + ///getd r? id(r?|num) address(r?|num) fn execute_getd( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -1598,12 +2327,24 @@ pub trait GetdInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { GetdInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Getd, 0), - &crate::vm::instructions::operands::InstOperand::new(id, InstructionOp::Getd, 1), - &crate::vm::instructions::operands::InstOperand::new(address, InstructionOp::Getd, 2), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Getd, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + id, + InstructionOp::Getd, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + address, + InstructionOp::Getd, + 2usize, + ), ) } - /// getd r? id(r?|num) address(r?|num) + ///getd r? id(r?|num) address(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -1612,66 +2353,78 @@ pub trait GetdInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait HcfInstruction: IntegratedCircuit { - /// hcf + ///hcf fn execute_hcf(&mut self) -> Result<(), crate::errors::ICError> { HcfInstruction::execute_inner(self) } - /// hcf + ///hcf fn execute_inner(&mut self) -> Result<(), crate::errors::ICError>; } pub trait JInstruction: IntegratedCircuit { - /// j int + ///j int fn execute_j( &mut self, int: &crate::vm::instructions::operands::Operand, ) -> Result<(), crate::errors::ICError> { JInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(int, InstructionOp::J, 0), + &crate::vm::instructions::operands::InstOperand::new( + int, + InstructionOp::J, + 0usize, + ), ) } - /// j int + ///j int fn execute_inner( &mut self, int: &crate::vm::instructions::operands::InstOperand, ) -> Result<(), crate::errors::ICError>; } pub trait JalInstruction: IntegratedCircuit { - /// jal int + ///jal int fn execute_jal( &mut self, int: &crate::vm::instructions::operands::Operand, ) -> Result<(), crate::errors::ICError> { JalInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(int, InstructionOp::Jal, 0), + &crate::vm::instructions::operands::InstOperand::new( + int, + InstructionOp::Jal, + 0usize, + ), ) } - /// jal int + ///jal int fn execute_inner( &mut self, int: &crate::vm::instructions::operands::InstOperand, ) -> Result<(), crate::errors::ICError>; } pub trait JrInstruction: IntegratedCircuit { - /// jr int + ///jr int fn execute_jr( &mut self, int: &crate::vm::instructions::operands::Operand, ) -> Result<(), crate::errors::ICError> { JrInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(int, InstructionOp::Jr, 0), + &crate::vm::instructions::operands::InstOperand::new( + int, + InstructionOp::Jr, + 0usize, + ), ) } - /// jr int + ///jr int fn execute_inner( &mut self, int: &crate::vm::instructions::operands::InstOperand, ) -> Result<(), crate::errors::ICError>; } pub trait LInstruction: IntegratedCircuit { - /// l r? d? logicType + ///l r? d? logicType fn execute_l( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -1680,12 +2433,24 @@ pub trait LInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { LInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::L, 0), - &crate::vm::instructions::operands::InstOperand::new(d, InstructionOp::L, 1), - &crate::vm::instructions::operands::InstOperand::new(logic_type, InstructionOp::L, 2), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::L, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + d, + InstructionOp::L, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + logic_type, + InstructionOp::L, + 2usize, + ), ) } - /// l r? d? logicType + ///l r? d? logicType fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -1694,7 +2459,7 @@ pub trait LInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait LabelInstruction: IntegratedCircuit { - /// label d? str + ///label d? str fn execute_label( &mut self, d: &crate::vm::instructions::operands::Operand, @@ -1702,11 +2467,19 @@ pub trait LabelInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { LabelInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(d, InstructionOp::Label, 0), - &crate::vm::instructions::operands::InstOperand::new(string, InstructionOp::Label, 1), + &crate::vm::instructions::operands::InstOperand::new( + d, + InstructionOp::Label, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + string, + InstructionOp::Label, + 1usize, + ), ) } - /// label d? str + ///label d? str fn execute_inner( &mut self, d: &crate::vm::instructions::operands::InstOperand, @@ -1714,7 +2487,7 @@ pub trait LabelInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait LbInstruction: IntegratedCircuit { - /// lb r? deviceHash logicType batchMode + ///lb r? deviceHash logicType batchMode fn execute_lb( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -1724,13 +2497,29 @@ pub trait LbInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { LbInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Lb, 0), - &crate::vm::instructions::operands::InstOperand::new(device_hash, InstructionOp::Lb, 1), - &crate::vm::instructions::operands::InstOperand::new(logic_type, InstructionOp::Lb, 2), - &crate::vm::instructions::operands::InstOperand::new(batch_mode, InstructionOp::Lb, 3), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Lb, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + device_hash, + InstructionOp::Lb, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + logic_type, + InstructionOp::Lb, + 2usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + batch_mode, + InstructionOp::Lb, + 3usize, + ), ) } - /// lb r? deviceHash logicType batchMode + ///lb r? deviceHash logicType batchMode fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -1740,7 +2529,7 @@ pub trait LbInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait LbnInstruction: IntegratedCircuit { - /// lbn r? deviceHash nameHash logicType batchMode + ///lbn r? deviceHash nameHash logicType batchMode fn execute_lbn( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -1751,18 +2540,34 @@ pub trait LbnInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { LbnInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Lbn, 0), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Lbn, + 0usize, + ), &crate::vm::instructions::operands::InstOperand::new( device_hash, InstructionOp::Lbn, - 1, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + name_hash, + InstructionOp::Lbn, + 2usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + logic_type, + InstructionOp::Lbn, + 3usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + batch_mode, + InstructionOp::Lbn, + 4usize, ), - &crate::vm::instructions::operands::InstOperand::new(name_hash, InstructionOp::Lbn, 2), - &crate::vm::instructions::operands::InstOperand::new(logic_type, InstructionOp::Lbn, 3), - &crate::vm::instructions::operands::InstOperand::new(batch_mode, InstructionOp::Lbn, 4), ) } - /// lbn r? deviceHash nameHash logicType batchMode + ///lbn r? deviceHash nameHash logicType batchMode fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -1773,7 +2578,7 @@ pub trait LbnInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait LbnsInstruction: IntegratedCircuit { - /// lbns r? deviceHash nameHash slotIndex logicSlotType batchMode + ///lbns r? deviceHash nameHash slotIndex logicSlotType batchMode fn execute_lbns( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -1785,31 +2590,39 @@ pub trait LbnsInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { LbnsInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Lbns, 0), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Lbns, + 0usize, + ), &crate::vm::instructions::operands::InstOperand::new( device_hash, InstructionOp::Lbns, - 1, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + name_hash, + InstructionOp::Lbns, + 2usize, ), - &crate::vm::instructions::operands::InstOperand::new(name_hash, InstructionOp::Lbns, 2), &crate::vm::instructions::operands::InstOperand::new( slot_index, InstructionOp::Lbns, - 3, + 3usize, ), &crate::vm::instructions::operands::InstOperand::new( logic_slot_type, InstructionOp::Lbns, - 4, + 4usize, ), &crate::vm::instructions::operands::InstOperand::new( batch_mode, InstructionOp::Lbns, - 5, + 5usize, ), ) } - /// lbns r? deviceHash nameHash slotIndex logicSlotType batchMode + ///lbns r? deviceHash nameHash slotIndex logicSlotType batchMode fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -1821,7 +2634,7 @@ pub trait LbnsInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait LbsInstruction: IntegratedCircuit { - /// lbs r? deviceHash slotIndex logicSlotType batchMode + ///lbs r? deviceHash slotIndex logicSlotType batchMode fn execute_lbs( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -1832,22 +2645,34 @@ pub trait LbsInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { LbsInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Lbs, 0), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Lbs, + 0usize, + ), &crate::vm::instructions::operands::InstOperand::new( device_hash, InstructionOp::Lbs, - 1, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + slot_index, + InstructionOp::Lbs, + 2usize, ), - &crate::vm::instructions::operands::InstOperand::new(slot_index, InstructionOp::Lbs, 2), &crate::vm::instructions::operands::InstOperand::new( logic_slot_type, InstructionOp::Lbs, - 3, + 3usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + batch_mode, + InstructionOp::Lbs, + 4usize, ), - &crate::vm::instructions::operands::InstOperand::new(batch_mode, InstructionOp::Lbs, 4), ) } - /// lbs r? deviceHash slotIndex logicSlotType batchMode + ///lbs r? deviceHash slotIndex logicSlotType batchMode fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -1858,7 +2683,7 @@ pub trait LbsInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait LdInstruction: IntegratedCircuit { - /// ld r? id(r?|num) logicType + ///ld r? id(r?|num) logicType fn execute_ld( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -1867,12 +2692,24 @@ pub trait LdInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { LdInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Ld, 0), - &crate::vm::instructions::operands::InstOperand::new(id, InstructionOp::Ld, 1), - &crate::vm::instructions::operands::InstOperand::new(logic_type, InstructionOp::Ld, 2), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Ld, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + id, + InstructionOp::Ld, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + logic_type, + InstructionOp::Ld, + 2usize, + ), ) } - /// ld r? id(r?|num) logicType + ///ld r? id(r?|num) logicType fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -1881,7 +2718,7 @@ pub trait LdInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait LogInstruction: IntegratedCircuit { - /// log r? a(r?|num) + ///log r? a(r?|num) fn execute_log( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -1889,11 +2726,19 @@ pub trait LogInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { LogInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Log, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Log, 1), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Log, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Log, + 1usize, + ), ) } - /// log r? a(r?|num) + ///log r? a(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -1901,7 +2746,7 @@ pub trait LogInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait LrInstruction: IntegratedCircuit { - /// lr r? d? reagentMode int + ///lr r? d? reagentMode int fn execute_lr( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -1911,17 +2756,29 @@ pub trait LrInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { LrInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Lr, 0), - &crate::vm::instructions::operands::InstOperand::new(d, InstructionOp::Lr, 1), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Lr, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + d, + InstructionOp::Lr, + 1usize, + ), &crate::vm::instructions::operands::InstOperand::new( reagent_mode, InstructionOp::Lr, - 2, + 2usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + int, + InstructionOp::Lr, + 3usize, ), - &crate::vm::instructions::operands::InstOperand::new(int, InstructionOp::Lr, 3), ) } - /// lr r? d? reagentMode int + ///lr r? d? reagentMode int fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -1931,7 +2788,7 @@ pub trait LrInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait LsInstruction: IntegratedCircuit { - /// ls r? d? slotIndex logicSlotType + ///ls r? d? slotIndex logicSlotType fn execute_ls( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -1941,17 +2798,29 @@ pub trait LsInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { LsInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Ls, 0), - &crate::vm::instructions::operands::InstOperand::new(d, InstructionOp::Ls, 1), - &crate::vm::instructions::operands::InstOperand::new(slot_index, InstructionOp::Ls, 2), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Ls, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + d, + InstructionOp::Ls, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + slot_index, + InstructionOp::Ls, + 2usize, + ), &crate::vm::instructions::operands::InstOperand::new( logic_slot_type, InstructionOp::Ls, - 3, + 3usize, ), ) } - /// ls r? d? slotIndex logicSlotType + ///ls r? d? slotIndex logicSlotType fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -1961,7 +2830,7 @@ pub trait LsInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait MaxInstruction: IntegratedCircuit { - /// max r? a(r?|num) b(r?|num) + ///max r? a(r?|num) b(r?|num) fn execute_max( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -1970,12 +2839,24 @@ pub trait MaxInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { MaxInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Max, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Max, 1), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Max, 2), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Max, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Max, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Max, + 2usize, + ), ) } - /// max r? a(r?|num) b(r?|num) + ///max r? a(r?|num) b(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -1984,7 +2865,7 @@ pub trait MaxInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait MinInstruction: IntegratedCircuit { - /// min r? a(r?|num) b(r?|num) + ///min r? a(r?|num) b(r?|num) fn execute_min( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -1993,12 +2874,24 @@ pub trait MinInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { MinInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Min, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Min, 1), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Min, 2), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Min, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Min, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Min, + 2usize, + ), ) } - /// min r? a(r?|num) b(r?|num) + ///min r? a(r?|num) b(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -2007,7 +2900,7 @@ pub trait MinInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait ModInstruction: IntegratedCircuit { - /// mod r? a(r?|num) b(r?|num) + ///mod r? a(r?|num) b(r?|num) fn execute_mod( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -2016,12 +2909,24 @@ pub trait ModInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { ModInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Mod, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Mod, 1), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Mod, 2), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Mod, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Mod, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Mod, + 2usize, + ), ) } - /// mod r? a(r?|num) b(r?|num) + ///mod r? a(r?|num) b(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -2030,7 +2935,7 @@ pub trait ModInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait MoveInstruction: IntegratedCircuit { - /// move r? a(r?|num) + ///move r? a(r?|num) fn execute_move( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -2038,11 +2943,19 @@ pub trait MoveInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { MoveInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Move, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Move, 1), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Move, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Move, + 1usize, + ), ) } - /// move r? a(r?|num) + ///move r? a(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -2050,7 +2963,7 @@ pub trait MoveInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait MulInstruction: IntegratedCircuit { - /// mul r? a(r?|num) b(r?|num) + ///mul r? a(r?|num) b(r?|num) fn execute_mul( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -2059,12 +2972,24 @@ pub trait MulInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { MulInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Mul, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Mul, 1), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Mul, 2), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Mul, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Mul, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Mul, + 2usize, + ), ) } - /// mul r? a(r?|num) b(r?|num) + ///mul r? a(r?|num) b(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -2073,7 +2998,7 @@ pub trait MulInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait NorInstruction: IntegratedCircuit { - /// nor r? a(r?|num) b(r?|num) + ///nor r? a(r?|num) b(r?|num) fn execute_nor( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -2082,12 +3007,24 @@ pub trait NorInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { NorInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Nor, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Nor, 1), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Nor, 2), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Nor, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Nor, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Nor, + 2usize, + ), ) } - /// nor r? a(r?|num) b(r?|num) + ///nor r? a(r?|num) b(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -2096,7 +3033,7 @@ pub trait NorInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait NotInstruction: IntegratedCircuit { - /// not r? a(r?|num) + ///not r? a(r?|num) fn execute_not( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -2104,11 +3041,19 @@ pub trait NotInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { NotInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Not, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Not, 1), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Not, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Not, + 1usize, + ), ) } - /// not r? a(r?|num) + ///not r? a(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -2116,7 +3061,7 @@ pub trait NotInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait OrInstruction: IntegratedCircuit { - /// or r? a(r?|num) b(r?|num) + ///or r? a(r?|num) b(r?|num) fn execute_or( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -2125,12 +3070,24 @@ pub trait OrInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { OrInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Or, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Or, 1), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Or, 2), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Or, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Or, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Or, + 2usize, + ), ) } - /// or r? a(r?|num) b(r?|num) + ///or r? a(r?|num) b(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -2139,24 +3096,28 @@ pub trait OrInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait PeekInstruction: IntegratedCircuit { - /// peek r? + ///peek r? fn execute_peek( &mut self, r: &crate::vm::instructions::operands::Operand, ) -> Result<(), crate::errors::ICError> { PeekInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Peek, 0), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Peek, + 0usize, + ), ) } - /// peek r? + ///peek r? fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, ) -> Result<(), crate::errors::ICError>; } pub trait PokeInstruction: IntegratedCircuit { - /// poke address(r?|num) value(r?|num) + ///poke address(r?|num) value(r?|num) fn execute_poke( &mut self, address: &crate::vm::instructions::operands::Operand, @@ -2164,11 +3125,19 @@ pub trait PokeInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { PokeInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(address, InstructionOp::Poke, 0), - &crate::vm::instructions::operands::InstOperand::new(value, InstructionOp::Poke, 1), + &crate::vm::instructions::operands::InstOperand::new( + address, + InstructionOp::Poke, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + value, + InstructionOp::Poke, + 1usize, + ), ) } - /// poke address(r?|num) value(r?|num) + ///poke address(r?|num) value(r?|num) fn execute_inner( &mut self, address: &crate::vm::instructions::operands::InstOperand, @@ -2176,41 +3145,49 @@ pub trait PokeInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait PopInstruction: IntegratedCircuit { - /// pop r? + ///pop r? fn execute_pop( &mut self, r: &crate::vm::instructions::operands::Operand, ) -> Result<(), crate::errors::ICError> { PopInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Pop, 0), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Pop, + 0usize, + ), ) } - /// pop r? + ///pop r? fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, ) -> Result<(), crate::errors::ICError>; } pub trait PushInstruction: IntegratedCircuit { - /// push a(r?|num) + ///push a(r?|num) fn execute_push( &mut self, a: &crate::vm::instructions::operands::Operand, ) -> Result<(), crate::errors::ICError> { PushInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Push, 0), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Push, + 0usize, + ), ) } - /// push a(r?|num) + ///push a(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, ) -> Result<(), crate::errors::ICError>; } pub trait PutInstruction: IntegratedCircuit { - /// put d? address(r?|num) value(r?|num) + ///put d? address(r?|num) value(r?|num) fn execute_put( &mut self, d: &crate::vm::instructions::operands::Operand, @@ -2219,12 +3196,24 @@ pub trait PutInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { PutInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(d, InstructionOp::Put, 0), - &crate::vm::instructions::operands::InstOperand::new(address, InstructionOp::Put, 1), - &crate::vm::instructions::operands::InstOperand::new(value, InstructionOp::Put, 2), + &crate::vm::instructions::operands::InstOperand::new( + d, + InstructionOp::Put, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + address, + InstructionOp::Put, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + value, + InstructionOp::Put, + 2usize, + ), ) } - /// put d? address(r?|num) value(r?|num) + ///put d? address(r?|num) value(r?|num) fn execute_inner( &mut self, d: &crate::vm::instructions::operands::InstOperand, @@ -2233,7 +3222,7 @@ pub trait PutInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait PutdInstruction: IntegratedCircuit { - /// putd id(r?|num) address(r?|num) value(r?|num) + ///putd id(r?|num) address(r?|num) value(r?|num) fn execute_putd( &mut self, id: &crate::vm::instructions::operands::Operand, @@ -2242,12 +3231,24 @@ pub trait PutdInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { PutdInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(id, InstructionOp::Putd, 0), - &crate::vm::instructions::operands::InstOperand::new(address, InstructionOp::Putd, 1), - &crate::vm::instructions::operands::InstOperand::new(value, InstructionOp::Putd, 2), + &crate::vm::instructions::operands::InstOperand::new( + id, + InstructionOp::Putd, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + address, + InstructionOp::Putd, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + value, + InstructionOp::Putd, + 2usize, + ), ) } - /// putd id(r?|num) address(r?|num) value(r?|num) + ///putd id(r?|num) address(r?|num) value(r?|num) fn execute_inner( &mut self, id: &crate::vm::instructions::operands::InstOperand, @@ -2256,24 +3257,28 @@ pub trait PutdInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait RandInstruction: IntegratedCircuit { - /// rand r? + ///rand r? fn execute_rand( &mut self, r: &crate::vm::instructions::operands::Operand, ) -> Result<(), crate::errors::ICError> { RandInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Rand, 0), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Rand, + 0usize, + ), ) } - /// rand r? + ///rand r? fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, ) -> Result<(), crate::errors::ICError>; } pub trait RoundInstruction: IntegratedCircuit { - /// round r? a(r?|num) + ///round r? a(r?|num) fn execute_round( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -2281,11 +3286,19 @@ pub trait RoundInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { RoundInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Round, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Round, 1), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Round, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Round, + 1usize, + ), ) } - /// round r? a(r?|num) + ///round r? a(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -2293,7 +3306,7 @@ pub trait RoundInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait SInstruction: IntegratedCircuit { - /// s d? logicType r? + ///s d? logicType r? fn execute_s( &mut self, d: &crate::vm::instructions::operands::Operand, @@ -2302,12 +3315,24 @@ pub trait SInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { SInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(d, InstructionOp::S, 0), - &crate::vm::instructions::operands::InstOperand::new(logic_type, InstructionOp::S, 1), - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::S, 2), + &crate::vm::instructions::operands::InstOperand::new( + d, + InstructionOp::S, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + logic_type, + InstructionOp::S, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::S, + 2usize, + ), ) } - /// s d? logicType r? + ///s d? logicType r? fn execute_inner( &mut self, d: &crate::vm::instructions::operands::InstOperand, @@ -2316,7 +3341,7 @@ pub trait SInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait SapInstruction: IntegratedCircuit { - /// sap r? a(r?|num) b(r?|num) c(r?|num) + ///sap r? a(r?|num) b(r?|num) c(r?|num) fn execute_sap( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -2326,13 +3351,29 @@ pub trait SapInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { SapInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Sap, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Sap, 1), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Sap, 2), - &crate::vm::instructions::operands::InstOperand::new(c, InstructionOp::Sap, 3), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Sap, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Sap, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Sap, + 2usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + c, + InstructionOp::Sap, + 3usize, + ), ) } - /// sap r? a(r?|num) b(r?|num) c(r?|num) + ///sap r? a(r?|num) b(r?|num) c(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -2342,7 +3383,7 @@ pub trait SapInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait SapzInstruction: IntegratedCircuit { - /// sapz r? a(r?|num) b(r?|num) + ///sapz r? a(r?|num) b(r?|num) fn execute_sapz( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -2351,12 +3392,24 @@ pub trait SapzInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { SapzInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Sapz, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Sapz, 1), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Sapz, 2), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Sapz, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Sapz, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Sapz, + 2usize, + ), ) } - /// sapz r? a(r?|num) b(r?|num) + ///sapz r? a(r?|num) b(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -2365,7 +3418,7 @@ pub trait SapzInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait SbInstruction: IntegratedCircuit { - /// sb deviceHash logicType r? + ///sb deviceHash logicType r? fn execute_sb( &mut self, device_hash: &crate::vm::instructions::operands::Operand, @@ -2374,12 +3427,24 @@ pub trait SbInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { SbInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(device_hash, InstructionOp::Sb, 0), - &crate::vm::instructions::operands::InstOperand::new(logic_type, InstructionOp::Sb, 1), - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Sb, 2), + &crate::vm::instructions::operands::InstOperand::new( + device_hash, + InstructionOp::Sb, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + logic_type, + InstructionOp::Sb, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Sb, + 2usize, + ), ) } - /// sb deviceHash logicType r? + ///sb deviceHash logicType r? fn execute_inner( &mut self, device_hash: &crate::vm::instructions::operands::InstOperand, @@ -2388,7 +3453,7 @@ pub trait SbInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait SbnInstruction: IntegratedCircuit { - /// sbn deviceHash nameHash logicType r? + ///sbn deviceHash nameHash logicType r? fn execute_sbn( &mut self, device_hash: &crate::vm::instructions::operands::Operand, @@ -2401,14 +3466,26 @@ pub trait SbnInstruction: IntegratedCircuit { &crate::vm::instructions::operands::InstOperand::new( device_hash, InstructionOp::Sbn, - 0, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + name_hash, + InstructionOp::Sbn, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + logic_type, + InstructionOp::Sbn, + 2usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Sbn, + 3usize, ), - &crate::vm::instructions::operands::InstOperand::new(name_hash, InstructionOp::Sbn, 1), - &crate::vm::instructions::operands::InstOperand::new(logic_type, InstructionOp::Sbn, 2), - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Sbn, 3), ) } - /// sbn deviceHash nameHash logicType r? + ///sbn deviceHash nameHash logicType r? fn execute_inner( &mut self, device_hash: &crate::vm::instructions::operands::InstOperand, @@ -2418,7 +3495,7 @@ pub trait SbnInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait SbsInstruction: IntegratedCircuit { - /// sbs deviceHash slotIndex logicSlotType r? + ///sbs deviceHash slotIndex logicSlotType r? fn execute_sbs( &mut self, device_hash: &crate::vm::instructions::operands::Operand, @@ -2431,18 +3508,26 @@ pub trait SbsInstruction: IntegratedCircuit { &crate::vm::instructions::operands::InstOperand::new( device_hash, InstructionOp::Sbs, - 0, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + slot_index, + InstructionOp::Sbs, + 1usize, ), - &crate::vm::instructions::operands::InstOperand::new(slot_index, InstructionOp::Sbs, 1), &crate::vm::instructions::operands::InstOperand::new( logic_slot_type, InstructionOp::Sbs, - 2, + 2usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Sbs, + 3usize, ), - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Sbs, 3), ) } - /// sbs deviceHash slotIndex logicSlotType r? + ///sbs deviceHash slotIndex logicSlotType r? fn execute_inner( &mut self, device_hash: &crate::vm::instructions::operands::InstOperand, @@ -2452,7 +3537,7 @@ pub trait SbsInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait SdInstruction: IntegratedCircuit { - /// sd id(r?|num) logicType r? + ///sd id(r?|num) logicType r? fn execute_sd( &mut self, id: &crate::vm::instructions::operands::Operand, @@ -2461,12 +3546,24 @@ pub trait SdInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { SdInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(id, InstructionOp::Sd, 0), - &crate::vm::instructions::operands::InstOperand::new(logic_type, InstructionOp::Sd, 1), - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Sd, 2), + &crate::vm::instructions::operands::InstOperand::new( + id, + InstructionOp::Sd, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + logic_type, + InstructionOp::Sd, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Sd, + 2usize, + ), ) } - /// sd id(r?|num) logicType r? + ///sd id(r?|num) logicType r? fn execute_inner( &mut self, id: &crate::vm::instructions::operands::InstOperand, @@ -2475,7 +3572,7 @@ pub trait SdInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait SdnsInstruction: IntegratedCircuit { - /// sdns r? d? + ///sdns r? d? fn execute_sdns( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -2483,11 +3580,19 @@ pub trait SdnsInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { SdnsInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Sdns, 0), - &crate::vm::instructions::operands::InstOperand::new(d, InstructionOp::Sdns, 1), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Sdns, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + d, + InstructionOp::Sdns, + 1usize, + ), ) } - /// sdns r? d? + ///sdns r? d? fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -2495,7 +3600,7 @@ pub trait SdnsInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait SdseInstruction: IntegratedCircuit { - /// sdse r? d? + ///sdse r? d? fn execute_sdse( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -2503,11 +3608,19 @@ pub trait SdseInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { SdseInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Sdse, 0), - &crate::vm::instructions::operands::InstOperand::new(d, InstructionOp::Sdse, 1), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Sdse, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + d, + InstructionOp::Sdse, + 1usize, + ), ) } - /// sdse r? d? + ///sdse r? d? fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -2515,7 +3628,7 @@ pub trait SdseInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait SelectInstruction: IntegratedCircuit { - /// select r? a(r?|num) b(r?|num) c(r?|num) + ///select r? a(r?|num) b(r?|num) c(r?|num) fn execute_select( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -2525,13 +3638,29 @@ pub trait SelectInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { SelectInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Select, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Select, 1), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Select, 2), - &crate::vm::instructions::operands::InstOperand::new(c, InstructionOp::Select, 3), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Select, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Select, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Select, + 2usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + c, + InstructionOp::Select, + 3usize, + ), ) } - /// select r? a(r?|num) b(r?|num) c(r?|num) + ///select r? a(r?|num) b(r?|num) c(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -2541,7 +3670,7 @@ pub trait SelectInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait SeqInstruction: IntegratedCircuit { - /// seq r? a(r?|num) b(r?|num) + ///seq r? a(r?|num) b(r?|num) fn execute_seq( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -2550,12 +3679,24 @@ pub trait SeqInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { SeqInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Seq, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Seq, 1), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Seq, 2), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Seq, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Seq, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Seq, + 2usize, + ), ) } - /// seq r? a(r?|num) b(r?|num) + ///seq r? a(r?|num) b(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -2564,7 +3705,7 @@ pub trait SeqInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait SeqzInstruction: IntegratedCircuit { - /// seqz r? a(r?|num) + ///seqz r? a(r?|num) fn execute_seqz( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -2572,11 +3713,19 @@ pub trait SeqzInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { SeqzInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Seqz, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Seqz, 1), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Seqz, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Seqz, + 1usize, + ), ) } - /// seqz r? a(r?|num) + ///seqz r? a(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -2584,7 +3733,7 @@ pub trait SeqzInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait SgeInstruction: IntegratedCircuit { - /// sge r? a(r?|num) b(r?|num) + ///sge r? a(r?|num) b(r?|num) fn execute_sge( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -2593,12 +3742,24 @@ pub trait SgeInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { SgeInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Sge, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Sge, 1), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Sge, 2), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Sge, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Sge, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Sge, + 2usize, + ), ) } - /// sge r? a(r?|num) b(r?|num) + ///sge r? a(r?|num) b(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -2607,7 +3768,7 @@ pub trait SgeInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait SgezInstruction: IntegratedCircuit { - /// sgez r? a(r?|num) + ///sgez r? a(r?|num) fn execute_sgez( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -2615,11 +3776,19 @@ pub trait SgezInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { SgezInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Sgez, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Sgez, 1), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Sgez, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Sgez, + 1usize, + ), ) } - /// sgez r? a(r?|num) + ///sgez r? a(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -2627,7 +3796,7 @@ pub trait SgezInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait SgtInstruction: IntegratedCircuit { - /// sgt r? a(r?|num) b(r?|num) + ///sgt r? a(r?|num) b(r?|num) fn execute_sgt( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -2636,12 +3805,24 @@ pub trait SgtInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { SgtInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Sgt, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Sgt, 1), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Sgt, 2), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Sgt, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Sgt, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Sgt, + 2usize, + ), ) } - /// sgt r? a(r?|num) b(r?|num) + ///sgt r? a(r?|num) b(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -2650,7 +3831,7 @@ pub trait SgtInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait SgtzInstruction: IntegratedCircuit { - /// sgtz r? a(r?|num) + ///sgtz r? a(r?|num) fn execute_sgtz( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -2658,11 +3839,19 @@ pub trait SgtzInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { SgtzInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Sgtz, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Sgtz, 1), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Sgtz, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Sgtz, + 1usize, + ), ) } - /// sgtz r? a(r?|num) + ///sgtz r? a(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -2670,7 +3859,7 @@ pub trait SgtzInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait SinInstruction: IntegratedCircuit { - /// sin r? a(r?|num) + ///sin r? a(r?|num) fn execute_sin( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -2678,11 +3867,19 @@ pub trait SinInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { SinInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Sin, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Sin, 1), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Sin, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Sin, + 1usize, + ), ) } - /// sin r? a(r?|num) + ///sin r? a(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -2690,7 +3887,7 @@ pub trait SinInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait SlaInstruction: IntegratedCircuit { - /// sla r? a(r?|num) b(r?|num) + ///sla r? a(r?|num) b(r?|num) fn execute_sla( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -2699,12 +3896,24 @@ pub trait SlaInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { SlaInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Sla, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Sla, 1), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Sla, 2), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Sla, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Sla, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Sla, + 2usize, + ), ) } - /// sla r? a(r?|num) b(r?|num) + ///sla r? a(r?|num) b(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -2713,7 +3922,7 @@ pub trait SlaInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait SleInstruction: IntegratedCircuit { - /// sle r? a(r?|num) b(r?|num) + ///sle r? a(r?|num) b(r?|num) fn execute_sle( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -2722,12 +3931,24 @@ pub trait SleInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { SleInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Sle, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Sle, 1), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Sle, 2), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Sle, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Sle, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Sle, + 2usize, + ), ) } - /// sle r? a(r?|num) b(r?|num) + ///sle r? a(r?|num) b(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -2736,24 +3957,28 @@ pub trait SleInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait SleepInstruction: IntegratedCircuit { - /// sleep a(r?|num) + ///sleep a(r?|num) fn execute_sleep( &mut self, a: &crate::vm::instructions::operands::Operand, ) -> Result<(), crate::errors::ICError> { SleepInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Sleep, 0), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Sleep, + 0usize, + ), ) } - /// sleep a(r?|num) + ///sleep a(r?|num) fn execute_inner( &mut self, a: &crate::vm::instructions::operands::InstOperand, ) -> Result<(), crate::errors::ICError>; } pub trait SlezInstruction: IntegratedCircuit { - /// slez r? a(r?|num) + ///slez r? a(r?|num) fn execute_slez( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -2761,11 +3986,19 @@ pub trait SlezInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { SlezInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Slez, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Slez, 1), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Slez, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Slez, + 1usize, + ), ) } - /// slez r? a(r?|num) + ///slez r? a(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -2773,7 +4006,7 @@ pub trait SlezInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait SllInstruction: IntegratedCircuit { - /// sll r? a(r?|num) b(r?|num) + ///sll r? a(r?|num) b(r?|num) fn execute_sll( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -2782,12 +4015,24 @@ pub trait SllInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { SllInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Sll, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Sll, 1), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Sll, 2), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Sll, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Sll, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Sll, + 2usize, + ), ) } - /// sll r? a(r?|num) b(r?|num) + ///sll r? a(r?|num) b(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -2796,7 +4041,7 @@ pub trait SllInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait SltInstruction: IntegratedCircuit { - /// slt r? a(r?|num) b(r?|num) + ///slt r? a(r?|num) b(r?|num) fn execute_slt( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -2805,12 +4050,24 @@ pub trait SltInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { SltInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Slt, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Slt, 1), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Slt, 2), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Slt, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Slt, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Slt, + 2usize, + ), ) } - /// slt r? a(r?|num) b(r?|num) + ///slt r? a(r?|num) b(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -2819,7 +4076,7 @@ pub trait SltInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait SltzInstruction: IntegratedCircuit { - /// sltz r? a(r?|num) + ///sltz r? a(r?|num) fn execute_sltz( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -2827,11 +4084,19 @@ pub trait SltzInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { SltzInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Sltz, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Sltz, 1), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Sltz, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Sltz, + 1usize, + ), ) } - /// sltz r? a(r?|num) + ///sltz r? a(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -2839,7 +4104,7 @@ pub trait SltzInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait SnaInstruction: IntegratedCircuit { - /// sna r? a(r?|num) b(r?|num) c(r?|num) + ///sna r? a(r?|num) b(r?|num) c(r?|num) fn execute_sna( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -2849,13 +4114,29 @@ pub trait SnaInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { SnaInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Sna, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Sna, 1), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Sna, 2), - &crate::vm::instructions::operands::InstOperand::new(c, InstructionOp::Sna, 3), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Sna, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Sna, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Sna, + 2usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + c, + InstructionOp::Sna, + 3usize, + ), ) } - /// sna r? a(r?|num) b(r?|num) c(r?|num) + ///sna r? a(r?|num) b(r?|num) c(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -2865,7 +4146,7 @@ pub trait SnaInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait SnanInstruction: IntegratedCircuit { - /// snan r? a(r?|num) + ///snan r? a(r?|num) fn execute_snan( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -2873,11 +4154,19 @@ pub trait SnanInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { SnanInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Snan, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Snan, 1), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Snan, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Snan, + 1usize, + ), ) } - /// snan r? a(r?|num) + ///snan r? a(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -2885,7 +4174,7 @@ pub trait SnanInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait SnanzInstruction: IntegratedCircuit { - /// snanz r? a(r?|num) + ///snanz r? a(r?|num) fn execute_snanz( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -2893,11 +4182,19 @@ pub trait SnanzInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { SnanzInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Snanz, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Snanz, 1), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Snanz, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Snanz, + 1usize, + ), ) } - /// snanz r? a(r?|num) + ///snanz r? a(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -2905,7 +4202,7 @@ pub trait SnanzInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait SnazInstruction: IntegratedCircuit { - /// snaz r? a(r?|num) b(r?|num) + ///snaz r? a(r?|num) b(r?|num) fn execute_snaz( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -2914,12 +4211,24 @@ pub trait SnazInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { SnazInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Snaz, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Snaz, 1), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Snaz, 2), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Snaz, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Snaz, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Snaz, + 2usize, + ), ) } - /// snaz r? a(r?|num) b(r?|num) + ///snaz r? a(r?|num) b(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -2928,7 +4237,7 @@ pub trait SnazInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait SneInstruction: IntegratedCircuit { - /// sne r? a(r?|num) b(r?|num) + ///sne r? a(r?|num) b(r?|num) fn execute_sne( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -2937,12 +4246,24 @@ pub trait SneInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { SneInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Sne, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Sne, 1), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Sne, 2), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Sne, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Sne, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Sne, + 2usize, + ), ) } - /// sne r? a(r?|num) b(r?|num) + ///sne r? a(r?|num) b(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -2951,7 +4272,7 @@ pub trait SneInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait SnezInstruction: IntegratedCircuit { - /// snez r? a(r?|num) + ///snez r? a(r?|num) fn execute_snez( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -2959,11 +4280,19 @@ pub trait SnezInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { SnezInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Snez, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Snez, 1), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Snez, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Snez, + 1usize, + ), ) } - /// snez r? a(r?|num) + ///snez r? a(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -2971,7 +4300,7 @@ pub trait SnezInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait SqrtInstruction: IntegratedCircuit { - /// sqrt r? a(r?|num) + ///sqrt r? a(r?|num) fn execute_sqrt( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -2979,11 +4308,19 @@ pub trait SqrtInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { SqrtInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Sqrt, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Sqrt, 1), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Sqrt, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Sqrt, + 1usize, + ), ) } - /// sqrt r? a(r?|num) + ///sqrt r? a(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -2991,7 +4328,7 @@ pub trait SqrtInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait SraInstruction: IntegratedCircuit { - /// sra r? a(r?|num) b(r?|num) + ///sra r? a(r?|num) b(r?|num) fn execute_sra( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -3000,12 +4337,24 @@ pub trait SraInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { SraInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Sra, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Sra, 1), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Sra, 2), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Sra, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Sra, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Sra, + 2usize, + ), ) } - /// sra r? a(r?|num) b(r?|num) + ///sra r? a(r?|num) b(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -3014,7 +4363,7 @@ pub trait SraInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait SrlInstruction: IntegratedCircuit { - /// srl r? a(r?|num) b(r?|num) + ///srl r? a(r?|num) b(r?|num) fn execute_srl( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -3023,12 +4372,24 @@ pub trait SrlInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { SrlInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Srl, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Srl, 1), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Srl, 2), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Srl, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Srl, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Srl, + 2usize, + ), ) } - /// srl r? a(r?|num) b(r?|num) + ///srl r? a(r?|num) b(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -3037,7 +4398,7 @@ pub trait SrlInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait SsInstruction: IntegratedCircuit { - /// ss d? slotIndex logicSlotType r? + ///ss d? slotIndex logicSlotType r? fn execute_ss( &mut self, d: &crate::vm::instructions::operands::Operand, @@ -3047,17 +4408,29 @@ pub trait SsInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { SsInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(d, InstructionOp::Ss, 0), - &crate::vm::instructions::operands::InstOperand::new(slot_index, InstructionOp::Ss, 1), + &crate::vm::instructions::operands::InstOperand::new( + d, + InstructionOp::Ss, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + slot_index, + InstructionOp::Ss, + 1usize, + ), &crate::vm::instructions::operands::InstOperand::new( logic_slot_type, InstructionOp::Ss, - 2, + 2usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Ss, + 3usize, ), - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Ss, 3), ) } - /// ss d? slotIndex logicSlotType r? + ///ss d? slotIndex logicSlotType r? fn execute_inner( &mut self, d: &crate::vm::instructions::operands::InstOperand, @@ -3067,7 +4440,7 @@ pub trait SsInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait SubInstruction: IntegratedCircuit { - /// sub r? a(r?|num) b(r?|num) + ///sub r? a(r?|num) b(r?|num) fn execute_sub( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -3076,12 +4449,24 @@ pub trait SubInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { SubInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Sub, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Sub, 1), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Sub, 2), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Sub, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Sub, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Sub, + 2usize, + ), ) } - /// sub r? a(r?|num) b(r?|num) + ///sub r? a(r?|num) b(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -3090,7 +4475,7 @@ pub trait SubInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait TanInstruction: IntegratedCircuit { - /// tan r? a(r?|num) + ///tan r? a(r?|num) fn execute_tan( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -3098,11 +4483,19 @@ pub trait TanInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { TanInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Tan, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Tan, 1), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Tan, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Tan, + 1usize, + ), ) } - /// tan r? a(r?|num) + ///tan r? a(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -3110,7 +4503,7 @@ pub trait TanInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait TruncInstruction: IntegratedCircuit { - /// trunc r? a(r?|num) + ///trunc r? a(r?|num) fn execute_trunc( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -3118,11 +4511,19 @@ pub trait TruncInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { TruncInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Trunc, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Trunc, 1), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Trunc, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Trunc, + 1usize, + ), ) } - /// trunc r? a(r?|num) + ///trunc r? a(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -3130,7 +4531,7 @@ pub trait TruncInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait XorInstruction: IntegratedCircuit { - /// xor r? a(r?|num) b(r?|num) + ///xor r? a(r?|num) b(r?|num) fn execute_xor( &mut self, r: &crate::vm::instructions::operands::Operand, @@ -3139,12 +4540,24 @@ pub trait XorInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError> { XorInstruction::execute_inner( self, - &crate::vm::instructions::operands::InstOperand::new(r, InstructionOp::Xor, 0), - &crate::vm::instructions::operands::InstOperand::new(a, InstructionOp::Xor, 1), - &crate::vm::instructions::operands::InstOperand::new(b, InstructionOp::Xor, 2), + &crate::vm::instructions::operands::InstOperand::new( + r, + InstructionOp::Xor, + 0usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + a, + InstructionOp::Xor, + 1usize, + ), + &crate::vm::instructions::operands::InstOperand::new( + b, + InstructionOp::Xor, + 2usize, + ), ) } - /// xor r? a(r?|num) b(r?|num) + ///xor r? a(r?|num) b(r?|num) fn execute_inner( &mut self, r: &crate::vm::instructions::operands::InstOperand, @@ -3153,302 +4566,50 @@ pub trait XorInstruction: IntegratedCircuit { ) -> Result<(), crate::errors::ICError>; } pub trait YieldInstruction: IntegratedCircuit { - /// yield + ///yield fn execute_yield(&mut self) -> Result<(), crate::errors::ICError> { YieldInstruction::execute_inner(self) } - /// yield + ///yield fn execute_inner(&mut self) -> Result<(), crate::errors::ICError>; } -pub trait ICInstructable: - AbsInstruction - + AcosInstruction - + AddInstruction - + AliasInstruction - + AndInstruction - + AsinInstruction - + AtanInstruction - + Atan2Instruction - + BapInstruction - + BapalInstruction - + BapzInstruction - + BapzalInstruction - + BdnsInstruction - + BdnsalInstruction - + BdseInstruction - + BdsealInstruction - + BeqInstruction - + BeqalInstruction - + BeqzInstruction - + BeqzalInstruction - + BgeInstruction - + BgealInstruction - + BgezInstruction - + BgezalInstruction - + BgtInstruction - + BgtalInstruction - + BgtzInstruction - + BgtzalInstruction - + BleInstruction - + BlealInstruction - + BlezInstruction - + BlezalInstruction - + BltInstruction - + BltalInstruction - + BltzInstruction - + BltzalInstruction - + BnaInstruction - + BnaalInstruction - + BnanInstruction - + BnazInstruction - + BnazalInstruction - + BneInstruction - + BnealInstruction - + BnezInstruction - + BnezalInstruction - + BrapInstruction - + BrapzInstruction - + BrdnsInstruction - + BrdseInstruction - + BreqInstruction - + BreqzInstruction - + BrgeInstruction - + BrgezInstruction - + BrgtInstruction - + BrgtzInstruction - + BrleInstruction - + BrlezInstruction - + BrltInstruction - + BrltzInstruction - + BrnaInstruction - + BrnanInstruction - + BrnazInstruction - + BrneInstruction - + BrnezInstruction - + CeilInstruction - + ClrInstruction - + ClrdInstruction - + CosInstruction - + DefineInstruction - + DivInstruction - + ExpInstruction - + FloorInstruction - + GetInstruction - + GetdInstruction - + HcfInstruction - + JInstruction - + JalInstruction - + JrInstruction - + LInstruction - + LabelInstruction - + LbInstruction - + LbnInstruction - + LbnsInstruction - + LbsInstruction - + LdInstruction - + LogInstruction - + LrInstruction - + LsInstruction - + MaxInstruction - + MinInstruction - + ModInstruction - + MoveInstruction - + MulInstruction - + NorInstruction - + NotInstruction - + OrInstruction - + PeekInstruction - + PokeInstruction - + PopInstruction - + PushInstruction - + PutInstruction - + PutdInstruction - + RandInstruction - + RoundInstruction - + SInstruction - + SapInstruction - + SapzInstruction - + SbInstruction - + SbnInstruction - + SbsInstruction - + SdInstruction - + SdnsInstruction - + SdseInstruction - + SelectInstruction - + SeqInstruction - + SeqzInstruction - + SgeInstruction - + SgezInstruction - + SgtInstruction - + SgtzInstruction - + SinInstruction - + SlaInstruction - + SleInstruction - + SleepInstruction - + SlezInstruction - + SllInstruction - + SltInstruction - + SltzInstruction - + SnaInstruction - + SnanInstruction - + SnanzInstruction - + SnazInstruction - + SneInstruction - + SnezInstruction - + SqrtInstruction - + SraInstruction - + SrlInstruction - + SsInstruction - + SubInstruction - + TanInstruction - + TruncInstruction - + XorInstruction - + YieldInstruction -{ -} -impl ICInstructable for T where - T: AbsInstruction - + AcosInstruction - + AddInstruction - + AliasInstruction - + AndInstruction - + AsinInstruction - + AtanInstruction - + Atan2Instruction - + BapInstruction - + BapalInstruction - + BapzInstruction - + BapzalInstruction - + BdnsInstruction - + BdnsalInstruction - + BdseInstruction - + BdsealInstruction - + BeqInstruction - + BeqalInstruction - + BeqzInstruction - + BeqzalInstruction - + BgeInstruction - + BgealInstruction - + BgezInstruction - + BgezalInstruction - + BgtInstruction - + BgtalInstruction - + BgtzInstruction - + BgtzalInstruction - + BleInstruction - + BlealInstruction - + BlezInstruction - + BlezalInstruction - + BltInstruction - + BltalInstruction - + BltzInstruction - + BltzalInstruction - + BnaInstruction - + BnaalInstruction - + BnanInstruction - + BnazInstruction - + BnazalInstruction - + BneInstruction - + BnealInstruction - + BnezInstruction - + BnezalInstruction - + BrapInstruction - + BrapzInstruction - + BrdnsInstruction - + BrdseInstruction - + BreqInstruction - + BreqzInstruction - + BrgeInstruction - + BrgezInstruction - + BrgtInstruction - + BrgtzInstruction - + BrleInstruction - + BrlezInstruction - + BrltInstruction - + BrltzInstruction - + BrnaInstruction - + BrnanInstruction - + BrnazInstruction - + BrneInstruction - + BrnezInstruction - + CeilInstruction - + ClrInstruction - + ClrdInstruction - + CosInstruction - + DefineInstruction - + DivInstruction - + ExpInstruction - + FloorInstruction - + GetInstruction - + GetdInstruction - + HcfInstruction - + JInstruction - + JalInstruction - + JrInstruction - + LInstruction - + LabelInstruction - + LbInstruction - + LbnInstruction - + LbnsInstruction - + LbsInstruction - + LdInstruction - + LogInstruction - + LrInstruction - + LsInstruction - + MaxInstruction - + MinInstruction - + ModInstruction - + MoveInstruction - + MulInstruction - + NorInstruction - + NotInstruction - + OrInstruction - + PeekInstruction - + PokeInstruction - + PopInstruction - + PushInstruction - + PutInstruction - + PutdInstruction - + RandInstruction - + RoundInstruction - + SInstruction - + SapInstruction - + SapzInstruction - + SbInstruction - + SbnInstruction - + SbsInstruction - + SdInstruction - + SdnsInstruction - + SdseInstruction - + SelectInstruction - + SeqInstruction - + SeqzInstruction - + SgeInstruction - + SgezInstruction - + SgtInstruction - + SgtzInstruction - + SinInstruction - + SlaInstruction - + SleInstruction - + SleepInstruction - + SlezInstruction - + SllInstruction - + SltInstruction - + SltzInstruction - + SnaInstruction - + SnanInstruction - + SnanzInstruction - + SnazInstruction - + SneInstruction - + SnezInstruction - + SqrtInstruction - + SraInstruction - + SrlInstruction - + SsInstruction - + SubInstruction - + TanInstruction - + TruncInstruction - + XorInstruction - + YieldInstruction -{ -} +pub trait ICInstructable: AbsInstruction + AcosInstruction + AddInstruction + AliasInstruction + AndInstruction + AsinInstruction + AtanInstruction + Atan2Instruction + BapInstruction + BapalInstruction + BapzInstruction + BapzalInstruction + BdnsInstruction + BdnsalInstruction + BdseInstruction + BdsealInstruction + BeqInstruction + BeqalInstruction + BeqzInstruction + BeqzalInstruction + BgeInstruction + BgealInstruction + BgezInstruction + BgezalInstruction + BgtInstruction + BgtalInstruction + BgtzInstruction + BgtzalInstruction + BleInstruction + BlealInstruction + BlezInstruction + BlezalInstruction + BltInstruction + BltalInstruction + BltzInstruction + BltzalInstruction + BnaInstruction + BnaalInstruction + BnanInstruction + BnazInstruction + BnazalInstruction + BneInstruction + BnealInstruction + BnezInstruction + BnezalInstruction + BrapInstruction + BrapzInstruction + BrdnsInstruction + BrdseInstruction + BreqInstruction + BreqzInstruction + BrgeInstruction + BrgezInstruction + BrgtInstruction + BrgtzInstruction + BrleInstruction + BrlezInstruction + BrltInstruction + BrltzInstruction + BrnaInstruction + BrnanInstruction + BrnazInstruction + BrneInstruction + BrnezInstruction + CeilInstruction + ClrInstruction + ClrdInstruction + CosInstruction + DefineInstruction + DivInstruction + ExpInstruction + FloorInstruction + GetInstruction + GetdInstruction + HcfInstruction + JInstruction + JalInstruction + JrInstruction + LInstruction + LabelInstruction + LbInstruction + LbnInstruction + LbnsInstruction + LbsInstruction + LdInstruction + LogInstruction + LrInstruction + LsInstruction + MaxInstruction + MinInstruction + ModInstruction + MoveInstruction + MulInstruction + NorInstruction + NotInstruction + OrInstruction + PeekInstruction + PokeInstruction + PopInstruction + PushInstruction + PutInstruction + PutdInstruction + RandInstruction + RoundInstruction + SInstruction + SapInstruction + SapzInstruction + SbInstruction + SbnInstruction + SbsInstruction + SdInstruction + SdnsInstruction + SdseInstruction + SelectInstruction + SeqInstruction + SeqzInstruction + SgeInstruction + SgezInstruction + SgtInstruction + SgtzInstruction + SinInstruction + SlaInstruction + SleInstruction + SleepInstruction + SlezInstruction + SllInstruction + SltInstruction + SltzInstruction + SnaInstruction + SnanInstruction + SnanzInstruction + SnazInstruction + SneInstruction + SnezInstruction + SqrtInstruction + SraInstruction + SrlInstruction + SsInstruction + SubInstruction + TanInstruction + TruncInstruction + XorInstruction + YieldInstruction {} +impl ICInstructable for T +where + T: AbsInstruction + AcosInstruction + AddInstruction + AliasInstruction + + AndInstruction + AsinInstruction + AtanInstruction + Atan2Instruction + + BapInstruction + BapalInstruction + BapzInstruction + BapzalInstruction + + BdnsInstruction + BdnsalInstruction + BdseInstruction + BdsealInstruction + + BeqInstruction + BeqalInstruction + BeqzInstruction + BeqzalInstruction + + BgeInstruction + BgealInstruction + BgezInstruction + BgezalInstruction + + BgtInstruction + BgtalInstruction + BgtzInstruction + BgtzalInstruction + + BleInstruction + BlealInstruction + BlezInstruction + BlezalInstruction + + BltInstruction + BltalInstruction + BltzInstruction + BltzalInstruction + + BnaInstruction + BnaalInstruction + BnanInstruction + BnazInstruction + + BnazalInstruction + BneInstruction + BnealInstruction + BnezInstruction + + BnezalInstruction + BrapInstruction + BrapzInstruction + BrdnsInstruction + + BrdseInstruction + BreqInstruction + BreqzInstruction + BrgeInstruction + + BrgezInstruction + BrgtInstruction + BrgtzInstruction + BrleInstruction + + BrlezInstruction + BrltInstruction + BrltzInstruction + BrnaInstruction + + BrnanInstruction + BrnazInstruction + BrneInstruction + BrnezInstruction + + CeilInstruction + ClrInstruction + ClrdInstruction + CosInstruction + + DefineInstruction + DivInstruction + ExpInstruction + FloorInstruction + + GetInstruction + GetdInstruction + HcfInstruction + JInstruction + + JalInstruction + JrInstruction + LInstruction + LabelInstruction + + LbInstruction + LbnInstruction + LbnsInstruction + LbsInstruction + + LdInstruction + LogInstruction + LrInstruction + LsInstruction + MaxInstruction + + MinInstruction + ModInstruction + MoveInstruction + MulInstruction + + NorInstruction + NotInstruction + OrInstruction + PeekInstruction + + PokeInstruction + PopInstruction + PushInstruction + PutInstruction + + PutdInstruction + RandInstruction + RoundInstruction + SInstruction + + SapInstruction + SapzInstruction + SbInstruction + SbnInstruction + + SbsInstruction + SdInstruction + SdnsInstruction + SdseInstruction + + SelectInstruction + SeqInstruction + SeqzInstruction + SgeInstruction + + SgezInstruction + SgtInstruction + SgtzInstruction + SinInstruction + + SlaInstruction + SleInstruction + SleepInstruction + SlezInstruction + + SllInstruction + SltInstruction + SltzInstruction + SnaInstruction + + SnanInstruction + SnanzInstruction + SnazInstruction + SneInstruction + + SnezInstruction + SqrtInstruction + SraInstruction + SrlInstruction + + SsInstruction + SubInstruction + TanInstruction + TruncInstruction + + XorInstruction + YieldInstruction, +{} diff --git a/ic10emu/src/vm/object.rs b/ic10emu/src/vm/object.rs index 6d63fb5..b0930a6 100644 --- a/ic10emu/src/vm/object.rs +++ b/ic10emu/src/vm/object.rs @@ -2,7 +2,6 @@ use std::{ cell::RefCell, ops::{Deref, DerefMut}, rc::Rc, - str::FromStr, }; use macro_rules_attribute::derive; @@ -17,12 +16,12 @@ pub mod traits; use traits::Object; -use crate::vm::{ - enums::{basic_enums::Class as SlotClass, script_enums::LogicSlotType}, - VM, -}; +use crate::vm::VM; -use super::enums::prefabs::StationpediaPrefab; +use stationeers_data::enums::{ + basic_enums::Class as SlotClass, prefabs::StationpediaPrefab, script_enums::LogicSlotType, + MemoryAccess, +}; pub type ObjectID = u32; pub type BoxedObject = Rc>; @@ -97,13 +96,6 @@ impl Name { } } -#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)] -pub enum MemoryAccess { - Read, - Write, - ReadWrite, -} - #[derive(Debug, Clone, Serialize, Deserialize)] pub struct LogicField { pub field_type: MemoryAccess, diff --git a/ic10emu/src/vm/object/errors.rs b/ic10emu/src/vm/object/errors.rs index 478869c..e818f07 100644 --- a/ic10emu/src/vm/object/errors.rs +++ b/ic10emu/src/vm/object/errors.rs @@ -1,7 +1,7 @@ use serde_derive::{Deserialize, Serialize}; use thiserror::Error; -use crate::vm::enums::script_enums::{LogicSlotType, LogicType}; +use stationeers_data::enums::script_enums::{LogicSlotType, LogicType}; #[derive(Error, Debug, Clone, Serialize, Deserialize)] pub enum LogicError { diff --git a/ic10emu/src/vm/object/generic/structs.rs b/ic10emu/src/vm/object/generic/structs.rs index 6fbb4f4..a6dd513 100644 --- a/ic10emu/src/vm/object/generic/structs.rs +++ b/ic10emu/src/vm/object/generic/structs.rs @@ -3,17 +3,15 @@ use super::{macros::*, traits::*}; use crate::{ network::Connection, vm::{ - enums::script_enums::LogicType, - object::{ - macros::ObjectInterface, - templates::{DeviceInfo, ItemInfo}, - traits::*, - LogicField, Name, ObjectID, Slot, - }, + object::{macros::ObjectInterface, traits::*, LogicField, Name, ObjectID, Slot}, VM, }, }; use macro_rules_attribute::derive; +use stationeers_data::{ + enums::script_enums::LogicType, + templates::{DeviceInfo, ItemInfo}, +}; use std::{collections::BTreeMap, rc::Rc}; #[derive(ObjectInterface!, GWStructure!)] diff --git a/ic10emu/src/vm/object/generic/traits.rs b/ic10emu/src/vm/object/generic/traits.rs index ff8338d..e70fc83 100644 --- a/ic10emu/src/vm/object/generic/traits.rs +++ b/ic10emu/src/vm/object/generic/traits.rs @@ -1,18 +1,19 @@ use crate::{ network::Connection, - vm::{ - enums::{ - basic_enums::{Class as SlotClass, GasType, SortingClass}, - script_enums::{LogicSlotType, LogicType}, - }, - object::{ - errors::{LogicError, MemoryError}, - templates::{DeviceInfo, ItemInfo}, - traits::*, - LogicField, MemoryAccess, ObjectID, Slot, - }, + vm::object::{ + errors::{LogicError, MemoryError}, + traits::*, + LogicField, MemoryAccess, ObjectID, Slot, }, }; + +use stationeers_data::{ + enums::{ + basic_enums::{Class as SlotClass, GasType, SortingClass}, + script_enums::{LogicSlotType, LogicType}, + }, + templates::{DeviceInfo, ItemInfo}, +}; use std::{collections::BTreeMap, usize}; use strum::IntoEnumIterator; diff --git a/ic10emu/src/vm/object/stationpedia.rs b/ic10emu/src/vm/object/stationpedia.rs index 39fca00..acd11b8 100644 --- a/ic10emu/src/vm/object/stationpedia.rs +++ b/ic10emu/src/vm/object/stationpedia.rs @@ -1,9 +1,10 @@ use std::rc::Rc; -use crate::vm::object::VMObject; -use crate::vm::{enums::prefabs::StationpediaPrefab, VM}; +use stationeers_data::{enums::prefabs::StationpediaPrefab, templates::ObjectTemplate}; + +use crate::vm::object::VMObject; +use crate::vm::VM; -use super::templates::ObjectTemplate; use super::ObjectID; pub mod structs; diff --git a/ic10emu/src/vm/object/stationpedia/structs/circuit_holder.rs b/ic10emu/src/vm/object/stationpedia/structs/circuit_holder.rs index 35653ac..e2a10d8 100644 --- a/ic10emu/src/vm/object/stationpedia/structs/circuit_holder.rs +++ b/ic10emu/src/vm/object/stationpedia/structs/circuit_holder.rs @@ -1,11 +1,6 @@ use crate::{ - network::{CableConnectionType, Connection, ConnectionRole}, + network::{CableConnectionType, Connection}, vm::{ - enums::{ - basic_enums::Class as SlotClass, - prefabs::StationpediaPrefab, - script_enums::{LogicSlotType, LogicType}, - }, object::{ errors::LogicError, macros::ObjectInterface, traits::*, Name, ObjectID, Slot, VMObject, }, @@ -13,6 +8,12 @@ use crate::{ }, }; use macro_rules_attribute::derive; +use stationeers_data::enums::{ + basic_enums::Class as SlotClass, + prefabs::StationpediaPrefab, + script_enums::{LogicSlotType, LogicType}, + ConnectionRole, +}; use std::rc::Rc; use strum::EnumProperty; diff --git a/ic10emu/src/vm/object/stationpedia/structs/integrated_circuit.rs b/ic10emu/src/vm/object/stationpedia/structs/integrated_circuit.rs index 2edb817..9cec5f0 100644 --- a/ic10emu/src/vm/object/stationpedia/structs/integrated_circuit.rs +++ b/ic10emu/src/vm/object/stationpedia/structs/integrated_circuit.rs @@ -2,10 +2,6 @@ use crate::{ errors::ICError, interpreter::{instructions::IC10Marker, ICState, Program}, vm::{ - enums::{ - basic_enums::{Class as SlotClass, GasType, SortingClass}, - script_enums::{LogicSlotType, LogicType}, - }, instructions::{operands::Operand, Instruction}, object::{ errors::{LogicError, MemoryError}, @@ -17,6 +13,10 @@ use crate::{ }, }; use macro_rules_attribute::derive; +use stationeers_data::enums::{ + basic_enums::{Class as SlotClass, GasType, SortingClass}, + script_enums::{LogicSlotType, LogicType}, +}; use std::{collections::BTreeMap, rc::Rc}; static RETURN_ADDRESS_INDEX: usize = 17; diff --git a/ic10emu/src/vm/object/templates.rs b/ic10emu/src/vm/object/templates.rs index 7e3987e..5e1d2d8 100644 --- a/ic10emu/src/vm/object/templates.rs +++ b/ic10emu/src/vm/object/templates.rs @@ -2,13 +2,8 @@ use std::{collections::BTreeMap, rc::Rc}; use crate::{ errors::TemplateError, - network::{Connection, ConnectionRole, ConnectionType}, + network::Connection, vm::{ - enums::{ - basic_enums::{Class as SlotClass, GasType, SortingClass}, - prefabs::StationpediaPrefab, - script_enums::{LogicSlotType, LogicType}, - }, object::{ generic::structs::{ Generic, GenericItem, GenericItemLogicable, @@ -24,56 +19,48 @@ use crate::{ }, }; use serde_derive::{Deserialize, Serialize}; +use stationeers_data::{ + enums::{ + basic_enums::{Class as SlotClass, GasType, SortingClass}, + prefabs::StationpediaPrefab, + script_enums::{LogicSlotType, LogicType}, + ConnectionRole, ConnectionType, + }, + templates::*, +}; use strum::{EnumProperty, IntoEnumIterator}; use super::{stationpedia, MemoryAccess, ObjectID, VMObject}; #[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[serde(untagged)] -pub enum ObjectTemplate { - Structure(StructureTemplate), - StructureSlots(StructureSlotsTemplate), - StructureLogic(StructureLogicTemplate), - StructureLogicDevice(StructureLogicDeviceTemplate), - StructureLogicDeviceMemory(StructureLogicDeviceMemoryTemplate), - Item(ItemTemplate), - ItemSlots(ItemSlotsTemplate), - ItemLogic(ItemLogicTemplate), - ItemLogicMemory(ItemLogicMemoryTemplate), +#[serde(rename_all = "camelCase")] +pub struct ObjectInfo { + pub name: Option, + pub id: Option, } -impl ObjectTemplate { - pub fn prefab_info(&self) -> &PrefabInfo { - use ObjectTemplate::*; - match self { - Structure(s) => &s.prefab, - StructureSlots(s) => &s.prefab, - StructureLogic(s) => &s.prefab, - StructureLogicDevice(s) => &s.prefab, - StructureLogicDeviceMemory(s) => &s.prefab, - Item(i) => &i.prefab, - ItemSlots(i) => &i.prefab, - ItemLogic(i) => &i.prefab, - ItemLogicMemory(i) => &i.prefab, +impl From<&VMObject> for ObjectInfo { + fn from(obj: &VMObject) -> Self { + let obj_ref = obj.borrow(); + ObjectInfo { + name: Some(obj_ref.get_name().value.clone()), + id: Some(*obj_ref.get_id()), } } +} - pub fn object_info(&self) -> Option<&ObjectInfo> { - use ObjectTemplate::*; - match self { - Structure(s) => s.object.as_ref(), - StructureSlots(s) => s.object.as_ref(), - StructureLogic(s) => s.object.as_ref(), - StructureLogicDevice(s) => s.object.as_ref(), - StructureLogicDeviceMemory(s) => s.object.as_ref(), - Item(i) => i.object.as_ref(), - ItemSlots(i) => i.object.as_ref(), - ItemLogic(i) => i.object.as_ref(), - ItemLogicMemory(i) => i.object.as_ref(), - } - } +pub struct FrozenObjectTemplate { + obj_info: ObjectInfo, + template: ObjectTemplate, +} - pub fn build(&self, id: ObjectID, vm: &Rc) -> VMObject { +pub struct FrozenObject { + obj_info: ObjectInfo, + template: Option, +} + +impl FrozenObjectTemplate { + pub fn build_vm_obj(&self, id: ObjectID, vm: &Rc) -> VMObject { if let Some(obj) = stationpedia::object_from_prefab_template(self, id, vm) { obj } else { @@ -83,7 +70,7 @@ impl ObjectTemplate { pub fn connected_networks(&self) -> Vec { use ObjectTemplate::*; - match self { + match self.template { StructureLogicDevice(s) => s .device .connection_list @@ -104,7 +91,7 @@ impl ObjectTemplate { pub fn contained_object_ids(&self) -> Vec { use ObjectTemplate::*; - match self { + match self.template { StructureSlots(s) => s .slots .iter() @@ -181,7 +168,7 @@ impl ObjectTemplate { pub fn templates_from_slots(&self) -> Vec> { use ObjectTemplate::*; - match self { + match self.template { StructureSlots(s) => s.slots.iter().map(|info| info.occupant.clone()).collect(), StructureLogic(s) => s.slots.iter().map(|info| info.occupant.clone()).collect(), StructureLogicDevice(s) => s.slots.iter().map(|info| info.occupant.clone()).collect(), @@ -197,7 +184,7 @@ impl ObjectTemplate { fn build_generic(&self, id: ObjectID, vm: Rc) -> VMObject { use ObjectTemplate::*; - match self { + match self.template { Structure(s) => VMObject::new(Generic { id, prefab: Name::from_prefab_name(&s.prefab.prefab_name), @@ -1193,15 +1180,6 @@ fn freeze_storage(storage: StorageRef<'_>, vm: &Rc) -> Result, Ok(slots) } -#[derive(Clone, Debug, PartialEq, PartialOrd, Eq, Ord, Hash, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct PrefabInfo { - pub prefab_name: String, - pub prefab_hash: i32, - pub desc: String, - pub name: String, -} - impl From<&VMObject> for PrefabInfo { fn from(obj: &VMObject) -> Self { let obj_ref = obj.borrow(); @@ -1221,61 +1199,6 @@ impl From<&VMObject> for PrefabInfo { } } } - -#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct ObjectInfo { - pub name: Option, - pub id: Option, -} - -impl From<&VMObject> for ObjectInfo { - fn from(obj: &VMObject) -> Self { - let obj_ref = obj.borrow(); - ObjectInfo { - name: Some(obj_ref.get_name().value.clone()), - id: Some(*obj_ref.get_id()), - } - } -} - -#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct SlotInfo { - pub name: String, - pub typ: SlotClass, - #[serde(skip_serializing_if = "Option::is_none")] - pub occupant: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub quantity: Option, -} - -#[derive(Clone, Debug, PartialEq, PartialOrd, Eq, Ord, Hash, Serialize, Deserialize)] -pub struct LogicSlotTypes { - #[serde(flatten)] - pub slot_types: BTreeMap, -} - -#[derive(Clone, Debug, PartialEq, PartialOrd, Eq, Ord, Hash, Serialize, Deserialize)] -pub struct LogicTypes { - #[serde(flatten)] - pub types: BTreeMap, -} - -#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct LogicInfo { - pub logic_slot_types: BTreeMap, - pub logic_types: LogicTypes, - #[serde(skip_serializing_if = "Option::is_none")] - pub modes: Option>, - #[serde(skip_serializing_if = "Option::is_none")] - pub logic_values: Option>, - pub transmission_receiver: bool, - pub wireless_logic: bool, - pub circuit_holder: bool, -} - impl From> for LogicInfo { fn from(logic: LogicableRef) -> Self { // Logicable: Storage -> !None @@ -1350,22 +1273,6 @@ impl From> for LogicInfo { } } -#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct ItemInfo { - pub consumable: bool, - #[serde(skip_serializing_if = "Option::is_none")] - pub filter_type: Option, - pub ingredient: bool, - pub max_quantity: u32, - #[serde(skip_serializing_if = "Option::is_none")] - pub reagents: Option>, - pub slot_class: SlotClass, - pub sorting_class: SortingClass, - #[serde(skip_serializing_if = "Option::is_none")] - pub damage: Option, -} - impl From> for ItemInfo { fn from(item: ItemRef<'_>) -> Self { ItemInfo { @@ -1385,35 +1292,6 @@ impl From> for ItemInfo { } } -#[derive(Clone, Debug, PartialEq, PartialOrd, Eq, Ord, Hash, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct ConnectionInfo { - pub typ: ConnectionType, - pub role: ConnectionRole, - #[serde(skip_serializing_if = "Option::is_none")] - pub network: Option, -} - -#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct DeviceInfo { - pub connection_list: Vec, - #[serde(skip_serializing_if = "Option::is_none")] - pub device_pins_length: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub device_pins: Option>>, - pub has_activate_state: bool, - pub has_atmosphere: bool, - pub has_color_state: bool, - pub has_lock_state: bool, - pub has_mode_state: bool, - pub has_on_off_state: bool, - pub has_open_state: bool, - pub has_reagents: bool, - #[serde(skip_serializing_if = "Option::is_none")] - pub reagents: Option>, -} - impl From> for DeviceInfo { fn from(device: DeviceRef) -> Self { let reagents: BTreeMap = device.get_reagents().iter().copied().collect(); @@ -1442,12 +1320,6 @@ impl From> for DeviceInfo { } } -#[derive(Clone, Debug, PartialEq, PartialOrd, Eq, Ord, Hash, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct StructureInfo { - pub small_grid: bool, -} - impl From> for StructureInfo { fn from(value: StructureRef) -> Self { StructureInfo { @@ -1455,26 +1327,6 @@ impl From> for StructureInfo { } } } - -#[derive(Clone, Debug, PartialEq, PartialOrd, Eq, Ord, Hash, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct Instruction { - pub description: String, - pub typ: String, - pub value: i64, -} - -#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct MemoryInfo { - #[serde(skip_serializing_if = "Option::is_none")] - pub instructions: Option>, - pub memory_access: MemoryAccess, - pub memory_size: usize, - #[serde(skip_serializing_if = "Option::is_none")] - pub values: Option>, -} - impl From> for MemoryInfo { fn from(mem_r: MemoryReadableRef<'_>) -> Self { let mem_w = mem_r.as_memory_writable(); @@ -1491,103 +1343,6 @@ impl From> for MemoryInfo { } } -#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct StructureTemplate { - #[serde(skip_serializing_if = "Option::is_none")] - pub object: Option, - pub prefab: PrefabInfo, - pub structure: StructureInfo, -} - -#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct StructureSlotsTemplate { - #[serde(skip_serializing_if = "Option::is_none")] - pub object: Option, - pub prefab: PrefabInfo, - pub structure: StructureInfo, - pub slots: Vec, -} - -#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct StructureLogicTemplate { - #[serde(skip_serializing_if = "Option::is_none")] - pub object: Option, - pub prefab: PrefabInfo, - pub structure: StructureInfo, - pub logic: LogicInfo, - pub slots: Vec, -} - -#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct StructureLogicDeviceTemplate { - #[serde(skip_serializing_if = "Option::is_none")] - pub object: Option, - pub prefab: PrefabInfo, - pub structure: StructureInfo, - pub logic: LogicInfo, - pub slots: Vec, - pub device: DeviceInfo, -} - -#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct StructureLogicDeviceMemoryTemplate { - #[serde(skip_serializing_if = "Option::is_none")] - pub object: Option, - pub prefab: PrefabInfo, - pub structure: StructureInfo, - pub logic: LogicInfo, - pub slots: Vec, - pub device: DeviceInfo, - pub memory: MemoryInfo, -} - -#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct ItemTemplate { - #[serde(skip_serializing_if = "Option::is_none")] - pub object: Option, - pub prefab: PrefabInfo, - pub item: ItemInfo, -} - -#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct ItemSlotsTemplate { - #[serde(skip_serializing_if = "Option::is_none")] - pub object: Option, - pub prefab: PrefabInfo, - pub item: ItemInfo, - pub slots: Vec, -} - -#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct ItemLogicTemplate { - #[serde(skip_serializing_if = "Option::is_none")] - pub object: Option, - pub prefab: PrefabInfo, - pub item: ItemInfo, - pub logic: LogicInfo, - pub slots: Vec, -} - -#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct ItemLogicMemoryTemplate { - #[serde(skip_serializing_if = "Option::is_none")] - pub object: Option, - pub prefab: PrefabInfo, - pub item: ItemInfo, - pub logic: LogicInfo, - pub slots: Vec, - pub memory: MemoryInfo, -} - #[cfg(test)] mod tests { diff --git a/ic10emu/src/vm/object/traits.rs b/ic10emu/src/vm/object/traits.rs index 5a08d45..5653e05 100644 --- a/ic10emu/src/vm/object/traits.rs +++ b/ic10emu/src/vm/object/traits.rs @@ -5,10 +5,6 @@ use crate::{ interpreter::ICState, network::Connection, vm::{ - enums::{ - basic_enums::{Class as SlotClass, GasType, SortingClass}, - script_enums::{LogicSlotType, LogicType}, - }, instructions::{traits::ICInstructable, Instruction}, object::{ errors::{LogicError, MemoryError}, @@ -17,6 +13,10 @@ use crate::{ }, }, }; +use stationeers_data::enums::{ + basic_enums::{Class as SlotClass, GasType, SortingClass}, + script_enums::{LogicSlotType, LogicType}, +}; use std::{collections::BTreeMap, fmt::Debug}; #[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)] diff --git a/ic10emu_wasm/Cargo.toml b/ic10emu_wasm/Cargo.toml index 05c907d..587f187 100644 --- a/ic10emu_wasm/Cargo.toml +++ b/ic10emu_wasm/Cargo.toml @@ -9,22 +9,22 @@ ic10emu = { path = "../ic10emu" } console_error_panic_hook = {version = "0.1.7", optional = true} js-sys = "0.3.69" web-sys = { version = "0.3.69", features = ["WritableStream", "console"] } -wasm-bindgen = "0.2.81" -wasm-bindgen-futures = { version = "0.4.30", features = [ +wasm-bindgen = "0.2.92" +wasm-bindgen-futures = { version = "0.4.42", features = [ "futures-core-03-stream", ] } wasm-streams = "0.4" serde-wasm-bindgen = "0.6.5" -itertools = "0.12.1" -serde = { version = "1.0.197", features = ["derive"] } -serde_with = "3.7.0" +itertools = "0.13.0" +serde = { version = "1.0.202", features = ["derive"] } +serde_with = "3.8.1" tsify = { version = "0.4.5", default-features = false, features = ["js", "wasm-bindgen"] } -thiserror = "1.0.58" +thiserror = "1.0.61" [build-dependencies] ic10emu = { path = "../ic10emu" } strum = { version = "0.26.2"} -itertools = "0.12.1" +itertools = "0.13.0" [features] default = ["console_error_panic_hook"] diff --git a/ic10lsp_wasm/Cargo.toml b/ic10lsp_wasm/Cargo.toml index 9ebc0d7..45a8455 100644 --- a/ic10lsp_wasm/Cargo.toml +++ b/ic10lsp_wasm/Cargo.toml @@ -11,16 +11,16 @@ crate-type = ["cdylib", "rlib"] [dependencies] console_error_panic_hook = "0.1.7" -futures = "0.3.21" +futures = "0.3.30" js-sys = "0.3.69" web-sys = { version = "0.3.69", features = ["WritableStream", "console"] } -tokio = { version = "1.26.0", features = ["sync"] } +tokio = { version = "1.37.0", features = ["sync"] } tower-lsp = { version = "0.20.0", default-features = false, features = [ "runtime-agnostic", ] } # tree-sitter = { version = "0.9.0", package = "tree-sitter-facade" } -wasm-bindgen = "0.2.81" -wasm-bindgen-futures = { version = "0.4.30", features = [ +wasm-bindgen = "0.2.92" +wasm-bindgen-futures = { version = "0.4.42", features = [ "futures-core-03-stream", ] } wasm-streams = "0.4" diff --git a/rust-analyzer.json b/rust-analyzer.json index 2e62bd7..bfdf497 100644 --- a/rust-analyzer.json +++ b/rust-analyzer.json @@ -1,3 +1,5 @@ { - "rust-analyzer.cargo.target": "wasm32-unknown-unknown" + "rust-analyzer.cargo.target": "wasm32-unknown-unknown", + "rust-analyzer.cargo.features": [ + ] } diff --git a/stationeers_data/Cargo.toml b/stationeers_data/Cargo.toml new file mode 100644 index 0000000..71ddfd8 --- /dev/null +++ b/stationeers_data/Cargo.toml @@ -0,0 +1,16 @@ +[package] +name = "stationeers_data" +version.workspace = true +edition.workspace = true + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[features] +prefab_database = [] # compile with the prefab database enabled + +[dependencies] +num-integer = "0.1.46" +phf = "0.11.2" +serde = "1.0.202" +serde_derive = "1.0.202" +strum = { version = "0.26.2", features = ["derive", "phf", "strum_macros"] } diff --git a/stationeers_data/src/database/prefab_map.rs b/stationeers_data/src/database/prefab_map.rs new file mode 100644 index 0000000..c780c56 --- /dev/null +++ b/stationeers_data/src/database/prefab_map.rs @@ -0,0 +1,43567 @@ +use crate::enums::script_enums::*; +use crate::enums::basic_enums::*; +use crate::enums::{MemoryAccess, ConnectionType, ConnectionRole}; +use crate::templates::*; +pub fn build_prefab_database() -> std::collections::BTreeMap< + i32, + crate::templates::ObjectTemplate, +> { + #[allow(clippy::unreadable_literal)] + std::collections::BTreeMap::from([ + ( + -1330388999i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "AccessCardBlack".into(), + prefab_hash: -1330388999i32, + desc: "".into(), + name: "Access Card (Black)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::AccessCard, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -1411327657i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "AccessCardBlue".into(), + prefab_hash: -1411327657i32, + desc: "".into(), + name: "Access Card (Blue)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::AccessCard, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 1412428165i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "AccessCardBrown".into(), + prefab_hash: 1412428165i32, + desc: "".into(), + name: "Access Card (Brown)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::AccessCard, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -1339479035i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "AccessCardGray".into(), + prefab_hash: -1339479035i32, + desc: "".into(), + name: "Access Card (Gray)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::AccessCard, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -374567952i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "AccessCardGreen".into(), + prefab_hash: -374567952i32, + desc: "".into(), + name: "Access Card (Green)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::AccessCard, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 337035771i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "AccessCardKhaki".into(), + prefab_hash: 337035771i32, + desc: "".into(), + name: "Access Card (Khaki)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::AccessCard, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -332896929i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "AccessCardOrange".into(), + prefab_hash: -332896929i32, + desc: "".into(), + name: "Access Card (Orange)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::AccessCard, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 431317557i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "AccessCardPink".into(), + prefab_hash: 431317557i32, + desc: "".into(), + name: "Access Card (Pink)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::AccessCard, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 459843265i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "AccessCardPurple".into(), + prefab_hash: 459843265i32, + desc: "".into(), + name: "Access Card (Purple)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::AccessCard, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -1713748313i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "AccessCardRed".into(), + prefab_hash: -1713748313i32, + desc: "".into(), + name: "Access Card (Red)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::AccessCard, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 2079959157i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "AccessCardWhite".into(), + prefab_hash: 2079959157i32, + desc: "".into(), + name: "Access Card (White)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::AccessCard, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 568932536i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "AccessCardYellow".into(), + prefab_hash: 568932536i32, + desc: "".into(), + name: "Access Card (Yellow)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::AccessCard, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 1365789392i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "ApplianceChemistryStation".into(), + prefab_hash: 1365789392i32, + desc: "".into(), + name: "Chemistry Station".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Appliance, + sorting_class: SortingClass::Appliances, + }, + slots: vec![SlotInfo { name : "Output".into(), typ : Class::None }] + .into_iter() + .collect(), + } + .into(), + ), + ( + -1683849799i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ApplianceDeskLampLeft".into(), + prefab_hash: -1683849799i32, + desc: "".into(), + name: "Appliance Desk Lamp Left".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Appliance, + sorting_class: SortingClass::Appliances, + }, + } + .into(), + ), + ( + 1174360780i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ApplianceDeskLampRight".into(), + prefab_hash: 1174360780i32, + desc: "".into(), + name: "Appliance Desk Lamp Right".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Appliance, + sorting_class: SortingClass::Appliances, + }, + } + .into(), + ), + ( + -1136173965i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "ApplianceMicrowave".into(), + prefab_hash: -1136173965i32, + desc: "While countless \'better\' ways of cooking Food have been invented in the last few hundred years, few are as durable or easy to fabricate as the OK-Zoomer microwave. Licensed from Xigo, the plans are based on a classic model from the mid-21st century, giving it a charmingly retro feel. But don\'t worry, it oscillates Water molecules more than adequately. \nJust bolt it to a Powered Bench using a Wrench to power it, follow the recipe, and you\'re cooking." + .into(), + name: "Microwave".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Appliance, + sorting_class: SortingClass::Appliances, + }, + slots: vec![SlotInfo { name : "Output".into(), typ : Class::None }] + .into_iter() + .collect(), + } + .into(), + ), + ( + -749191906i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "AppliancePackagingMachine".into(), + prefab_hash: -749191906i32, + desc: "The Xigo Cannifier requires Empty Can and cooked food to create long-lasting, easily stored sustenance. Note that the Cannifier must be bolted to a Powered Bench for power, and only accepts cooked food and tin cans.\n\nOPERATION\n\n1. Add the correct ingredients to the device via the hopper in the TOP.\n\n2. Close the device using the dropdown handle.\n\n3. Activate the device.\n\n4. Remove canned goods from the outlet in the FRONT.\n\nNote: the Cannifier will flash an error on its activation switch if you attempt to activate it before closing it.\n\n\n " + .into(), + name: "Basic Packaging Machine".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Appliance, + sorting_class: SortingClass::Appliances, + }, + slots: vec![SlotInfo { name : "Export".into(), typ : Class::None }] + .into_iter() + .collect(), + } + .into(), + ), + ( + -1339716113i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "AppliancePaintMixer".into(), + prefab_hash: -1339716113i32, + desc: "".into(), + name: "Paint Mixer".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Appliance, + sorting_class: SortingClass::Appliances, + }, + slots: vec![SlotInfo { name : "Output".into(), typ : Class::Bottle }] + .into_iter() + .collect(), + } + .into(), + ), + ( + -1303038067i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "AppliancePlantGeneticAnalyzer".into(), + prefab_hash: -1303038067i32, + desc: "The Genetic Analyzer can be used to process samples from the Plant Sampler. Once processed, the genetic information of the sampled plant can be viewed by clicking on the search button.\n\nIndividual Gene Value Widgets: \nMost gene values will appear as a sliding bar between a minimum value on the left and a maximum value on the right. The actual value of the gene is in the middle of the bar, in orange.\n\nMultiple Gene Value Widgets: \nFor temperature and pressure ranges, four genes appear on the same widget. The orange values underneath the bar are the minimum and maximum thresholds for growth. Outside of this range, the plant will stop growing and eventually die. The blue values underneath the bar are the minimum and maximum thresholds for ideal growth. Inside of this range, the plant will grow at maximum speed. The white values above the bar are the minimum and maximum achievable values for the growth threshold." + .into(), + name: "Plant Genetic Analyzer".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Appliance, + sorting_class: SortingClass::Appliances, + }, + slots: vec![SlotInfo { name : "Input".into(), typ : Class::Tool }] + .into_iter() + .collect(), + } + .into(), + ), + ( + -1094868323i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "AppliancePlantGeneticSplicer".into(), + prefab_hash: -1094868323i32, + desc: "The Genetic Splicer can be used to copy a single gene from one \'source\' plant to another \'target\' plant of the same type. After copying, the source plant will be destroyed.\n \nTo begin splicing, place a plant or seed bag in the left slot (source) and place another plant or seed bag of the same type in the right slot (target). You can select a gene using the arrow buttons. Close the sliding door and press the green activate button. Once splicing has begun, the device will be locked until the process has finished (which will take approximately twenty minutes). If you want to cancel splicing you can power off the bench or detach the appliance as a last resort." + .into(), + name: "Plant Genetic Splicer".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Appliance, + sorting_class: SortingClass::Appliances, + }, + slots: vec![ + SlotInfo { name : "Source Plant".into(), typ : Class::Plant }, + SlotInfo { name : "Target Plant".into(), typ : Class::Plant } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + 871432335i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "AppliancePlantGeneticStabilizer".into(), + prefab_hash: 871432335i32, + desc: "The Genetic Stabilizer can be used to manipulate gene stability on a specific Plants or Seeds. It has two modes Stabilize and Destabilize.\nStabilize: Increases all genes stability by 50%.\nDestabilize: Decreases all gene stability by 10% other than a chosen gene which will received decreased stability by 50%.\n " + .into(), + name: "Plant Genetic Stabilizer".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Appliance, + sorting_class: SortingClass::Appliances, + }, + slots: vec![SlotInfo { name : "Plant".into(), typ : Class::Plant }] + .into_iter() + .collect(), + } + .into(), + ), + ( + 1260918085i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "ApplianceReagentProcessor".into(), + prefab_hash: 1260918085i32, + desc: "Sitting somewhere between a high powered juicer and an alchemist\'s alembic, the Xigo reagent processor turns certain raw materials and food items into cooking and crafting ingredients. Indispensible in any space kitchen, just bolt it to the bench, and you\'re ready to go." + .into(), + name: "Reagent Processor".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Appliance, + sorting_class: SortingClass::Appliances, + }, + slots: vec![ + SlotInfo { name : "Input".into(), typ : Class::None }, SlotInfo { + name : "Output".into(), typ : Class::None } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + 142831994i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "ApplianceSeedTray".into(), + prefab_hash: 142831994i32, + desc: "The seed tray can hold up to twelve plants or seeds and can be used to facilitate fast experimentation and testing of plant genetics." + .into(), + name: "Appliance Seed Tray".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Appliance, + sorting_class: SortingClass::Appliances, + }, + slots: vec![ + SlotInfo { name : "Plant".into(), typ : Class::Plant }, SlotInfo { + name : "Plant".into(), typ : Class::Plant }, SlotInfo { name : + "Plant".into(), typ : Class::Plant }, SlotInfo { name : "Plant" + .into(), typ : Class::Plant }, SlotInfo { name : "Plant".into(), typ + : Class::Plant }, SlotInfo { name : "Plant".into(), typ : + Class::Plant }, SlotInfo { name : "Plant".into(), typ : Class::Plant + }, SlotInfo { name : "Plant".into(), typ : Class::Plant }, SlotInfo { + name : "Plant".into(), typ : Class::Plant }, SlotInfo { name : + "Plant".into(), typ : Class::Plant }, SlotInfo { name : "Plant" + .into(), typ : Class::Plant }, SlotInfo { name : "Plant".into(), typ + : Class::Plant } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + 1853941363i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "ApplianceTabletDock".into(), + prefab_hash: 1853941363i32, + desc: "".into(), + name: "Tablet Dock".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Appliance, + sorting_class: SortingClass::Appliances, + }, + slots: vec![ + SlotInfo { name : "".into(), typ : Class::Tool } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + 221058307i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "AutolathePrinterMod".into(), + prefab_hash: 221058307i32, + desc: "Apply to an Autolathe with a Welding Torch or Arc Welder to upgrade for increased processing speed and more recipe options." + .into(), + name: "Autolathe Printer Mod".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -462415758i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "Battery_Wireless_cell".into(), + prefab_hash: -462415758i32, + desc: "0.Empty\n1.Critical\n2.VeryLow\n3.Low\n4.Medium\n5.High\n6.Full" + .into(), + name: "Battery Wireless Cell".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Battery, + sorting_class: SortingClass::Default, + }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Mode, MemoryAccess::ReadWrite), + (LogicType::ReferenceId, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Empty".into()), (1u32, "Critical".into()), (2u32, + "VeryLow".into()), (3u32, "Low".into()), (4u32, "Medium" + .into()), (5u32, "High".into()), (6u32, "Full".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + } + .into(), + ), + ( + -41519077i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "Battery_Wireless_cell_Big".into(), + prefab_hash: -41519077i32, + desc: "0.Empty\n1.Critical\n2.VeryLow\n3.Low\n4.Medium\n5.High\n6.Full" + .into(), + name: "Battery Wireless Cell (Big)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Battery, + sorting_class: SortingClass::Default, + }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Mode, MemoryAccess::ReadWrite), + (LogicType::ReferenceId, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Empty".into()), (1u32, "Critical".into()), (2u32, + "VeryLow".into()), (3u32, "Low".into()), (4u32, "Medium" + .into()), (5u32, "High".into()), (6u32, "Full".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + } + .into(), + ), + ( + -1976947556i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "CardboardBox".into(), + prefab_hash: -1976947556i32, + desc: "".into(), + name: "Cardboard Box".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Storage, + }, + slots: vec![ + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + -1634532552i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CartridgeAccessController".into(), + prefab_hash: -1634532552i32, + desc: "".into(), + name: "Cartridge (Access Controller)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Cartridge, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -1550278665i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CartridgeAtmosAnalyser".into(), + prefab_hash: -1550278665i32, + desc: "The Lorenz atmos analyzer is a multi-functional mass-spectrometer designed by ExMin for use with the OreCore Handheld Tablet. It displays the pressure, concentration and molar quantity of gas in rooms, tanks, or pipe networks." + .into(), + name: "Atmos Analyzer".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Cartridge, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -932136011i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CartridgeConfiguration".into(), + prefab_hash: -932136011i32, + desc: "".into(), + name: "Configuration".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Cartridge, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -1462180176i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CartridgeElectronicReader".into(), + prefab_hash: -1462180176i32, + desc: "".into(), + name: "eReader".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Cartridge, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -1957063345i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CartridgeGPS".into(), + prefab_hash: -1957063345i32, + desc: "".into(), + name: "GPS".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Cartridge, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 872720793i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CartridgeGuide".into(), + prefab_hash: 872720793i32, + desc: "".into(), + name: "Guide".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Cartridge, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -1116110181i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CartridgeMedicalAnalyser".into(), + prefab_hash: -1116110181i32, + desc: "When added to the OreCore Handheld Tablet, Asura\'s\'s ReadyMed medical analyzer reveals the health, or otherwise, of users various organs. Due to a design flaw, older models were notorious for producing quasar-like levels of x-ray radiation. Recent advances in shielding have more than halved the risk to users." + .into(), + name: "Medical Analyzer".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Cartridge, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 1606989119i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CartridgeNetworkAnalyser".into(), + prefab_hash: 1606989119i32, + desc: "A minor masterpiece of micro-electronic engineering, the network analyzer displays the current, voltage and wattage of a cable network, as well as any devices connected to it. Based on a widely-copied Sinotai design, it\'s used in conjunction with the OreCore Handheld Tablet." + .into(), + name: "Network Analyzer".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Cartridge, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -1768732546i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CartridgeOreScanner".into(), + prefab_hash: -1768732546i32, + desc: "When inserted into a Handheld Tablet the scanner will display minerals hidden underground on the tablet." + .into(), + name: "Ore Scanner".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Cartridge, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 1738236580i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CartridgeOreScannerColor".into(), + prefab_hash: 1738236580i32, + desc: "When inserted into a Handheld Tablet the scanner will display minerals hidden underground in different colors on the tablet." + .into(), + name: "Ore Scanner (Color)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Cartridge, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 1101328282i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CartridgePlantAnalyser".into(), + prefab_hash: 1101328282i32, + desc: "".into(), + name: "Cartridge Plant Analyser".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Cartridge, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 81488783i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CartridgeTracker".into(), + prefab_hash: 81488783i32, + desc: "".into(), + name: "Tracker".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Cartridge, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 1633663176i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CircuitboardAdvAirlockControl".into(), + prefab_hash: 1633663176i32, + desc: "".into(), + name: "Advanced Airlock".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Circuitboard, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 1618019559i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CircuitboardAirControl".into(), + prefab_hash: 1618019559i32, + desc: "When added to a Console, air control circuit boards allow you to program an Active Vent. As with small dogs and 83% of people, air control circuits have only three modes: Pressure, Draft and Offline. Pressure mode maintains a 100kPa atmosphere, switching the active vent between inward and outward flow until target pressure is achieved. Draft mode allows you to pair active vents to circulate air. Offline mode deactivates the vent. " + .into(), + name: "Air Control".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Circuitboard, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 912176135i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CircuitboardAirlockControl".into(), + prefab_hash: 912176135i32, + desc: "Rumored to have been first sketched on a Norsec toilet wall by a disgruntled engineer, the Exgress airlock control circuit board\u{2019}s versatility and ease of fabrication has made it the Stationeers control system of choice for Airlock cycling protocols. \n\nTo enter setup mode, insert the board into a Console along with a data disk. In this mode, you can see all data-accessible objects currently connected to the Console. Doors, lights, gas sensors and slave consoles can be selected (highlighted green), and will be controlled once the data disk is removed." + .into(), + name: "Airlock".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Circuitboard, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -412104504i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CircuitboardCameraDisplay".into(), + prefab_hash: -412104504i32, + desc: "Surveillance is sometimes necessary when building bases in highly hostile environments. The camera display circuit board allows wary Stationeers to turn a Console into a security display when connected to a Camera." + .into(), + name: "Camera Display".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Circuitboard, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 855694771i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CircuitboardDoorControl".into(), + prefab_hash: 855694771i32, + desc: "A basic tool of Stationeer base construction, this circuit board provides a way to open and close a Composite Door, Blast Door or Glass Door remotely, when connected to a Console. This system can be further linked to Motion Sensor to create automatic doors." + .into(), + name: "Door Control".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Circuitboard, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -82343730i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CircuitboardGasDisplay".into(), + prefab_hash: -82343730i32, + desc: "Information is power. Place this circuitboard into a Console to create a display that shows gas pressure or temperature of any connected tank, storage cannister, Kit (Pipe Analyzer) or Kit (Gas Sensor)." + .into(), + name: "Gas Display".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Circuitboard, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 1344368806i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CircuitboardGraphDisplay".into(), + prefab_hash: 1344368806i32, + desc: "".into(), + name: "Graph Display".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Circuitboard, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 1633074601i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CircuitboardHashDisplay".into(), + prefab_hash: 1633074601i32, + desc: "".into(), + name: "Hash Display".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Circuitboard, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -1134148135i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CircuitboardModeControl".into(), + prefab_hash: -1134148135i32, + desc: "Can\'t decide which mode you love most? This circuit board allows you to switch any connected device between operation modes." + .into(), + name: "Mode Control".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Circuitboard, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -1923778429i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CircuitboardPowerControl".into(), + prefab_hash: -1923778429i32, + desc: "Under distant suns and demanding environments, Stationeer systems need to balance reliability, resilience and versatility. The power control board allows remote enabling and disabling of selected devices, disconnecting manual operation. \n \nThe circuit board has two modes: \'Link\' switches all devices on or off; \'Toggle\' switches each device to their alternate state. " + .into(), + name: "Power Control".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Circuitboard, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -2044446819i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CircuitboardShipDisplay".into(), + prefab_hash: -2044446819i32, + desc: "When the original Stationeer Handbook collapsed under its own weight into a singularity, certain information was irretrievably lost. Amongst this mysterious corpus of knowledge is the exact purpose of the ship display board." + .into(), + name: "Ship Display".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Circuitboard, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 2020180320i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "CircuitboardSolarControl".into(), + prefab_hash: 2020180320i32, + desc: "Adding a solar control board to a Console lets you manually control the horizontal and vertical angles of any connected Solar Panel." + .into(), + name: "Solar Control".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Circuitboard, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 1228794916i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "CompositeRollCover".into(), + prefab_hash: 1228794916i32, + desc: "0.Operate\n1.Logic".into(), + name: "Composite Roll Cover".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::Idle, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Operate".into()), (1u32, "Logic".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 8709219i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "CrateMkII".into(), + prefab_hash: 8709219i32, + desc: "A more heavily reinforced version of the iconic Dynamic Crate, the Crate Mk II is resistant to incredibly high pressures and temperatures. Short of disposing of it in a black hole, the Mk II is about as safe as luggage gets." + .into(), + name: "Crate Mk II".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Storage, + }, + slots: vec![ + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + 1531087544i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "DecayedFood".into(), + prefab_hash: 1531087544i32, + desc: "When your food decays, it turns into this. ODA scientists have attempted to determine the exact constituents of this substance, but it remains evasive and mysterious. Suffice to say, eating it is a bad idea. Research has determined, however, that The exact speed of decay varies individually by:\n\n- TEMPERATURE - Refrigeration will slow decay, but many foods will be damaged by exposure to extreme low pressure, as well as extreme heat. The optimum temperature is 0 kelvin (-272 C).\n\n- FOOD TYPE - Each food type has its own decay properties. Tomato Soup lasts a lot longer than a Tomato, for instance.\n\n- PRESSURE - Food decays faster when the pressure drops below 1 atmosphere (101kPa). Decay happens exponentially more quickly as the atmosphere approaches a perfect vacuum. There is no effect from higher pressures. \n\n- ATMOSPHERE - Different gases can slow and accelerate the decay process. The process will take account of respective gas ratios in mixed atmospheres in calculating the decay modifier. The following rates apply across all foods:\n\n> Oxygen x 1.3\n> Nitrogen x 0.6\n> Carbon Dioxide x 0.8\n> Volatiles x 1\n> Pollutant x 3\n> Nitrous Oxide x 1.5\n> Steam x 2\n> Vacuum (see PRESSURE above)\n\n" + .into(), + name: "Decayed Food".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 25u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -1844430312i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "DeviceLfoVolume".into(), + prefab_hash: -1844430312i32, + desc: "The low frequency oscillator (or LFO) makes everything sound dark, twisted and crunchy by altering the shape of the waves output by a Logic Step Sequencer.\n \nTo set up an LFO:\n\n1. Place the LFO unit\n2. Set the LFO output to a Passive Speaker\n2. Set a sequencers\' output to LFO - so the sequencer\'s signal runs through the LFO to a speaker.\n3. Place a Stop Watch or use an existing one, then use a Logic Writer to write it to the LFO.\n4. Use another logic writer to write the BPM to the LFO.\n5. You are ready. This is the future. You\'re in space. Make it sound cool.\n\nFor more info, check out the music page." + .into(), + name: "Low frequency oscillator".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Time, MemoryAccess::ReadWrite), (LogicType::Bpm, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Whole Note".into()), (1u32, "Half Note".into()), + (2u32, "Quarter Note".into()), (3u32, "Eighth Note".into()), + (4u32, "Sixteenth Note".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1762696475i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "DeviceStepUnit".into(), + prefab_hash: 1762696475i32, + desc: "0.C-2\n1.C#-2\n2.D-2\n3.D#-2\n4.E-2\n5.F-2\n6.F#-2\n7.G-2\n8.G#-2\n9.A-2\n10.A#-2\n11.B-2\n12.C-1\n13.C#-1\n14.D-1\n15.D#-1\n16.E-1\n17.F-1\n18.F#-1\n19.G-1\n20.G#-1\n21.A-1\n22.A#-1\n23.B-1\n24.C0\n25.C#0\n26.D0\n27.D#0\n28.E0\n29.F0\n30.F#0\n31.G0\n32.G#0\n33.A0\n34.A#0\n35.B0\n36.C1\n37.C#1\n38.D1\n39.D#1\n40.E1\n41.F1\n42.F#1\n43.G1\n44.G#1\n45.A1\n46.A#1\n47.B1\n48.C2\n49.C#2\n50.D2\n51.D#2\n52.E2\n53.F2\n54.F#2\n55.G2\n56.G#2\n57.A2\n58.A#2\n59.B2\n60.C3\n61.C#3\n62.D3\n63.D#3\n64.E3\n65.F3\n66.F#3\n67.G3\n68.G#3\n69.A3\n70.A#3\n71.B3\n72.C4\n73.C#4\n74.D4\n75.D#4\n76.E4\n77.F4\n78.F#4\n79.G4\n80.G#4\n81.A4\n82.A#4\n83.B4\n84.C5\n85.C#5\n86.D5\n87.D#5\n88.E5\n89.F5\n90.F#5\n91.G5 \n92.G#5\n93.A5\n94.A#5\n95.B5\n96.C6\n97.C#6\n98.D6\n99.D#6\n100.E6\n101.F6\n102.F#6\n103.G6\n104.G#6\n105.A6\n106.A#6\n107.B6\n108.C7\n109.C#7\n110.D7\n111.D#7\n112.E7\n113.F7\n114.F#7\n115.G7\n116.G#7\n117.A7\n118.A#7\n119.B7\n120.C8\n121.C#8\n122.D8\n123.D#8\n124.E8\n125.F8\n126.F#8\n127.G8" + .into(), + name: "Device Step Unit".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::Volume, + MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "C-2".into()), (1u32, "C#-2".into()), (2u32, "D-2" + .into()), (3u32, "D#-2".into()), (4u32, "E-2".into()), (5u32, + "F-2".into()), (6u32, "F#-2".into()), (7u32, "G-2".into()), + (8u32, "G#-2".into()), (9u32, "A-2".into()), (10u32, "A#-2" + .into()), (11u32, "B-2".into()), (12u32, "C-1".into()), + (13u32, "C#-1".into()), (14u32, "D-1".into()), (15u32, "D#-1" + .into()), (16u32, "E-1".into()), (17u32, "F-1".into()), + (18u32, "F#-1".into()), (19u32, "G-1".into()), (20u32, "G#-1" + .into()), (21u32, "A-1".into()), (22u32, "A#-1".into()), + (23u32, "B-1".into()), (24u32, "C0".into()), (25u32, "C#0" + .into()), (26u32, "D0".into()), (27u32, "D#0".into()), + (28u32, "E0".into()), (29u32, "F0".into()), (30u32, "F#0" + .into()), (31u32, "G0".into()), (32u32, "G#0".into()), + (33u32, "A0".into()), (34u32, "A#0".into()), (35u32, "B0" + .into()), (36u32, "C1".into()), (37u32, "C#1".into()), + (38u32, "D1".into()), (39u32, "D#1".into()), (40u32, "E1" + .into()), (41u32, "F1".into()), (42u32, "F#1".into()), + (43u32, "G1".into()), (44u32, "G#1".into()), (45u32, "A1" + .into()), (46u32, "A#1".into()), (47u32, "B1".into()), + (48u32, "C2".into()), (49u32, "C#2".into()), (50u32, "D2" + .into()), (51u32, "D#2".into()), (52u32, "E2".into()), + (53u32, "F2".into()), (54u32, "F#2".into()), (55u32, "G2" + .into()), (56u32, "G#2".into()), (57u32, "A2".into()), + (58u32, "A#2".into()), (59u32, "B2".into()), (60u32, "C3" + .into()), (61u32, "C#3".into()), (62u32, "D3".into()), + (63u32, "D#3".into()), (64u32, "E3".into()), (65u32, "F3" + .into()), (66u32, "F#3".into()), (67u32, "G3".into()), + (68u32, "G#3".into()), (69u32, "A3".into()), (70u32, "A#3" + .into()), (71u32, "B3".into()), (72u32, "C4".into()), (73u32, + "C#4".into()), (74u32, "D4".into()), (75u32, "D#4".into()), + (76u32, "E4".into()), (77u32, "F4".into()), (78u32, "F#4" + .into()), (79u32, "G4".into()), (80u32, "G#4".into()), + (81u32, "A4".into()), (82u32, "A#4".into()), (83u32, "B4" + .into()), (84u32, "C5".into()), (85u32, "C#5".into()), + (86u32, "D5".into()), (87u32, "D#5".into()), (88u32, "E5" + .into()), (89u32, "F5".into()), (90u32, "F#5".into()), + (91u32, "G5 ".into()), (92u32, "G#5".into()), (93u32, "A5" + .into()), (94u32, "A#5".into()), (95u32, "B5".into()), + (96u32, "C6".into()), (97u32, "C#6".into()), (98u32, "D6" + .into()), (99u32, "D#6".into()), (100u32, "E6".into()), + (101u32, "F6".into()), (102u32, "F#6".into()), (103u32, "G6" + .into()), (104u32, "G#6".into()), (105u32, "A6".into()), + (106u32, "A#6".into()), (107u32, "B6".into()), (108u32, "C7" + .into()), (109u32, "C#7".into()), (110u32, "D7".into()), + (111u32, "D#7".into()), (112u32, "E7".into()), (113u32, "F7" + .into()), (114u32, "F#7".into()), (115u32, "G7".into()), + (116u32, "G#7".into()), (117u32, "A7".into()), (118u32, "A#7" + .into()), (119u32, "B7".into()), (120u32, "C8".into()), + (121u32, "C#8".into()), (122u32, "D8".into()), (123u32, "D#8" + .into()), (124u32, "E8".into()), (125u32, "F8".into()), + (126u32, "F#8".into()), (127u32, "G8".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 519913639i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicAirConditioner".into(), + prefab_hash: 519913639i32, + desc: "The Sinotai-designed Huxi portable air conditioner cools by drawing heat from the atmosphere and storing it, or adding heat to the atmosphere from its internal tank. With a max internal pressure of 8106kPa, its capacity is relatively limited, physics being clear on this subject. To extend its temperature storage ability, bolt the Huxi to a Tank Connector, then connect it to a pipe network supplying hot or cold gases." + .into(), + name: "Portable Air Conditioner".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Atmospherics, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ), + ( + 1941079206i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicCrate".into(), + prefab_hash: 1941079206i32, + desc: "The humble dynamic crate has become a symbol of Stationeer invention and independence. With twelve slots and handles at either end for ease of carriage, it\'s both standard issue and critical kit for cadets and Commanders alike." + .into(), + name: "Dynamic Crate".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Storage, + }, + slots: vec![ + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + -2085885850i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicGPR".into(), + prefab_hash: -2085885850i32, + desc: "".into(), + name: "".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Tools, + }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ), + ( + -1713611165i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicGasCanisterAir".into(), + prefab_hash: -1713611165i32, + desc: "Portable gas tanks do one thing: store gas. But there\'s lots you can do with them. To refill the tank, bolt it to a Kit (Tank Connector), then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or bad things happen. Once it\'s full, you can refill a Canister (Oxygen) by attaching it to the tank\'s striped section. Or you could vent the tank\'s variable flow rate valve into a room and create an atmosphere. They also attach to rovers and rockets. Alternatively, kick it over and practice barrel rolling. The possibilities are endless." + .into(), + name: "Portable Gas Tank (Air)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Atmospherics, + }, + slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }] + .into_iter() + .collect(), + } + .into(), + ), + ( + -322413931i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicGasCanisterCarbonDioxide".into(), + prefab_hash: -322413931i32, + desc: "Portable gas tanks do one thing: store gas. To refill the tank, bolt it to a Kit (Tank Connector), then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or ... boom. Once it\'s full, you can refill a Canister (CO2) by attaching it to the tank\'s striped section. Or you could vent the tank\'s variable flow rate valve into a room and create an atmosphere ... of sorts." + .into(), + name: "Portable Gas Tank (CO2)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }] + .into_iter() + .collect(), + } + .into(), + ), + ( + -1741267161i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicGasCanisterEmpty".into(), + prefab_hash: -1741267161i32, + desc: "Portable gas tanks store gas. To refill one, bolt it to a Kit (Tank Connector), then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or bad things happen. Once it\'s full, you can refill a Canister by attaching it to the tank\'s striped section. Or you could vent the tank\'s variable flow rate valve into a room and create an atmosphere." + .into(), + name: "Portable Gas Tank".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }] + .into_iter() + .collect(), + } + .into(), + ), + ( + -817051527i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicGasCanisterFuel".into(), + prefab_hash: -817051527i32, + desc: "Portable tanks store gas. They\'re good at it. If you need to refill a tank, bolt it to a Kit (Tank Connector), then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or things get messy. You can refill a Canister (Fuel) by attaching it to the tank\'s striped section. Or you could use a Wrench to attach it to a rover or rocket for later. It\'s really up to you." + .into(), + name: "Portable Gas Tank (Fuel)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }] + .into_iter() + .collect(), + } + .into(), + ), + ( + 121951301i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicGasCanisterNitrogen".into(), + prefab_hash: 121951301i32, + desc: "Portable tanks store gas. If you need to refill a tank, bolt it to a Kit (Tank Connector) using a Wrench, then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or you\'ll end up with Nitrogen in places you weren\'t expecting. You can refill a Canister (Nitrogen) by attaching it to the tank\'s striped section. Or you could use a Wrench to attach it to a rover or rocket for later." + .into(), + name: "Portable Gas Tank (Nitrogen)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }] + .into_iter() + .collect(), + } + .into(), + ), + ( + 30727200i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicGasCanisterNitrousOxide".into(), + prefab_hash: 30727200i32, + desc: "".into(), + name: "Portable Gas Tank (Nitrous Oxide)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }] + .into_iter() + .collect(), + } + .into(), + ), + ( + 1360925836i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicGasCanisterOxygen".into(), + prefab_hash: 1360925836i32, + desc: "Portable tanks store gas. If you need to refill a tank, bolt it to a Kit (Tank Connector) using a Wrench, then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or you\'ll be picking tank shards out of your face. You can refill a Canister (Oxygen) by attaching it to the tank\'s striped section. Or you could vent it into a sealed room to create an atmosphere. Or even paint it pink, call it Steve and fill that sad space in your heart." + .into(), + name: "Portable Gas Tank (Oxygen)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }] + .into_iter() + .collect(), + } + .into(), + ), + ( + 396065382i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicGasCanisterPollutants".into(), + prefab_hash: 396065382i32, + desc: "".into(), + name: "Portable Gas Tank (Pollutants)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }] + .into_iter() + .collect(), + } + .into(), + ), + ( + -8883951i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicGasCanisterRocketFuel".into(), + prefab_hash: -8883951i32, + desc: "".into(), + name: "Dynamic Gas Canister Rocket Fuel".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }] + .into_iter() + .collect(), + } + .into(), + ), + ( + 108086870i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicGasCanisterVolatiles".into(), + prefab_hash: 108086870i32, + desc: "Portable tanks store gas. To refill one, bolt it to a Kit (Tank Connector) using a Wrench, then connect it to a pipe network. Don\'t fill it above 10 MPa, unless you\'re the sort who loves complicated, flammable emergencies. You can refill a Canister (Volatiles) by attaching it to the tank\'s striped section. Or you could use a Wrench to attach to a rocket and show it around the Solar System." + .into(), + name: "Portable Gas Tank (Volatiles)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }] + .into_iter() + .collect(), + } + .into(), + ), + ( + 197293625i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicGasCanisterWater".into(), + prefab_hash: 197293625i32, + desc: "This portable tank stores liquid, and liquid only. You just have to fill it up. To do this, bolt one to a Kit (Tank Connector) using a Wrench, then connect it to Liquid Pipe (Straight) to supply liquid to a network. \nTry to keep pressure under 10 MPa, or you\'ll end up wet, hurt and sorry, without any of the fun.\nYou can refill a Liquid Canister (Water) by attaching it to the tank\'s striped section. Or you could use a Wrench to attach it to a rocket and take it somewhere distant and dry, then feel good about yourself." + .into(), + name: "Portable Liquid Tank (Water)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Atmospherics, + }, + slots: vec![ + SlotInfo { name : "Gas Canister".into(), typ : Class::LiquidCanister + } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + -386375420i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicGasTankAdvanced".into(), + prefab_hash: -386375420i32, + desc: "0.Mode0\n1.Mode1".into(), + name: "Gas Tank Mk II".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }] + .into_iter() + .collect(), + } + .into(), + ), + ( + -1264455519i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicGasTankAdvancedOxygen".into(), + prefab_hash: -1264455519i32, + desc: "0.Mode0\n1.Mode1".into(), + name: "Portable Gas Tank Mk II (Oxygen)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Atmospherics, + }, + slots: vec![SlotInfo { name : "Gas Canister".into(), typ : Class::None }] + .into_iter() + .collect(), + } + .into(), + ), + ( + -82087220i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicGenerator".into(), + prefab_hash: -82087220i32, + desc: "Every Stationeer\'s best friend, the portable generator gets you up and running, fast. Fill it with a Canister (Fuel) to power up and charge a Battery Cell (Small), or attach it to a Power Connector to link it into your electrical network. It\'s pressure driven, so functions more efficiently at lower temperatures, and REALLY efficiently if supercooled. Perfecting your fuel mix also makes a big difference." + .into(), + name: "Portable Generator".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Atmospherics, + }, + slots: vec![ + SlotInfo { name : "Gas Canister".into(), typ : Class::GasCanister }, + SlotInfo { name : "Battery".into(), typ : Class::Battery } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + 587726607i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicHydroponics".into(), + prefab_hash: 587726607i32, + desc: "".into(), + name: "Portable Hydroponics".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Atmospherics, + }, + slots: vec![ + SlotInfo { name : "Plant".into(), typ : Class::Plant }, SlotInfo { + name : "Plant".into(), typ : Class::Plant }, SlotInfo { name : + "Plant".into(), typ : Class::Plant }, SlotInfo { name : "Plant" + .into(), typ : Class::Plant }, SlotInfo { name : "Liquid Canister" + .into(), typ : Class::LiquidCanister }, SlotInfo { name : + "Liquid Canister".into(), typ : Class::Plant }, SlotInfo { name : + "Liquid Canister".into(), typ : Class::Plant }, SlotInfo { name : + "Liquid Canister".into(), typ : Class::Plant }, SlotInfo { name : + "Liquid Canister".into(), typ : Class::Plant } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + -21970188i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicLight".into(), + prefab_hash: -21970188i32, + desc: "Philippe Starck might not applaud, but this battery-powered light source undarkens the corners when illumination\'s lacking. Powered by any battery, it\'s a \'no-frills\' Xigo design that can be cheaply fabricated with the minimum of fuss. Unless you like fuss. In which case, fuss all you like." + .into(), + name: "Portable Light".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Tools, + }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ), + ( + -1939209112i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicLiquidCanisterEmpty".into(), + prefab_hash: -1939209112i32, + desc: "This portable tank stores liquid, and liquid only. You can bolt one to a Kit (Liquid Tank Connector) using a Wrench, then connect it to a pipe network to refill it. You can refill a Liquid Canister (Water) by attaching it to the tank\'s striped section. Or you could use a Wrench to attach it to a rocket and take it somewhere distant and dry, then feel good about yourself." + .into(), + name: "Portable Liquid Tank".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Atmospherics, + }, + slots: vec![ + SlotInfo { name : "Liquid Canister".into(), typ : + Class::LiquidCanister } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + 2130739600i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicMKIILiquidCanisterEmpty".into(), + prefab_hash: 2130739600i32, + desc: "An empty, insulated liquid Gas Canister." + .into(), + name: "Portable Liquid Tank Mk II".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Atmospherics, + }, + slots: vec![ + SlotInfo { name : "Liquid Canister".into(), typ : + Class::LiquidCanister } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + -319510386i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicMKIILiquidCanisterWater".into(), + prefab_hash: -319510386i32, + desc: "An insulated version of the Portable Liquid Tank Mk II (Water), for storing liquids without them gaining or losing temperature." + .into(), + name: "Portable Liquid Tank Mk II (Water)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Atmospherics, + }, + slots: vec![ + SlotInfo { name : "Liquid Canister".into(), typ : + Class::LiquidCanister } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + 755048589i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicScrubber".into(), + prefab_hash: 755048589i32, + desc: "A portable scrubber does just what it sounds like: removes specific substances from the air. For instance, attaching a Filter (Carbon Dioxide) will pull Carbon Dioxide from the surrounding atmosphere. Note that the scrubber has room for one battery and two filters, which will double its operating speed. Neat. When it reaches an internal pressure of 8106kPA, an error signal will flash on the switch, indicating it needs to be emptied. Either vent it directly, or attach it to a pipe network via a Kit (Tank Connector) and a Wrench." + .into(), + name: "Portable Air Scrubber".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Atmospherics, + }, + slots: vec![ + SlotInfo { name : "Battery".into(), typ : Class::Battery }, SlotInfo + { name : "Gas Filter".into(), typ : Class::GasFilter }, SlotInfo { + name : "Gas Filter".into(), typ : Class::GasFilter } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + 106953348i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "DynamicSkeleton".into(), + prefab_hash: 106953348i32, + desc: "".into(), + name: "Skeleton".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -311170652i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ElectronicPrinterMod".into(), + prefab_hash: -311170652i32, + desc: "Apply to an Electronics Printer with a Welding Torch or Arc Welder to upgrade for increased processing speed and more recipe options." + .into(), + name: "Electronic Printer Mod".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -110788403i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ElevatorCarrage".into(), + prefab_hash: -110788403i32, + desc: "".into(), + name: "Elevator".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 1730165908i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "EntityChick".into(), + prefab_hash: 1730165908i32, + desc: "Once a chick is hatched, it gets hungry. It will eat soybeans, corn, and wheat, and lay eggs. Some will be fertilized, producing further chickens. Some will not." + .into(), + name: "Entity Chick".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + slots: vec![SlotInfo { name : "Brain".into(), typ : Class::Organ }] + .into_iter() + .collect(), + } + .into(), + ), + ( + 334097180i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "EntityChickenBrown".into(), + prefab_hash: 334097180i32, + desc: "Like so many of its brethren, this is a chicken. A brown one. It will eat soybeans, corn, and wheat, and lay eggs. Some will be fertilized, producing further chickens. Some will not." + .into(), + name: "Entity Chicken Brown".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + slots: vec![SlotInfo { name : "Brain".into(), typ : Class::Organ }] + .into_iter() + .collect(), + } + .into(), + ), + ( + 1010807532i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "EntityChickenWhite".into(), + prefab_hash: 1010807532i32, + desc: "It\'s a chicken, as white as moondust. It will eat soybeans, corn, and wheat, and lay eggs. Some will be fertilized, producing further chickens. Some will not." + .into(), + name: "Entity Chicken White".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + slots: vec![SlotInfo { name : "Brain".into(), typ : Class::Organ }] + .into_iter() + .collect(), + } + .into(), + ), + ( + 966959649i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "EntityRoosterBlack".into(), + prefab_hash: 966959649i32, + desc: "This is a rooster. It is black. There is dignity in this." + .into(), + name: "Entity Rooster Black".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + slots: vec![SlotInfo { name : "Brain".into(), typ : Class::Organ }] + .into_iter() + .collect(), + } + .into(), + ), + ( + -583103395i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "EntityRoosterBrown".into(), + prefab_hash: -583103395i32, + desc: "The common brown rooster. Don\'t let it hear you say that." + .into(), + name: "Entity Rooster Brown".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + slots: vec![SlotInfo { name : "Brain".into(), typ : Class::Organ }] + .into_iter() + .collect(), + } + .into(), + ), + ( + 1517856652i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "Fertilizer".into(), + prefab_hash: 1517856652i32, + desc: "Fertilizer alters plant growth processes, and is created by the basic composter and the Advanced Composter using organic matter.\nFertilizer\'s affects depend on its ingredients:\n\n- Food increases PLANT YIELD up to two times\n- Decayed Food increases plant GROWTH SPEED up to two times\n- Biomass increases the NUMBER OF GROWTH CYCLES the fertilizer lasts for\n\nThe effect of these ingredients depends on their respective proportions in the composter when processing is activated. " + .into(), + name: "Fertilizer".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -86315541i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "FireArmSMG".into(), + prefab_hash: -86315541i32, + desc: "0.Single\n1.Auto".into(), + name: "Fire Arm SMG".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Tools, + }, + slots: vec![SlotInfo { name : "".into(), typ : Class::Magazine }] + .into_iter() + .collect(), + } + .into(), + ), + ( + 1845441951i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "Flag_ODA_10m".into(), + prefab_hash: 1845441951i32, + desc: "".into(), + name: "Flag (ODA 10m)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 1159126354i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "Flag_ODA_4m".into(), + prefab_hash: 1159126354i32, + desc: "".into(), + name: "Flag (ODA 4m)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 1998634960i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "Flag_ODA_6m".into(), + prefab_hash: 1998634960i32, + desc: "".into(), + name: "Flag (ODA 6m)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -375156130i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "Flag_ODA_8m".into(), + prefab_hash: -375156130i32, + desc: "".into(), + name: "Flag (ODA 8m)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 118685786i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "FlareGun".into(), + prefab_hash: 118685786i32, + desc: "".into(), + name: "Flare Gun".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + slots: vec![ + SlotInfo { name : "Magazine".into(), typ : Class::Flare }, SlotInfo { + name : "".into(), typ : Class::Blocked } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + 1840108251i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "H2Combustor".into(), + prefab_hash: 1840108251i32, + desc: "Adapted slightly from its original Recurso design, the Volatiles Combustor does exactly what its name suggests - it burns a mixture of volatiles and Oxygen to create water. Extremely useful in hot or arid environments, users need to be aware that the combustor outputs considerable waste heat. The device is also less than perfectly efficient, resulting in the autoignition of volatiles in the chamber, and the production of waste gases which must be dealt with." + .into(), + name: "H2 Combustor".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::RatioOxygen, + MemoryAccess::Read), (LogicType::RatioCarbonDioxide, + MemoryAccess::Read), (LogicType::RatioNitrogen, + MemoryAccess::Read), (LogicType::RatioPollutant, + MemoryAccess::Read), (LogicType::RatioVolatiles, + MemoryAccess::Read), (LogicType::RatioWater, MemoryAccess::Read), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::PressureInput, MemoryAccess::Read), + (LogicType::TemperatureInput, MemoryAccess::Read), + (LogicType::RatioOxygenInput, MemoryAccess::Read), + (LogicType::RatioCarbonDioxideInput, MemoryAccess::Read), + (LogicType::RatioNitrogenInput, MemoryAccess::Read), + (LogicType::RatioPollutantInput, MemoryAccess::Read), + (LogicType::RatioVolatilesInput, MemoryAccess::Read), + (LogicType::RatioWaterInput, MemoryAccess::Read), + (LogicType::RatioNitrousOxideInput, MemoryAccess::Read), + (LogicType::TotalMolesInput, MemoryAccess::Read), + (LogicType::PressureOutput, MemoryAccess::Read), + (LogicType::TemperatureOutput, MemoryAccess::Read), + (LogicType::RatioOxygenOutput, MemoryAccess::Read), + (LogicType::RatioCarbonDioxideOutput, MemoryAccess::Read), + (LogicType::RatioNitrogenOutput, MemoryAccess::Read), + (LogicType::RatioPollutantOutput, MemoryAccess::Read), + (LogicType::RatioVolatilesOutput, MemoryAccess::Read), + (LogicType::RatioWaterOutput, MemoryAccess::Read), + (LogicType::RatioNitrousOxideOutput, MemoryAccess::Read), + (LogicType::TotalMolesOutput, MemoryAccess::Read), + (LogicType::CombustionInput, MemoryAccess::Read), + (LogicType::CombustionOutput, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogenInput, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogenOutput, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidOxygenInput, MemoryAccess::Read), + (LogicType::RatioLiquidOxygenOutput, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioLiquidVolatilesInput, MemoryAccess::Read), + (LogicType::RatioLiquidVolatilesOutput, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioSteamInput, MemoryAccess::Read), + (LogicType::RatioSteamOutput, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxideInput, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxideOutput, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidPollutantInput, MemoryAccess::Read), + (LogicType::RatioLiquidPollutantOutput, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxideInput, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxideOutput, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Idle".into()), (1u32, "Active".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: true, + }, + slots: vec![ + SlotInfo { name : "Programmable Chip".into(), typ : + Class::ProgrammableChip } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: Some(2u32), + has_activate_state: true, + has_atmosphere: true, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 247238062i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "Handgun".into(), + prefab_hash: 247238062i32, + desc: "".into(), + name: "Handgun".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Tools, + }, + slots: vec![SlotInfo { name : "Magazine".into(), typ : Class::Magazine }] + .into_iter() + .collect(), + } + .into(), + ), + ( + 1254383185i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "HandgunMagazine".into(), + prefab_hash: 1254383185i32, + desc: "".into(), + name: "Handgun Magazine".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Magazine, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -857713709i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "HumanSkull".into(), + prefab_hash: -857713709i32, + desc: "".into(), + name: "Human Skull".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -73796547i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ImGuiCircuitboardAirlockControl".into(), + prefab_hash: -73796547i32, + desc: "".into(), + name: "Airlock (Experimental)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Circuitboard, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -842048328i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemActiveVent".into(), + prefab_hash: -842048328i32, + desc: "When constructed, this kit places an Active Vent on any support structure." + .into(), + name: "Kit (Active Vent)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 1871048978i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemAdhesiveInsulation".into(), + prefab_hash: 1871048978i32, + desc: "".into(), + name: "Adhesive Insulation".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 20u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + } + .into(), + ), + ( + 1722785341i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemAdvancedTablet".into(), + prefab_hash: 1722785341i32, + desc: "The advanced Xigo Padi 2 tablet is an improved version of the basic Handheld Tablet, boasting two cartridge slots. The Padi 2 accepts Atmos Analyzer, Tracker, Medical Analyzer, Ore Scanner, eReader, and various other cartridges.\n\t \n\t With a Integrated Circuit (IC10) in the Programmable Chip, you can access variable slots on the carrying human using the device numbers (d0, d1, etc...), so long as the item can be access via logic, such as the Hardsuit.Connects to Logic Transmitter" + .into(), + name: "Advanced Tablet".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (2u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (3u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::Volume, + MemoryAccess::ReadWrite), (LogicType::SoundAlert, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: true, + circuit_holder: true, + }, + slots: vec![ + SlotInfo { name : "Battery".into(), typ : Class::Battery }, SlotInfo + { name : "Cartridge".into(), typ : Class::Cartridge }, SlotInfo { + name : "Cartridge1".into(), typ : Class::Cartridge }, SlotInfo { name + : "Programmable Chip".into(), typ : Class::ProgrammableChip } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + 176446172i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemAlienMushroom".into(), + prefab_hash: 176446172i32, + desc: "".into(), + name: "Alien Mushroom".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -9559091i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemAmmoBox".into(), + prefab_hash: -9559091i32, + desc: "".into(), + name: "Ammo Box".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 201215010i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemAngleGrinder".into(), + prefab_hash: 201215010i32, + desc: "Angles-be-gone with the trusty angle grinder.".into(), + name: "Angle Grinder".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ), + ( + 1385062886i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemArcWelder".into(), + prefab_hash: 1385062886i32, + desc: "".into(), + name: "Arc Welder".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ), + ( + 1757673317i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemAreaPowerControl".into(), + prefab_hash: 1757673317i32, + desc: "This kit places a Area Power Control (APC) on any support structure. The APC kit has two options, selecting which direction you would like the APC power to flow." + .into(), + name: "Kit (Power Controller)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 412924554i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemAstroloyIngot".into(), + prefab_hash: 412924554i32, + desc: "Due to the original Stationeer manual collapsing into a singularity, Astroloy recipes have been warped by spacetime contortions. The correct Astroloy recipe, as memorialized for all time in a series of charming plastic icons, is 1.0 Copper, 1.0 Cobalt, and 2.0 Steel." + .into(), + name: "Ingot (Astroloy)".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 500u32, + reagents: Some( + vec![("Astroloy".into(), 1f64)].into_iter().collect(), + ), + slot_class: Class::Ingot, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + -1662476145i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemAstroloySheets".into(), + prefab_hash: -1662476145i32, + desc: "".into(), + name: "Astroloy Sheets".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 789015045i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemAuthoringTool".into(), + prefab_hash: 789015045i32, + desc: "".into(), + name: "Authoring Tool".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + } + .into(), + ), + ( + -1731627004i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemAuthoringToolRocketNetwork".into(), + prefab_hash: -1731627004i32, + desc: "".into(), + name: "".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + } + .into(), + ), + ( + -1262580790i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemBasketBall".into(), + prefab_hash: -1262580790i32, + desc: "".into(), + name: "Basket Ball".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 700133157i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemBatteryCell".into(), + prefab_hash: 700133157i32, + desc: "Harnessing a design pioneered in the early 21st century, the small battery cell is the Stationeer\'s basic unit of portable electrical power. While it lacks the charge of a Battery Cell (Large) or Battery Cell (Nuclear), it has the humble advantage of being fabricated from basic resources.\n\nPOWER OUTPUT\nThe small cell stores up to 36000 watts of power." + .into(), + name: "Battery Cell (Small)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Battery, + sorting_class: SortingClass::Default, + }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Mode, MemoryAccess::ReadWrite), + (LogicType::ReferenceId, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Empty".into()), (1u32, "Critical".into()), (2u32, + "VeryLow".into()), (3u32, "Low".into()), (4u32, "Medium" + .into()), (5u32, "High".into()), (6u32, "Full".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + } + .into(), + ), + ( + -459827268i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemBatteryCellLarge".into(), + prefab_hash: -459827268i32, + desc: "First mass-produced by Xigo in 2155 on the basis of a unattributed prototype, the classic silicon anode solid-state design extends its optimum temperature range.\n\nPOWER OUTPUT\nThe large power cell can discharge 288kW of power. \n" + .into(), + name: "Battery Cell (Large)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Battery, + sorting_class: SortingClass::Default, + }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Mode, MemoryAccess::ReadWrite), + (LogicType::ReferenceId, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Empty".into()), (1u32, "Critical".into()), (2u32, + "VeryLow".into()), (3u32, "Low".into()), (4u32, "Medium" + .into()), (5u32, "High".into()), (6u32, "Full".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + } + .into(), + ), + ( + 544617306i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemBatteryCellNuclear".into(), + prefab_hash: 544617306i32, + desc: "Illegal on Earth since the Chengdu Event, Norsec nuclear power cells found a new and drastically less safety-conscious market offworld.\n\nPOWER OUTPUT\nPushing the power-weight balance to its limits, the \'nuke\' has a 2.3 megawatt charge (2304000W), reflecting its reliance on exotic superalloys." + .into(), + name: "Battery Cell (Nuclear)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Battery, + sorting_class: SortingClass::Default, + }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Mode, MemoryAccess::ReadWrite), + (LogicType::ReferenceId, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Empty".into()), (1u32, "Critical".into()), (2u32, + "VeryLow".into()), (3u32, "Low".into()), (4u32, "Medium" + .into()), (5u32, "High".into()), (6u32, "Full".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + } + .into(), + ), + ( + -1866880307i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemBatteryCharger".into(), + prefab_hash: -1866880307i32, + desc: "This kit produces a 5-slot Kit (Battery Charger)." + .into(), + name: "Kit (Battery Charger)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 1008295833i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemBatteryChargerSmall".into(), + prefab_hash: 1008295833i32, + desc: "".into(), + name: "Battery Charger Small".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -869869491i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemBeacon".into(), + prefab_hash: -869869491i32, + desc: "".into(), + name: "Tracking Beacon".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Tools, + }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::ReferenceId, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ), + ( + -831480639i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemBiomass".into(), + prefab_hash: -831480639i32, + desc: "Diced organic material that is returned when food and organic matter is passed through the Recycler and Centrifuge. Can be burned in a Furnace into Charcoal for use in the Generator (Solid Fuel)." + .into(), + name: "Biomass".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 100u32, + reagents: Some(vec![("Biomass".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ore, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 893514943i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemBreadLoaf".into(), + prefab_hash: 893514943i32, + desc: "".into(), + name: "Bread Loaf".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + } + .into(), + ), + ( + -1792787349i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCableAnalyser".into(), + prefab_hash: -1792787349i32, + desc: "".into(), + name: "Kit (Cable Analyzer)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -466050668i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCableCoil".into(), + prefab_hash: -466050668i32, + desc: "Bodily metaphors are tired and anthropocentric, but it was Frida Stuppen, the first ODA Administrator, who said, \'Let the cabling be as the nerve and the vessel, transmitting power and data alike through systems we forge among the stars.\' Later commentators suggested that she was simply putting a romantic gloss on a piece of dubious economy. Whatever the case, standard cabling is where any Stationeer\'s network begins. \nNormal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy)." + .into(), + name: "Cable Coil".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 2060134443i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCableCoilHeavy".into(), + prefab_hash: 2060134443i32, + desc: "Use heavy cable coil for power systems with large draws. Unlike , which can only safely conduct 5kW, heavy cables can transmit up to 100kW." + .into(), + name: "Cable Coil (Heavy)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 195442047i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCableFuse".into(), + prefab_hash: 195442047i32, + desc: "".into(), + name: "Kit (Cable Fuses)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + -2104175091i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCannedCondensedMilk".into(), + prefab_hash: -2104175091i32, + desc: "Made in an Advanced Packaging Machine or Basic Packaging Machine, using Condensed Milk and an Empty Can, canned condensed milk is fairly high in nutrition, and does not decay." + .into(), + name: "Canned Condensed Milk".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + } + .into(), + ), + ( + -999714082i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCannedEdamame".into(), + prefab_hash: -999714082i32, + desc: "Made in an Advanced Packaging Machine or Basic Packaging Machine, using Cooked Soybean and an Empty Can, canned edamame beans are fairly high in nutrition, and do not decay." + .into(), + name: "Canned Edamame".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + } + .into(), + ), + ( + -1344601965i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCannedMushroom".into(), + prefab_hash: -1344601965i32, + desc: "Made in an Advanced Packaging Machine or Basic Packaging Machine, using Cooked Mushroom and a Empty Can, delicious mushroom soup is fairly high in nutrition, and does not decay." + .into(), + name: "Canned Mushroom".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + } + .into(), + ), + ( + 1161510063i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCannedPowderedEggs".into(), + prefab_hash: 1161510063i32, + desc: "Made in an Advanced Packaging Machine or Basic Packaging Machine, using Powdered Eggs and an Empty Can, canned powdered eggs are an exciting, dynamic food that\'s fairly high in nutrition, and does not decay." + .into(), + name: "Canned Powdered Eggs".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + } + .into(), + ), + ( + -1185552595i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCannedRicePudding".into(), + prefab_hash: -1185552595i32, + desc: "Made in an Advanced Packaging Machine or Basic Packaging Machine, using Cooked Rice and an Empty Can, canned rice pudding is a sweet treat, fairly high in nutrition, and does not decay." + .into(), + name: "Canned Rice Pudding".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + } + .into(), + ), + ( + 791746840i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCerealBar".into(), + prefab_hash: 791746840i32, + desc: "Sustains, without decay. If only all our relationships were so well balanced." + .into(), + name: "Cereal Bar".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + } + .into(), + ), + ( + 252561409i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCharcoal".into(), + prefab_hash: 252561409i32, + desc: "Charcoal is a lightweight, black carbon residue produced by heating Biomass in a Arc Furnace. It contains less energy potential than Ore (Coal), but can be used as a basic fuel source. Charcoal can also be substituted for coal in alloy recipes." + .into(), + name: "Charcoal".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 200u32, + reagents: Some(vec![("Carbon".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ore, + sorting_class: SortingClass::Ores, + }, + } + .into(), + ), + ( + -772542081i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemChemLightBlue".into(), + prefab_hash: -772542081i32, + desc: "A safe and slightly rave-some source of blue light. Snap to activate." + .into(), + name: "Chem Light (Blue)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -597479390i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemChemLightGreen".into(), + prefab_hash: -597479390i32, + desc: "Enliven the dreariest, airless rock with this glowy green light. Snap to activate." + .into(), + name: "Chem Light (Green)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -525810132i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemChemLightRed".into(), + prefab_hash: -525810132i32, + desc: "A red glowstick. Snap to activate. Then reach for the lasers." + .into(), + name: "Chem Light (Red)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 1312166823i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemChemLightWhite".into(), + prefab_hash: 1312166823i32, + desc: "Snap the glowstick to activate a pale radiance that keeps the darkness at bay." + .into(), + name: "Chem Light (White)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 1224819963i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemChemLightYellow".into(), + prefab_hash: 1224819963i32, + desc: "Dispel the darkness with this yellow glowstick.".into(), + name: "Chem Light (Yellow)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 234601764i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemChocolateBar".into(), + prefab_hash: 234601764i32, + desc: "".into(), + name: "Chocolate Bar".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + } + .into(), + ), + ( + -261575861i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemChocolateCake".into(), + prefab_hash: -261575861i32, + desc: "".into(), + name: "Chocolate Cake".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + } + .into(), + ), + ( + 860793245i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemChocolateCerealBar".into(), + prefab_hash: 860793245i32, + desc: "".into(), + name: "Chocolate Cereal Bar".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + } + .into(), + ), + ( + 1724793494i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCoalOre".into(), + prefab_hash: 1724793494i32, + desc: "Humanity wouldn\'t have got to space without humble, combustible coal. Burn it in a , smelt it in the Furnace to create alloys, or use it in the Reagent Processor to make Spray Paint (Black)." + .into(), + name: "Ore (Coal)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 50u32, + reagents: Some( + vec![("Hydrocarbon".into(), 1f64)].into_iter().collect(), + ), + slot_class: Class::Ore, + sorting_class: SortingClass::Ores, + }, + } + .into(), + ), + ( + -983091249i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCobaltOre".into(), + prefab_hash: -983091249i32, + desc: "Cobalt is a chemical element with the symbol \"Co\" and is typically found in only small deposits. Cobalt is a rare substance, but used create the Heal Pill and several alloys." + .into(), + name: "Ore (Cobalt)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 50u32, + reagents: Some(vec![("Cobalt".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ore, + sorting_class: SortingClass::Ores, + }, + } + .into(), + ), + ( + 457286516i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCocoaPowder".into(), + prefab_hash: 457286516i32, + desc: "".into(), + name: "Cocoa Powder".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 20u32, + reagents: Some(vec![("Cocoa".into(), 1f64)].into_iter().collect()), + slot_class: Class::None, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 680051921i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCocoaTree".into(), + prefab_hash: 680051921i32, + desc: "".into(), + name: "Cocoa".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 20u32, + reagents: Some(vec![("Cocoa".into(), 1f64)].into_iter().collect()), + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 1800622698i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCoffeeMug".into(), + prefab_hash: 1800622698i32, + desc: "".into(), + name: "Coffee Mug".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 1058547521i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemConstantanIngot".into(), + prefab_hash: 1058547521i32, + desc: "".into(), + name: "Ingot (Constantan)".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 500u32, + reagents: Some( + vec![("Constantan".into(), 1f64)].into_iter().collect(), + ), + slot_class: Class::Ingot, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 1715917521i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCookedCondensedMilk".into(), + prefab_hash: 1715917521i32, + desc: "A high-nutrient cooked food, which can be canned.".into(), + name: "Condensed Milk".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 10u32, + reagents: Some(vec![("Milk".into(), 100f64)].into_iter().collect()), + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + } + .into(), + ), + ( + 1344773148i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCookedCorn".into(), + prefab_hash: 1344773148i32, + desc: "A high-nutrient cooked food, which can be canned.".into(), + name: "Cooked Corn".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 10u32, + reagents: Some(vec![("Corn".into(), 1f64)].into_iter().collect()), + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + } + .into(), + ), + ( + -1076892658i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCookedMushroom".into(), + prefab_hash: -1076892658i32, + desc: "A high-nutrient cooked food, which can be canned.".into(), + name: "Cooked Mushroom".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 10u32, + reagents: Some( + vec![("Mushroom".into(), 1f64)].into_iter().collect(), + ), + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + } + .into(), + ), + ( + -1712264413i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCookedPowderedEggs".into(), + prefab_hash: -1712264413i32, + desc: "A high-nutrient cooked food, which can be canned.".into(), + name: "Powdered Eggs".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 10u32, + reagents: Some(vec![("Egg".into(), 1f64)].into_iter().collect()), + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + } + .into(), + ), + ( + 1849281546i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCookedPumpkin".into(), + prefab_hash: 1849281546i32, + desc: "A high-nutrient cooked food, which can be canned.".into(), + name: "Cooked Pumpkin".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 10u32, + reagents: Some(vec![("Pumpkin".into(), 1f64)].into_iter().collect()), + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + } + .into(), + ), + ( + 2013539020i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCookedRice".into(), + prefab_hash: 2013539020i32, + desc: "A high-nutrient cooked food, which can be canned.".into(), + name: "Cooked Rice".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 10u32, + reagents: Some(vec![("Rice".into(), 1f64)].into_iter().collect()), + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + } + .into(), + ), + ( + 1353449022i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCookedSoybean".into(), + prefab_hash: 1353449022i32, + desc: "A high-nutrient cooked food, which can be canned.".into(), + name: "Cooked Soybean".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 10u32, + reagents: Some(vec![("Soy".into(), 5f64)].into_iter().collect()), + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + } + .into(), + ), + ( + -709086714i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCookedTomato".into(), + prefab_hash: -709086714i32, + desc: "A high-nutrient cooked food, which can be canned.".into(), + name: "Cooked Tomato".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 10u32, + reagents: Some(vec![("Tomato".into(), 1f64)].into_iter().collect()), + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + } + .into(), + ), + ( + -404336834i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCopperIngot".into(), + prefab_hash: -404336834i32, + desc: "Copper ingots are created by smelting Ore (Copper) in the Furnace and Arc Furnace, and used to create a variety of items." + .into(), + name: "Ingot (Copper)".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 500u32, + reagents: Some(vec![("Copper".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ingot, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + -707307845i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCopperOre".into(), + prefab_hash: -707307845i32, + desc: "Copper is a chemical element with the symbol \"Cu\". This common and highly conductive material is found on most astronomical bodies and is used in a variety of manufacturing processes including electronic components, alloys, and wires." + .into(), + name: "Ore (Copper)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 50u32, + reagents: Some(vec![("Copper".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ore, + sorting_class: SortingClass::Ores, + }, + } + .into(), + ), + ( + 258339687i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCorn".into(), + prefab_hash: 258339687i32, + desc: "A long growth time staple crop. Its low requirement for darkness allows for accelerated growing if provided with extra light." + .into(), + name: "Corn".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 20u32, + reagents: Some(vec![("Corn".into(), 1f64)].into_iter().collect()), + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 545034114i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCornSoup".into(), + prefab_hash: 545034114i32, + desc: "Made using Cooked Corn and an Empty Can in a Basic Packaging Machine or Advanced Packaging Machine. Faily high in nutrition, canned food does not decay." + .into(), + name: "Corn Soup".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + } + .into(), + ), + ( + -1756772618i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCreditCard".into(), + prefab_hash: -1756772618i32, + desc: "".into(), + name: "Credit Card".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 100000u32, + reagents: None, + slot_class: Class::CreditCard, + sorting_class: SortingClass::Tools, + }, + } + .into(), + ), + ( + 215486157i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCropHay".into(), + prefab_hash: 215486157i32, + desc: "".into(), + name: "Hay".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 856108234i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemCrowbar".into(), + prefab_hash: 856108234i32, + desc: "Recurso\'s entry-level crowbar is useful in a variety of everyday Stationeer settings, from opening Area Power Controls and unpowered Airlocks, to splatting pan-dimensional headcrabs, should the need arise." + .into(), + name: "Crowbar".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + } + .into(), + ), + ( + 1005843700i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemDataDisk".into(), + prefab_hash: 1005843700i32, + desc: "".into(), + name: "Data Disk".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::DataDisk, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 902565329i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemDirtCanister".into(), + prefab_hash: 902565329i32, + desc: "A container the will fill with Dirt when using a Mining Drill when placed inside a Mining Belt. You can then use this Dirt Canister with the Terrain Manipulator to adjust the terrain to suit your needs." + .into(), + name: "Dirt Canister".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -1234745580i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemDirtyOre".into(), + prefab_hash: -1234745580i32, + desc: "Ore mined from bedrock via the Deep Miner which then can be used in the Centrifuge, or Combustion Centrifuge. Once processed, it produces ore in a ratio similar to the average found on the planet\'s surface. " + .into(), + name: "Dirty Ore".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Ores, + }, + } + .into(), + ), + ( + -2124435700i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemDisposableBatteryCharger".into(), + prefab_hash: -2124435700i32, + desc: "Consumable battery the recharges your suit battery. If used on a HEM-Droid it will recharge the HEM-Droids internal battery." + .into(), + name: "Disposable Battery Charger".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 2009673399i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemDrill".into(), + prefab_hash: 2009673399i32, + desc: "The ExMin Off-whirled Hand Drill has been a companion to Stationeers for decades. Essential for assembling and deconstructing various items and structures, regardless of gravity, pressure or temperature." + .into(), + name: "Hand Drill".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ), + ( + -1943134693i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemDuctTape".into(), + prefab_hash: -1943134693i32, + desc: "In the distant past, one of Earth\'s great champions taught a generation of \'Fix-It People\' that duct tape was the answer to any problem. Stationeers have demonstrated that this is truth holds strong, so long as the problem is a damaged Eva Suit, Jetpack Basic, Space Helmet, or even a Solar Panel.\nTo use on yourself: put duct tape in your active hand, hold RIGHT MOUSE BUTTON to automatically repair damage." + .into(), + name: "Duct Tape".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + } + .into(), + ), + ( + 1072914031i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemDynamicAirCon".into(), + prefab_hash: 1072914031i32, + desc: "".into(), + name: "Kit (Portable Air Conditioner)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -971920158i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemDynamicScrubber".into(), + prefab_hash: -971920158i32, + desc: "".into(), + name: "Kit (Portable Scrubber)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -524289310i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "ItemEggCarton".into(), + prefab_hash: -524289310i32, + desc: "Within, eggs reside in mysterious, marmoreal silence.".into(), + name: "Egg Carton".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Storage, + }, + slots: vec![ + SlotInfo { name : "".into(), typ : Class::Egg }, SlotInfo { name : "" + .into(), typ : Class::Egg }, SlotInfo { name : "".into(), typ : + Class::Egg }, SlotInfo { name : "".into(), typ : Class::Egg }, + SlotInfo { name : "".into(), typ : Class::Egg }, SlotInfo { name : "" + .into(), typ : Class::Egg } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + 731250882i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemElectronicParts".into(), + prefab_hash: 731250882i32, + desc: "".into(), + name: "Electronic Parts".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 20u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 502280180i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemElectrumIngot".into(), + prefab_hash: 502280180i32, + desc: "".into(), + name: "Ingot (Electrum)".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 500u32, + reagents: Some( + vec![("Electrum".into(), 1f64)].into_iter().collect(), + ), + slot_class: Class::Ingot, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + -351438780i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemEmergencyAngleGrinder".into(), + prefab_hash: -351438780i32, + desc: "".into(), + name: "Emergency Angle Grinder".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ), + ( + -1056029600i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemEmergencyArcWelder".into(), + prefab_hash: -1056029600i32, + desc: "".into(), + name: "Emergency Arc Welder".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ), + ( + 976699731i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemEmergencyCrowbar".into(), + prefab_hash: 976699731i32, + desc: "".into(), + name: "Emergency Crowbar".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + } + .into(), + ), + ( + -2052458905i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemEmergencyDrill".into(), + prefab_hash: -2052458905i32, + desc: "".into(), + name: "Emergency Drill".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ), + ( + 1791306431i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "ItemEmergencyEvaSuit".into(), + prefab_hash: 1791306431i32, + desc: "".into(), + name: "Emergency Eva Suit".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Suit, + sorting_class: SortingClass::Clothing, + }, + slots: vec![ + SlotInfo { name : "Air Tank".into(), typ : Class::GasCanister }, + SlotInfo { name : "Waste Tank".into(), typ : Class::GasCanister }, + SlotInfo { name : "Life Support".into(), typ : Class::Battery }, + SlotInfo { name : "Filter".into(), typ : Class::GasFilter }, SlotInfo + { name : "Filter".into(), typ : Class::GasFilter }, SlotInfo { name : + "Filter".into(), typ : Class::GasFilter } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + -1061510408i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemEmergencyPickaxe".into(), + prefab_hash: -1061510408i32, + desc: "".into(), + name: "Emergency Pickaxe".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + } + .into(), + ), + ( + 266099983i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemEmergencyScrewdriver".into(), + prefab_hash: 266099983i32, + desc: "".into(), + name: "Emergency Screwdriver".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + } + .into(), + ), + ( + 205916793i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemEmergencySpaceHelmet".into(), + prefab_hash: 205916793i32, + desc: "".into(), + name: "Emergency Space Helmet".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Helmet, + sorting_class: SortingClass::Clothing, + }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Pressure, + MemoryAccess::Read), (LogicType::Temperature, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::TotalMoles, + MemoryAccess::Read), (LogicType::Volume, + MemoryAccess::ReadWrite), (LogicType::RatioNitrousOxide, + MemoryAccess::Read), (LogicType::Combustion, MemoryAccess::Read), + (LogicType::Flush, MemoryAccess::Write), (LogicType::SoundAlert, + MemoryAccess::ReadWrite), (LogicType::RatioLiquidNitrogen, + MemoryAccess::Read), (LogicType::RatioLiquidOxygen, + MemoryAccess::Read), (LogicType::RatioLiquidVolatiles, + MemoryAccess::Read), (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + } + .into(), + ), + ( + 1661941301i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "ItemEmergencyToolBelt".into(), + prefab_hash: 1661941301i32, + desc: "".into(), + name: "Emergency Tool Belt".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Belt, + sorting_class: SortingClass::Clothing, + }, + slots: vec![ + SlotInfo { name : "Tool".into(), typ : Class::Tool }, SlotInfo { name + : "Tool".into(), typ : Class::Tool }, SlotInfo { name : "Tool" + .into(), typ : Class::Tool }, SlotInfo { name : "Tool".into(), typ : + Class::Tool }, SlotInfo { name : "Tool".into(), typ : Class::Tool }, + SlotInfo { name : "Tool".into(), typ : Class::Tool }, SlotInfo { name + : "Tool".into(), typ : Class::Tool }, SlotInfo { name : "Tool" + .into(), typ : Class::Tool } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + 2102803952i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemEmergencyWireCutters".into(), + prefab_hash: 2102803952i32, + desc: "".into(), + name: "Emergency Wire Cutters".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + } + .into(), + ), + ( + 162553030i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemEmergencyWrench".into(), + prefab_hash: 162553030i32, + desc: "".into(), + name: "Emergency Wrench".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + } + .into(), + ), + ( + 1013818348i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemEmptyCan".into(), + prefab_hash: 1013818348i32, + desc: "Used for making soups when combined with food in the Basic Packaging Machine or Advanced Packaging Machine. Fairly high in nutrition, canned food does not decay." + .into(), + name: "Empty Can".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 10u32, + reagents: Some(vec![("Steel".into(), 1f64)].into_iter().collect()), + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 1677018918i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "ItemEvaSuit".into(), + prefab_hash: 1677018918i32, + desc: "The EVA suit is the basic suit Stationeers need to survive in the inhospitable environment of space. For more information on EVA suits, consult the EVA suit guide." + .into(), + name: "Eva Suit".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Suit, + sorting_class: SortingClass::Clothing, + }, + slots: vec![ + SlotInfo { name : "Air Tank".into(), typ : Class::GasCanister }, + SlotInfo { name : "Waste Tank".into(), typ : Class::GasCanister }, + SlotInfo { name : "Life Support".into(), typ : Class::Battery }, + SlotInfo { name : "Filter".into(), typ : Class::GasFilter }, SlotInfo + { name : "Filter".into(), typ : Class::GasFilter }, SlotInfo { name : + "Filter".into(), typ : Class::GasFilter } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + 235361649i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemExplosive".into(), + prefab_hash: 235361649i32, + desc: "".into(), + name: "Remote Explosive".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 892110467i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemFern".into(), + prefab_hash: 892110467i32, + desc: "There was a time, when Stationeers had to make Fenoxitone Powder using the Reagent Processor. Recent advances in technology allow you to use equivalent quantities of fern directly in recipes." + .into(), + name: "Fern".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 100u32, + reagents: Some( + vec![("Fenoxitone".into(), 1f64)].into_iter().collect(), + ), + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + -383972371i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemFertilizedEgg".into(), + prefab_hash: -383972371i32, + desc: "To hatch it requires an incubation temperature of between 35 and 45 degrees Celsius and will hatch into a Chick. If the egg is exposed to tepratures below 10 degrees it will no longer be viable." + .into(), + name: "Egg".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 1u32, + reagents: Some(vec![("Egg".into(), 1f64)].into_iter().collect()), + slot_class: Class::Egg, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 266654416i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemFilterFern".into(), + prefab_hash: 266654416i32, + desc: "A fern adapted by Agrizeroto process a much greater volume of Carbon Dioxide into Oxygen than an average plant." + .into(), + name: "Darga Fern".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 2011191088i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemFlagSmall".into(), + prefab_hash: 2011191088i32, + desc: "".into(), + name: "Kit (Small Flag)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -2107840748i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemFlashingLight".into(), + prefab_hash: -2107840748i32, + desc: "".into(), + name: "Kit (Flashing Light)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -838472102i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemFlashlight".into(), + prefab_hash: -838472102i32, + desc: "A flashlight with a narrow and wide beam options.".into(), + name: "Flashlight".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Low Power".into()), (1u32, "High Power".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ), + ( + -665995854i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemFlour".into(), + prefab_hash: -665995854i32, + desc: "Pulverized Wheat, a key ingredient in many foods created by the Microwave and the Kit (Automated Oven)." + .into(), + name: "Flour".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 500u32, + reagents: Some(vec![("Flour".into(), 50f64)].into_iter().collect()), + slot_class: Class::None, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + -1573623434i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemFlowerBlue".into(), + prefab_hash: -1573623434i32, + desc: "".into(), + name: "Flower (Blue)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + -1513337058i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemFlowerGreen".into(), + prefab_hash: -1513337058i32, + desc: "".into(), + name: "Flower (Green)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + -1411986716i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemFlowerOrange".into(), + prefab_hash: -1411986716i32, + desc: "".into(), + name: "Flower (Orange)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + -81376085i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemFlowerRed".into(), + prefab_hash: -81376085i32, + desc: "".into(), + name: "Flower (Red)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 1712822019i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemFlowerYellow".into(), + prefab_hash: 1712822019i32, + desc: "".into(), + name: "Flower (Yellow)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + -57608687i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemFrenchFries".into(), + prefab_hash: -57608687i32, + desc: "Because space would suck without \'em.".into(), + name: "Canned French Fries".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + } + .into(), + ), + ( + 1371786091i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemFries".into(), + prefab_hash: 1371786091i32, + desc: "".into(), + name: "French Fries".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + } + .into(), + ), + ( + -767685874i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasCanisterCarbonDioxide".into(), + prefab_hash: -767685874i32, + desc: "".into(), + name: "Canister (CO2)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::GasCanister, + sorting_class: SortingClass::Atmospherics, + }, + } + .into(), + ), + ( + 42280099i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasCanisterEmpty".into(), + prefab_hash: 42280099i32, + desc: "".into(), + name: "Canister".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::GasCanister, + sorting_class: SortingClass::Atmospherics, + }, + } + .into(), + ), + ( + -1014695176i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasCanisterFuel".into(), + prefab_hash: -1014695176i32, + desc: "".into(), + name: "Canister (Fuel)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::GasCanister, + sorting_class: SortingClass::Atmospherics, + }, + } + .into(), + ), + ( + 2145068424i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasCanisterNitrogen".into(), + prefab_hash: 2145068424i32, + desc: "".into(), + name: "Canister (Nitrogen)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::GasCanister, + sorting_class: SortingClass::Atmospherics, + }, + } + .into(), + ), + ( + -1712153401i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasCanisterNitrousOxide".into(), + prefab_hash: -1712153401i32, + desc: "".into(), + name: "Gas Canister (Sleeping)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::GasCanister, + sorting_class: SortingClass::Atmospherics, + }, + } + .into(), + ), + ( + -1152261938i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasCanisterOxygen".into(), + prefab_hash: -1152261938i32, + desc: "".into(), + name: "Canister (Oxygen)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::GasCanister, + sorting_class: SortingClass::Atmospherics, + }, + } + .into(), + ), + ( + -1552586384i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasCanisterPollutants".into(), + prefab_hash: -1552586384i32, + desc: "".into(), + name: "Canister (Pollutants)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::GasCanister, + sorting_class: SortingClass::Atmospherics, + }, + } + .into(), + ), + ( + -668314371i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasCanisterSmart".into(), + prefab_hash: -668314371i32, + desc: "0.Mode0\n1.Mode1".into(), + name: "Gas Canister (Smart)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::GasCanister, + sorting_class: SortingClass::Atmospherics, + }, + } + .into(), + ), + ( + -472094806i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasCanisterVolatiles".into(), + prefab_hash: -472094806i32, + desc: "".into(), + name: "Canister (Volatiles)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::GasCanister, + sorting_class: SortingClass::Atmospherics, + }, + } + .into(), + ), + ( + -1854861891i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasCanisterWater".into(), + prefab_hash: -1854861891i32, + desc: "".into(), + name: "Liquid Canister (Water)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::LiquidCanister, + sorting_class: SortingClass::Atmospherics, + }, + } + .into(), + ), + ( + 1635000764i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterCarbonDioxide".into(), + prefab_hash: 1635000764i32, + desc: "Given humanity\'s obsession with exhaling Carbon Dioxide, all Stationeers are issued two basic Sinotai Carbon Dioxide Gas Filter as part of their standard deployment kit (SDK). These filters allow passage of Carbon Dioxide into the suit\'s waste Canister, but are also critical components of the Portable Air Scrubber and the Filtration. The Medium Filter (Carbon Dioxide) and Heavy Filter (Carbon Dioxide) are also available." + .into(), + name: "Filter (Carbon Dioxide)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::CarbonDioxide), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + -185568964i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterCarbonDioxideInfinite".into(), + prefab_hash: -185568964i32, + desc: "A filter that selectively targets Carbon Dioxide. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle." + .into(), + name: "Catalytic Filter (Carbon Dioxide)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::CarbonDioxide), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 1876847024i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterCarbonDioxideL".into(), + prefab_hash: 1876847024i32, + desc: "".into(), + name: "Heavy Filter (Carbon Dioxide)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::CarbonDioxide), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 416897318i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterCarbonDioxideM".into(), + prefab_hash: 416897318i32, + desc: "".into(), + name: "Medium Filter (Carbon Dioxide)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::CarbonDioxide), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 632853248i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterNitrogen".into(), + prefab_hash: 632853248i32, + desc: "Filters are used to capture various gases, which can be disposed of or used elsewhere. Nitrogen is a byproduct of smelting various ores, notably Ice (Nitrice), which may be combined with Oxygen to make a breathable - and considerably less flammable - atmosphere." + .into(), + name: "Filter (Nitrogen)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::Nitrogen), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 152751131i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterNitrogenInfinite".into(), + prefab_hash: 152751131i32, + desc: "A filter that selectively targets Nitrogen. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle." + .into(), + name: "Catalytic Filter (Nitrogen)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::Nitrogen), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + -1387439451i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterNitrogenL".into(), + prefab_hash: -1387439451i32, + desc: "".into(), + name: "Heavy Filter (Nitrogen)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::Nitrogen), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + -632657357i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterNitrogenM".into(), + prefab_hash: -632657357i32, + desc: "".into(), + name: "Medium Filter (Nitrogen)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::Nitrogen), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + -1247674305i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterNitrousOxide".into(), + prefab_hash: -1247674305i32, + desc: "".into(), + name: "Filter (Nitrous Oxide)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::NitrousOxide), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + -123934842i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterNitrousOxideInfinite".into(), + prefab_hash: -123934842i32, + desc: "A filter that selectively targets Nitrous Oxide. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle." + .into(), + name: "Catalytic Filter (Nitrous Oxide)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::NitrousOxide), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 465267979i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterNitrousOxideL".into(), + prefab_hash: 465267979i32, + desc: "".into(), + name: "Heavy Filter (Nitrous Oxide)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::NitrousOxide), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 1824284061i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterNitrousOxideM".into(), + prefab_hash: 1824284061i32, + desc: "".into(), + name: "Medium Filter (Nitrous Oxide)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::NitrousOxide), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + -721824748i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterOxygen".into(), + prefab_hash: -721824748i32, + desc: "Sinotai have cornered the market in filter design. Their trademarked templates are simple to print and highly efficient at capturing various gases, which can be disposed of or used elsewhere. Oxygen is a common byproduct of smelting various ores, but must be filtered of such impurities as Nitrogen using this filter and various devices, such as the Kit (Portable Scrubber)." + .into(), + name: "Filter (Oxygen)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::Oxygen), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + -1055451111i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterOxygenInfinite".into(), + prefab_hash: -1055451111i32, + desc: "A filter that selectively targets Oxygen. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle." + .into(), + name: "Catalytic Filter (Oxygen)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::Oxygen), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + -1217998945i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterOxygenL".into(), + prefab_hash: -1217998945i32, + desc: "".into(), + name: "Heavy Filter (Oxygen)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::Oxygen), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + -1067319543i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterOxygenM".into(), + prefab_hash: -1067319543i32, + desc: "".into(), + name: "Medium Filter (Oxygen)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::Oxygen), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 1915566057i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterPollutants".into(), + prefab_hash: 1915566057i32, + desc: "Filters are used to capture various gases, such as waste emissions from a Furnace or Arc Furnace. Adding Sinotai-designed Pollutant filters to a Kit (Portable Scrubber) allows you to isolate this gas, then add it to a pipe network and employ its excellent coolant properties in a Wall Cooler. Try not to inhale." + .into(), + name: "Filter (Pollutant)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::Pollutant), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + -503738105i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterPollutantsInfinite".into(), + prefab_hash: -503738105i32, + desc: "A filter that selectively targets Pollutants. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle." + .into(), + name: "Catalytic Filter (Pollutants)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::Pollutant), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 1959564765i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterPollutantsL".into(), + prefab_hash: 1959564765i32, + desc: "".into(), + name: "Heavy Filter (Pollutants)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::Pollutant), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 63677771i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterPollutantsM".into(), + prefab_hash: 63677771i32, + desc: "".into(), + name: "Medium Filter (Pollutants)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::Pollutant), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 15011598i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterVolatiles".into(), + prefab_hash: 15011598i32, + desc: "Filters are used to capture various gases, which can be disposed of or used elsewhere. Volatiles are created by exposing Ice (Volatiles) to heat. The product can then be collected and combined with Oxygen to create fuel, or used within a Furnace to smelt ores and create alloys." + .into(), + name: "Filter (Volatiles)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::Volatiles), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + -1916176068i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterVolatilesInfinite".into(), + prefab_hash: -1916176068i32, + desc: "A filter that selectively targets Volatiles. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle." + .into(), + name: "Catalytic Filter (Volatiles)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::Volatiles), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 1255156286i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterVolatilesL".into(), + prefab_hash: 1255156286i32, + desc: "".into(), + name: "Heavy Filter (Volatiles)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::Volatiles), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 1037507240i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterVolatilesM".into(), + prefab_hash: 1037507240i32, + desc: "".into(), + name: "Medium Filter (Volatiles)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::Volatiles), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + -1993197973i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterWater".into(), + prefab_hash: -1993197973i32, + desc: "Sinotai filters are used to capture various gases, which can be disposed of, or used elsewhere. Water can be collected by filtering smelted Ice (Water)" + .into(), + name: "Filter (Water)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::Steam), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + -1678456554i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterWaterInfinite".into(), + prefab_hash: -1678456554i32, + desc: "A filter that selectively targets Water. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle." + .into(), + name: "Catalytic Filter (Water)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::Steam), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 2004969680i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterWaterL".into(), + prefab_hash: 2004969680i32, + desc: "".into(), + name: "Heavy Filter (Water)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::Steam), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 8804422i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasFilterWaterM".into(), + prefab_hash: 8804422i32, + desc: "".into(), + name: "Medium Filter (Water)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: Some(GasType::Steam), + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::GasFilter, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 1717593480i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasSensor".into(), + prefab_hash: 1717593480i32, + desc: "".into(), + name: "Kit (Gas Sensor)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -2113012215i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGasTankStorage".into(), + prefab_hash: -2113012215i32, + desc: "This kit produces a Kit (Canister Storage) for refilling a Canister." + .into(), + name: "Kit (Canister Storage)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 1588896491i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGlassSheets".into(), + prefab_hash: 1588896491i32, + desc: "A fundamental construction component, glass sheets are created from Silicon. Fabricated on the Autolathe, they are used to make {THING:StructureSolarPanel;Solar Panels}, and many other structures." + .into(), + name: "Glass Sheets".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + -1068925231i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGlasses".into(), + prefab_hash: -1068925231i32, + desc: "".into(), + name: "Glasses".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Glasses, + sorting_class: SortingClass::Clothing, + }, + } + .into(), + ), + ( + 226410516i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGoldIngot".into(), + prefab_hash: 226410516i32, + desc: "There is an enduring paradox at the heart of the Stationeers project: An initiative conceived as \'cut-price space exploration\' uses Gold as a fundamental ingredient in fabricating so much of its equipment and materiel. " + .into(), + name: "Ingot (Gold)".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 500u32, + reagents: Some(vec![("Gold".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ingot, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + -1348105509i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGoldOre".into(), + prefab_hash: -1348105509i32, + desc: "Surprisingly common throughout the Solar System, Gold is thought to originate in the heart of supernovas, gathering as dust in the early stages of solar formation, then incorporating into the slowly accreting planetary bodies. Now a prized element in Stationeer construction, Gold is valued not for its beauty, but its reliability: inert, durable, conductive and highly stable, gold\'s strength is that it does nothing." + .into(), + name: "Ore (Gold)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 50u32, + reagents: Some(vec![("Gold".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ore, + sorting_class: SortingClass::Ores, + }, + } + .into(), + ), + ( + 1544275894i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemGrenade".into(), + prefab_hash: 1544275894i32, + desc: "Invented by the Romans, who threw Greek Fire at their enemies in ceramic jars, the word \'grenade\' is derived from the Old French word for \'pomegranate\', as many modern grenades resemble this round, many-seeded fruit. Also like many grenades before it, this one goes boom and breaks stuff." + .into(), + name: "Hand Grenade".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 470636008i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemHEMDroidRepairKit".into(), + prefab_hash: 470636008i32, + desc: "Repairs damaged HEM-Droids to full health.".into(), + name: "HEMDroid Repair Kit".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + } + .into(), + ), + ( + 374891127i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemHardBackpack".into(), + prefab_hash: 374891127i32, + desc: "This backpack can be useful when you are working inside and don\'t need to fly around." + .into(), + name: "Hardsuit Backpack".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Back, + sorting_class: SortingClass::Clothing, + }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (2u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (3u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (4u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (5u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (6u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (7u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (8u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (9u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (10u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (11u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![(LogicType::ReferenceId, MemoryAccess::Read)] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + -412551656i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemHardJetpack".into(), + prefab_hash: -412551656i32, + desc: "The Norsec jetpack isn\'t \'technically\' a jetpack at all, it\'s a gas thruster. It can be powered by any gas, so long as the internal pressure of the canister is higher than the ambient external pressure. If the external pressure is greater, the spacepack will not function. Adjusting the thrust value alters your rate of acceleration, while activating the stablizer causes the spacepack to hover when a given height is reached.\nThe hardsuit jetpack is capable of much higher speeds than the Jetpack Basic - up to 15m/s. Indispensable for building, mining and general movement, it has fourteen storage slots.\nUSE: \'J\' to activate; \'space\' to fly up; \'left ctrl\' to descend; and \'WASD\' to move." + .into(), + name: "Hardsuit Jetpack".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Back, + sorting_class: SortingClass::Clothing, + }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Pressure, MemoryAccess::Read), + (LogicSlotType::Temperature, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (2u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (3u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (4u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (5u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (6u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (7u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (8u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (9u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (10u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (11u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (12u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (13u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (14u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Propellant".into(), typ : Class::GasCanister }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + 900366130i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "ItemHardMiningBackPack".into(), + prefab_hash: 900366130i32, + desc: "".into(), + name: "Hard Mining Backpack".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Back, + sorting_class: SortingClass::Clothing, + }, + slots: vec![ + SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : + "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ + : Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, + SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : + "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ + : Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, + SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : + "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ + : Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, + SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : + "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ + : Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, + SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : + "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ + : Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, + SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : + "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ + : Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, + SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : + "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ + : Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + -1758310454i32, + ItemLogicMemoryTemplate { + prefab: PrefabInfo { + prefab_name: "ItemHardSuit".into(), + prefab_hash: -1758310454i32, + desc: "Connects to Logic Transmitter" + .into(), + name: "Hardsuit".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Suit, + sorting_class: SortingClass::Clothing, + }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Pressure, MemoryAccess::Read), + (LogicSlotType::Temperature, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Pressure, MemoryAccess::Read), + (LogicSlotType::Temperature, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (2u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (3u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (4u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::FilterType, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (5u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::FilterType, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (6u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::FilterType, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (7u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::FilterType, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::ReadWrite), (LogicType::Pressure, + MemoryAccess::Read), (LogicType::Temperature, + MemoryAccess::Read), (LogicType::PressureExternal, + MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::RatioOxygen, + MemoryAccess::Read), (LogicType::RatioCarbonDioxide, + MemoryAccess::Read), (LogicType::RatioNitrogen, + MemoryAccess::Read), (LogicType::RatioPollutant, + MemoryAccess::Read), (LogicType::RatioVolatiles, + MemoryAccess::Read), (LogicType::RatioWater, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::TotalMoles, + MemoryAccess::Read), (LogicType::Volume, + MemoryAccess::ReadWrite), (LogicType::PressureSetting, + MemoryAccess::ReadWrite), (LogicType::TemperatureSetting, + MemoryAccess::ReadWrite), (LogicType::TemperatureExternal, + MemoryAccess::Read), (LogicType::Filtration, + MemoryAccess::ReadWrite), (LogicType::AirRelease, + MemoryAccess::ReadWrite), (LogicType::PositionX, + MemoryAccess::Read), (LogicType::PositionY, MemoryAccess::Read), + (LogicType::PositionZ, MemoryAccess::Read), + (LogicType::VelocityMagnitude, MemoryAccess::Read), + (LogicType::VelocityRelativeX, MemoryAccess::Read), + (LogicType::VelocityRelativeY, MemoryAccess::Read), + (LogicType::VelocityRelativeZ, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::SoundAlert, MemoryAccess::ReadWrite), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::ForwardX, MemoryAccess::Read), (LogicType::ForwardY, + MemoryAccess::Read), (LogicType::ForwardZ, MemoryAccess::Read), + (LogicType::Orientation, MemoryAccess::Read), + (LogicType::VelocityX, MemoryAccess::Read), + (LogicType::VelocityY, MemoryAccess::Read), + (LogicType::VelocityZ, MemoryAccess::Read), + (LogicType::EntityState, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: true, + circuit_holder: true, + }, + slots: vec![ + SlotInfo { name : "Air Tank".into(), typ : Class::GasCanister }, + SlotInfo { name : "Waste Tank".into(), typ : Class::GasCanister }, + SlotInfo { name : "Life Support".into(), typ : Class::Battery }, + SlotInfo { name : "Programmable Chip".into(), typ : + Class::ProgrammableChip }, SlotInfo { name : "Filter".into(), typ : + Class::GasFilter }, SlotInfo { name : "Filter".into(), typ : + Class::GasFilter }, SlotInfo { name : "Filter".into(), typ : + Class::GasFilter }, SlotInfo { name : "Filter".into(), typ : + Class::GasFilter } + ] + .into_iter() + .collect(), + memory: MemoryInfo { + instructions: None, + memory_access: MemoryAccess::ReadWrite, + memory_size: 0u32, + }, + } + .into(), + ), + ( + -84573099i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemHardsuitHelmet".into(), + prefab_hash: -84573099i32, + desc: "The Hardsuit Helmet is similar to the Space Helmet, but can withstand higher temperatures and pressures. It\'s perfect for enduring harsh environments like Venus and Vulcan." + .into(), + name: "Hardsuit Helmet".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Helmet, + sorting_class: SortingClass::Clothing, + }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Pressure, + MemoryAccess::Read), (LogicType::Temperature, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::TotalMoles, + MemoryAccess::Read), (LogicType::Volume, + MemoryAccess::ReadWrite), (LogicType::RatioNitrousOxide, + MemoryAccess::Read), (LogicType::Combustion, MemoryAccess::Read), + (LogicType::Flush, MemoryAccess::Write), (LogicType::SoundAlert, + MemoryAccess::ReadWrite), (LogicType::RatioLiquidNitrogen, + MemoryAccess::Read), (LogicType::RatioLiquidOxygen, + MemoryAccess::Read), (LogicType::RatioLiquidVolatiles, + MemoryAccess::Read), (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + } + .into(), + ), + ( + 1579842814i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemHastelloyIngot".into(), + prefab_hash: 1579842814i32, + desc: "".into(), + name: "Ingot (Hastelloy)".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 500u32, + reagents: Some( + vec![("Hastelloy".into(), 1f64)].into_iter().collect(), + ), + slot_class: Class::Ingot, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 299189339i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemHat".into(), + prefab_hash: 299189339i32, + desc: "As the name suggests, this is a hat.".into(), + name: "Hat".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Helmet, + sorting_class: SortingClass::Clothing, + }, + } + .into(), + ), + ( + 998653377i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemHighVolumeGasCanisterEmpty".into(), + prefab_hash: 998653377i32, + desc: "".into(), + name: "High Volume Gas Canister".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::GasCanister, + sorting_class: SortingClass::Atmospherics, + }, + } + .into(), + ), + ( + -1117581553i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "ItemHorticultureBelt".into(), + prefab_hash: -1117581553i32, + desc: "".into(), + name: "Horticulture Belt".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Belt, + sorting_class: SortingClass::Clothing, + }, + slots: vec![ + SlotInfo { name : "Tool".into(), typ : Class::Tool }, SlotInfo { name + : "Tool".into(), typ : Class::Tool }, SlotInfo { name : "Plant" + .into(), typ : Class::Plant }, SlotInfo { name : "Plant".into(), typ + : Class::Plant }, SlotInfo { name : "Plant".into(), typ : + Class::Plant }, SlotInfo { name : "Plant".into(), typ : Class::Plant + }, SlotInfo { name : "Plant".into(), typ : Class::Plant }, SlotInfo { + name : "Plant".into(), typ : Class::Plant }, SlotInfo { name : + "Plant".into(), typ : Class::Plant }, SlotInfo { name : "Plant" + .into(), typ : Class::Plant } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + -1193543727i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemHydroponicTray".into(), + prefab_hash: -1193543727i32, + desc: "This kits creates a Hydroponics Tray for growing various plants." + .into(), + name: "Kit (Hydroponic Tray)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 1217489948i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemIce".into(), + prefab_hash: 1217489948i32, + desc: "Water ice can be found on most planets in the Solar System, though not all worlds visited by Stationeers possess this resource. Highly sensitive to temperature, ice will begin to melt as soon as it is mined, unless kept in the Mining Belt. When melting, ice produces a mixture of Steam and Nitrogen gas." + .into(), + name: "Ice (Water)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ices, + }, + } + .into(), + ), + ( + 890106742i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemIgniter".into(), + prefab_hash: 890106742i32, + desc: "This kit creates an Kit (Igniter) unit." + .into(), + name: "Kit (Igniter)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -787796599i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemInconelIngot".into(), + prefab_hash: -787796599i32, + desc: "".into(), + name: "Ingot (Inconel)".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 500u32, + reagents: Some(vec![("Inconel".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ingot, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 897176943i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemInsulation".into(), + prefab_hash: 897176943i32, + desc: "Mysterious in the extreme, the function of this item is lost to the ages." + .into(), + name: "Insulation".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + -744098481i32, + ItemLogicMemoryTemplate { + prefab: PrefabInfo { + prefab_name: "ItemIntegratedCircuit10".into(), + prefab_hash: -744098481i32, + desc: "".into(), + name: "Integrated Circuit (IC10)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::ProgrammableChip, + sorting_class: SortingClass::Default, + }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::LineNumber, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + memory: MemoryInfo { + instructions: None, + memory_access: MemoryAccess::ReadWrite, + memory_size: 512u32, + }, + } + .into(), + ), + ( + -297990285i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemInvarIngot".into(), + prefab_hash: -297990285i32, + desc: "".into(), + name: "Ingot (Invar)".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 500u32, + reagents: Some(vec![("Invar".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ingot, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 1225836666i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemIronFrames".into(), + prefab_hash: 1225836666i32, + desc: "".into(), + name: "Iron Frames".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 30u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -1301215609i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemIronIngot".into(), + prefab_hash: -1301215609i32, + desc: "The most basic unit of construction available to Stationeer-kind, iron ingots are created by smelting Ore (Iron) in the Furnace and Arc Furnace, and used to create a variety of items." + .into(), + name: "Ingot (Iron)".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 500u32, + reagents: Some(vec![("Iron".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ingot, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 1758427767i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemIronOre".into(), + prefab_hash: 1758427767i32, + desc: "Abundant throughout the Solar System, iron is the ore most commonly used by Stationeers constructing offworld bases. It can be smelted into both Ingot (Iron)s and Ingot (Steel)s." + .into(), + name: "Ore (Iron)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 50u32, + reagents: Some(vec![("Iron".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ore, + sorting_class: SortingClass::Ores, + }, + } + .into(), + ), + ( + -487378546i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemIronSheets".into(), + prefab_hash: -487378546i32, + desc: "".into(), + name: "Iron Sheets".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 1969189000i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemJetpackBasic".into(), + prefab_hash: 1969189000i32, + desc: "The basic CHAC jetpack isn\'t \'technically\' a jetpack, it\'s a gas thruster. It can be powered by any gas, so long as the internal pressure of the canister is higher than the ambient external pressure. If the external pressure is greater, the spacepack will not function.\nIndispensable for building, mining and general movement, it has ten storage slots and lets Stationeers fly at 3m/s, compared to the more powerful Hardsuit Jetpack. Adjusting the thrust value alters your rate of acceleration, while activating the stabilizer causes the spacepack to hover when a given height is reached.\nUSE: \'J\' to activate; \'space\' to fly up; \'left ctrl\' to descend; and \'WASD\' to move." + .into(), + name: "Jetpack Basic".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Back, + sorting_class: SortingClass::Clothing, + }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Pressure, MemoryAccess::Read), + (LogicSlotType::Temperature, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (2u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (3u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (4u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (5u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (6u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (7u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (8u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (9u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Propellant".into(), typ : Class::GasCanister }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + 496830914i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitAIMeE".into(), + prefab_hash: 496830914i32, + desc: "".into(), + name: "Kit (AIMeE)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 513258369i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitAccessBridge".into(), + prefab_hash: 513258369i32, + desc: "".into(), + name: "Kit (Access Bridge)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -1431998347i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitAdvancedComposter".into(), + prefab_hash: -1431998347i32, + desc: "".into(), + name: "Kit (Advanced Composter)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -616758353i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitAdvancedFurnace".into(), + prefab_hash: -616758353i32, + desc: "".into(), + name: "Kit (Advanced Furnace)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -598545233i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitAdvancedPackagingMachine".into(), + prefab_hash: -598545233i32, + desc: "".into(), + name: "Kit (Advanced Packaging Machine)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 964043875i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitAirlock".into(), + prefab_hash: 964043875i32, + desc: "".into(), + name: "Kit (Airlock)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 682546947i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitAirlockGate".into(), + prefab_hash: 682546947i32, + desc: "".into(), + name: "Kit (Hangar Door)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -98995857i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitArcFurnace".into(), + prefab_hash: -98995857i32, + desc: "".into(), + name: "Kit (Arc Furnace)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 1222286371i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitAtmospherics".into(), + prefab_hash: 1222286371i32, + desc: "".into(), + name: "Kit (Atmospherics)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 1668815415i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitAutoMinerSmall".into(), + prefab_hash: 1668815415i32, + desc: "".into(), + name: "Kit (Autominer Small)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -1753893214i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitAutolathe".into(), + prefab_hash: -1753893214i32, + desc: "".into(), + name: "Kit (Autolathe)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -1931958659i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitAutomatedOven".into(), + prefab_hash: -1931958659i32, + desc: "".into(), + name: "Kit (Automated Oven)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 148305004i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitBasket".into(), + prefab_hash: 148305004i32, + desc: "".into(), + name: "Kit (Basket)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 1406656973i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitBattery".into(), + prefab_hash: 1406656973i32, + desc: "".into(), + name: "Kit (Battery)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -21225041i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitBatteryLarge".into(), + prefab_hash: -21225041i32, + desc: "".into(), + name: "Kit (Battery Large)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 249073136i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitBeacon".into(), + prefab_hash: 249073136i32, + desc: "".into(), + name: "Kit (Beacon)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -1241256797i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitBeds".into(), + prefab_hash: -1241256797i32, + desc: "".into(), + name: "Kit (Beds)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -1755116240i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitBlastDoor".into(), + prefab_hash: -1755116240i32, + desc: "".into(), + name: "Kit (Blast Door)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 578182956i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitCentrifuge".into(), + prefab_hash: 578182956i32, + desc: "".into(), + name: "Kit (Centrifuge)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -1394008073i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitChairs".into(), + prefab_hash: -1394008073i32, + desc: "".into(), + name: "Kit (Chairs)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 1025254665i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitChute".into(), + prefab_hash: 1025254665i32, + desc: "".into(), + name: "Kit (Basic Chutes)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -876560854i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitChuteUmbilical".into(), + prefab_hash: -876560854i32, + desc: "".into(), + name: "Kit (Chute Umbilical)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -1470820996i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitCompositeCladding".into(), + prefab_hash: -1470820996i32, + desc: "".into(), + name: "Kit (Cladding)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 1182412869i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitCompositeFloorGrating".into(), + prefab_hash: 1182412869i32, + desc: "".into(), + name: "Kit (Floor Grating)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 1990225489i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitComputer".into(), + prefab_hash: 1990225489i32, + desc: "".into(), + name: "Kit (Computer)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -1241851179i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitConsole".into(), + prefab_hash: -1241851179i32, + desc: "".into(), + name: "Kit (Consoles)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 429365598i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitCrate".into(), + prefab_hash: 429365598i32, + desc: "".into(), + name: "Kit (Crate)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -1585956426i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitCrateMkII".into(), + prefab_hash: -1585956426i32, + desc: "".into(), + name: "Kit (Crate Mk II)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -551612946i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitCrateMount".into(), + prefab_hash: -551612946i32, + desc: "".into(), + name: "Kit (Container Mount)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -545234195i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitCryoTube".into(), + prefab_hash: -545234195i32, + desc: "".into(), + name: "Kit (Cryo Tube)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -1935075707i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitDeepMiner".into(), + prefab_hash: -1935075707i32, + desc: "".into(), + name: "Kit (Deep Miner)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 77421200i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitDockingPort".into(), + prefab_hash: 77421200i32, + desc: "".into(), + name: "Kit (Docking Port)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 168615924i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitDoor".into(), + prefab_hash: 168615924i32, + desc: "".into(), + name: "Kit (Door)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -1743663875i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitDrinkingFountain".into(), + prefab_hash: -1743663875i32, + desc: "".into(), + name: "Kit (Drinking Fountain)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -1061945368i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitDynamicCanister".into(), + prefab_hash: -1061945368i32, + desc: "".into(), + name: "Kit (Portable Gas Tank)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 1533501495i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitDynamicGasTankAdvanced".into(), + prefab_hash: 1533501495i32, + desc: "".into(), + name: "Kit (Portable Gas Tank Mk II)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -732720413i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitDynamicGenerator".into(), + prefab_hash: -732720413i32, + desc: "".into(), + name: "Kit (Portable Generator)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -1861154222i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitDynamicHydroponics".into(), + prefab_hash: -1861154222i32, + desc: "".into(), + name: "Kit (Portable Hydroponics)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 375541286i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitDynamicLiquidCanister".into(), + prefab_hash: 375541286i32, + desc: "".into(), + name: "Kit (Portable Liquid Tank)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -638019974i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitDynamicMKIILiquidCanister".into(), + prefab_hash: -638019974i32, + desc: "".into(), + name: "Kit (Portable Liquid Tank Mk II)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 1603046970i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitElectricUmbilical".into(), + prefab_hash: 1603046970i32, + desc: "".into(), + name: "Kit (Power Umbilical)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -1181922382i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitElectronicsPrinter".into(), + prefab_hash: -1181922382i32, + desc: "".into(), + name: "Kit (Electronics Printer)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -945806652i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitElevator".into(), + prefab_hash: -945806652i32, + desc: "".into(), + name: "Kit (Elevator)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 755302726i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitEngineLarge".into(), + prefab_hash: 755302726i32, + desc: "".into(), + name: "Kit (Engine Large)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 1969312177i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitEngineMedium".into(), + prefab_hash: 1969312177i32, + desc: "".into(), + name: "Kit (Engine Medium)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 19645163i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitEngineSmall".into(), + prefab_hash: 19645163i32, + desc: "".into(), + name: "Kit (Engine Small)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 1587787610i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitEvaporationChamber".into(), + prefab_hash: 1587787610i32, + desc: "".into(), + name: "Kit (Phase Change Device)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 1701764190i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitFlagODA".into(), + prefab_hash: 1701764190i32, + desc: "".into(), + name: "Kit (ODA Flag)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -1168199498i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitFridgeBig".into(), + prefab_hash: -1168199498i32, + desc: "".into(), + name: "Kit (Fridge Large)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 1661226524i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitFridgeSmall".into(), + prefab_hash: 1661226524i32, + desc: "".into(), + name: "Kit (Fridge Small)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -806743925i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitFurnace".into(), + prefab_hash: -806743925i32, + desc: "".into(), + name: "Kit (Furnace)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 1162905029i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitFurniture".into(), + prefab_hash: 1162905029i32, + desc: "".into(), + name: "Kit (Furniture)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -366262681i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitFuselage".into(), + prefab_hash: -366262681i32, + desc: "".into(), + name: "Kit (Fuselage)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 377745425i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitGasGenerator".into(), + prefab_hash: 377745425i32, + desc: "".into(), + name: "Kit (Gas Fuel Generator)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -1867280568i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitGasUmbilical".into(), + prefab_hash: -1867280568i32, + desc: "".into(), + name: "Kit (Gas Umbilical)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 206848766i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitGovernedGasRocketEngine".into(), + prefab_hash: 206848766i32, + desc: "".into(), + name: "Kit (Pumped Gas Rocket Engine)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -2140672772i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitGroundTelescope".into(), + prefab_hash: -2140672772i32, + desc: "".into(), + name: "Kit (Telescope)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 341030083i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitGrowLight".into(), + prefab_hash: 341030083i32, + desc: "".into(), + name: "Kit (Grow Light)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -1022693454i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitHarvie".into(), + prefab_hash: -1022693454i32, + desc: "".into(), + name: "Kit (Harvie)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -1710540039i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitHeatExchanger".into(), + prefab_hash: -1710540039i32, + desc: "".into(), + name: "Kit Heat Exchanger".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 844391171i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitHorizontalAutoMiner".into(), + prefab_hash: 844391171i32, + desc: "".into(), + name: "Kit (OGRE)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -2098556089i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitHydraulicPipeBender".into(), + prefab_hash: -2098556089i32, + desc: "".into(), + name: "Kit (Hydraulic Pipe Bender)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -927931558i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitHydroponicAutomated".into(), + prefab_hash: -927931558i32, + desc: "".into(), + name: "Kit (Automated Hydroponics)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 2057179799i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitHydroponicStation".into(), + prefab_hash: 2057179799i32, + desc: "".into(), + name: "Kit (Hydroponic Station)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 288111533i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitIceCrusher".into(), + prefab_hash: 288111533i32, + desc: "".into(), + name: "Kit (Ice Crusher)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 2067655311i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitInsulatedLiquidPipe".into(), + prefab_hash: 2067655311i32, + desc: "".into(), + name: "Kit (Insulated Liquid Pipe)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 20u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 452636699i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitInsulatedPipe".into(), + prefab_hash: 452636699i32, + desc: "".into(), + name: "Kit (Insulated Pipe)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 20u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -27284803i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitInsulatedPipeUtility".into(), + prefab_hash: -27284803i32, + desc: "".into(), + name: "Kit (Insulated Pipe Utility Gas)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -1831558953i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitInsulatedPipeUtilityLiquid".into(), + prefab_hash: -1831558953i32, + desc: "".into(), + name: "Kit (Insulated Pipe Utility Liquid)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 1935945891i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitInteriorDoors".into(), + prefab_hash: 1935945891i32, + desc: "".into(), + name: "Kit (Interior Doors)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 489494578i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitLadder".into(), + prefab_hash: 489494578i32, + desc: "".into(), + name: "Kit (Ladder)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 1817007843i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitLandingPadAtmos".into(), + prefab_hash: 1817007843i32, + desc: "".into(), + name: "Kit (Landing Pad Atmospherics)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 293581318i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitLandingPadBasic".into(), + prefab_hash: 293581318i32, + desc: "".into(), + name: "Kit (Landing Pad Basic)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -1267511065i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitLandingPadWaypoint".into(), + prefab_hash: -1267511065i32, + desc: "".into(), + name: "Kit (Landing Pad Runway)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 450164077i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitLargeDirectHeatExchanger".into(), + prefab_hash: 450164077i32, + desc: "".into(), + name: "Kit (Large Direct Heat Exchanger)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 847430620i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitLargeExtendableRadiator".into(), + prefab_hash: 847430620i32, + desc: "".into(), + name: "Kit (Large Extendable Radiator)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -2039971217i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitLargeSatelliteDish".into(), + prefab_hash: -2039971217i32, + desc: "".into(), + name: "Kit (Large Satellite Dish)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -1854167549i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitLaunchMount".into(), + prefab_hash: -1854167549i32, + desc: "".into(), + name: "Kit (Launch Mount)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -174523552i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitLaunchTower".into(), + prefab_hash: -174523552i32, + desc: "".into(), + name: "Kit (Rocket Launch Tower)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 1951126161i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitLiquidRegulator".into(), + prefab_hash: 1951126161i32, + desc: "".into(), + name: "Kit (Liquid Regulator)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -799849305i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitLiquidTank".into(), + prefab_hash: -799849305i32, + desc: "".into(), + name: "Kit (Liquid Tank)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 617773453i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitLiquidTankInsulated".into(), + prefab_hash: 617773453i32, + desc: "".into(), + name: "Kit (Insulated Liquid Tank)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -1805020897i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitLiquidTurboVolumePump".into(), + prefab_hash: -1805020897i32, + desc: "".into(), + name: "Kit (Turbo Volume Pump - Liquid)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 1571996765i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitLiquidUmbilical".into(), + prefab_hash: 1571996765i32, + desc: "".into(), + name: "Kit (Liquid Umbilical)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 882301399i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitLocker".into(), + prefab_hash: 882301399i32, + desc: "".into(), + name: "Kit (Locker)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 1512322581i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitLogicCircuit".into(), + prefab_hash: 1512322581i32, + desc: "".into(), + name: "Kit (IC Housing)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 1997293610i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitLogicInputOutput".into(), + prefab_hash: 1997293610i32, + desc: "".into(), + name: "Kit (Logic I/O)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -2098214189i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitLogicMemory".into(), + prefab_hash: -2098214189i32, + desc: "".into(), + name: "Kit (Logic Memory)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 220644373i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitLogicProcessor".into(), + prefab_hash: 220644373i32, + desc: "".into(), + name: "Kit (Logic Processor)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 124499454i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitLogicSwitch".into(), + prefab_hash: 124499454i32, + desc: "".into(), + name: "Kit (Logic Switch)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 1005397063i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitLogicTransmitter".into(), + prefab_hash: 1005397063i32, + desc: "".into(), + name: "Kit (Logic Transmitter)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -344968335i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitMotherShipCore".into(), + prefab_hash: -344968335i32, + desc: "".into(), + name: "Kit (Mothership)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -2038889137i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitMusicMachines".into(), + prefab_hash: -2038889137i32, + desc: "".into(), + name: "Kit (Music Machines)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -1752768283i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitPassiveLargeRadiatorGas".into(), + prefab_hash: -1752768283i32, + desc: "".into(), + name: "Kit (Medium Radiator)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 1453961898i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitPassiveLargeRadiatorLiquid".into(), + prefab_hash: 1453961898i32, + desc: "".into(), + name: "Kit (Medium Radiator Liquid)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 636112787i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitPassthroughHeatExchanger".into(), + prefab_hash: 636112787i32, + desc: "".into(), + name: "Kit (CounterFlow Heat Exchanger)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -2062364768i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitPictureFrame".into(), + prefab_hash: -2062364768i32, + desc: "".into(), + name: "Kit Picture Frame".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -1619793705i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitPipe".into(), + prefab_hash: -1619793705i32, + desc: "".into(), + name: "Kit (Pipe)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 20u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -1166461357i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitPipeLiquid".into(), + prefab_hash: -1166461357i32, + desc: "".into(), + name: "Kit (Liquid Pipe)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 20u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -827125300i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitPipeOrgan".into(), + prefab_hash: -827125300i32, + desc: "".into(), + name: "Kit (Pipe Organ)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 920411066i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitPipeRadiator".into(), + prefab_hash: 920411066i32, + desc: "".into(), + name: "Kit (Pipe Radiator)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -1697302609i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitPipeRadiatorLiquid".into(), + prefab_hash: -1697302609i32, + desc: "".into(), + name: "Kit (Pipe Radiator Liquid)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 1934508338i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitPipeUtility".into(), + prefab_hash: 1934508338i32, + desc: "".into(), + name: "Kit (Pipe Utility Gas)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 595478589i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitPipeUtilityLiquid".into(), + prefab_hash: 595478589i32, + desc: "".into(), + name: "Kit (Pipe Utility Liquid)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 119096484i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitPlanter".into(), + prefab_hash: 119096484i32, + desc: "".into(), + name: "Kit (Planter)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 1041148999i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitPortablesConnector".into(), + prefab_hash: 1041148999i32, + desc: "".into(), + name: "Kit (Portables Connector)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 291368213i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitPowerTransmitter".into(), + prefab_hash: 291368213i32, + desc: "".into(), + name: "Kit (Power Transmitter)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -831211676i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitPowerTransmitterOmni".into(), + prefab_hash: -831211676i32, + desc: "".into(), + name: "Kit (Power Transmitter Omni)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 2015439334i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitPoweredVent".into(), + prefab_hash: 2015439334i32, + desc: "".into(), + name: "Kit (Powered Vent)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -121514007i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitPressureFedGasEngine".into(), + prefab_hash: -121514007i32, + desc: "".into(), + name: "Kit (Pressure Fed Gas Engine)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -99091572i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitPressureFedLiquidEngine".into(), + prefab_hash: -99091572i32, + desc: "".into(), + name: "Kit (Pressure Fed Liquid Engine)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 123504691i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitPressurePlate".into(), + prefab_hash: 123504691i32, + desc: "".into(), + name: "Kit (Trigger Plate)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 1921918951i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitPumpedLiquidEngine".into(), + prefab_hash: 1921918951i32, + desc: "".into(), + name: "Kit (Pumped Liquid Engine)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 750176282i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitRailing".into(), + prefab_hash: 750176282i32, + desc: "".into(), + name: "Kit (Railing)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 849148192i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitRecycler".into(), + prefab_hash: 849148192i32, + desc: "".into(), + name: "Kit (Recycler)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 1181371795i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitRegulator".into(), + prefab_hash: 1181371795i32, + desc: "".into(), + name: "Kit (Pressure Regulator)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 1459985302i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitReinforcedWindows".into(), + prefab_hash: 1459985302i32, + desc: "".into(), + name: "Kit (Reinforced Windows)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 724776762i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitResearchMachine".into(), + prefab_hash: 724776762i32, + desc: "".into(), + name: "Kit Research Machine".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 1574688481i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitRespawnPointWallMounted".into(), + prefab_hash: 1574688481i32, + desc: "".into(), + name: "Kit (Respawn)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 1396305045i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitRocketAvionics".into(), + prefab_hash: 1396305045i32, + desc: "".into(), + name: "Kit (Avionics)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -314072139i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitRocketBattery".into(), + prefab_hash: -314072139i32, + desc: "".into(), + name: "Kit (Rocket Battery)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 479850239i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitRocketCargoStorage".into(), + prefab_hash: 479850239i32, + desc: "".into(), + name: "Kit (Rocket Cargo Storage)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -303008602i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitRocketCelestialTracker".into(), + prefab_hash: -303008602i32, + desc: "".into(), + name: "Kit (Rocket Celestial Tracker)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 721251202i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitRocketCircuitHousing".into(), + prefab_hash: 721251202i32, + desc: "".into(), + name: "Kit (Rocket Circuit Housing)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -1256996603i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitRocketDatalink".into(), + prefab_hash: -1256996603i32, + desc: "".into(), + name: "Kit (Rocket Datalink)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -1629347579i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitRocketGasFuelTank".into(), + prefab_hash: -1629347579i32, + desc: "".into(), + name: "Kit (Rocket Gas Fuel Tank)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 2032027950i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitRocketLiquidFuelTank".into(), + prefab_hash: 2032027950i32, + desc: "".into(), + name: "Kit (Rocket Liquid Fuel Tank)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -636127860i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitRocketManufactory".into(), + prefab_hash: -636127860i32, + desc: "".into(), + name: "Kit (Rocket Manufactory)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -867969909i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitRocketMiner".into(), + prefab_hash: -867969909i32, + desc: "".into(), + name: "Kit (Rocket Miner)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 1753647154i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitRocketScanner".into(), + prefab_hash: 1753647154i32, + desc: "".into(), + name: "Kit (Rocket Scanner)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -932335800i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitRocketTransformerSmall".into(), + prefab_hash: -932335800i32, + desc: "".into(), + name: "Kit (Transformer Small (Rocket))".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 1827215803i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitRoverFrame".into(), + prefab_hash: 1827215803i32, + desc: "".into(), + name: "Kit (Rover Frame)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 197243872i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitRoverMKI".into(), + prefab_hash: 197243872i32, + desc: "".into(), + name: "Kit (Rover Mk I)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 323957548i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitSDBHopper".into(), + prefab_hash: 323957548i32, + desc: "".into(), + name: "Kit (SDB Hopper)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 178422810i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitSatelliteDish".into(), + prefab_hash: 178422810i32, + desc: "".into(), + name: "Kit (Medium Satellite Dish)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 578078533i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitSecurityPrinter".into(), + prefab_hash: 578078533i32, + desc: "".into(), + name: "Kit (Security Printer)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -1776897113i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitSensor".into(), + prefab_hash: -1776897113i32, + desc: "".into(), + name: "Kit (Sensors)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 735858725i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitShower".into(), + prefab_hash: 735858725i32, + desc: "".into(), + name: "Kit (Shower)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 529996327i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitSign".into(), + prefab_hash: 529996327i32, + desc: "".into(), + name: "Kit (Sign)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 326752036i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitSleeper".into(), + prefab_hash: 326752036i32, + desc: "".into(), + name: "Kit (Sleeper)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -1332682164i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitSmallDirectHeatExchanger".into(), + prefab_hash: -1332682164i32, + desc: "".into(), + name: "Kit (Small Direct Heat Exchanger)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 1960952220i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitSmallSatelliteDish".into(), + prefab_hash: 1960952220i32, + desc: "".into(), + name: "Kit (Small Satellite Dish)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -1924492105i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitSolarPanel".into(), + prefab_hash: -1924492105i32, + desc: "".into(), + name: "Kit (Solar Panel)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 844961456i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitSolarPanelBasic".into(), + prefab_hash: 844961456i32, + desc: "".into(), + name: "Kit (Solar Panel Basic)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -528695432i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitSolarPanelBasicReinforced".into(), + prefab_hash: -528695432i32, + desc: "".into(), + name: "Kit (Solar Panel Basic Heavy)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -364868685i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitSolarPanelReinforced".into(), + prefab_hash: -364868685i32, + desc: "".into(), + name: "Kit (Solar Panel Heavy)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 1293995736i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitSolidGenerator".into(), + prefab_hash: 1293995736i32, + desc: "".into(), + name: "Kit (Solid Generator)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 969522478i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitSorter".into(), + prefab_hash: 969522478i32, + desc: "".into(), + name: "Kit (Sorter)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -126038526i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitSpeaker".into(), + prefab_hash: -126038526i32, + desc: "".into(), + name: "Kit (Speaker)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 1013244511i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitStacker".into(), + prefab_hash: 1013244511i32, + desc: "".into(), + name: "Kit (Stacker)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 170878959i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitStairs".into(), + prefab_hash: 170878959i32, + desc: "".into(), + name: "Kit (Stairs)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -1868555784i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitStairwell".into(), + prefab_hash: -1868555784i32, + desc: "".into(), + name: "Kit (Stairwell)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 2133035682i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitStandardChute".into(), + prefab_hash: 2133035682i32, + desc: "".into(), + name: "Kit (Powered Chutes)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -1821571150i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitStirlingEngine".into(), + prefab_hash: -1821571150i32, + desc: "".into(), + name: "Kit (Stirling Engine)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 1088892825i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitSuitStorage".into(), + prefab_hash: 1088892825i32, + desc: "".into(), + name: "Kit (Suit Storage)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -1361598922i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitTables".into(), + prefab_hash: -1361598922i32, + desc: "".into(), + name: "Kit (Tables)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 771439840i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitTank".into(), + prefab_hash: 771439840i32, + desc: "".into(), + name: "Kit (Tank)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 1021053608i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitTankInsulated".into(), + prefab_hash: 1021053608i32, + desc: "".into(), + name: "Kit (Tank Insulated)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 529137748i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitToolManufactory".into(), + prefab_hash: 529137748i32, + desc: "".into(), + name: "Kit (Tool Manufactory)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -453039435i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitTransformer".into(), + prefab_hash: -453039435i32, + desc: "".into(), + name: "Kit (Transformer Large)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 665194284i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitTransformerSmall".into(), + prefab_hash: 665194284i32, + desc: "".into(), + name: "Kit (Transformer Small)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -1590715731i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitTurbineGenerator".into(), + prefab_hash: -1590715731i32, + desc: "".into(), + name: "Kit (Turbine Generator)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -1248429712i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitTurboVolumePump".into(), + prefab_hash: -1248429712i32, + desc: "".into(), + name: "Kit (Turbo Volume Pump - Gas)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -1798044015i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitUprightWindTurbine".into(), + prefab_hash: -1798044015i32, + desc: "".into(), + name: "Kit (Upright Wind Turbine)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -2038384332i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitVendingMachine".into(), + prefab_hash: -2038384332i32, + desc: "".into(), + name: "Kit (Vending Machine)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -1867508561i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitVendingMachineRefrigerated".into(), + prefab_hash: -1867508561i32, + desc: "".into(), + name: "Kit (Vending Machine Refrigerated)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -1826855889i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitWall".into(), + prefab_hash: -1826855889i32, + desc: "".into(), + name: "Kit (Wall)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 30u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 1625214531i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitWallArch".into(), + prefab_hash: 1625214531i32, + desc: "".into(), + name: "Kit (Arched Wall)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 30u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -846838195i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitWallFlat".into(), + prefab_hash: -846838195i32, + desc: "".into(), + name: "Kit (Flat Wall)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 30u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -784733231i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitWallGeometry".into(), + prefab_hash: -784733231i32, + desc: "".into(), + name: "Kit (Geometric Wall)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 30u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -524546923i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitWallIron".into(), + prefab_hash: -524546923i32, + desc: "".into(), + name: "Kit (Iron Wall)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 30u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -821868990i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitWallPadded".into(), + prefab_hash: -821868990i32, + desc: "".into(), + name: "Kit (Padded Wall)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 30u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 159886536i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitWaterBottleFiller".into(), + prefab_hash: 159886536i32, + desc: "".into(), + name: "Kit (Water Bottle Filler)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 611181283i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitWaterPurifier".into(), + prefab_hash: 611181283i32, + desc: "".into(), + name: "Kit (Water Purifier)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 337505889i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitWeatherStation".into(), + prefab_hash: 337505889i32, + desc: "".into(), + name: "Kit (Weather Station)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -868916503i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitWindTurbine".into(), + prefab_hash: -868916503i32, + desc: "".into(), + name: "Kit (Wind Turbine)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 1779979754i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemKitWindowShutter".into(), + prefab_hash: 1779979754i32, + desc: "".into(), + name: "Kit (Window Shutter)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -743968726i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemLabeller".into(), + prefab_hash: -743968726i32, + desc: "A labeller lets you set names and values on a variety of devices and structures, including Console and Logic." + .into(), + name: "Labeller".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::ReferenceId, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ), + ( + 141535121i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemLaptop".into(), + prefab_hash: 141535121i32, + desc: "The Laptop functions as a portable IC editor. To operate the Laptop it must be powered with a battery, have a IC Editor Motherboard in the motherboard slot, and an Integrated Circuit (IC10) in the Programmable Chip Slot.\n\nYou must place the laptop down to interact with the onsreen UI.\n \nConnects to Logic Transmitter" + .into(), + name: "Laptop".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (2u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::PressureExternal, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::TemperatureExternal, MemoryAccess::Read), + (LogicType::PositionX, MemoryAccess::Read), + (LogicType::PositionY, MemoryAccess::Read), + (LogicType::PositionZ, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: true, + circuit_holder: true, + }, + slots: vec![ + SlotInfo { name : "Programmable Chip".into(), typ : + Class::ProgrammableChip }, SlotInfo { name : "Battery".into(), typ : + Class::Battery }, SlotInfo { name : "Motherboard".into(), typ : + Class::Motherboard } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + 2134647745i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemLeadIngot".into(), + prefab_hash: 2134647745i32, + desc: "".into(), + name: "Ingot (Lead)".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 500u32, + reagents: Some(vec![("Lead".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ingot, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + -190236170i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemLeadOre".into(), + prefab_hash: -190236170i32, + desc: "Lead is a chemical element with the symbol \"Pb\". It is a dense, heavy metal with a low melting point. Lead is a used to make a variety of things such as alloys like Ingot (Solder) and munitions." + .into(), + name: "Ore (Lead)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 50u32, + reagents: Some(vec![("Lead".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ore, + sorting_class: SortingClass::Ores, + }, + } + .into(), + ), + ( + 1949076595i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemLightSword".into(), + prefab_hash: 1949076595i32, + desc: "A charming, if useless, pseudo-weapon. (Creative only.)" + .into(), + name: "Light Sword".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -185207387i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemLiquidCanisterEmpty".into(), + prefab_hash: -185207387i32, + desc: "".into(), + name: "Liquid Canister".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::LiquidCanister, + sorting_class: SortingClass::Atmospherics, + }, + } + .into(), + ), + ( + 777684475i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemLiquidCanisterSmart".into(), + prefab_hash: 777684475i32, + desc: "0.Mode0\n1.Mode1".into(), + name: "Liquid Canister (Smart)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::LiquidCanister, + sorting_class: SortingClass::Atmospherics, + }, + } + .into(), + ), + ( + 2036225202i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemLiquidDrain".into(), + prefab_hash: 2036225202i32, + desc: "".into(), + name: "Kit (Liquid Drain)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 226055671i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemLiquidPipeAnalyzer".into(), + prefab_hash: 226055671i32, + desc: "".into(), + name: "Kit (Liquid Pipe Analyzer)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -248475032i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemLiquidPipeHeater".into(), + prefab_hash: -248475032i32, + desc: "Creates a Pipe Heater (Liquid)." + .into(), + name: "Pipe Heater Kit (Liquid)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -2126113312i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemLiquidPipeValve".into(), + prefab_hash: -2126113312i32, + desc: "This kit creates a Liquid Valve." + .into(), + name: "Kit (Liquid Pipe Valve)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -2106280569i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemLiquidPipeVolumePump".into(), + prefab_hash: -2106280569i32, + desc: "".into(), + name: "Kit (Liquid Volume Pump)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 2037427578i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemLiquidTankStorage".into(), + prefab_hash: 2037427578i32, + desc: "This kit produces a Kit (Liquid Canister Storage) for refilling a Liquid Canister." + .into(), + name: "Kit (Liquid Canister Storage)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 240174650i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemMKIIAngleGrinder".into(), + prefab_hash: 240174650i32, + desc: "Angles-be-gone with the trusty angle grinder. The MK II is more resistant to temperature and pressure." + .into(), + name: "Mk II Angle Grinder".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ), + ( + -2061979347i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemMKIIArcWelder".into(), + prefab_hash: -2061979347i32, + desc: "".into(), + name: "Mk II Arc Welder".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ), + ( + 1440775434i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemMKIICrowbar".into(), + prefab_hash: 1440775434i32, + desc: "Recurso\'s entry-level crowbar is useful in a variety of everyday Stationeer settings, from opening Area Power Controls and unpowered Airlocks, to splatting pan-dimensional headcrabs, should the need arise. The MK II is more resistant to temperature and pressure." + .into(), + name: "Mk II Crowbar".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + } + .into(), + ), + ( + 324791548i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemMKIIDrill".into(), + prefab_hash: 324791548i32, + desc: "The ExMin Off-whirled Hand Drill has been a companion to Stationeers for decades. Essential for assembling and deconstructing various items and structures, regardless of gravity, pressure or temperature." + .into(), + name: "Mk II Drill".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ), + ( + 388774906i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemMKIIDuctTape".into(), + prefab_hash: 388774906i32, + desc: "In the distant past, one of Earth\'s great champions taught a generation of \'Fix-It People\' that duct tape was the answer to any problem. Stationeers have demonstrated that this is truth holds strong, so long as the problem is a damaged Eva Suit, Jetpack Basic, Space Helmet, or even a Solar Panel.\nTo use on yourself: put duct tape in your active hand, hold RIGHT MOUSE BUTTON to automatically repair damage." + .into(), + name: "Mk II Duct Tape".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + } + .into(), + ), + ( + -1875271296i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemMKIIMiningDrill".into(), + prefab_hash: -1875271296i32, + desc: "The handheld \'Topo\' tri-cone rotary mining drill was made for one thing: quick digging. Modeled on a classic Recurso zero-g design, it functions equally well in vacuum and atmosphere, with cemented carbide bits to increase resilience and bearing life, and reduce spalling. As Jenk Murtons once said, \'The Topo don\'t stopo.\' The MK II is more resistant to temperature and pressure." + .into(), + name: "Mk II Mining Drill".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Default".into()), (1u32, "Flatten".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ), + ( + -2015613246i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemMKIIScrewdriver".into(), + prefab_hash: -2015613246i32, + desc: "This standard issue frictional adherence adjustor is a top of the line, bi-rotational model with a columnated uni-grip. It\'s definitely not just a screwdriver. Use it for construction and deconstruction of certain kits, and setting values on logic units. The MK II is more resistant to temperature and pressure." + .into(), + name: "Mk II Screwdriver".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + } + .into(), + ), + ( + -178893251i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemMKIIWireCutters".into(), + prefab_hash: -178893251i32, + desc: "Wirecutters allow you to deconstruct various structures, as well as cross-lay cables when held in your non-active hand, and defuse explosives as needed. Wirecutters are stored in the Tool Belt, along with other essential tools." + .into(), + name: "Mk II Wire Cutters".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + } + .into(), + ), + ( + 1862001680i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemMKIIWrench".into(), + prefab_hash: 1862001680i32, + desc: "One of humanity\'s enduring contributions to the cosmos, the wrench represents the essence of our species. A simple, effective and spiritually barren tool, use it to build and deconstruct a variety of structures The MK II is more resistant to temperature and pressure." + .into(), + name: "Mk II Wrench".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + } + .into(), + ), + ( + 1399098998i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "ItemMarineBodyArmor".into(), + prefab_hash: 1399098998i32, + desc: "".into(), + name: "Marine Armor".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Suit, + sorting_class: SortingClass::Clothing, + }, + slots: vec![ + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + 1073631646i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "ItemMarineHelmet".into(), + prefab_hash: 1073631646i32, + desc: "".into(), + name: "Marine Helmet".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Helmet, + sorting_class: SortingClass::Clothing, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ), + ( + 1327248310i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemMilk".into(), + prefab_hash: 1327248310i32, + desc: "Full disclosure, it\'s not actually \'milk\', but an Agrizero-invented synthesis of 5ml Soy Oil and 5g Fern, delicately blended in the Chemistry Station. Surprisingly filling, it can be used as an ingredient to cook other food in the Microwave or Automated Oven. Think, Muffin." + .into(), + name: "Milk".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 100u32, + reagents: Some(vec![("Milk".into(), 1f64)].into_iter().collect()), + slot_class: Class::None, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + -1650383245i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "ItemMiningBackPack".into(), + prefab_hash: -1650383245i32, + desc: "".into(), + name: "Mining Backpack".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Back, + sorting_class: SortingClass::Clothing, + }, + slots: vec![ + SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : + "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ + : Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, + SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : + "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ + : Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, + SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : + "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ + : Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, + SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : + "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ + : Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, + SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : + "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ + : Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, + SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : + "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ + : Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + -676435305i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "ItemMiningBelt".into(), + prefab_hash: -676435305i32, + desc: "Originally developed by Recurso Espaciais for asteroid mining, the Stationeer\'s mining belt has room for two tools and eight ore stacks. While wearing the belt, ore is automatically stored there when mined. Volatile and temperature-dependent remain stable in the environmentally controlled unit." + .into(), + name: "Mining Belt".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Belt, + sorting_class: SortingClass::Clothing, + }, + slots: vec![ + SlotInfo { name : "Tool".into(), typ : Class::Tool }, SlotInfo { name + : "Tool".into(), typ : Class::Tool }, SlotInfo { name : "Ore".into(), + typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore + }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { + name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore" + .into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ : + Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, + SlotInfo { name : "Ore".into(), typ : Class::Ore } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + 1470787934i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemMiningBeltMKII".into(), + prefab_hash: 1470787934i32, + desc: "A larger and more capacious mining belt, the Mk II is similar to the Mining Belt, but has 13 slots instead of the basic 8, to increase the length of your mining trips. It also has space for two tools. " + .into(), + name: "Mining Belt MK II".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Belt, + sorting_class: SortingClass::Clothing, + }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (2u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (3u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (4u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (5u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (6u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (7u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (8u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (9u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (10u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (11u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (12u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (13u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (14u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![(LogicType::ReferenceId, MemoryAccess::Read)] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Tool".into(), typ : Class::Tool }, SlotInfo { name + : "Tool".into(), typ : Class::Tool }, SlotInfo { name : "Ore".into(), + typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore + }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { + name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore" + .into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ : + Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, + SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : + "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ + : Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, + SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : + "Ore".into(), typ : Class::Ore } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + 15829510i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemMiningCharge".into(), + prefab_hash: 15829510i32, + desc: "A low cost, high yield explosive with a 10 second timer." + .into(), + name: "Mining Charge".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 1055173191i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemMiningDrill".into(), + prefab_hash: 1055173191i32, + desc: "The handheld \'Topo\' tri-cone rotary mining drill was made for one thing: quick digging. Modeled on a classic Recurso zero-g design, it functions equally well in vacuum and atmosphere, with cemented carbide bits to increase resilience and bearing life, and reduce spalling. As Jenk Murtons once said, \'The Topo don\'t stopo.\'" + .into(), + name: "Mining Drill".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Default".into()), (1u32, "Flatten".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ), + ( + -1663349918i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemMiningDrillHeavy".into(), + prefab_hash: -1663349918i32, + desc: "Sometimes mining trips require something a little bigger to bring home the goods. This scaled up version of the Recurso \'Topo\' design Mining Drill can literally move mountains. The heavy mining drill will remove more ground and mine ore more quickly than the standard mining drill. The heavy mining drill is also resilient to temperature and pressure. So no matter what planet or extreme weather conditions may be present, the Recurso heavy mining drill will get the job done." + .into(), + name: "Mining Drill (Heavy)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Default".into()), (1u32, "Flatten".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ), + ( + 1258187304i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "ItemMiningDrillPneumatic".into(), + prefab_hash: 1258187304i32, + desc: "0.Default\n1.Flatten".into(), + name: "Pneumatic Mining Drill".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + slots: vec![ + SlotInfo { name : "Gas Canister".into(), typ : Class::GasCanister } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + 1467558064i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemMkIIToolbelt".into(), + prefab_hash: 1467558064i32, + desc: "A large, ten-slot tool belt with two extra generic slots for carrying whatever takes your fancy." + .into(), + name: "Tool Belt MK II".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Belt, + sorting_class: SortingClass::Clothing, + }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (2u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (3u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (4u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (5u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (6u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (7u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (8u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (9u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (10u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (11u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![(LogicType::ReferenceId, MemoryAccess::Read)] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Tool".into(), typ : Class::Tool }, SlotInfo { name + : "Tool".into(), typ : Class::Tool }, SlotInfo { name : "Tool" + .into(), typ : Class::Tool }, SlotInfo { name : "Tool".into(), typ : + Class::Tool }, SlotInfo { name : "Tool".into(), typ : Class::Tool }, + SlotInfo { name : "Tool".into(), typ : Class::Tool }, SlotInfo { name + : "Tool".into(), typ : Class::Tool }, SlotInfo { name : "Tool" + .into(), typ : Class::Tool }, SlotInfo { name : "Tool".into(), typ : + Class::Tool }, SlotInfo { name : "Tool".into(), typ : Class::Tool }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + -1864982322i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemMuffin".into(), + prefab_hash: -1864982322i32, + desc: "A delicious, semi-healthful snack, nothing comforts a Stationeer 800 million kilometers from home like a hand-made muffin." + .into(), + name: "Muffin".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + } + .into(), + ), + ( + 2044798572i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemMushroom".into(), + prefab_hash: 2044798572i32, + desc: "A tasty food item. Unlike normal plants, it consumes Oxygen and outputs Carbon Dioxide. Mushrooms will only mature at a moderate rate in darkness, and prolonged light will kill it." + .into(), + name: "Mushroom".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 20u32, + reagents: Some( + vec![("Mushroom".into(), 1f64)].into_iter().collect(), + ), + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 982514123i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemNVG".into(), + prefab_hash: 982514123i32, + desc: "".into(), + name: "Night Vision Goggles".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Glasses, + sorting_class: SortingClass::Clothing, + }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ), + ( + -1406385572i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemNickelIngot".into(), + prefab_hash: -1406385572i32, + desc: "".into(), + name: "Ingot (Nickel)".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 500u32, + reagents: Some(vec![("Nickel".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ingot, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 1830218956i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemNickelOre".into(), + prefab_hash: 1830218956i32, + desc: "Nickel is a chemical element with the symbol \"Ni\" and is a rare metal commonly used as a plating to prevent corrosion. Sought after by many Stationeers, Nickel is also commonly used to create several alloys." + .into(), + name: "Ore (Nickel)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 50u32, + reagents: Some(vec![("Nickel".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ore, + sorting_class: SortingClass::Ores, + }, + } + .into(), + ), + ( + -1499471529i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemNitrice".into(), + prefab_hash: -1499471529i32, + desc: "Nitrice is the nickname given to solid Nitrogen Ice, and found on many planets and moons in the Solar System. Given the inert nature of the Nitrogen it produces, the ice is useful when making breathable atmospheres with low flammability.\n\nHighly sensitive to temperature, nitrice will begin to melt as soon as it is mined, unless the temperature is below zero, or it is stored in the Mining Belt, Mining Belt MK II or devices like the Ice Crusher or Fridge Small." + .into(), + name: "Ice (Nitrice)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ices, + }, + } + .into(), + ), + ( + -1805394113i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemOxite".into(), + prefab_hash: -1805394113i32, + desc: "Oxite ice is largely composed of frozen Oxygen, and found on many planets in the Solar System. Highly valuable and sought after, not all planets a Stationeer visits will have some. \n\nHighly sensitive to temperature, oxite will begin to melt as soon as it is mined, unless the temperature is below zero, or it is stored in the Mining Belt, Mining Belt MK II or devices like the Ice Crusher or Fridge Small. When melting, oxite produces a mixture of Oxygen and Nitrogen." + .into(), + name: "Ice (Oxite)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ices, + }, + } + .into(), + ), + ( + 238631271i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPassiveVent".into(), + prefab_hash: 238631271i32, + desc: "This kit creates a Passive Vent among other variants." + .into(), + name: "Passive Vent".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -1397583760i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPassiveVentInsulated".into(), + prefab_hash: -1397583760i32, + desc: "".into(), + name: "Kit (Insulated Passive Vent)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 2042955224i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPeaceLily".into(), + prefab_hash: 2042955224i32, + desc: "A fetching lily with greater resistance to cold temperatures." + .into(), + name: "Peace Lily".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + -913649823i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPickaxe".into(), + prefab_hash: -913649823i32, + desc: "When the sun sets and the Mining Drill runs dead, its batteries drained and your Solar Panel cold and lifeless, the Autolathe empty, the way forward unclear, one thing holds back the endless night of defeat: the trusty pickaxe." + .into(), + name: "Pickaxe".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + } + .into(), + ), + ( + 1118069417i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPillHeal".into(), + prefab_hash: 1118069417i32, + desc: "Three centuries of pharmaceutical technology compressed into one small, easy to ingest pill: the Heal Pill, aka the Proton Pill, aka Mr Happy contains active enzymes, therapeutic proteins, modified microbial strains, and mammalian cell line analogues in a single-dose boost of high purity, efficacy, and potency that potentiates a swift parasympathetic immune response." + .into(), + name: "Pill (Medical)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + } + .into(), + ), + ( + 418958601i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPillStun".into(), + prefab_hash: 418958601i32, + desc: "Through rarely publicized, the existence of this pill is an open secret. For use when all else has failed, the Sayonara Suppository immobilizes and rapidly ends the average Stationeer. The delivery mode ensures that if a Stationeer chooses to take this pill, they really have to want it." + .into(), + name: "Pill (Paralysis)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + } + .into(), + ), + ( + -767597887i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPipeAnalyizer".into(), + prefab_hash: -767597887i32, + desc: "This kit creates a Pipe Analyzer." + .into(), + name: "Kit (Pipe Analyzer)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -38898376i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPipeCowl".into(), + prefab_hash: -38898376i32, + desc: "This creates a Pipe Cowl that can be placed on the end of pipes to expose them to the world atmospheres." + .into(), + name: "Pipe Cowl".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 20u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -1532448832i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPipeDigitalValve".into(), + prefab_hash: -1532448832i32, + desc: "This kit creates a Digital Valve." + .into(), + name: "Kit (Digital Valve)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -1134459463i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPipeGasMixer".into(), + prefab_hash: -1134459463i32, + desc: "This kit creates a Gas Mixer." + .into(), + name: "Kit (Gas Mixer)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -1751627006i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPipeHeater".into(), + prefab_hash: -1751627006i32, + desc: "Creates a Pipe Heater (Gas)." + .into(), + name: "Pipe Heater Kit (Gas)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 1366030599i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPipeIgniter".into(), + prefab_hash: 1366030599i32, + desc: "".into(), + name: "Kit (Pipe Igniter)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 391769637i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPipeLabel".into(), + prefab_hash: 391769637i32, + desc: "This kit creates a Pipe Label." + .into(), + name: "Kit (Pipe Label)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 20u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -906521320i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPipeLiquidRadiator".into(), + prefab_hash: -906521320i32, + desc: "This kit creates a Liquid Pipe Convection Radiator." + .into(), + name: "Kit (Liquid Radiator)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 1207939683i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPipeMeter".into(), + prefab_hash: 1207939683i32, + desc: "This kit creates a Pipe Meter." + .into(), + name: "Kit (Pipe Meter)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -1796655088i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPipeRadiator".into(), + prefab_hash: -1796655088i32, + desc: "This kit creates a Pipe Convection Radiator." + .into(), + name: "Kit (Radiator)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 799323450i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPipeValve".into(), + prefab_hash: 799323450i32, + desc: "This kit creates a Valve." + .into(), + name: "Kit (Pipe Valve)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -1766301997i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPipeVolumePump".into(), + prefab_hash: -1766301997i32, + desc: "This kit creates a Volume Pump." + .into(), + name: "Kit (Volume Pump)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -1108244510i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPlainCake".into(), + prefab_hash: -1108244510i32, + desc: "".into(), + name: "Cake".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + } + .into(), + ), + ( + -1159179557i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPlantEndothermic_Creative".into(), + prefab_hash: -1159179557i32, + desc: "".into(), + name: "Endothermic Plant Creative".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 851290561i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPlantEndothermic_Genepool1".into(), + prefab_hash: 851290561i32, + desc: "Agrizero\'s Winterspawn atmospheric bio-processor is a recent addition to their catalog of genespliced environmental decorations. Using ambient heat to split Water into Volatiles and Oxygen, the Winterspawn cools its surroundings, when supplied with sufficient Nitrogen. The alpha variant has a peak cooling and electrolysis capacity of 90Watts and is most efficient operating in air temperatures of 0 to 40 Degrees Celsius." + .into(), + name: "Winterspawn (Alpha variant)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + -1414203269i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPlantEndothermic_Genepool2".into(), + prefab_hash: -1414203269i32, + desc: "Agrizero\'s Winterspawn atmospheric bio-processor is a recent addition to their catalog of genespliced environmental decorations. Using ambient heat to split Water into Volatiles and Oxygen, the Winterspawn cools its surroundings when supplied with sufficient Nitrogen. The beta variant has a peak cooling and electrolysis capacity of 150Watts and is most efficient operating in air temperatures of 14 to 24 Degrees Celsius." + .into(), + name: "Winterspawn (Beta variant)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 173023800i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPlantSampler".into(), + prefab_hash: 173023800i32, + desc: "The Plant Sampler allows you to take a gene sample of a growing plant. The sampler can then be placed in the Plant Genetic Analyzer to attain and interpret the results." + .into(), + name: "Plant Sampler".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ), + ( + -532672323i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPlantSwitchGrass".into(), + prefab_hash: -532672323i32, + desc: "".into(), + name: "Switch Grass".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -1208890208i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPlantThermogenic_Creative".into(), + prefab_hash: -1208890208i32, + desc: "".into(), + name: "Thermogenic Plant Creative".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + -177792789i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPlantThermogenic_Genepool1".into(), + prefab_hash: -177792789i32, + desc: "The Agrizero\'s-created Hades Flower is the result of as dubious experiment to combine the allure of tropical plants with the comfort and homeliness of a heat pump. The plant breathes a 1:3 mix of Volatiles and Oxygen, and exhales heated Pollutant." + .into(), + name: "Hades Flower (Alpha strain)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 1819167057i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPlantThermogenic_Genepool2".into(), + prefab_hash: 1819167057i32, + desc: "The Agrizero\'s-created Hades Flower is the result of as dubious experiment to combine the allure of tropical plants with the comfort and homeliness of a heat pump. The plant breathes a 1:3 mix of Volatiles and Oxygen, and exhales heated Pollutant. The beta strain is notably more efficient than the earlier, more experimental alpha variant." + .into(), + name: "Hades Flower (Beta strain)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 662053345i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPlasticSheets".into(), + prefab_hash: 662053345i32, + desc: "".into(), + name: "Plastic Sheets".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 1929046963i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPotato".into(), + prefab_hash: 1929046963i32, + desc: " Potatoes are a simple, fast growing crop that can keep Stationeers alive in emergencies." + .into(), + name: "Potato".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 20u32, + reagents: Some(vec![("Potato".into(), 1f64)].into_iter().collect()), + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + -2111886401i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPotatoBaked".into(), + prefab_hash: -2111886401i32, + desc: "".into(), + name: "Baked Potato".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 1u32, + reagents: Some(vec![("Potato".into(), 1f64)].into_iter().collect()), + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + } + .into(), + ), + ( + 839924019i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPowerConnector".into(), + prefab_hash: 839924019i32, + desc: "This kit creates a Power Connector." + .into(), + name: "Kit (Power Connector)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 1277828144i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPumpkin".into(), + prefab_hash: 1277828144i32, + desc: "Pumpkins are a perennial plant, with both a long growth time, and a long time between harvests. Its low requirement for darkness allows for accelerated growing if provided with extra light." + .into(), + name: "Pumpkin".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 20u32, + reagents: Some(vec![("Pumpkin".into(), 1f64)].into_iter().collect()), + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 62768076i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPumpkinPie".into(), + prefab_hash: 62768076i32, + desc: "".into(), + name: "Pumpkin Pie".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + } + .into(), + ), + ( + 1277979876i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPumpkinSoup".into(), + prefab_hash: 1277979876i32, + desc: "Made using Cooked Pumpkin and an Empty Can in a Basic Packaging Machine or Advanced Packaging Machine. Fairly high in nutrition, canned food does not decay" + .into(), + name: "Pumpkin Soup".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + } + .into(), + ), + ( + -1616308158i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPureIce".into(), + prefab_hash: -1616308158i32, + desc: "A frozen chunk of pure Water" + .into(), + name: "Pure Ice Water".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ices, + }, + } + .into(), + ), + ( + -1251009404i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPureIceCarbonDioxide".into(), + prefab_hash: -1251009404i32, + desc: "A frozen chunk of pure Carbon Dioxide" + .into(), + name: "Pure Ice Carbon Dioxide".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ices, + }, + } + .into(), + ), + ( + 944530361i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPureIceHydrogen".into(), + prefab_hash: 944530361i32, + desc: "A frozen chunk of pure Hydrogen" + .into(), + name: "Pure Ice Hydrogen".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ices, + }, + } + .into(), + ), + ( + -1715945725i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPureIceLiquidCarbonDioxide".into(), + prefab_hash: -1715945725i32, + desc: "A frozen chunk of pure Liquid Carbon Dioxide" + .into(), + name: "Pure Ice Liquid Carbon Dioxide".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ices, + }, + } + .into(), + ), + ( + -1044933269i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPureIceLiquidHydrogen".into(), + prefab_hash: -1044933269i32, + desc: "A frozen chunk of pure Liquid Hydrogen" + .into(), + name: "Pure Ice Liquid Hydrogen".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ices, + }, + } + .into(), + ), + ( + 1674576569i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPureIceLiquidNitrogen".into(), + prefab_hash: 1674576569i32, + desc: "A frozen chunk of pure Liquid Nitrogen" + .into(), + name: "Pure Ice Liquid Nitrogen".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ices, + }, + } + .into(), + ), + ( + 1428477399i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPureIceLiquidNitrous".into(), + prefab_hash: 1428477399i32, + desc: "A frozen chunk of pure Liquid Nitrous Oxide" + .into(), + name: "Pure Ice Liquid Nitrous".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ices, + }, + } + .into(), + ), + ( + 541621589i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPureIceLiquidOxygen".into(), + prefab_hash: 541621589i32, + desc: "A frozen chunk of pure Liquid Oxygen" + .into(), + name: "Pure Ice Liquid Oxygen".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ices, + }, + } + .into(), + ), + ( + -1748926678i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPureIceLiquidPollutant".into(), + prefab_hash: -1748926678i32, + desc: "A frozen chunk of pure Liquid Pollutant" + .into(), + name: "Pure Ice Liquid Pollutant".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ices, + }, + } + .into(), + ), + ( + -1306628937i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPureIceLiquidVolatiles".into(), + prefab_hash: -1306628937i32, + desc: "A frozen chunk of pure Liquid Volatiles" + .into(), + name: "Pure Ice Liquid Volatiles".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ices, + }, + } + .into(), + ), + ( + -1708395413i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPureIceNitrogen".into(), + prefab_hash: -1708395413i32, + desc: "A frozen chunk of pure Nitrogen" + .into(), + name: "Pure Ice Nitrogen".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ices, + }, + } + .into(), + ), + ( + 386754635i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPureIceNitrous".into(), + prefab_hash: 386754635i32, + desc: "A frozen chunk of pure Nitrous Oxide" + .into(), + name: "Pure Ice NitrousOxide".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ices, + }, + } + .into(), + ), + ( + -1150448260i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPureIceOxygen".into(), + prefab_hash: -1150448260i32, + desc: "A frozen chunk of pure Oxygen" + .into(), + name: "Pure Ice Oxygen".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ices, + }, + } + .into(), + ), + ( + -1755356i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPureIcePollutant".into(), + prefab_hash: -1755356i32, + desc: "A frozen chunk of pure Pollutant" + .into(), + name: "Pure Ice Pollutant".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ices, + }, + } + .into(), + ), + ( + -2073202179i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPureIcePollutedWater".into(), + prefab_hash: -2073202179i32, + desc: "A frozen chunk of Polluted Water" + .into(), + name: "Pure Ice Polluted Water".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ices, + }, + } + .into(), + ), + ( + -874791066i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPureIceSteam".into(), + prefab_hash: -874791066i32, + desc: "A frozen chunk of pure Steam" + .into(), + name: "Pure Ice Steam".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ices, + }, + } + .into(), + ), + ( + -633723719i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemPureIceVolatiles".into(), + prefab_hash: -633723719i32, + desc: "A frozen chunk of pure Volatiles" + .into(), + name: "Pure Ice Volatiles".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ices, + }, + } + .into(), + ), + ( + 495305053i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemRTG".into(), + prefab_hash: 495305053i32, + desc: "This kit creates that miracle of modern science, a Kit (Creative RTG)." + .into(), + name: "Kit (Creative RTG)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 1817645803i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemRTGSurvival".into(), + prefab_hash: 1817645803i32, + desc: "This kit creates a Kit (RTG)." + .into(), + name: "Kit (RTG)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -1641500434i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemReagentMix".into(), + prefab_hash: -1641500434i32, + desc: "Reagent mix is pure potential. A slurry of undifferentiated ores, it is output by the Recycler and can be fed into the Centrifuge to separate and recover the individual materials. Reagent mix is also output by the Furnace when the current contents are ejected without smelting a specific ingot." + .into(), + name: "Reagent Mix".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ores, + }, + } + .into(), + ), + ( + 678483886i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemRemoteDetonator".into(), + prefab_hash: 678483886i32, + desc: "".into(), + name: "Remote Detonator".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::ReferenceId, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ), + ( + -1773192190i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "ItemReusableFireExtinguisher".into(), + prefab_hash: -1773192190i32, + desc: "Requires a canister filled with any inert liquid to opperate." + .into(), + name: "Fire Extinguisher (Reusable)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + slots: vec![ + SlotInfo { name : "Liquid Canister".into(), typ : + Class::LiquidCanister } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + 658916791i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemRice".into(), + prefab_hash: 658916791i32, + desc: "Rice grows at a moderate rate as long as its supplied with plenty of water. Being more dependant on water, rice plants can easily die during periods of drought." + .into(), + name: "Rice".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 50u32, + reagents: Some(vec![("Rice".into(), 1f64)].into_iter().collect()), + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 871811564i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemRoadFlare".into(), + prefab_hash: 871811564i32, + desc: "Designed to burn anywhere in the Solar System, the EZC magnesium fusee supplies its own oxygen to fuel combustion, and dispel the eternal night of space." + .into(), + name: "Road Flare".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 20u32, + reagents: None, + slot_class: Class::Flare, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 2109945337i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemRocketMiningDrillHead".into(), + prefab_hash: 2109945337i32, + desc: "Replaceable drill head for Rocket Miner" + .into(), + name: "Mining-Drill Head (Basic)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::DrillHead, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 1530764483i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemRocketMiningDrillHeadDurable".into(), + prefab_hash: 1530764483i32, + desc: "".into(), + name: "Mining-Drill Head (Durable)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::DrillHead, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 653461728i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemRocketMiningDrillHeadHighSpeedIce".into(), + prefab_hash: 653461728i32, + desc: "".into(), + name: "Mining-Drill Head (High Speed Ice)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::DrillHead, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 1440678625i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemRocketMiningDrillHeadHighSpeedMineral".into(), + prefab_hash: 1440678625i32, + desc: "".into(), + name: "Mining-Drill Head (High Speed Mineral)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::DrillHead, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -380904592i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemRocketMiningDrillHeadIce".into(), + prefab_hash: -380904592i32, + desc: "".into(), + name: "Mining-Drill Head (Ice)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::DrillHead, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -684020753i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemRocketMiningDrillHeadLongTerm".into(), + prefab_hash: -684020753i32, + desc: "".into(), + name: "Mining-Drill Head (Long Term)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::DrillHead, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 1083675581i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemRocketMiningDrillHeadMineral".into(), + prefab_hash: 1083675581i32, + desc: "".into(), + name: "Mining-Drill Head (Mineral)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::DrillHead, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -1198702771i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemRocketScanningHead".into(), + prefab_hash: -1198702771i32, + desc: "".into(), + name: "Rocket Scanner Head".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::ScanningHead, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 1661270830i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemScanner".into(), + prefab_hash: 1661270830i32, + desc: "A mysterious piece of technology, rumored to have Zrillian origins." + .into(), + name: "Handheld Scanner".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 687940869i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemScrewdriver".into(), + prefab_hash: 687940869i32, + desc: "This standard issue frictional adherence adjustor is a top of the line, bi-rotational model with a columnated uni-grip. It\'s definitely not just a screwdriver. Use it for construction and deconstruction of certain kits, and setting values on logic units." + .into(), + name: "Screwdriver".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + } + .into(), + ), + ( + -1981101032i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSecurityCamera".into(), + prefab_hash: -1981101032i32, + desc: "Security cameras can be paired with a Motion Sensor, then connected to a Console fitted with a Camera Display for that \'always watched\' feeling." + .into(), + name: "Security Camera".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -1176140051i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSensorLenses".into(), + prefab_hash: -1176140051i32, + desc: "These Norsec glasses might not be the most fashionable thing, but when a Sensor Processing Unit (Ore Scanner) is inserted, Stationeers can use these handy glasses to x-ray the ground and find ores that are hidden beneath the surface." + .into(), + name: "Sensor Lenses".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Glasses, + sorting_class: SortingClass::Clothing, + }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Battery".into(), typ : Class::Battery }, SlotInfo + { name : "Sensor Processing Unit".into(), typ : + Class::SensorProcessingUnit } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + -1154200014i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSensorProcessingUnitCelestialScanner".into(), + prefab_hash: -1154200014i32, + desc: "".into(), + name: "Sensor Processing Unit (Celestial Scanner)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::SensorProcessingUnit, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -1730464583i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSensorProcessingUnitMesonScanner".into(), + prefab_hash: -1730464583i32, + desc: "The T-Ray Scanner Sensor Processing Unit can be inserted into the Sensor Lenses to show an overlay of pipes and cables. This can be useful when building behind walls or other structures." + .into(), + name: "Sensor Processing Unit (T-Ray Scanner)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::SensorProcessingUnit, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -1219128491i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSensorProcessingUnitOreScanner".into(), + prefab_hash: -1219128491i32, + desc: "The Sensor Processing unit can be inserted into Sensor Lenses to reveal underground minerals in a HUD." + .into(), + name: "Sensor Processing Unit (Ore Scanner)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::SensorProcessingUnit, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -290196476i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSiliconIngot".into(), + prefab_hash: -290196476i32, + desc: "".into(), + name: "Ingot (Silicon)".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 500u32, + reagents: Some(vec![("Silicon".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ingot, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 1103972403i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSiliconOre".into(), + prefab_hash: 1103972403i32, + desc: "Silicon is a chemical element with the symbol \"Si\" and is one of the most useful elements to Stationeers. Readily available throughout the universe, silicon is used in a range of alloys, glass, plastics and various electronic components a Stationeer may need to complete their mission." + .into(), + name: "Ore (Silicon)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 50u32, + reagents: Some(vec![("Silicon".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ore, + sorting_class: SortingClass::Ores, + }, + } + .into(), + ), + ( + -929742000i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSilverIngot".into(), + prefab_hash: -929742000i32, + desc: "".into(), + name: "Ingot (Silver)".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 500u32, + reagents: Some(vec![("Silver".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ingot, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + -916518678i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSilverOre".into(), + prefab_hash: -916518678i32, + desc: "Silver is a chemical element with the symbol \"Ag\". Valued by many Stationeers for its attractive luster and sheen, it is also used in a variety of electronics components and alloys." + .into(), + name: "Ore (Silver)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 50u32, + reagents: Some(vec![("Silver".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ore, + sorting_class: SortingClass::Ores, + }, + } + .into(), + ), + ( + -82508479i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSolderIngot".into(), + prefab_hash: -82508479i32, + desc: "".into(), + name: "Ingot (Solder)".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 500u32, + reagents: Some(vec![("Solder".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ingot, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + -365253871i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSolidFuel".into(), + prefab_hash: -365253871i32, + desc: "".into(), + name: "Solid Fuel (Hydrocarbon)".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 500u32, + reagents: Some( + vec![("Hydrocarbon".into(), 1f64)].into_iter().collect(), + ), + slot_class: Class::Ore, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + -1883441704i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSoundCartridgeBass".into(), + prefab_hash: -1883441704i32, + desc: "".into(), + name: "Sound Cartridge Bass".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::SoundCartridge, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -1901500508i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSoundCartridgeDrums".into(), + prefab_hash: -1901500508i32, + desc: "".into(), + name: "Sound Cartridge Drums".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::SoundCartridge, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -1174735962i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSoundCartridgeLeads".into(), + prefab_hash: -1174735962i32, + desc: "".into(), + name: "Sound Cartridge Leads".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::SoundCartridge, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -1971419310i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSoundCartridgeSynth".into(), + prefab_hash: -1971419310i32, + desc: "".into(), + name: "Sound Cartridge Synth".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::SoundCartridge, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 1387403148i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSoyOil".into(), + prefab_hash: 1387403148i32, + desc: "".into(), + name: "Soy Oil".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 100u32, + reagents: Some(vec![("Oil".into(), 1f64)].into_iter().collect()), + slot_class: Class::None, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 1924673028i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSoybean".into(), + prefab_hash: 1924673028i32, + desc: " Soybeans grow at a moderate rate, but require atmospheric Nitrogen to grow. Its main use is to create Soy Oil" + .into(), + name: "Soybean".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 100u32, + reagents: Some(vec![("Soy".into(), 1f64)].into_iter().collect()), + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + -1737666461i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSpaceCleaner".into(), + prefab_hash: -1737666461i32, + desc: "There was a time when humanity really wanted to keep space clean. That time has passed." + .into(), + name: "Space Cleaner".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 714830451i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSpaceHelmet".into(), + prefab_hash: 714830451i32, + desc: "The basic space helmet insulates Stationeers against everything from hard vacuum to weird cooking smells. Providing a pressure-controlled, breathable atmosphere, it comes with a built-in light powered by your Eva Suit Battery Cell (Small).\nIt also incorporates a lock/unlock feature to avoid accidental opening, as well as a flush function to expel and replace the internal atmosphere. If damaged, use Duct Tape to fix it, or paint it any color you like using the Paint Mixer." + .into(), + name: "Space Helmet".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Helmet, + sorting_class: SortingClass::Clothing, + }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Pressure, + MemoryAccess::Read), (LogicType::Temperature, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::TotalMoles, + MemoryAccess::Read), (LogicType::Volume, + MemoryAccess::ReadWrite), (LogicType::RatioNitrousOxide, + MemoryAccess::Read), (LogicType::Combustion, MemoryAccess::Read), + (LogicType::Flush, MemoryAccess::Write), (LogicType::SoundAlert, + MemoryAccess::ReadWrite), (LogicType::RatioLiquidNitrogen, + MemoryAccess::Read), (LogicType::RatioLiquidOxygen, + MemoryAccess::Read), (LogicType::RatioLiquidVolatiles, + MemoryAccess::Read), (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + } + .into(), + ), + ( + 675686937i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSpaceIce".into(), + prefab_hash: 675686937i32, + desc: "".into(), + name: "Space Ice".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ores, + }, + } + .into(), + ), + ( + 2131916219i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSpaceOre".into(), + prefab_hash: 2131916219i32, + desc: "Ore mined from asteroids via the Rocket Miner which then must be processed in the Centrifuge, or Combustion Centrifuge to produce smeltable ores." + .into(), + name: "Dirty Ore".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 100u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ores, + }, + } + .into(), + ), + ( + -1260618380i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSpacepack".into(), + prefab_hash: -1260618380i32, + desc: "The basic CHAC spacepack isn\'t \'technically\' a jetpack, it\'s a gas thruster. It can be powered by any gas, so long as the internal pressure of the canister is higher than the ambient external pressure. If the external pressure is greater, the spacepack will not function.\nIndispensable for building, mining and general movement, it has ten storage slots and lets Stationeers fly at 3m/s, compared to the more powerful Jetpack Basic or Hardsuit Jetpack. Adjusting the thrust value alters your rate of acceleration, while activating the stablizer causes the spacepack to hover when a given height is reached.\nUSE: \'J\' to activate; \'space\' to fly up; \'left ctrl\' to descend; and \'WASD\' to move." + .into(), + name: "Spacepack".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Back, + sorting_class: SortingClass::Clothing, + }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Pressure, MemoryAccess::Read), + (LogicSlotType::Temperature, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (2u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (3u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (4u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (5u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (6u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (7u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (8u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (9u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Propellant".into(), typ : Class::GasCanister }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + -688107795i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSprayCanBlack".into(), + prefab_hash: -688107795i32, + desc: "Go classic, clandestine or just plain Gothic with black paint, which can be applied to most items. Each can has 20 uses." + .into(), + name: "Spray Paint (Black)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Bottle, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -498464883i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSprayCanBlue".into(), + prefab_hash: -498464883i32, + desc: "What kind of a color is blue? The kind of of color that says, \'Hey, what about me?\'" + .into(), + name: "Spray Paint (Blue)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Bottle, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 845176977i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSprayCanBrown".into(), + prefab_hash: 845176977i32, + desc: "In more artistic Stationeers circles, the absence of brown is often lamented, but seldom changed." + .into(), + name: "Spray Paint (Brown)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Bottle, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -1880941852i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSprayCanGreen".into(), + prefab_hash: -1880941852i32, + desc: "Green is the color of life, and longing. Paradoxically, it\'s also the color of envy, and tolerance. It denotes sickness, youth, and wealth. But really, it\'s just what light does at around 500 billionths of a meter." + .into(), + name: "Spray Paint (Green)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Bottle, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -1645266981i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSprayCanGrey".into(), + prefab_hash: -1645266981i32, + desc: "Arguably the most popular color in the universe, grey was invented so designers had something to do." + .into(), + name: "Spray Paint (Grey)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Bottle, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 1918456047i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSprayCanKhaki".into(), + prefab_hash: 1918456047i32, + desc: "Not so much a single color, as a category of boredom, khaki is the pigmentation equivalent of a mild depressive episode." + .into(), + name: "Spray Paint (Khaki)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Bottle, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -158007629i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSprayCanOrange".into(), + prefab_hash: -158007629i32, + desc: "Orange is fun, but also suggestive of hazards. Sitting proudly in the middle of the visual spectrum, it has nothing to prove." + .into(), + name: "Spray Paint (Orange)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Bottle, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 1344257263i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSprayCanPink".into(), + prefab_hash: 1344257263i32, + desc: "With the invention of enduring chemical dyes, the 20th century bestowed associations with innocence and tenderness upon this pale tint of red. Yet classically, it was the color of seduction and eroticism. Things change." + .into(), + name: "Spray Paint (Pink)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Bottle, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 30686509i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSprayCanPurple".into(), + prefab_hash: 30686509i32, + desc: "Purple is a curious color. You need to be careful with purple. It can be very good, or go horribly, horribly wrong." + .into(), + name: "Spray Paint (Purple)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Bottle, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 1514393921i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSprayCanRed".into(), + prefab_hash: 1514393921i32, + desc: "The king of colors, red is perhaps the defining tone of the universe. Linked to blood, royalty, fire and damnation, it is the chromatic expression of power." + .into(), + name: "Spray Paint (Red)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Bottle, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 498481505i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSprayCanWhite".into(), + prefab_hash: 498481505i32, + desc: "White looks clean, sharp and nice. But Stationeering can be a dirty job. White tends to scuff." + .into(), + name: "Spray Paint (White)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Bottle, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 995468116i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSprayCanYellow".into(), + prefab_hash: 995468116i32, + desc: "A caricature of light itself, yellow lacks the self-confidence of red, or the swagger of purple. It\'s less fun than orange, but less emotionally limp than khaki. It\'s hard to know when yellow is appropriate, but it persists as a primary color regardless. Suggesting that yellow gonna yellow, no matter what anyone thinks." + .into(), + name: "Spray Paint (Yellow)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Bottle, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 1289723966i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSprayGun".into(), + prefab_hash: 1289723966i32, + desc: "Use with Spray cans in the Spray Can to paint structures, cables and pipes. Much more efficient and faster than doing it with individual spray cans." + .into(), + name: "Spray Gun".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + slots: vec![SlotInfo { name : "Spray Can".into(), typ : Class::Bottle }] + .into_iter() + .collect(), + } + .into(), + ), + ( + -1448105779i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSteelFrames".into(), + prefab_hash: -1448105779i32, + desc: "An advanced and stronger version of Iron Frames, steel frames are placed by right-clicking. To complete construction, use Steel Sheets and a Welding Torch in your active hand." + .into(), + name: "Steel Frames".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 30u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -654790771i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSteelIngot".into(), + prefab_hash: -654790771i32, + desc: "Steel ingots are a metal alloy, crafted in a Furnace by smelting Ore (Iron) and Ore (Coal) at a ratio of 3:1.\nIt may not be elegant, but Ice (Oxite) and Ice (Volatiles) can be combined at a ratio of 1:2 in a furnace to create the necessary gas mixture for smelting." + .into(), + name: "Ingot (Steel)".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 500u32, + reagents: Some(vec![("Steel".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ingot, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 38555961i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSteelSheets".into(), + prefab_hash: 38555961i32, + desc: "An advanced building material, Ingot (Steel) sheets are used when constructing a Steel Frame and several other wall types." + .into(), + name: "Steel Sheets".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + -2038663432i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemStelliteGlassSheets".into(), + prefab_hash: -2038663432i32, + desc: "A stronger glass substitute.".into(), + name: "Stellite Glass Sheets".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + -1897868623i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemStelliteIngot".into(), + prefab_hash: -1897868623i32, + desc: "".into(), + name: "Ingot (Stellite)".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 500u32, + reagents: Some( + vec![("Stellite".into(), 1f64)].into_iter().collect(), + ), + slot_class: Class::Ingot, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 2111910840i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSugar".into(), + prefab_hash: 2111910840i32, + desc: "".into(), + name: "Sugar".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 500u32, + reagents: Some(vec![("Sugar".into(), 10f64)].into_iter().collect()), + slot_class: Class::None, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + -1335056202i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSugarCane".into(), + prefab_hash: -1335056202i32, + desc: "".into(), + name: "Sugarcane".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 100u32, + reagents: Some(vec![("Sugar".into(), 1f64)].into_iter().collect()), + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + -1274308304i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemSuitModCryogenicUpgrade".into(), + prefab_hash: -1274308304i32, + desc: "Enables suits with basic cooling functionality to work with cryogenic liquid." + .into(), + name: "Cryogenic Suit Upgrade".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::SuitMod, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -229808600i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemTablet".into(), + prefab_hash: -229808600i32, + desc: "The Xigo handheld \'Padi\' tablet is an all-purpose data platform, provided as standard issue to all Stationeers. A dynamic multi-tool that accepts a range of cartridges, the Padi becomes an Atmos Analyzer or Tracker, Medical Analyzer, Ore Scanner, eReader, and various other functions." + .into(), + name: "Handheld Tablet".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::ReferenceId, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Battery".into(), typ : Class::Battery }, SlotInfo + { name : "Cartridge".into(), typ : Class::Cartridge } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + 111280987i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemTerrainManipulator".into(), + prefab_hash: 111280987i32, + desc: "0.Mode0\n1.Mode1".into(), + name: "Terrain Manipulator".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Default, + }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Battery".into(), typ : Class::Battery }, SlotInfo + { name : "Dirt Canister".into(), typ : Class::Ore } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + -998592080i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemTomato".into(), + prefab_hash: -998592080i32, + desc: "Tomato plants are perennial, and will produce multiple harvests without needing to be replanted. Once the plant is mature, it will fruit at a moderate pace." + .into(), + name: "Tomato".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 20u32, + reagents: Some(vec![("Tomato".into(), 1f64)].into_iter().collect()), + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 688734890i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemTomatoSoup".into(), + prefab_hash: 688734890i32, + desc: "Made using Cooked Tomatos and an Empty Can in a Basic Packaging Machine or Advanced Packaging Machine." + .into(), + name: "Tomato Soup".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Food, + }, + } + .into(), + ), + ( + -355127880i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "ItemToolBelt".into(), + prefab_hash: -355127880i32, + desc: "If there\'s one piece of equipment that embodies Stationeer life above all else, it\'s the humble toolbelt (Editor\'s note: a recent ODA survey of iconic Stationeer equipment also rated the smoking, toxic ruins of an over-pressurized Furnace lying amid the charred remains of your latest base very highly).\nDesigned to meet the most strict-ish ODA safety standards, the toolbelt\'s eight slots hold one thing: tools, and Cable Coil. Not to be confused with the Mining Belt." + .into(), + name: "Tool Belt".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Belt, + sorting_class: SortingClass::Clothing, + }, + slots: vec![ + SlotInfo { name : "Tool".into(), typ : Class::Tool }, SlotInfo { name + : "Tool".into(), typ : Class::Tool }, SlotInfo { name : "Tool" + .into(), typ : Class::Tool }, SlotInfo { name : "Tool".into(), typ : + Class::Tool }, SlotInfo { name : "Tool".into(), typ : Class::Tool }, + SlotInfo { name : "Tool".into(), typ : Class::Tool }, SlotInfo { name + : "Tool".into(), typ : Class::Tool }, SlotInfo { name : "Tool" + .into(), typ : Class::Tool } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + -800947386i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemTropicalPlant".into(), + prefab_hash: -800947386i32, + desc: "An anthurium, evolved in the jungles of South America, which will tolerate higher temperatures than most plants." + .into(), + name: "Tropical Lily".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + -1516581844i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemUraniumOre".into(), + prefab_hash: -1516581844i32, + desc: "In 1934, Enrico Fermi noticed that bombarding uranium with neutrons produced a burst of beta rays, and a new material. This process was named \'nuclear fission\', and resulted in cheap energy, the Cold War, and countless thousand deaths. While reasonably common throughout the Solar System, Stationeers are wary of the material." + .into(), + name: "Ore (Uranium)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 50u32, + reagents: Some(vec![("Uranium".into(), 1f64)].into_iter().collect()), + slot_class: Class::Ore, + sorting_class: SortingClass::Ores, + }, + } + .into(), + ), + ( + 1253102035i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemVolatiles".into(), + prefab_hash: 1253102035i32, + desc: "An extremely reactive ice with numerous hydrocarbons trapped inside. For simplicity\'s sake, these are often displayed as H2 by devices like the Atmos Analyzer.\n \nVolatiles combust in a 2:1 ratio with Oxygen, creating Carbon Dioxide and pollutants. However when catalysed via devices such as the H2 Combustor in the presence of Oxygen, they produce\n Steam and heat with a modicum of Carbon Dioxide and Pollutant due to the autoignition of the volatiles in the chamber. Along with Oxygen, volatiles gas is also the major component of fuel for such devices as the Welding Torch.\n" + .into(), + name: "Ice (Volatiles)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 50u32, + reagents: None, + slot_class: Class::Ore, + sorting_class: SortingClass::Ices, + }, + } + .into(), + ), + ( + -1567752627i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWallCooler".into(), + prefab_hash: -1567752627i32, + desc: "This kit creates a Wall Cooler." + .into(), + name: "Kit (Wall Cooler)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 1880134612i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWallHeater".into(), + prefab_hash: 1880134612i32, + desc: "This kit creates a Kit (Wall Heater)." + .into(), + name: "Kit (Wall Heater)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 1108423476i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWallLight".into(), + prefab_hash: 1108423476i32, + desc: "This kit creates any one of ten Kit (Lights) variants." + .into(), + name: "Kit (Lights)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 156348098i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWaspaloyIngot".into(), + prefab_hash: 156348098i32, + desc: "".into(), + name: "Ingot (Waspaloy)".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 500u32, + reagents: Some( + vec![("Waspaloy".into(), 1f64)].into_iter().collect(), + ), + slot_class: Class::Ingot, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 107741229i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWaterBottle".into(), + prefab_hash: 107741229i32, + desc: "Delicious and pure H20, refined from local sources as varied as Venusian ice and trans-Solar comets. Empty bottles can be refilled using the Water Bottle Filler." + .into(), + name: "Water Bottle".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::LiquidBottle, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 309693520i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWaterPipeDigitalValve".into(), + prefab_hash: 309693520i32, + desc: "".into(), + name: "Kit (Liquid Digital Valve)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -90898877i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWaterPipeMeter".into(), + prefab_hash: -90898877i32, + desc: "".into(), + name: "Kit (Liquid Pipe Meter)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -1721846327i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWaterWallCooler".into(), + prefab_hash: -1721846327i32, + desc: "".into(), + name: "Kit (Liquid Wall Cooler)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 5u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -598730959i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWearLamp".into(), + prefab_hash: -598730959i32, + desc: "".into(), + name: "Headlamp".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Helmet, + sorting_class: SortingClass::Clothing, + }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ), + ( + -2066892079i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWeldingTorch".into(), + prefab_hash: -2066892079i32, + desc: "Stored in the standard issue Stationeers Tool Belt, the Arlite welding torch is used to construct a range of essential structures.\nAn upgraded version of the classic \'Zairo\' model first manufactured by ExMin for modular space habitat assembly, the Arlite is powered by a single Canister (Fuel) and designed to function equally well in deep space and deep gravity wells." + .into(), + name: "Welding Torch".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + slots: vec![ + SlotInfo { name : "Gas Canister".into(), typ : Class::GasCanister } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + -1057658015i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWheat".into(), + prefab_hash: -1057658015i32, + desc: "A classical symbol of growth and new life, wheat takes a moderate time to grow. Its main use is to create flour using the Reagent Processor." + .into(), + name: "Wheat".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: true, + max_quantity: 100u32, + reagents: Some(vec![("Carbon".into(), 1f64)].into_iter().collect()), + slot_class: Class::Plant, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 1535854074i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWireCutters".into(), + prefab_hash: 1535854074i32, + desc: "Wirecutters allow you to deconstruct various structures, as well as cross-lay cables when held in your non-active hand, and defuse explosives as needed. Wirecutters are stored in the Tool Belt, along with other essential tools." + .into(), + name: "Wire Cutters".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + } + .into(), + ), + ( + -504717121i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWirelessBatteryCellExtraLarge".into(), + prefab_hash: -504717121i32, + desc: "0.Empty\n1.Critical\n2.VeryLow\n3.Low\n4.Medium\n5.High\n6.Full" + .into(), + name: "Wireless Battery Cell Extra Large".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Battery, + sorting_class: SortingClass::Default, + }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Mode, MemoryAccess::ReadWrite), + (LogicType::ReferenceId, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Empty".into()), (1u32, "Critical".into()), (2u32, + "VeryLow".into()), (3u32, "Low".into()), (4u32, "Medium" + .into()), (5u32, "High".into()), (6u32, "Full".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + } + .into(), + ), + ( + -1826023284i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWreckageAirConditioner1".into(), + prefab_hash: -1826023284i32, + desc: "".into(), + name: "Wreckage Air Conditioner".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Wreckage, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 169888054i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWreckageAirConditioner2".into(), + prefab_hash: 169888054i32, + desc: "".into(), + name: "Wreckage Air Conditioner".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Wreckage, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -310178617i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWreckageHydroponicsTray1".into(), + prefab_hash: -310178617i32, + desc: "".into(), + name: "Wreckage Hydroponics Tray".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Wreckage, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -997763i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWreckageLargeExtendableRadiator01".into(), + prefab_hash: -997763i32, + desc: "".into(), + name: "Wreckage Large Extendable Radiator".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Wreckage, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 391453348i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWreckageStructureRTG1".into(), + prefab_hash: 391453348i32, + desc: "".into(), + name: "Wreckage Structure RTG".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Wreckage, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -834664349i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWreckageStructureWeatherStation001".into(), + prefab_hash: -834664349i32, + desc: "".into(), + name: "Wreckage Structure Weather Station".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Wreckage, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 1464424921i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWreckageStructureWeatherStation002".into(), + prefab_hash: 1464424921i32, + desc: "".into(), + name: "Wreckage Structure Weather Station".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Wreckage, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 542009679i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWreckageStructureWeatherStation003".into(), + prefab_hash: 542009679i32, + desc: "".into(), + name: "Wreckage Structure Weather Station".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Wreckage, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -1104478996i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWreckageStructureWeatherStation004".into(), + prefab_hash: -1104478996i32, + desc: "".into(), + name: "Wreckage Structure Weather Station".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Wreckage, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -919745414i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWreckageStructureWeatherStation005".into(), + prefab_hash: -919745414i32, + desc: "".into(), + name: "Wreckage Structure Weather Station".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Wreckage, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 1344576960i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWreckageStructureWeatherStation006".into(), + prefab_hash: 1344576960i32, + desc: "".into(), + name: "Wreckage Structure Weather Station".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Wreckage, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 656649558i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWreckageStructureWeatherStation007".into(), + prefab_hash: 656649558i32, + desc: "".into(), + name: "Wreckage Structure Weather Station".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Wreckage, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -1214467897i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWreckageStructureWeatherStation008".into(), + prefab_hash: -1214467897i32, + desc: "".into(), + name: "Wreckage Structure Weather Station".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Wreckage, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -1662394403i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWreckageTurbineGenerator1".into(), + prefab_hash: -1662394403i32, + desc: "".into(), + name: "Wreckage Turbine Generator".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Wreckage, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 98602599i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWreckageTurbineGenerator2".into(), + prefab_hash: 98602599i32, + desc: "".into(), + name: "Wreckage Turbine Generator".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Wreckage, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 1927790321i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWreckageTurbineGenerator3".into(), + prefab_hash: 1927790321i32, + desc: "".into(), + name: "Wreckage Turbine Generator".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Wreckage, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -1682930158i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWreckageWallCooler1".into(), + prefab_hash: -1682930158i32, + desc: "".into(), + name: "Wreckage Wall Cooler".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Wreckage, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 45733800i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWreckageWallCooler2".into(), + prefab_hash: 45733800i32, + desc: "".into(), + name: "Wreckage Wall Cooler".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Wreckage, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -1886261558i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ItemWrench".into(), + prefab_hash: -1886261558i32, + desc: "One of humanity\'s enduring contributions to the cosmos, the wrench represents the essence of our species. A simple, effective and spiritually barren tool, use it to build and deconstruct a variety of structures" + .into(), + name: "Wrench".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Tool, + sorting_class: SortingClass::Tools, + }, + } + .into(), + ), + ( + 1932952652i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "KitSDBSilo".into(), + prefab_hash: 1932952652i32, + desc: "This kit creates a SDB Silo." + .into(), + name: "Kit (SDB Silo)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + 231903234i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "KitStructureCombustionCentrifuge".into(), + prefab_hash: 231903234i32, + desc: "".into(), + name: "Kit (Combustion Centrifuge)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Kits, + }, + } + .into(), + ), + ( + -1427415566i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "KitchenTableShort".into(), + prefab_hash: -1427415566i32, + desc: "".into(), + name: "Kitchen Table (Short)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -78099334i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "KitchenTableSimpleShort".into(), + prefab_hash: -78099334i32, + desc: "".into(), + name: "Kitchen Table (Simple Short)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -1068629349i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "KitchenTableSimpleTall".into(), + prefab_hash: -1068629349i32, + desc: "".into(), + name: "Kitchen Table (Simple Tall)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -1386237782i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "KitchenTableTall".into(), + prefab_hash: -1386237782i32, + desc: "".into(), + name: "Kitchen Table (Tall)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 1605130615i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "Lander".into(), + prefab_hash: 1605130615i32, + desc: "".into(), + name: "Lander".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + slots: vec![ + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "Entity".into(), typ : Class::Entity } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + -1295222317i32, + StructureLogicTemplate { + prefab: PrefabInfo { + prefab_name: "Landingpad_2x2CenterPiece01".into(), + prefab_hash: -1295222317i32, + desc: "Recommended for larger traders. This allows for the creation of 4x4 and 6x6 landing areas with symetrical doors" + .into(), + name: "Landingpad 2x2 Center Piece".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![].into_iter().collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + } + .into(), + ), + ( + 912453390i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "Landingpad_BlankPiece".into(), + prefab_hash: 912453390i32, + desc: "".into(), + name: "Landingpad".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 1070143159i32, + StructureLogicTemplate { + prefab: PrefabInfo { + prefab_name: "Landingpad_CenterPiece01".into(), + prefab_hash: 1070143159i32, + desc: "The target point where the trader shuttle will land. Requires a clear view of the sky." + .into(), + name: "Landingpad Center".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![].into_iter().collect(), + modes: Some( + vec![ + (0u32, "None".into()), (1u32, "NoContact".into()), (2u32, + "Moving".into()), (3u32, "Holding".into()), (4u32, "Landed" + .into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + } + .into(), + ), + ( + 1101296153i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "Landingpad_CrossPiece".into(), + prefab_hash: 1101296153i32, + desc: "Extends the size of the landing pad area. A basic trader shuttle requires a 3x3 clear landing area." + .into(), + name: "Landingpad Cross".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -2066405918i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "Landingpad_DataConnectionPiece".into(), + prefab_hash: -2066405918i32, + desc: "Provides power to the landing pad. The data port must be connected to the data port of a computer with a communications motherboard for a trader to be called in to land." + .into(), + name: "Landingpad Data And Power".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::Read), (LogicType::Error, MemoryAccess::Read), + (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), + (LogicType::Vertical, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::ContactTypeId, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "None".into()), (1u32, "NoContact".into()), (2u32, + "Moving".into()), (3u32, "Holding".into()), (4u32, "Landed" + .into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None }, + ConnectionInfo { typ : ConnectionType::LandingPad, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::LandingPad, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::LandingPad, role : + ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 977899131i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "Landingpad_DiagonalPiece01".into(), + prefab_hash: 977899131i32, + desc: "Extends the size of the landing pad area. A basic trader shuttle requires a 3x3 clear landing area." + .into(), + name: "Landingpad Diagonal".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 817945707i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "Landingpad_GasConnectorInwardPiece".into(), + prefab_hash: 817945707i32, + desc: "".into(), + name: "Landingpad Gas Input".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::LandingPad, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::LandingPad, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::LandingPad, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::None }, + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1100218307i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "Landingpad_GasConnectorOutwardPiece".into(), + prefab_hash: -1100218307i32, + desc: "Pumps gas purchased from a trader out of the landing pad. You can increase the landing pad\'s gas storage capacity by adding more Landingpad Gas Storage to the landing pad." + .into(), + name: "Landingpad Gas Output".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::LandingPad, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::LandingPad, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::LandingPad, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::None }, + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 170818567i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "Landingpad_GasCylinderTankPiece".into(), + prefab_hash: 170818567i32, + desc: "Increases the volume of the landing pads gas storage capacity. This volume is used for buying and selling gas to traders." + .into(), + name: "Landingpad Gas Storage".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -1216167727i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "Landingpad_LiquidConnectorInwardPiece".into(), + prefab_hash: -1216167727i32, + desc: "".into(), + name: "Landingpad Liquid Input".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::LandingPad, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::LandingPad, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::LandingPad, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::None }, + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1788929869i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "Landingpad_LiquidConnectorOutwardPiece".into(), + prefab_hash: -1788929869i32, + desc: "Pumps liquid purchased from a trader out of the landing pad. You can increase the landing pad\'s liquid storage capacity by adding more Landingpad Gas Storage to the landing pad." + .into(), + name: "Landingpad Liquid Output".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::LandingPad, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::LandingPad, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::LandingPad, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::None }, + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -976273247i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "Landingpad_StraightPiece01".into(), + prefab_hash: -976273247i32, + desc: "Extends the size of the landing pad area. A basic trader shuttle requires a 3x3 clear landing area." + .into(), + name: "Landingpad Straight".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -1872345847i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "Landingpad_TaxiPieceCorner".into(), + prefab_hash: -1872345847i32, + desc: "".into(), + name: "Landingpad Taxi Corner".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 146051619i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "Landingpad_TaxiPieceHold".into(), + prefab_hash: 146051619i32, + desc: "".into(), + name: "Landingpad Taxi Hold".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -1477941080i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "Landingpad_TaxiPieceStraight".into(), + prefab_hash: -1477941080i32, + desc: "".into(), + name: "Landingpad Taxi Straight".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -1514298582i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "Landingpad_ThreshholdPiece".into(), + prefab_hash: -1514298582i32, + desc: "".into(), + name: "Landingpad Threshhold".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::LandingPad, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::LandingPad, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::LandingPad, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1531272458i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "LogicStepSequencer8".into(), + prefab_hash: 1531272458i32, + desc: "The ODA does not approve of soundtracks or other distractions.\nAs such, Stationeers have had to create their own musical accompaniment to the demanding labor of building and maintaining off-world infrastructure.\nCentral to this pastime is the step sequencer, which allows Stationeers to sequence short musical patterns or loops. \n\nDIY MUSIC - GETTING STARTED\n\n1: Connect 8 Device Step Units to your step sequencer via the data port on the left hand side.\n\n2: Label each step unit, then assign step units 1 through 8 on the step sequencer using the screwdriver.\n\n3: Select the output speaker (eg Passive Speaker) where the sequencer will play the sounds. This needs to be connected to the logic network on the right hand side of the sequencer.\n\n4: Place a Stop Watch and use a Logic Reader and Logic Writer to write the time to the time variable on the sequencer.\n\n5: Set the BPM on the sequencer using a Dial and a Logic Writer to write to the sequencer\'s BPM variable. A higher bpm will play the sequence faster. \n\n6: Insert a sound cartridge of your choosing and select which variant of sound you wish to play by pushing the arrow buttons located above and below the sound cartridge slot.\n\n7: Choose the pitch of the sounds to play by setting the dial on each of your 8 step units to the desired note. With drums, each note is a different drum sounds. You can trial your sounds by pushing the activate button on each step unit (with the sequencer inactive).\n\n8: Get freaky with the Low frequency oscillator.\n\n9: Finally, activate the sequencer, Vibeoneer." + .into(), + name: "Logic Step Sequencer".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Time, MemoryAccess::ReadWrite), (LogicType::Bpm, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Whole Note".into()), (1u32, "Half Note".into()), + (2u32, "Quarter Note".into()), (3u32, "Eighth Note".into()), + (4u32, "Sixteenth Note".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Sound Cartridge".into(), typ : + Class::SoundCartridge } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -99064335i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "Meteorite".into(), + prefab_hash: -99064335i32, + desc: "".into(), + name: "Meteorite".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -1667675295i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "MonsterEgg".into(), + prefab_hash: -1667675295i32, + desc: "".into(), + name: "".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -337075633i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "MotherboardComms".into(), + prefab_hash: -337075633i32, + desc: "When placed in a Computer and connected to a Landingpad Data And Power, a Medium Satellite Dish, and a Vending Machine allows Stationeers to trade with suppliers. Adjust the horizontal and vertical attributes of the Medium Satellite Dish either directly or through logic. You need a communications signal of 95% or above to establish reliable communications with a trader. A minimum of a 3x3 clear pad area with a Landingpad Center at the center is required for a trader to land." + .into(), + name: "Communications Motherboard".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Motherboard, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 502555944i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "MotherboardLogic".into(), + prefab_hash: 502555944i32, + desc: "Motherboards are connected to Computers to perform various technical functions.\nThe Norsec-designed K-cops logic motherboard allows Stationeers to set variables and actions on specific logic-controlled items." + .into(), + name: "Logic Motherboard".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Motherboard, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -127121474i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "MotherboardMissionControl".into(), + prefab_hash: -127121474i32, + desc: "".into(), + name: "".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Motherboard, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -161107071i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "MotherboardProgrammableChip".into(), + prefab_hash: -161107071i32, + desc: "When placed in a Computer, the IC Editor allows players to write and edit IC code, which can then be uploaded to a Integrated Circuit (IC10) if housed in an IC Housing." + .into(), + name: "IC Editor Motherboard".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Motherboard, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -806986392i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "MotherboardRockets".into(), + prefab_hash: -806986392i32, + desc: "".into(), + name: "Rocket Control Motherboard".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Motherboard, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -1908268220i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "MotherboardSorter".into(), + prefab_hash: -1908268220i32, + desc: "Motherboards are connected to Computers to perform various technical functions.\nThe Norsec-designed K-cops 10-10 sorter motherboard permits Stationeers to control which items a Sorter does, and does not, permit to pass." + .into(), + name: "Sorter Motherboard".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Motherboard, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -1930442922i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "MothershipCore".into(), + prefab_hash: -1930442922i32, + desc: "A relic of from an earlier era of space ambition, Sinotai\'s mothership cores formed the central element of a generation\'s space-going creations. While Sinotai\'s pivot to smaller, modular craft upset some purists, motherships continue to be built and maintained by dedicated enthusiasts." + .into(), + name: "Mothership Core".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 155856647i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "NpcChick".into(), + prefab_hash: 155856647i32, + desc: "".into(), + name: "Chick".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + slots: vec![ + SlotInfo { name : "Brain".into(), typ : Class::Organ }, SlotInfo { + name : "Lungs".into(), typ : Class::Organ } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + 399074198i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "NpcChicken".into(), + prefab_hash: 399074198i32, + desc: "".into(), + name: "Chicken".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + slots: vec![ + SlotInfo { name : "Brain".into(), typ : Class::Organ }, SlotInfo { + name : "Lungs".into(), typ : Class::Organ } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + 248893646i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "PassiveSpeaker".into(), + prefab_hash: 248893646i32, + desc: "".into(), + name: "Passive Speaker".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Volume, MemoryAccess::ReadWrite), + (LogicType::PrefabHash, MemoryAccess::ReadWrite), + (LogicType::SoundAlert, MemoryAccess::ReadWrite), + (LogicType::ReferenceId, MemoryAccess::ReadWrite), + (LogicType::NameHash, MemoryAccess::ReadWrite) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 443947415i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "PipeBenderMod".into(), + prefab_hash: 443947415i32, + desc: "Apply to an Hydraulic Pipe Bender with a Welding Torch or Arc Welder to upgrade for increased processing speed and more recipe options." + .into(), + name: "Pipe Bender Mod".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -1958705204i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "PortableComposter".into(), + prefab_hash: -1958705204i32, + desc: "A simple composting device, the basic composter creates Fertilizer out of organic matter. It accepts food, Decayed Food or Biomass. It requires a full Liquid Canister and a battery to operate, accelerating the natural composting process.\nWhen processing, it releases nitrogen and volatiles, as well a small amount of heat.\n\nCompost composition\nFertilizer is produced at a 1:3 ratio of fertilizer to ingredients. The fertilizer\'s effects on plants will vary depending on the respective proportions of its ingredients.\n\n- food increases PLANT YIELD up to two times\n- Decayed Food increases plant GROWTH SPEED up to two times\n- Biomass increases the NUMBER OF GROWTH CYCLES the fertilizer lasts for" + .into(), + name: "Portable Composter".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + slots: vec![ + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::Battery }, SlotInfo { name : "Liquid Canister".into(), typ : + Class::LiquidCanister } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + 2043318949i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "PortableSolarPanel".into(), + prefab_hash: 2043318949i32, + desc: "".into(), + name: "Portable Solar Panel".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Tools, + }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), + (LogicType::ReferenceId, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ), + ( + 399661231i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "RailingElegant01".into(), + prefab_hash: 399661231i32, + desc: "".into(), + name: "Railing Elegant (Type 1)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -1898247915i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "RailingElegant02".into(), + prefab_hash: -1898247915i32, + desc: "".into(), + name: "Railing Elegant (Type 2)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -2072792175i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "RailingIndustrial02".into(), + prefab_hash: -2072792175i32, + desc: "".into(), + name: "Railing Industrial (Type 2)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 980054869i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ReagentColorBlue".into(), + prefab_hash: 980054869i32, + desc: "".into(), + name: "Color Dye (Blue)".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 100u32, + reagents: Some( + vec![("ColorBlue".into(), 10f64)].into_iter().collect(), + ), + slot_class: Class::None, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 120807542i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ReagentColorGreen".into(), + prefab_hash: 120807542i32, + desc: "".into(), + name: "Color Dye (Green)".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 100u32, + reagents: Some( + vec![("ColorGreen".into(), 10f64)].into_iter().collect(), + ), + slot_class: Class::None, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + -400696159i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ReagentColorOrange".into(), + prefab_hash: -400696159i32, + desc: "".into(), + name: "Color Dye (Orange)".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 100u32, + reagents: Some( + vec![("ColorOrange".into(), 10f64)].into_iter().collect(), + ), + slot_class: Class::None, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 1998377961i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ReagentColorRed".into(), + prefab_hash: 1998377961i32, + desc: "".into(), + name: "Color Dye (Red)".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 100u32, + reagents: Some( + vec![("ColorRed".into(), 10f64)].into_iter().collect(), + ), + slot_class: Class::None, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + 635208006i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ReagentColorYellow".into(), + prefab_hash: 635208006i32, + desc: "".into(), + name: "Color Dye (Yellow)".into(), + }, + item: ItemInfo { + consumable: true, + filter_type: None, + ingredient: true, + max_quantity: 100u32, + reagents: Some( + vec![("ColorYellow".into(), 10f64)].into_iter().collect(), + ), + slot_class: Class::None, + sorting_class: SortingClass::Resources, + }, + } + .into(), + ), + ( + -788672929i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "RespawnPoint".into(), + prefab_hash: -788672929i32, + desc: "Place a respawn point to set a player entry point to your base when loading in, or returning from the dead." + .into(), + name: "Respawn Point".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -491247370i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "RespawnPointWallMounted".into(), + prefab_hash: -491247370i32, + desc: "".into(), + name: "Respawn Point (Mounted)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 434786784i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "Robot".into(), + prefab_hash: 434786784i32, + desc: "Designed by - presumably drunk - Norsec roboticists, AIMeE (or Automated Independent Mechanical Entity) can be a Stationeer\'s best friend, or tiresome nemesis, or both several times in the same day. \n \nIntended to unearth and retrieve ores automatically, the unit requires basic programming knowledge to operate, and IC Editor Motherboard.\n\nAIMEe has 7 modes:\n\nRobotMode.None = 0 = Do nothing\nRobotMode.None = 1 = Follow nearest player\nRobotMode.None = 2 = Move to target in straight line\nRobotMode.None = 3 = Wander around looking for ores in 15 co-ords radius\nRobotMode.None = 4 = Unload in chute input or chute bin within 3 meters / 1.5 large grids\nRobotMode.None = 5 = Path(find) to target\nRobotMode.None = 6 = Automatic assigned state, shows when storage slots are fullConnects to Logic Transmitter" + .into(), + name: "AIMeE Bot".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (2u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (3u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (4u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (5u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (6u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (7u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (8u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (9u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::PressureExternal, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::TemperatureExternal, MemoryAccess::Read), + (LogicType::PositionX, MemoryAccess::Read), + (LogicType::PositionY, MemoryAccess::Read), + (LogicType::PositionZ, MemoryAccess::Read), + (LogicType::VelocityMagnitude, MemoryAccess::Read), + (LogicType::VelocityRelativeX, MemoryAccess::Read), + (LogicType::VelocityRelativeY, MemoryAccess::Read), + (LogicType::VelocityRelativeZ, MemoryAccess::Read), + (LogicType::TargetX, MemoryAccess::Write), (LogicType::TargetY, + MemoryAccess::Write), (LogicType::TargetZ, MemoryAccess::Write), + (LogicType::MineablesInVicinity, MemoryAccess::Read), + (LogicType::MineablesInQueue, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::ForwardX, MemoryAccess::Read), (LogicType::ForwardY, + MemoryAccess::Read), (LogicType::ForwardZ, MemoryAccess::Read), + (LogicType::Orientation, MemoryAccess::Read), + (LogicType::VelocityX, MemoryAccess::Read), + (LogicType::VelocityY, MemoryAccess::Read), + (LogicType::VelocityZ, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "None".into()), (1u32, "Follow".into()), (2u32, + "MoveToTarget".into()), (3u32, "Roam".into()), (4u32, + "Unload".into()), (5u32, "PathToTarget".into()), (6u32, + "StorageFull".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: true, + circuit_holder: true, + }, + slots: vec![ + SlotInfo { name : "Battery".into(), typ : Class::Battery }, SlotInfo + { name : "Programmable Chip".into(), typ : Class::ProgrammableChip }, + SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : + "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ + : Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore }, + SlotInfo { name : "Ore".into(), typ : Class::Ore }, SlotInfo { name : + "Ore".into(), typ : Class::Ore }, SlotInfo { name : "Ore".into(), typ + : Class::Ore }, SlotInfo { name : "Ore".into(), typ : Class::Ore } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + 350726273i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "RoverCargo".into(), + prefab_hash: 350726273i32, + desc: "Connects to Logic Transmitter" + .into(), + name: "Rover (Cargo)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (2u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::FilterType, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (3u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::FilterType, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (4u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::FilterType, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (5u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Pressure, MemoryAccess::Read), + (LogicSlotType::Temperature, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (6u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Pressure, MemoryAccess::Read), + (LogicSlotType::Temperature, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (7u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Pressure, MemoryAccess::Read), + (LogicSlotType::Temperature, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (8u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Pressure, MemoryAccess::Read), + (LogicSlotType::Temperature, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (9u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (10u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (11u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (12u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (13u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (14u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (15u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Pressure, + MemoryAccess::Read), (LogicType::Temperature, + MemoryAccess::Read), (LogicType::RatioOxygen, + MemoryAccess::Read), (LogicType::RatioCarbonDioxide, + MemoryAccess::Read), (LogicType::RatioNitrogen, + MemoryAccess::Read), (LogicType::RatioPollutant, + MemoryAccess::Read), (LogicType::RatioVolatiles, + MemoryAccess::Read), (LogicType::RatioWater, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::TotalMoles, + MemoryAccess::Read), (LogicType::RatioNitrousOxide, + MemoryAccess::Read), (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: true, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Entity".into(), typ : Class::Entity }, SlotInfo { + name : "Entity".into(), typ : Class::Entity }, SlotInfo { name : + "Gas Filter".into(), typ : Class::GasFilter }, SlotInfo { name : + "Gas Filter".into(), typ : Class::GasFilter }, SlotInfo { name : + "Gas Filter".into(), typ : Class::GasFilter }, SlotInfo { name : + "Gas Canister".into(), typ : Class::GasCanister }, SlotInfo { name : + "Gas Canister".into(), typ : Class::GasCanister }, SlotInfo { name : + "Gas Canister".into(), typ : Class::GasCanister }, SlotInfo { name : + "Gas Canister".into(), typ : Class::GasCanister }, SlotInfo { name : + "Battery".into(), typ : Class::Battery }, SlotInfo { name : "Battery" + .into(), typ : Class::Battery }, SlotInfo { name : "Battery".into(), + typ : Class::Battery }, SlotInfo { name : "Container Slot".into(), + typ : Class::None }, SlotInfo { name : "Container Slot".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : + Class::None } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + -2049946335i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "Rover_MkI".into(), + prefab_hash: -2049946335i32, + desc: "A distant cousin of the jeep, the Mk I {Sinotai electric rover is one of the most simple and durable light vehicles in the known universe. Able to carry two passengers and cargo such as the Portable Gas Tank (Air) or , it is powered by up to three batteries, accepting everything including Battery Cell (Nuclear).\nA quad-array of hub-mounted electric engines propels the reinforced aluminium frame over most terrain and modest obstacles. While the Mk I is designed for stability in low-horizontality circumstances, if it rolls, try using your Crowbar to put it right way up.Connects to Logic Transmitter" + .into(), + name: "Rover MkI".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (2u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (3u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (4u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (5u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (6u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (7u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (8u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (9u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (10u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Pressure, + MemoryAccess::Read), (LogicType::Temperature, + MemoryAccess::Read), (LogicType::RatioOxygen, + MemoryAccess::Read), (LogicType::RatioCarbonDioxide, + MemoryAccess::Read), (LogicType::RatioNitrogen, + MemoryAccess::Read), (LogicType::RatioPollutant, + MemoryAccess::Read), (LogicType::RatioVolatiles, + MemoryAccess::Read), (LogicType::RatioWater, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::TotalMoles, + MemoryAccess::Read), (LogicType::RatioNitrousOxide, + MemoryAccess::Read), (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: true, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Entity".into(), typ : Class::Entity }, SlotInfo { + name : "Entity".into(), typ : Class::Entity }, SlotInfo { name : + "Battery".into(), typ : Class::Battery }, SlotInfo { name : "Battery" + .into(), typ : Class::Battery }, SlotInfo { name : "Battery".into(), + typ : Class::Battery }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { + name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), + typ : Class::None }, SlotInfo { name : "" + .into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + 861674123i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "Rover_MkI_build_states".into(), + prefab_hash: 861674123i32, + desc: "".into(), + name: "Rover MKI".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -256607540i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "SMGMagazine".into(), + prefab_hash: -256607540i32, + desc: "".into(), + name: "SMG Magazine".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Magazine, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 1139887531i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "SeedBag_Cocoa".into(), + prefab_hash: 1139887531i32, + desc: "".into(), + name: "Cocoa Seeds".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Food, + }, + } + .into(), + ), + ( + -1290755415i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "SeedBag_Corn".into(), + prefab_hash: -1290755415i32, + desc: "Grow a Corn." + .into(), + name: "Corn Seeds".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Food, + }, + } + .into(), + ), + ( + -1990600883i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "SeedBag_Fern".into(), + prefab_hash: -1990600883i32, + desc: "Grow a Fern." + .into(), + name: "Fern Seeds".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Food, + }, + } + .into(), + ), + ( + 311593418i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "SeedBag_Mushroom".into(), + prefab_hash: 311593418i32, + desc: "Grow a Mushroom." + .into(), + name: "Mushroom Seeds".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Food, + }, + } + .into(), + ), + ( + 1005571172i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "SeedBag_Potato".into(), + prefab_hash: 1005571172i32, + desc: "Grow a Potato." + .into(), + name: "Potato Seeds".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Food, + }, + } + .into(), + ), + ( + 1423199840i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "SeedBag_Pumpkin".into(), + prefab_hash: 1423199840i32, + desc: "Grow a Pumpkin." + .into(), + name: "Pumpkin Seeds".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Food, + }, + } + .into(), + ), + ( + -1691151239i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "SeedBag_Rice".into(), + prefab_hash: -1691151239i32, + desc: "Grow some Rice." + .into(), + name: "Rice Seeds".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Food, + }, + } + .into(), + ), + ( + 1783004244i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "SeedBag_Soybean".into(), + prefab_hash: 1783004244i32, + desc: "Grow some Soybean." + .into(), + name: "Soybean Seeds".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Food, + }, + } + .into(), + ), + ( + -1884103228i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "SeedBag_SugarCane".into(), + prefab_hash: -1884103228i32, + desc: "".into(), + name: "Sugarcane Seeds".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Food, + }, + } + .into(), + ), + ( + 488360169i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "SeedBag_Switchgrass".into(), + prefab_hash: 488360169i32, + desc: "".into(), + name: "Switchgrass Seed".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Food, + }, + } + .into(), + ), + ( + -1922066841i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "SeedBag_Tomato".into(), + prefab_hash: -1922066841i32, + desc: "Grow a Tomato." + .into(), + name: "Tomato Seeds".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Food, + }, + } + .into(), + ), + ( + -654756733i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "SeedBag_Wheet".into(), + prefab_hash: -654756733i32, + desc: "Grow some Wheat." + .into(), + name: "Wheat Seeds".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 10u32, + reagents: None, + slot_class: Class::Plant, + sorting_class: SortingClass::Food, + }, + } + .into(), + ), + ( + -1991297271i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "SpaceShuttle".into(), + prefab_hash: -1991297271i32, + desc: "An antiquated Sinotai transport craft, long since decommissioned." + .into(), + name: "Space Shuttle".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + slots: vec![ + SlotInfo { name : "Captain\'s Seat".into(), typ : Class::Entity }, + SlotInfo { name : "Passenger Seat Left".into(), typ : Class::Entity + }, SlotInfo { name : "Passenger Seat Right".into(), typ : + Class::Entity } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + -1527229051i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StopWatch".into(), + prefab_hash: -1527229051i32, + desc: "".into(), + name: "Stop Watch".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Time, MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1298920475i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureAccessBridge".into(), + prefab_hash: 1298920475i32, + desc: "Extendable bridge that spans three grids".into(), + name: "Access Bridge".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + -1129453144i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureActiveVent".into(), + prefab_hash: -1129453144i32, + desc: "The active vent is a powered device for maintaining gas pressure by pumping gas into (or out of) a pipe network. The vent has two modes: \'Outward\' sets it to pump gas into a space until pressure is reached; \'Inward\' sets it to pump gas out until pressure is reached. The pressure parameter can be set on a connected Console. Default pressure is 101kPa for Outward; 0kPa for Inward ..." + .into(), + name: "Active Vent".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::PressureExternal, MemoryAccess::ReadWrite), + (LogicType::PressureInternal, MemoryAccess::ReadWrite), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Outward".into()), (1u32, "Inward".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "".into(), typ : Class::DataDisk }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 446212963i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureAdvancedComposter".into(), + prefab_hash: 446212963i32, + desc: "The advanced composter creates Fertilizer out of organic matter. It accepts food, Decayed Food or Biomass. It requires Water and power to operate, accelerating the natural composting process.\nWhen processing, it releases nitrogen and volatiles, as well a small amount of heat. \n\nCompost composition\nFertilizer is produced at a 1:3 ratio of fertilizer to ingredients. The fertilizer\'s effects on plants will vary depending on the respective proportions of its ingredients.\n\n- Food increases PLANT YIELD up to two times\n- Decayed Food increases plant GROWTH SPEED up to two times\n- Biomass increases the NUMBER OF GROWTH CYCLES the fertilizer lasts for up to five times\n" + .into(), + name: "Advanced Composter".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::Quantity, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::ClearMemory, + MemoryAccess::Write), (LogicType::ExportCount, + MemoryAccess::Read), (LogicType::ImportCount, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { + name : "Export".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::None }, + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None }, + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 545937711i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureAdvancedFurnace".into(), + prefab_hash: 545937711i32, + desc: "The advanced furnace comes with integrated inlet and outlet pumps for controlling the unit\'s internal pressure." + .into(), + name: "Advanced Furnace".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Reagents, + MemoryAccess::Read), (LogicType::RatioOxygen, + MemoryAccess::Read), (LogicType::RatioCarbonDioxide, + MemoryAccess::Read), (LogicType::RatioNitrogen, + MemoryAccess::Read), (LogicType::RatioPollutant, + MemoryAccess::Read), (LogicType::RatioVolatiles, + MemoryAccess::Read), (LogicType::RatioWater, MemoryAccess::Read), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::RecipeHash, MemoryAccess::Read), + (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::SettingInput, MemoryAccess::ReadWrite), + (LogicType::SettingOutput, MemoryAccess::ReadWrite), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { + name : "Export".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None }, + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Output2 } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: true, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: true, + }, + } + .into(), + ), + ( + -463037670i32, + StructureLogicDeviceMemoryTemplate { + prefab: PrefabInfo { + prefab_name: "StructureAdvancedPackagingMachine".into(), + prefab_hash: -463037670i32, + desc: "The Xigo Advanced Cannifier Multi-Plus Pro is an automateable packaging machine that uses Empty Cans and cooked food to create canned sustenance that does not decay. Note that the ACMPP only accepts cooked food and tin cans." + .into(), + name: "Advanced Packaging Machine".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Reagents, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::RecipeHash, MemoryAccess::ReadWrite), + (LogicType::CompletionRatio, MemoryAccess::Read), + (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { + name : "Export".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: true, + }, + memory: MemoryInfo { + instructions: Some( + vec![ + ("DeviceSetLock".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |" + .into(), typ : "PrinterInstruction".into(), value : 6i64 }), + ("EjectAllReagents".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" + .into(), typ : "PrinterInstruction".into(), value : 8i64 }), + ("EjectReagent".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |" + .into(), typ : "PrinterInstruction".into(), value : 7i64 }), + ("ExecuteRecipe".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" + .into(), typ : "PrinterInstruction".into(), value : 2i64 }), + ("JumpIfNextInvalid".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 4i64 }), + ("JumpToAddress".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 5i64 }), + ("MissingRecipeReagent".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" + .into(), typ : "PrinterInstruction".into(), value : 9i64 }), + ("StackPointer".into(), Instruction { description : + "| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 1i64 }), + ("WaitUntilNextValid".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" + .into(), typ : "PrinterInstruction".into(), value : 3i64 }) + ] + .into_iter() + .collect(), + ), + memory_access: MemoryAccess::ReadWrite, + memory_size: 64u32, + }, + } + .into(), + ), + ( + -2087593337i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureAirConditioner".into(), + prefab_hash: -2087593337i32, + desc: "Built using the Kit (Atmospherics), the ExMin-designed air conditioner is used to raise or lower input gas temperature.\n\t \nThe unit has three pipe connections: input, output, and waste. Gas fed into the input will be heated or cooled to reach the target temperature, while the opposite will happen to gas on the waste network.\n\nMultiple Efficiency Multipliers can effect the amount of energy the Air Conditioner uses, and these can be view on the unit\'s green Information Panel. As the temperature difference between input and waste increases, the Temperature Differential Efficiency Multiplier will decrease. If input or waste temperature is extremely hot or cold, the Operational Temperature Efficiency will decrease. If the input or waste pipe has approach low pressures, the Pressure Efficiency will decrease.\n\nPipe Convection Radiators may be useful in bringing extreme pipe temperatures back towards normal world temperatures. \n \nFor more information on using the air conditioner, consult the temperature control Guides page." + .into(), + name: "Air Conditioner".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::PressureInput, MemoryAccess::Read), + (LogicType::TemperatureInput, MemoryAccess::Read), + (LogicType::RatioOxygenInput, MemoryAccess::Read), + (LogicType::RatioCarbonDioxideInput, MemoryAccess::Read), + (LogicType::RatioNitrogenInput, MemoryAccess::Read), + (LogicType::RatioPollutantInput, MemoryAccess::Read), + (LogicType::RatioVolatilesInput, MemoryAccess::Read), + (LogicType::RatioWaterInput, MemoryAccess::Read), + (LogicType::RatioNitrousOxideInput, MemoryAccess::Read), + (LogicType::TotalMolesInput, MemoryAccess::Read), + (LogicType::PressureOutput, MemoryAccess::Read), + (LogicType::TemperatureOutput, MemoryAccess::Read), + (LogicType::RatioOxygenOutput, MemoryAccess::Read), + (LogicType::RatioCarbonDioxideOutput, MemoryAccess::Read), + (LogicType::RatioNitrogenOutput, MemoryAccess::Read), + (LogicType::RatioPollutantOutput, MemoryAccess::Read), + (LogicType::RatioVolatilesOutput, MemoryAccess::Read), + (LogicType::RatioWaterOutput, MemoryAccess::Read), + (LogicType::RatioNitrousOxideOutput, MemoryAccess::Read), + (LogicType::TotalMolesOutput, MemoryAccess::Read), + (LogicType::PressureOutput2, MemoryAccess::Read), + (LogicType::TemperatureOutput2, MemoryAccess::Read), + (LogicType::RatioOxygenOutput2, MemoryAccess::Read), + (LogicType::RatioCarbonDioxideOutput2, MemoryAccess::Read), + (LogicType::RatioNitrogenOutput2, MemoryAccess::Read), + (LogicType::RatioPollutantOutput2, MemoryAccess::Read), + (LogicType::RatioVolatilesOutput2, MemoryAccess::Read), + (LogicType::RatioWaterOutput2, MemoryAccess::Read), + (LogicType::RatioNitrousOxideOutput2, MemoryAccess::Read), + (LogicType::TotalMolesOutput2, MemoryAccess::Read), + (LogicType::CombustionInput, MemoryAccess::Read), + (LogicType::CombustionOutput, MemoryAccess::Read), + (LogicType::CombustionOutput2, MemoryAccess::Read), + (LogicType::OperationalTemperatureEfficiency, + MemoryAccess::Read), + (LogicType::TemperatureDifferentialEfficiency, + MemoryAccess::Read), (LogicType::PressureEfficiency, + MemoryAccess::Read), (LogicType::RatioLiquidNitrogenInput, + MemoryAccess::Read), (LogicType::RatioLiquidNitrogenOutput, + MemoryAccess::Read), (LogicType::RatioLiquidNitrogenOutput2, + MemoryAccess::Read), (LogicType::RatioLiquidOxygenInput, + MemoryAccess::Read), (LogicType::RatioLiquidOxygenOutput, + MemoryAccess::Read), (LogicType::RatioLiquidOxygenOutput2, + MemoryAccess::Read), (LogicType::RatioLiquidVolatilesInput, + MemoryAccess::Read), (LogicType::RatioLiquidVolatilesOutput, + MemoryAccess::Read), (LogicType::RatioLiquidVolatilesOutput2, + MemoryAccess::Read), (LogicType::RatioSteamInput, + MemoryAccess::Read), (LogicType::RatioSteamOutput, + MemoryAccess::Read), (LogicType::RatioSteamOutput2, + MemoryAccess::Read), (LogicType::RatioLiquidCarbonDioxideInput, + MemoryAccess::Read), (LogicType::RatioLiquidCarbonDioxideOutput, + MemoryAccess::Read), (LogicType::RatioLiquidCarbonDioxideOutput2, + MemoryAccess::Read), (LogicType::RatioLiquidPollutantInput, + MemoryAccess::Read), (LogicType::RatioLiquidPollutantOutput, + MemoryAccess::Read), (LogicType::RatioLiquidPollutantOutput2, + MemoryAccess::Read), (LogicType::RatioLiquidNitrousOxideInput, + MemoryAccess::Read), (LogicType::RatioLiquidNitrousOxideOutput, + MemoryAccess::Read), (LogicType::RatioLiquidNitrousOxideOutput2, + MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Idle".into()), (1u32, "Active".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: true, + }, + slots: vec![ + SlotInfo { name : "Programmable Chip".into(), typ : + Class::ProgrammableChip } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Waste }, + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: Some(2u32), + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + -2105052344i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureAirlock".into(), + prefab_hash: -2105052344i32, + desc: "The standard airlock is a powered portal that forms the main component of an airlock chamber. As long as the airlock is not locked, it can be manually opened using a crowbar." + .into(), + name: "Airlock".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::Idle, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Operate".into()), (1u32, "Logic".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 1736080881i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureAirlockGate".into(), + prefab_hash: 1736080881i32, + desc: "1 x 1 modular door piece for building hangar doors.".into(), + name: "Small Hangar Door".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::Idle, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Operate".into()), (1u32, "Logic".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 1811979158i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureAngledBench".into(), + prefab_hash: 1811979158i32, + desc: "".into(), + name: "Bench (Angled)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Seat".into(), typ : Class::Entity }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -247344692i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureArcFurnace".into(), + prefab_hash: -247344692i32, + desc: "The simplest smelting system available to the average Stationeer, Recurso\'s arc furnace was forged itself in the depths of the Solar System to help explorational geologists determine the purity of potential asteroidal mining targets.\nCo-opted by the ODA, it now provides Stationeers with a way to produce pure ingots of various resources.\nThe smelting process also releases a range of by product gases, principally Nitrogen, Carbon Dioxide, Volatiles and Oxygen in differing ratios. These can be recaptured from the atmosphere by filtering, but also make the arc furnace a risk in closed environments. \nUnlike the more advanced Furnace, the arc furnace cannot create alloys." + .into(), + name: "Arc Furnace".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Reagents, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), (LogicType::Idle, + MemoryAccess::Read), (LogicType::RecipeHash, MemoryAccess::Read), + (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::Ore }, SlotInfo { + name : "Export".into(), typ : Class::Ingot } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: true, + }, + } + .into(), + ), + ( + 1999523701i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureAreaPowerControl".into(), + prefab_hash: 1999523701i32, + desc: "An Area Power Control (APC) has three main functions: \nIts primary purpose is to regulate power flow, ensuring uninterrupted performance from devices and machinery, especially those with a fluctuating draw. \nAPCs also create sub-networks, as no devices on the far side of an APC are visible on the main network.\nLastly, an APC charges batteries, which can provide backup power to the sub-network in the case of an outage. Note that an APC requires a battery to stabilize power draw. It also has two variants, each allowing power to flow in one direction only." + .into(), + name: "Area Power Control".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Charge, + MemoryAccess::Read), (LogicType::Maximum, MemoryAccess::Read), + (LogicType::Ratio, MemoryAccess::Read), + (LogicType::PowerPotential, MemoryAccess::Read), + (LogicType::PowerActual, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Idle".into()), (1u32, "Discharged".into()), (2u32, + "Discharging".into()), (3u32, "Charging".into()), (4u32, + "Charged".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Battery".into(), typ : Class::Battery }, SlotInfo + { name : "Data Disk".into(), typ : Class::DataDisk } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + -1032513487i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureAreaPowerControlReversed".into(), + prefab_hash: -1032513487i32, + desc: "An Area Power Control (APC) has three main functions. \nIts primary purpose is to regulate power flow, ensuring uninterrupted performance from devices and machinery, especially those with a fluctuating draw. \nAPCs also create sub-networks, as no devices on the far side of an APC are visible on the main network. \nLastly, an APC charges batteries, which can provide backup power to the sub-network in the case of an outage. Note that an APC requires a battery to stabilize power draw. It also has two variants, each allowing power to flow in one direction only." + .into(), + name: "Area Power Control".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Charge, + MemoryAccess::Read), (LogicType::Maximum, MemoryAccess::Read), + (LogicType::Ratio, MemoryAccess::Read), + (LogicType::PowerPotential, MemoryAccess::Read), + (LogicType::PowerActual, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Idle".into()), (1u32, "Discharged".into()), (2u32, + "Discharging".into()), (3u32, "Charging".into()), (4u32, + "Charged".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Battery".into(), typ : Class::Battery }, SlotInfo + { name : "Data Disk".into(), typ : Class::DataDisk } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 7274344i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureAutoMinerSmall".into(), + prefab_hash: 7274344i32, + desc: "The Recurso SquareDig autominer is a structure that when built will mine a vertical 2x2 shaft until it hits bedrock. The autominer can be connected to a chute system, and is controllable by a logic network. Note that the autominer outputs more ore than a conventional Mining Drill over the same area." + .into(), + name: "Autominer (Small)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::ClearMemory, + MemoryAccess::Write), (LogicType::ExportCount, + MemoryAccess::Read), (LogicType::ImportCount, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { + name : "Export".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 336213101i32, + StructureLogicDeviceMemoryTemplate { + prefab: PrefabInfo { + prefab_name: "StructureAutolathe".into(), + prefab_hash: 336213101i32, + desc: "The foundation of most Stationeer fabrication systems, the ExMin autolathe is a multi-axis molecular compositional system. Its complexity demands considerable time to assemble, but it remains an indispensable creation tool. Upgrade the device using a Autolathe Printer Mod for additional recipes and faster processing speeds.\n\t " + .into(), + name: "Autolathe".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Reagents, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::RecipeHash, MemoryAccess::ReadWrite), + (LogicType::CompletionRatio, MemoryAccess::Read), + (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::Ingot }, SlotInfo { + name : "Export".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: true, + }, + memory: MemoryInfo { + instructions: Some( + vec![ + ("DeviceSetLock".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |" + .into(), typ : "PrinterInstruction".into(), value : 6i64 }), + ("EjectAllReagents".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" + .into(), typ : "PrinterInstruction".into(), value : 8i64 }), + ("EjectReagent".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |" + .into(), typ : "PrinterInstruction".into(), value : 7i64 }), + ("ExecuteRecipe".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" + .into(), typ : "PrinterInstruction".into(), value : 2i64 }), + ("JumpIfNextInvalid".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 4i64 }), + ("JumpToAddress".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 5i64 }), + ("MissingRecipeReagent".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" + .into(), typ : "PrinterInstruction".into(), value : 9i64 }), + ("StackPointer".into(), Instruction { description : + "| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 1i64 }), + ("WaitUntilNextValid".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" + .into(), typ : "PrinterInstruction".into(), value : 3i64 }) + ] + .into_iter() + .collect(), + ), + memory_access: MemoryAccess::ReadWrite, + memory_size: 64u32, + }, + } + .into(), + ), + ( + -1672404896i32, + StructureLogicDeviceMemoryTemplate { + prefab: PrefabInfo { + prefab_name: "StructureAutomatedOven".into(), + prefab_hash: -1672404896i32, + desc: "".into(), + name: "Automated Oven".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Reagents, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::RecipeHash, MemoryAccess::ReadWrite), + (LogicType::CompletionRatio, MemoryAccess::Read), + (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { + name : "Export".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: true, + }, + memory: MemoryInfo { + instructions: Some( + vec![ + ("DeviceSetLock".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |" + .into(), typ : "PrinterInstruction".into(), value : 6i64 }), + ("EjectAllReagents".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" + .into(), typ : "PrinterInstruction".into(), value : 8i64 }), + ("EjectReagent".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |" + .into(), typ : "PrinterInstruction".into(), value : 7i64 }), + ("ExecuteRecipe".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" + .into(), typ : "PrinterInstruction".into(), value : 2i64 }), + ("JumpIfNextInvalid".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 4i64 }), + ("JumpToAddress".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 5i64 }), + ("MissingRecipeReagent".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" + .into(), typ : "PrinterInstruction".into(), value : 9i64 }), + ("StackPointer".into(), Instruction { description : + "| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 1i64 }), + ("WaitUntilNextValid".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" + .into(), typ : "PrinterInstruction".into(), value : 3i64 }) + ] + .into_iter() + .collect(), + ), + memory_access: MemoryAccess::ReadWrite, + memory_size: 64u32, + }, + } + .into(), + ), + ( + 2099900163i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureBackLiquidPressureRegulator".into(), + prefab_hash: 2099900163i32, + desc: "Regulates the volume ratio of liquid in the input Liquid pipe. This is expressed as percentage where 100 is totally full and 0 is empty." + .into(), + name: "Liquid Back Volume Regulator".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1149857558i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureBackPressureRegulator".into(), + prefab_hash: -1149857558i32, + desc: "Unlike the Pressure Regulator, which closes when the input exceeds a given pressure, the back pressure regulator opens when input pressure reaches a given value." + .into(), + name: "Back Pressure Regulator".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1613497288i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureBasketHoop".into(), + prefab_hash: -1613497288i32, + desc: "".into(), + name: "Basket Hoop".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -400115994i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureBattery".into(), + prefab_hash: -400115994i32, + desc: "Providing large-scale, reliable power storage, the Sinotai \'Dianzi\' station battery is the heart of most Stationeer bases. \nThere are a variety of cautions to the design of electrical systems using batteries, and every experienced Stationeer has a story to tell, hence the Stationeer adage: \'Dianzi cooks, but it also frys.\' \nPOWER OUTPUT\nAble to store up to 3600000W of power, there are no practical limits to its throughput, hence it is wise to use Cable Coil (Heavy). Seasoned electrical engineers will also laugh in the face of those who fail to separate out their power generation networks using an Area Power Control and Transformer (Large)." + .into(), + name: "Station Battery".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::Read), (LogicType::Error, MemoryAccess::Read), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Charge, + MemoryAccess::Read), (LogicType::Maximum, MemoryAccess::Read), + (LogicType::Ratio, MemoryAccess::Read), + (LogicType::PowerPotential, MemoryAccess::Read), + (LogicType::PowerActual, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Empty".into()), (1u32, "Critical".into()), (2u32, + "VeryLow".into()), (3u32, "Low".into()), (4u32, "Medium" + .into()), (5u32, "High".into()), (6u32, "Full".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1945930022i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureBatteryCharger".into(), + prefab_hash: 1945930022i32, + desc: "The 5-slot Xigo battery charger fits the Battery Cell (Small), Battery Cell (Large) and Battery Cell (Nuclear), providing up to 500W to any connected cell. Note: the older design means this device has minor power draw (10W) even when not charging." + .into(), + name: "Battery Cell Charger".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (2u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (3u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (4u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Battery".into(), typ : Class::Battery }, SlotInfo + { name : "Battery".into(), typ : Class::Battery }, SlotInfo { name : + "Battery".into(), typ : Class::Battery }, SlotInfo { name : "Battery" + .into(), typ : Class::Battery }, SlotInfo { name : "Battery".into(), + typ : Class::Battery } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -761772413i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureBatteryChargerSmall".into(), + prefab_hash: -761772413i32, + desc: "".into(), + name: "Battery Charger Small".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Battery".into(), typ : Class::Battery }, SlotInfo + { name : "Battery".into(), typ : Class::Battery } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1388288459i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureBatteryLarge".into(), + prefab_hash: -1388288459i32, + desc: "Providing even better large-scale, reliable power storage than the {THING;StructureBattery}, the Sinotai \'Da Dianchi\' large station battery is the heart of most Stationeer bases. \nThere are a variety of cautions to the design of electrical systems using batteries, and every experienced Stationeer has a story to tell, hence the Stationeer adage: \'Dianzi cooks, but it also frys.\' \nPOWER OUTPUT\nAble to store up to 9000001 watts of power, there are no practical limits to its throughput, hence it is wise to use Cable Coil (Heavy). Seasoned electrical engineers will also laugh in the face of those who fail to separate out their power generation networks using an Area Power Control and Transformer (Large). " + .into(), + name: "Station Battery (Large)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::Read), (LogicType::Error, MemoryAccess::Read), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Charge, + MemoryAccess::Read), (LogicType::Maximum, MemoryAccess::Read), + (LogicType::Ratio, MemoryAccess::Read), + (LogicType::PowerPotential, MemoryAccess::Read), + (LogicType::PowerActual, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Empty".into()), (1u32, "Critical".into()), (2u32, + "VeryLow".into()), (3u32, "Low".into()), (4u32, "Medium" + .into()), (5u32, "High".into()), (6u32, "Full".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1125305264i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureBatteryMedium".into(), + prefab_hash: -1125305264i32, + desc: "0.Empty\n1.Critical\n2.VeryLow\n3.Low\n4.Medium\n5.High\n6.Full" + .into(), + name: "Battery (Medium)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::Read), (LogicType::Charge, MemoryAccess::Read), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::PowerPotential, + MemoryAccess::Read), (LogicType::PowerActual, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Empty".into()), (1u32, "Critical".into()), (2u32, + "VeryLow".into()), (3u32, "Low".into()), (4u32, "Medium" + .into()), (5u32, "High".into()), (6u32, "Full".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -2123455080i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureBatterySmall".into(), + prefab_hash: -2123455080i32, + desc: "0.Empty\n1.Critical\n2.VeryLow\n3.Low\n4.Medium\n5.High\n6.Full" + .into(), + name: "Auxiliary Rocket Battery ".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::Read), (LogicType::Charge, MemoryAccess::Read), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::PowerPotential, + MemoryAccess::Read), (LogicType::PowerActual, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Empty".into()), (1u32, "Critical".into()), (2u32, + "VeryLow".into()), (3u32, "Low".into()), (4u32, "Medium" + .into()), (5u32, "High".into()), (6u32, "Full".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -188177083i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureBeacon".into(), + prefab_hash: -188177083i32, + desc: "".into(), + name: "Beacon".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::Color, MemoryAccess::ReadWrite), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: true, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -2042448192i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureBench".into(), + prefab_hash: -2042448192i32, + desc: "When it\'s time to sit, nothing supports you like a bench. This bench is powered, so you can use appliances like the Microwave." + .into(), + name: "Powered Bench".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::On, MemoryAccess::ReadWrite), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::On, MemoryAccess::ReadWrite), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Appliance 1".into(), typ : Class::Appliance }, + SlotInfo { name : "Appliance 2".into(), typ : Class::Appliance } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 406745009i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureBench1".into(), + prefab_hash: 406745009i32, + desc: "".into(), + name: "Bench (Counter Style)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::On, MemoryAccess::ReadWrite), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::On, MemoryAccess::ReadWrite), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Appliance 1".into(), typ : Class::Appliance }, + SlotInfo { name : "Appliance 2".into(), typ : Class::Appliance } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -2127086069i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureBench2".into(), + prefab_hash: -2127086069i32, + desc: "".into(), + name: "Bench (High Tech Style)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::On, MemoryAccess::ReadWrite), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::On, MemoryAccess::ReadWrite), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Appliance 1".into(), typ : Class::Appliance }, + SlotInfo { name : "Appliance 2".into(), typ : Class::Appliance } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -164622691i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureBench3".into(), + prefab_hash: -164622691i32, + desc: "".into(), + name: "Bench (Frame Style)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::On, MemoryAccess::ReadWrite), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::On, MemoryAccess::ReadWrite), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Appliance 1".into(), typ : Class::Appliance }, + SlotInfo { name : "Appliance 2".into(), typ : Class::Appliance } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1750375230i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureBench4".into(), + prefab_hash: 1750375230i32, + desc: "".into(), + name: "Bench (Workbench Style)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::On, MemoryAccess::ReadWrite), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::On, MemoryAccess::ReadWrite), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Appliance 1".into(), typ : Class::Appliance }, + SlotInfo { name : "Appliance 2".into(), typ : Class::Appliance } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 337416191i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureBlastDoor".into(), + prefab_hash: 337416191i32, + desc: "Airtight and almost undamageable, the original \'Millmar\' series of blast door was designed by off-world mining giant Recurso to protect asteroid-mining facilities from nuclear-incident-level explosive decompression.\nShort of a pocket-sized singularity blinking into the local space-time frame, there is effectively no limit to the pressure these blast doors can contain - ideal for constructing airlocks in pressure-sensitive environments." + .into(), + name: "Blast Door".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::Idle, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Operate".into()), (1u32, "Logic".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 697908419i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureBlockBed".into(), + prefab_hash: 697908419i32, + desc: "Description coming.".into(), + name: "Block Bed".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Bed".into(), typ : Class::Entity }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 378084505i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureBlocker".into(), + prefab_hash: 378084505i32, + desc: "".into(), + name: "Blocker".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 1036015121i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableAnalysizer".into(), + prefab_hash: 1036015121i32, + desc: "".into(), + name: "Cable Analyzer".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::PowerPotential, MemoryAccess::Read), + (LogicType::PowerActual, MemoryAccess::Read), + (LogicType::PowerRequired, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -889269388i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableCorner".into(), + prefab_hash: -889269388i32, + desc: "Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of Stationeer life - so essential, the ODA designated it an official \'tool\' during the 3rd Decannual Stationeer Solar Conference.\nNormal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy)." + .into(), + name: "Cable (Corner)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 980469101i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableCorner3".into(), + prefab_hash: 980469101i32, + desc: "Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of Stationeer life - so essential, the ODA designated it an official \'tool\' during the 3rd Decannual Stationeer Solar Conference.\nNormal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy)." + .into(), + name: "Cable (3-Way Corner)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 318437449i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableCorner3Burnt".into(), + prefab_hash: 318437449i32, + desc: "".into(), + name: "Burnt Cable (3-Way Corner)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 2393826i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableCorner3HBurnt".into(), + prefab_hash: 2393826i32, + desc: "".into(), + name: "".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -1542172466i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableCorner4".into(), + prefab_hash: -1542172466i32, + desc: "".into(), + name: "Cable (4-Way Corner)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 268421361i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableCorner4Burnt".into(), + prefab_hash: 268421361i32, + desc: "".into(), + name: "Burnt Cable (4-Way Corner)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -981223316i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableCorner4HBurnt".into(), + prefab_hash: -981223316i32, + desc: "".into(), + name: "Burnt Heavy Cable (4-Way Corner)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -177220914i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableCornerBurnt".into(), + prefab_hash: -177220914i32, + desc: "".into(), + name: "Burnt Cable (Corner)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -39359015i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableCornerH".into(), + prefab_hash: -39359015i32, + desc: "".into(), + name: "Heavy Cable (Corner)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -1843379322i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableCornerH3".into(), + prefab_hash: -1843379322i32, + desc: "".into(), + name: "Heavy Cable (3-Way Corner)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 205837861i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableCornerH4".into(), + prefab_hash: 205837861i32, + desc: "".into(), + name: "Heavy Cable (4-Way Corner)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 1931412811i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableCornerHBurnt".into(), + prefab_hash: 1931412811i32, + desc: "".into(), + name: "Burnt Cable (Corner)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 281380789i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableFuse100k".into(), + prefab_hash: 281380789i32, + desc: "".into(), + name: "Fuse (100kW)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1103727120i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableFuse1k".into(), + prefab_hash: -1103727120i32, + desc: "".into(), + name: "Fuse (1kW)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -349716617i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableFuse50k".into(), + prefab_hash: -349716617i32, + desc: "".into(), + name: "Fuse (50kW)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -631590668i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableFuse5k".into(), + prefab_hash: -631590668i32, + desc: "".into(), + name: "Fuse (5kW)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -175342021i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableJunction".into(), + prefab_hash: -175342021i32, + desc: "Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of Stationeer life - so much so, the ODA designated it an official \'tool\' during the 3rd Decannual Stationeer Solar Conference.\nNormal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy)." + .into(), + name: "Cable (Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 1112047202i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableJunction4".into(), + prefab_hash: 1112047202i32, + desc: "Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of Stationeer life - so much so, the ODA designated it an official \'tool\' during the 3rd Decannual Stationeer Solar Conference.\nNormal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy)." + .into(), + name: "Cable (4-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -1756896811i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableJunction4Burnt".into(), + prefab_hash: -1756896811i32, + desc: "".into(), + name: "Burnt Cable (4-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -115809132i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableJunction4HBurnt".into(), + prefab_hash: -115809132i32, + desc: "".into(), + name: "Burnt Cable (4-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 894390004i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableJunction5".into(), + prefab_hash: 894390004i32, + desc: "".into(), + name: "Cable (5-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 1545286256i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableJunction5Burnt".into(), + prefab_hash: 1545286256i32, + desc: "".into(), + name: "Burnt Cable (5-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -1404690610i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableJunction6".into(), + prefab_hash: -1404690610i32, + desc: "Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of Stationeer duty - so much so, the ODA designated it an official \'tool\' during the 3rd Decannual Stationeer Solar Conference.\nNormal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy)." + .into(), + name: "Cable (6-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -628145954i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableJunction6Burnt".into(), + prefab_hash: -628145954i32, + desc: "".into(), + name: "Burnt Cable (6-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 1854404029i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableJunction6HBurnt".into(), + prefab_hash: 1854404029i32, + desc: "".into(), + name: "Burnt Cable (6-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -1620686196i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableJunctionBurnt".into(), + prefab_hash: -1620686196i32, + desc: "".into(), + name: "Burnt Cable (Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 469451637i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableJunctionH".into(), + prefab_hash: 469451637i32, + desc: "".into(), + name: "Heavy Cable (3-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -742234680i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableJunctionH4".into(), + prefab_hash: -742234680i32, + desc: "".into(), + name: "Heavy Cable (4-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -1530571426i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableJunctionH5".into(), + prefab_hash: -1530571426i32, + desc: "".into(), + name: "Heavy Cable (5-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 1701593300i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableJunctionH5Burnt".into(), + prefab_hash: 1701593300i32, + desc: "".into(), + name: "Burnt Heavy Cable (5-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 1036780772i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableJunctionH6".into(), + prefab_hash: 1036780772i32, + desc: "".into(), + name: "Heavy Cable (6-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -341365649i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableJunctionHBurnt".into(), + prefab_hash: -341365649i32, + desc: "".into(), + name: "Burnt Cable (Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 605357050i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableStraight".into(), + prefab_hash: 605357050i32, + desc: "Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of Stationeer life - so much so, the ODA designated it an official \'tool\'.\nNormal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy)." + .into(), + name: "Cable (Straight)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -1196981113i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableStraightBurnt".into(), + prefab_hash: -1196981113i32, + desc: "".into(), + name: "Burnt Cable (Straight)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -146200530i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableStraightH".into(), + prefab_hash: -146200530i32, + desc: "".into(), + name: "Heavy Cable (Straight)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 2085762089i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCableStraightHBurnt".into(), + prefab_hash: 2085762089i32, + desc: "".into(), + name: "Burnt Cable (Straight)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -342072665i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCamera".into(), + prefab_hash: -342072665i32, + desc: "Nothing says \'I care\' like a security camera that\'s been linked a Motion Sensor and a Console fitted with a Camera Display.\nBe there, even when you\'re not." + .into(), + name: "Camera".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Mode, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1385712131i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCapsuleTankGas".into(), + prefab_hash: -1385712131i32, + desc: "".into(), + name: "Gas Capsule Tank Small".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume, + MemoryAccess::Read), (LogicType::RatioNitrousOxide, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::VolumeOfLiquid, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1415396263i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCapsuleTankLiquid".into(), + prefab_hash: 1415396263i32, + desc: "".into(), + name: "Liquid Capsule Tank Small".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume, + MemoryAccess::Read), (LogicType::RatioNitrousOxide, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::VolumeOfLiquid, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1151864003i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCargoStorageMedium".into(), + prefab_hash: 1151864003i32, + desc: "".into(), + name: "Cargo Storage (Medium)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()), (2u32, vec![] .into_iter().collect()), (3u32, vec![] + .into_iter().collect()), (4u32, vec![] .into_iter().collect()), + (5u32, vec![] .into_iter().collect()), (6u32, vec![] .into_iter() + .collect()), (7u32, vec![] .into_iter().collect()), (8u32, vec![] + .into_iter().collect()), (9u32, vec![] .into_iter().collect()), + (10u32, vec![] .into_iter().collect()), (11u32, vec![] + .into_iter().collect()), (12u32, vec![] .into_iter().collect()), + (13u32, vec![] .into_iter().collect()), (14u32, vec![] + .into_iter().collect()), (15u32, vec![] .into_iter().collect()), + (16u32, vec![] .into_iter().collect()), (17u32, vec![] + .into_iter().collect()), (18u32, vec![] .into_iter().collect()), + (19u32, vec![] .into_iter().collect()), (20u32, vec![] + .into_iter().collect()), (21u32, vec![] .into_iter().collect()), + (22u32, vec![] .into_iter().collect()), (23u32, vec![] + .into_iter().collect()), (24u32, vec![] .into_iter().collect()), + (25u32, vec![] .into_iter().collect()), (26u32, vec![] + .into_iter().collect()), (27u32, vec![] .into_iter().collect()), + (28u32, vec![] .into_iter().collect()), (29u32, vec![] + .into_iter().collect()), (30u32, vec![] .into_iter().collect()), + (31u32, vec![] .into_iter().collect()), (32u32, vec![] + .into_iter().collect()), (33u32, vec![] .into_iter().collect()), + (34u32, vec![] .into_iter().collect()), (35u32, vec![] + .into_iter().collect()), (36u32, vec![] .into_iter().collect()), + (37u32, vec![] .into_iter().collect()), (38u32, vec![] + .into_iter().collect()), (39u32, vec![] .into_iter().collect()), + (40u32, vec![] .into_iter().collect()), (41u32, vec![] + .into_iter().collect()), (42u32, vec![] .into_iter().collect()), + (43u32, vec![] .into_iter().collect()), (44u32, vec![] + .into_iter().collect()), (45u32, vec![] .into_iter().collect()), + (46u32, vec![] .into_iter().collect()), (47u32, vec![] + .into_iter().collect()), (48u32, vec![] .into_iter().collect()), + (49u32, vec![] .into_iter().collect()), (50u32, vec![] + .into_iter().collect()), (51u32, vec![] .into_iter().collect()), + (52u32, vec![] .into_iter().collect()), (53u32, vec![] + .into_iter().collect()), (54u32, vec![] .into_iter().collect()), + (55u32, vec![] .into_iter().collect()), (56u32, vec![] + .into_iter().collect()), (57u32, vec![] .into_iter().collect()), + (58u32, vec![] .into_iter().collect()), (59u32, vec![] + .into_iter().collect()), (60u32, vec![] .into_iter().collect()), + (61u32, vec![] .into_iter().collect()), (62u32, vec![] + .into_iter().collect()), (63u32, vec![] .into_iter().collect()), + (64u32, vec![] .into_iter().collect()), (65u32, vec![] + .into_iter().collect()), (66u32, vec![] .into_iter().collect()), + (67u32, vec![] .into_iter().collect()), (68u32, vec![] + .into_iter().collect()), (69u32, vec![] .into_iter().collect()), + (70u32, vec![] .into_iter().collect()), (71u32, vec![] + .into_iter().collect()), (72u32, vec![] .into_iter().collect()), + (73u32, vec![] .into_iter().collect()), (74u32, vec![] + .into_iter().collect()), (75u32, vec![] .into_iter().collect()), + (76u32, vec![] .into_iter().collect()), (77u32, vec![] + .into_iter().collect()), (78u32, vec![] .into_iter().collect()), + (79u32, vec![] .into_iter().collect()), (80u32, vec![] + .into_iter().collect()), (81u32, vec![] .into_iter().collect()), + (82u32, vec![] .into_iter().collect()), (83u32, vec![] + .into_iter().collect()), (84u32, vec![] .into_iter().collect()), + (85u32, vec![] .into_iter().collect()), (86u32, vec![] + .into_iter().collect()), (87u32, vec![] .into_iter().collect()), + (88u32, vec![] .into_iter().collect()), (89u32, vec![] + .into_iter().collect()), (90u32, vec![] .into_iter().collect()), + (91u32, vec![] .into_iter().collect()), (92u32, vec![] + .into_iter().collect()), (93u32, vec![] .into_iter().collect()), + (94u32, vec![] .into_iter().collect()), (95u32, vec![] + .into_iter().collect()), (96u32, vec![] .into_iter().collect()), + (97u32, vec![] .into_iter().collect()), (98u32, vec![] + .into_iter().collect()), (99u32, vec![] .into_iter().collect()), + (100u32, vec![] .into_iter().collect()), (101u32, vec![] + .into_iter().collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::Quantity, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { + name : "Export".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + -1493672123i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCargoStorageSmall".into(), + prefab_hash: -1493672123i32, + desc: "".into(), + name: "Cargo Storage (Small)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (2u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (3u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (4u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (5u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (6u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (7u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (8u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (9u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (10u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (11u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (12u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (13u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (14u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (15u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (16u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (17u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (18u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (19u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (20u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (21u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (22u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (23u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (24u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (25u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (26u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (27u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (28u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (29u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (30u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (31u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (32u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (33u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (34u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (35u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (36u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (37u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (38u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (39u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (40u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (41u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (42u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (43u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (44u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (45u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (46u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (47u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (48u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (49u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (50u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (51u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::Quantity, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { + name : "Export".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 690945935i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCentrifuge".into(), + prefab_hash: 690945935i32, + desc: "If a Recycler or unbalanced Furnace outputs reagent mixture rather than the desired ingots, a centrifuge allows you to reclaim the raw ore. \n It also refines Dirty Ore produced from the Deep Miner and Dirty Ore produced from the Rocket Miner. \n Its bigger brother Combustion Centrifuge can be used to process items significantly faster. Items processed by the centrifuge will be de-gassed. \n If openned while powered on, the centrifuge will enter an errored state and reduce its rpm to 0 and then export any items." + .into(), + name: "Centrifuge".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Reagents, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::ClearMemory, + MemoryAccess::Write), (LogicType::ExportCount, + MemoryAccess::Read), (LogicType::ImportCount, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { + name : "Export".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: true, + }, + } + .into(), + ), + ( + 1167659360i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChair".into(), + prefab_hash: 1167659360i32, + desc: "One of the universe\'s many chairs, optimized for bipeds with somewhere between zero and two upper limbs." + .into(), + name: "Chair".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Seat".into(), typ : Class::Entity }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1944858936i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChairBacklessDouble".into(), + prefab_hash: 1944858936i32, + desc: "".into(), + name: "Chair (Backless Double)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Seat".into(), typ : Class::Entity }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1672275150i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChairBacklessSingle".into(), + prefab_hash: 1672275150i32, + desc: "".into(), + name: "Chair (Backless Single)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Seat".into(), typ : Class::Entity }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -367720198i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChairBoothCornerLeft".into(), + prefab_hash: -367720198i32, + desc: "".into(), + name: "Chair (Booth Corner Left)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Seat".into(), typ : Class::Entity }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1640720378i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChairBoothMiddle".into(), + prefab_hash: 1640720378i32, + desc: "".into(), + name: "Chair (Booth Middle)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Seat".into(), typ : Class::Entity }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1152812099i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChairRectangleDouble".into(), + prefab_hash: -1152812099i32, + desc: "".into(), + name: "Chair (Rectangle Double)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Seat".into(), typ : Class::Entity }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1425428917i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChairRectangleSingle".into(), + prefab_hash: -1425428917i32, + desc: "".into(), + name: "Chair (Rectangle Single)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Seat".into(), typ : Class::Entity }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1245724402i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChairThickDouble".into(), + prefab_hash: -1245724402i32, + desc: "".into(), + name: "Chair (Thick Double)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Seat".into(), typ : Class::Entity }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1510009608i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChairThickSingle".into(), + prefab_hash: -1510009608i32, + desc: "".into(), + name: "Chair (Thick Single)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Seat".into(), typ : Class::Entity }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -850484480i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChuteBin".into(), + prefab_hash: -850484480i32, + desc: "The Stationeer\'s goal is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps.\nLike most Recurso-designed systems, chute bins are simple and robust powered items, allowing items to be manually passed into chute networks by pulling a lever. They can also be programmed with logic to operate automatically, although full automation requires the use items such as a SDB Hopper." + .into(), + name: "Chute Bin".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Input".into(), typ : Class::None }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::PowerAndData, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 1360330136i32, + StructureSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChuteCorner".into(), + prefab_hash: 1360330136i32, + desc: "Chutes act as pipes for items. Use them to connect various import/export equipment together such as the Vending Machine and printers like the Autolathe.\nThe aim for any Stationeer is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps.\nChute corners are fundamental components of chute networks, which allow the transport of items between machines with import/export slots, such as the Furnace and other automatable structures." + .into(), + name: "Chute (Corner)".into(), + }, + structure: StructureInfo { small_grid: true }, + slots: vec![ + SlotInfo { name : "Transport Slot".into(), typ : Class::None } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + -810874728i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChuteDigitalFlipFlopSplitterLeft".into(), + prefab_hash: -810874728i32, + desc: "The digital flip flop will toggle between two outputs using a specified ratio (n:1). For example, setting the dial to 2 would allow two items to pass through the primary output before flipping to the secondary output." + .into(), + name: "Chute Digital Flip Flop Splitter Left".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Quantity, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::SettingOutput, MemoryAccess::ReadWrite), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Transport Slot".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Output2 }, ConnectionInfo { typ : + ConnectionType::PowerAndData, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 163728359i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChuteDigitalFlipFlopSplitterRight".into(), + prefab_hash: 163728359i32, + desc: "The digital flip flop will toggle between two outputs using a specified ratio (n:1). For example, setting the dial to 2 would allow two items to pass through the primary output before flipping to the secondary output." + .into(), + name: "Chute Digital Flip Flop Splitter Right".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Quantity, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::SettingOutput, MemoryAccess::ReadWrite), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Transport Slot".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Output2 }, ConnectionInfo { typ : + ConnectionType::PowerAndData, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 648608238i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChuteDigitalValveLeft".into(), + prefab_hash: 648608238i32, + desc: "The Digital Chute Valve will stop the flow of materials when set to closed and when set to open, will act like a straight chute. The valve will automatically close after a certain number of items have passed through. This threshold can be set using the dial." + .into(), + name: "Chute Digital Valve Left".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Quantity, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Transport Slot".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + -1337091041i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChuteDigitalValveRight".into(), + prefab_hash: -1337091041i32, + desc: "The Digital Chute Valve will stop the flow of materials when set to closed and when set to open, will act like a straight chute. The valve will automatically close after a certain number of items have passed through. This threshold can be set using the dial." + .into(), + name: "Chute Digital Valve Right".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Quantity, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Transport Slot".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + -1446854725i32, + StructureSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChuteFlipFlopSplitter".into(), + prefab_hash: -1446854725i32, + desc: "A chute that toggles between two outputs".into(), + name: "Chute Flip Flop Splitter".into(), + }, + structure: StructureInfo { small_grid: true }, + slots: vec![ + SlotInfo { name : "Transport Slot".into(), typ : Class::None } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + -1469588766i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChuteInlet".into(), + prefab_hash: -1469588766i32, + desc: "The aim for any Stationeer is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps.\nThe chute inlet is an aperture by which items can be introduced to import/export networks. Note that its origins in zero-gravity mining means chute inlets are unpowered and permanently open, rather than interactable, allowing objects to be thrown in. They can be connected to logic systems to monitor throughput." + .into(), + name: "Chute Inlet".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ImportCount, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Import".into(), typ : Class::None }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -611232514i32, + StructureSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChuteJunction".into(), + prefab_hash: -611232514i32, + desc: "The aim for any Stationeer is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps.\nChute junctions are fundamental components of chute networks, allowing merging or splitting of these networks. When combined with a programmed Sorter, items can be sent down different paths to various machines with import/export slots." + .into(), + name: "Chute (Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + slots: vec![ + SlotInfo { name : "Transport Slot".into(), typ : Class::None } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + -1022714809i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChuteOutlet".into(), + prefab_hash: -1022714809i32, + desc: "The aim for any Stationeer is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps.\nThe chute outlet is an aperture for exiting items from import/export networks. Note that the outlet\'s origins in zero-gravity mining means they are permanently open, rather than interactable, but can be connected to logic systems to monitor throughput." + .into(), + name: "Chute Outlet".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Export".into(), typ : Class::None }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 225377225i32, + StructureSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChuteOverflow".into(), + prefab_hash: 225377225i32, + desc: "The overflow chute will direct materials to its overflow port when the thing connected to its default port is already occupied." + .into(), + name: "Chute Overflow".into(), + }, + structure: StructureInfo { small_grid: true }, + slots: vec![ + SlotInfo { name : "Transport Slot".into(), typ : Class::None } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + 168307007i32, + StructureSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChuteStraight".into(), + prefab_hash: 168307007i32, + desc: "Chutes act as pipes for items. Use them to connect various import/export equipment together such as the Vending Machine and printers like the Autolathe.\nThe aim for any Stationeer is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps.\nChutes are fundamental components of chute networks, which allow the transport of items between any machine or device with an import/export slot." + .into(), + name: "Chute (Straight)".into(), + }, + structure: StructureInfo { small_grid: true }, + slots: vec![ + SlotInfo { name : "Transport Slot".into(), typ : Class::None } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + -1918892177i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChuteUmbilicalFemale".into(), + prefab_hash: -1918892177i32, + desc: "".into(), + name: "Umbilical Socket (Chute)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Transport Slot".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -659093969i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChuteUmbilicalFemaleSide".into(), + prefab_hash: -659093969i32, + desc: "".into(), + name: "Umbilical Socket Angle (Chute)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Transport Slot".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -958884053i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChuteUmbilicalMale".into(), + prefab_hash: -958884053i32, + desc: "0.Left\n1.Center\n2.Right".into(), + name: "Umbilical (Chute)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::Read), + (LogicType::Error, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Left".into()), (1u32, "Center".into()), (2u32, + "Right".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Transport Slot".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PowerAndData, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 434875271i32, + StructureSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChuteValve".into(), + prefab_hash: 434875271i32, + desc: "The Chute Valve will stop the flow of materials when set to closed and when set to open, will act like a straight chute." + .into(), + name: "Chute Valve".into(), + }, + structure: StructureInfo { small_grid: true }, + slots: vec![ + SlotInfo { name : "Transport Slot".into(), typ : Class::None } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + -607241919i32, + StructureSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "StructureChuteWindow".into(), + prefab_hash: -607241919i32, + desc: "Chute\'s with windows let you see what\'s passing through your import/export network. But be warned, they are not insulated as other chutes are. Ices will melt." + .into(), + name: "Chute (Window)".into(), + }, + structure: StructureInfo { small_grid: true }, + slots: vec![ + SlotInfo { name : "Transport Slot".into(), typ : Class::None } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + -128473777i32, + StructureLogicDeviceMemoryTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCircuitHousing".into(), + prefab_hash: -128473777i32, + desc: "".into(), + name: "IC Housing".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::LineNumber, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::LineNumber, MemoryAccess::ReadWrite), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: true, + }, + slots: vec![ + SlotInfo { name : "Programmable Chip".into(), typ : + Class::ProgrammableChip } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: Some(6u32), + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + memory: MemoryInfo { + instructions: None, + memory_access: MemoryAccess::ReadWrite, + memory_size: 0u32, + }, + } + .into(), + ), + ( + 1238905683i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCombustionCentrifuge".into(), + prefab_hash: 1238905683i32, + desc: "The Combustion Centrifuge is a gas powered version of the Centrifuge. If a Recycler or unbalanced Furnace outputs reagent mixture rather than the desired ingots, a centrifuge allows you to reclaim the raw ore.\n It also refines Dirty Ore produced from the Deep Miner and Dirty Ore produced from the Rocket Miner. A combustible fuel mix should be supplied to the gas input, and waste gasses should be vented from the output. \n The machine\'s RPMs must be controlled via the throttle and combustion limiter levers. If the Combustion Centrifuge gains, or loses, RPMs too fast it will experience stress, and eventually grind to a halt. Higher RPMs directly result in faster processing speeds. \n The throttle lever controls the amount of fuel being pulled into the machine, increasing the temperature inside the engine, and leading to an increase in RPM. The limiter lever influences the speed of the combustion, and how much uncombusted gas is in the exhaust. \n Ejecting ore from the Combustion Centrifuge while it is at high RPMs will result in additional stress build up. If turned off while not stressed, the machine will automatically start to brake, and reduce RPMs in a controlled manner.\n\t " + .into(), + name: "Combustion Centrifuge".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()), (2u32, vec![] .into_iter().collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Reagents, + MemoryAccess::Read), (LogicType::RatioOxygen, + MemoryAccess::Read), (LogicType::RatioCarbonDioxide, + MemoryAccess::Read), (LogicType::RatioNitrogen, + MemoryAccess::Read), (LogicType::RatioPollutant, + MemoryAccess::Read), (LogicType::RatioVolatiles, + MemoryAccess::Read), (LogicType::RatioWater, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::PressureInput, MemoryAccess::Read), + (LogicType::TemperatureInput, MemoryAccess::Read), + (LogicType::RatioOxygenInput, MemoryAccess::Read), + (LogicType::RatioCarbonDioxideInput, MemoryAccess::Read), + (LogicType::RatioNitrogenInput, MemoryAccess::Read), + (LogicType::RatioPollutantInput, MemoryAccess::Read), + (LogicType::RatioVolatilesInput, MemoryAccess::Read), + (LogicType::RatioWaterInput, MemoryAccess::Read), + (LogicType::RatioNitrousOxideInput, MemoryAccess::Read), + (LogicType::TotalMolesInput, MemoryAccess::Read), + (LogicType::PressureOutput, MemoryAccess::Read), + (LogicType::TemperatureOutput, MemoryAccess::Read), + (LogicType::RatioOxygenOutput, MemoryAccess::Read), + (LogicType::RatioCarbonDioxideOutput, MemoryAccess::Read), + (LogicType::RatioNitrogenOutput, MemoryAccess::Read), + (LogicType::RatioPollutantOutput, MemoryAccess::Read), + (LogicType::RatioVolatilesOutput, MemoryAccess::Read), + (LogicType::RatioWaterOutput, MemoryAccess::Read), + (LogicType::RatioNitrousOxideOutput, MemoryAccess::Read), + (LogicType::TotalMolesOutput, MemoryAccess::Read), + (LogicType::CombustionInput, MemoryAccess::Read), + (LogicType::CombustionOutput, MemoryAccess::Read), + (LogicType::CombustionLimiter, MemoryAccess::ReadWrite), + (LogicType::Throttle, MemoryAccess::ReadWrite), (LogicType::Rpm, + MemoryAccess::Read), (LogicType::Stress, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogenInput, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogenOutput, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidOxygenInput, MemoryAccess::Read), + (LogicType::RatioLiquidOxygenOutput, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioLiquidVolatilesInput, MemoryAccess::Read), + (LogicType::RatioLiquidVolatilesOutput, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioSteamInput, MemoryAccess::Read), + (LogicType::RatioSteamOutput, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxideInput, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxideOutput, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidPollutantInput, MemoryAccess::Read), + (LogicType::RatioLiquidPollutantOutput, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxideInput, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxideOutput, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: true, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { + name : "Export".into(), typ : Class::None }, SlotInfo { name : + "Programmable Chip".into(), typ : Class::ProgrammableChip } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None }, + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: Some(2u32), + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: true, + }, + } + .into(), + ), + ( + -1513030150i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeCladdingAngled".into(), + prefab_hash: -1513030150i32, + desc: "".into(), + name: "Composite Cladding (Angled)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -69685069i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeCladdingAngledCorner".into(), + prefab_hash: -69685069i32, + desc: "".into(), + name: "Composite Cladding (Angled Corner)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -1841871763i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeCladdingAngledCornerInner".into(), + prefab_hash: -1841871763i32, + desc: "".into(), + name: "Composite Cladding (Angled Corner Inner)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -1417912632i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeCladdingAngledCornerInnerLong" + .into(), + prefab_hash: -1417912632i32, + desc: "".into(), + name: "Composite Cladding (Angled Corner Inner Long)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 947705066i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeCladdingAngledCornerInnerLongL" + .into(), + prefab_hash: 947705066i32, + desc: "".into(), + name: "Composite Cladding (Angled Corner Inner Long L)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -1032590967i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeCladdingAngledCornerInnerLongR" + .into(), + prefab_hash: -1032590967i32, + desc: "".into(), + name: "Composite Cladding (Angled Corner Inner Long R)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 850558385i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeCladdingAngledCornerLong".into(), + prefab_hash: 850558385i32, + desc: "".into(), + name: "Composite Cladding (Long Angled Corner)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -348918222i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeCladdingAngledCornerLongR".into(), + prefab_hash: -348918222i32, + desc: "".into(), + name: "Composite Cladding (Long Angled Mirrored Corner)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -387546514i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeCladdingAngledLong".into(), + prefab_hash: -387546514i32, + desc: "".into(), + name: "Composite Cladding (Long Angled)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 212919006i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeCladdingCylindrical".into(), + prefab_hash: 212919006i32, + desc: "".into(), + name: "Composite Cladding (Cylindrical)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 1077151132i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeCladdingCylindricalPanel".into(), + prefab_hash: 1077151132i32, + desc: "".into(), + name: "Composite Cladding (Cylindrical Panel)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 1997436771i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeCladdingPanel".into(), + prefab_hash: 1997436771i32, + desc: "".into(), + name: "Composite Cladding (Panel)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -259357734i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeCladdingRounded".into(), + prefab_hash: -259357734i32, + desc: "".into(), + name: "Composite Cladding (Rounded)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 1951525046i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeCladdingRoundedCorner".into(), + prefab_hash: 1951525046i32, + desc: "".into(), + name: "Composite Cladding (Rounded Corner)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 110184667i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeCladdingRoundedCornerInner".into(), + prefab_hash: 110184667i32, + desc: "".into(), + name: "Composite Cladding (Rounded Corner Inner)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 139107321i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeCladdingSpherical".into(), + prefab_hash: 139107321i32, + desc: "".into(), + name: "Composite Cladding (Spherical)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 534213209i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeCladdingSphericalCap".into(), + prefab_hash: 534213209i32, + desc: "".into(), + name: "Composite Cladding (Spherical Cap)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 1751355139i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeCladdingSphericalCorner".into(), + prefab_hash: 1751355139i32, + desc: "".into(), + name: "Composite Cladding (Spherical Corner)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -793837322i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeDoor".into(), + prefab_hash: -793837322i32, + desc: "Recurso\'s composite doors are rated to 300kPa, which is more than sufficient for most purposes they were designed for. However, steep pressure differentials are not your friend." + .into(), + name: "Composite Door".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::Idle, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Operate".into()), (1u32, "Logic".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 324868581i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeFloorGrating".into(), + prefab_hash: 324868581i32, + desc: "While aesthetics rank low on the ladder of Stationeer concerns, composite gratings allow the concealment of unsightly cables on floors, walls and ceilings." + .into(), + name: "Composite Floor Grating".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -895027741i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeFloorGrating2".into(), + prefab_hash: -895027741i32, + desc: "".into(), + name: "Composite Floor Grating (Type 2)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -1113471627i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeFloorGrating3".into(), + prefab_hash: -1113471627i32, + desc: "".into(), + name: "Composite Floor Grating (Type 3)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 600133846i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeFloorGrating4".into(), + prefab_hash: 600133846i32, + desc: "".into(), + name: "Composite Floor Grating (Type 4)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 2109695912i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeFloorGratingOpen".into(), + prefab_hash: 2109695912i32, + desc: "".into(), + name: "Composite Floor Grating Open".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 882307910i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeFloorGratingOpenRotated".into(), + prefab_hash: 882307910i32, + desc: "".into(), + name: "Composite Floor Grating Open Rotated".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 1237302061i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeWall".into(), + prefab_hash: 1237302061i32, + desc: "Air-tight and resistant to extreme temperatures, composite walls favor form over function, coming in a range of slightly different, functionally identical varieties." + .into(), + name: "Composite Wall (Type 1)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 718343384i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeWall02".into(), + prefab_hash: 718343384i32, + desc: "".into(), + name: "Composite Wall (Type 2)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 1574321230i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeWall03".into(), + prefab_hash: 1574321230i32, + desc: "".into(), + name: "Composite Wall (Type 3)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -1011701267i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeWall04".into(), + prefab_hash: -1011701267i32, + desc: "".into(), + name: "Composite Wall (Type 4)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -2060571986i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeWindow".into(), + prefab_hash: -2060571986i32, + desc: "Air-tight and resistant to extreme temperatures, composite walls come in several charming, near identical varieties - reflecting their designer\'s focus on form over function." + .into(), + name: "Composite Window".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -688284639i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCompositeWindowIron".into(), + prefab_hash: -688284639i32, + desc: "".into(), + name: "Iron Window".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -626563514i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureComputer".into(), + prefab_hash: -626563514i32, + desc: "In some ways a relic, the \'Chonk R1\' was designed by severely conflicted Norsec technicians, who needed a unit that could operate with a wide range of motherboards, while also enduring the worst a new Cadet could throw at it.\nThe result is a machine described by some as \'the only PC likely to survive our collision with a black hole\', while other, less appreciative users regard it as sharing most of its technological DNA with a cheese grater.\nCompatible motherboards:\n- Logic Motherboard\n- Manufacturing Motherboard\n- Sorter Motherboard\n- Communications Motherboard\n- IC Editor Motherboard" + .into(), + name: "Computer".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()), (2u32, vec![] .into_iter().collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Data Disk".into(), typ : Class::DataDisk }, + SlotInfo { name : "Data Disk".into(), typ : Class::DataDisk }, + SlotInfo { name : "Motherboard".into(), typ : Class::Motherboard } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 1420719315i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCondensationChamber".into(), + prefab_hash: 1420719315i32, + desc: "A device for safely condensing gasses into liquids. Liquids and Gasses will both exist safely inside the device. The Chamber will pressurise using its in-built pressure regulator to the target set by the setting wheel.\n The secondary gas input on the left is a heat-exchanger input and allows for heat exchange between the secondary input pipe and the internal atmosphere of the Condensation Chamber.\n Paired with Evaporation Chamber Stationeers can exploit the phase change properties of gases to build a DIY air conditioner." + .into(), + name: "Condensation Chamber".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::RatioOxygen, + MemoryAccess::Read), (LogicType::RatioCarbonDioxide, + MemoryAccess::Read), (LogicType::RatioNitrogen, + MemoryAccess::Read), (LogicType::RatioPollutant, + MemoryAccess::Read), (LogicType::RatioVolatiles, + MemoryAccess::Read), (LogicType::RatioWater, MemoryAccess::Read), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input2 }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::None }, + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + -965741795i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCondensationValve".into(), + prefab_hash: -965741795i32, + desc: "Allows for the removal of any liquids from a gas pipe into a liquid pipe. Only allows liquids to pass in one direction." + .into(), + name: "Condensation Valve".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 235638270i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureConsole".into(), + prefab_hash: 235638270i32, + desc: "This Norsec-designed control box manages devices such as the Active Vent, Passive Vent, Gas Sensor and Composite Door, depending on which circuitboard is inserted into the unit. It has a shared data/power port.\nA completed console displays all devices connected to the current power network. Any devices not related to the installed circuitboard will be greyed-out and inoperable. Consoles are locked once a Data Disk is removed." + .into(), + name: "Console".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Circuit Board".into(), typ : Class::Circuitboard + }, SlotInfo { name : "Data Disk".into(), typ : Class::DataDisk } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + -722284333i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureConsoleDual".into(), + prefab_hash: -722284333i32, + desc: "This Norsec-designed control box manages devices such as the Active Vent, Gas Sensor, Composite Door and others, depending on which circuitboard is inserted into the unit. It has separate data and power ports.\nA completed console displays all devices connected to the current power network. Any devices not related to the installed circuitboard will be greyed-out and inoperable. Consoles are locked once a Data Disk is removed." + .into(), + name: "Console Dual".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Circuit Board".into(), typ : Class::Circuitboard + }, SlotInfo { name : "Data Disk".into(), typ : Class::DataDisk } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + -53151617i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureConsoleLED1x2".into(), + prefab_hash: -53151617i32, + desc: "0.Default\n1.Percent\n2.Power".into(), + name: "LED Display (Medium)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::Color, MemoryAccess::ReadWrite), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Default".into()), (1u32, "Percent".into()), (2u32, + "Power".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: true, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1949054743i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureConsoleLED1x3".into(), + prefab_hash: -1949054743i32, + desc: "0.Default\n1.Percent\n2.Power".into(), + name: "LED Display (Large)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::Color, MemoryAccess::ReadWrite), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Default".into()), (1u32, "Percent".into()), (2u32, + "Power".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: true, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -815193061i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureConsoleLED5".into(), + prefab_hash: -815193061i32, + desc: "0.Default\n1.Percent\n2.Power".into(), + name: "LED Display (Small)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::Color, MemoryAccess::ReadWrite), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Default".into()), (1u32, "Percent".into()), (2u32, + "Power".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: true, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 801677497i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureConsoleMonitor".into(), + prefab_hash: 801677497i32, + desc: "This Norsec-designed control box manages devices such as the Active Vent, Passive Vent, Gas Sensor, Security Camera and Composite Door, depending on which circuitboard is inserted into the unit. It has a shared data/power port, and a charming sloped interface.\nA completed console displays all devices connected to the current power network. Any devices not related to the installed circuitboard will be greyed-out and inoperable. Consoles are locked once a Data Disk is removed." + .into(), + name: "Console Monitor".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Circuit Board".into(), typ : Class::Circuitboard + }, SlotInfo { name : "Data Disk".into(), typ : Class::DataDisk } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + -1961153710i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureControlChair".into(), + prefab_hash: -1961153710i32, + desc: "Once, these chairs were the heart of space-going behemoths. Now, they\'re items of nostalgia built only by a handful of Stationeers with a sense of history. In other words, kitsch." + .into(), + name: "Control Chair".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::PositionX, MemoryAccess::Read), + (LogicType::PositionY, MemoryAccess::Read), + (LogicType::PositionZ, MemoryAccess::Read), + (LogicType::VelocityMagnitude, MemoryAccess::Read), + (LogicType::VelocityRelativeX, MemoryAccess::Read), + (LogicType::VelocityRelativeY, MemoryAccess::Read), + (LogicType::VelocityRelativeZ, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Entity".into(), typ : Class::Entity }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1968255729i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCornerLocker".into(), + prefab_hash: -1968255729i32, + desc: "".into(), + name: "Corner Locker".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (2u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (3u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (4u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (5u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: false, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + -733500083i32, + StructureSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCrateMount".into(), + prefab_hash: -733500083i32, + desc: "".into(), + name: "Container Mount".into(), + }, + structure: StructureInfo { small_grid: true }, + slots: vec![ + SlotInfo { name : "Container Slot".into(), typ : Class::None } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + 1938254586i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCryoTube".into(), + prefab_hash: 1938254586i32, + desc: "The exact operation of the Longsleep cryotube remains a commercial secret, with Norsec merely licensing the design. Able to regenerate organ damage when supplied with power and an atmosphere, the Longsleep is a minor miracle of modern medical technology." + .into(), + name: "CryoTube".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::EntityState, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Bed".into(), typ : Class::Entity }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::None }, + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 1443059329i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCryoTubeHorizontal".into(), + prefab_hash: 1443059329i32, + desc: "The horizontal variant of the cryo tube. Will heal players and organs as well as revive dead players when provided with an atmosphere of Nitrogen below -150C." + .into(), + name: "Cryo Tube Horizontal".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::EntityState, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Player".into(), typ : Class::Entity }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + -1381321828i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureCryoTubeVertical".into(), + prefab_hash: -1381321828i32, + desc: "The vertical variant of the cryo tube. Will heal players and organs as well as revive dead players when provided with an atmosphere of Nitrogen below -150C." + .into(), + name: "Cryo Tube Vertical".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::EntityState, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Player".into(), typ : Class::Entity }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 1076425094i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureDaylightSensor".into(), + prefab_hash: 1076425094i32, + desc: "Daylight sensors provide data on whether the current region of your base is in sunlight, and report the exact solar angle. Note that the orientation of the sensor alters the reported solar angle, while Logic systems can be used to offset it." + .into(), + name: "Daylight Sensor".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Mode, MemoryAccess::ReadWrite), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::Horizontal, + MemoryAccess::Read), (LogicType::Vertical, MemoryAccess::Read), + (LogicType::SolarAngle, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::SolarIrradiance, + MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Default".into()), (1u32, "Horizontal".into()), (2u32, + "Vertical".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 265720906i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureDeepMiner".into(), + prefab_hash: 265720906i32, + desc: "Drills through terrain until it hits bedrock. Once inside bedrock Dirty Ore is produced roughly every 90s" + .into(), + name: "Deep Miner".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Export".into(), typ : Class::None }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::None }, + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1280984102i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureDigitalValve".into(), + prefab_hash: -1280984102i32, + desc: "The digital valve allows Stationeers to create logic-controlled valves and pipe networks." + .into(), + name: "Digital Valve".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1944485013i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureDiode".into(), + prefab_hash: 1944485013i32, + desc: "".into(), + name: "LED".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::Color, MemoryAccess::ReadWrite), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: true, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 576516101i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureDiodeSlide".into(), + prefab_hash: 576516101i32, + desc: "".into(), + name: "Diode Slide".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -137465079i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureDockPortSide".into(), + prefab_hash: -137465079i32, + desc: "".into(), + name: "Dock (Port Side)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::Idle, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 1968371847i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureDrinkingFountain".into(), + prefab_hash: 1968371847i32, + desc: "".into(), + name: "".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PowerAndData, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1668992663i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureElectrolyzer".into(), + prefab_hash: -1668992663i32, + desc: "The Norsec-designed Electrolyzer splits Water into hydrogen and Oxygen. Employing unknown proprietary technology, the device uses water\'s latent heat as the energy to drive the electrosis process. If there is a downside to this near-miraculous fission, it\'s that the device is limited by the quantity of power available, which is used to maintain the temperature output. In other words, the machine works best with hot gas." + .into(), + name: "Electrolyzer".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::RatioOxygen, + MemoryAccess::Read), (LogicType::RatioCarbonDioxide, + MemoryAccess::Read), (LogicType::RatioNitrogen, + MemoryAccess::Read), (LogicType::RatioPollutant, + MemoryAccess::Read), (LogicType::RatioVolatiles, + MemoryAccess::Read), (LogicType::RatioWater, MemoryAccess::Read), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::PressureInput, MemoryAccess::Read), + (LogicType::TemperatureInput, MemoryAccess::Read), + (LogicType::RatioOxygenInput, MemoryAccess::Read), + (LogicType::RatioCarbonDioxideInput, MemoryAccess::Read), + (LogicType::RatioNitrogenInput, MemoryAccess::Read), + (LogicType::RatioPollutantInput, MemoryAccess::Read), + (LogicType::RatioVolatilesInput, MemoryAccess::Read), + (LogicType::RatioWaterInput, MemoryAccess::Read), + (LogicType::RatioNitrousOxideInput, MemoryAccess::Read), + (LogicType::TotalMolesInput, MemoryAccess::Read), + (LogicType::PressureOutput, MemoryAccess::Read), + (LogicType::TemperatureOutput, MemoryAccess::Read), + (LogicType::RatioOxygenOutput, MemoryAccess::Read), + (LogicType::RatioCarbonDioxideOutput, MemoryAccess::Read), + (LogicType::RatioNitrogenOutput, MemoryAccess::Read), + (LogicType::RatioPollutantOutput, MemoryAccess::Read), + (LogicType::RatioVolatilesOutput, MemoryAccess::Read), + (LogicType::RatioWaterOutput, MemoryAccess::Read), + (LogicType::RatioNitrousOxideOutput, MemoryAccess::Read), + (LogicType::TotalMolesOutput, MemoryAccess::Read), + (LogicType::CombustionInput, MemoryAccess::Read), + (LogicType::CombustionOutput, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogenInput, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogenOutput, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidOxygenInput, MemoryAccess::Read), + (LogicType::RatioLiquidOxygenOutput, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioLiquidVolatilesInput, MemoryAccess::Read), + (LogicType::RatioLiquidVolatilesOutput, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioSteamInput, MemoryAccess::Read), + (LogicType::RatioSteamOutput, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxideInput, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxideOutput, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidPollutantInput, MemoryAccess::Read), + (LogicType::RatioLiquidPollutantOutput, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxideInput, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxideOutput, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Idle".into()), (1u32, "Active".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: true, + }, + slots: vec![ + SlotInfo { name : "Programmable Chip".into(), typ : + Class::ProgrammableChip } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: Some(2u32), + has_activate_state: true, + has_atmosphere: true, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 1307165496i32, + StructureLogicDeviceMemoryTemplate { + prefab: PrefabInfo { + prefab_name: "StructureElectronicsPrinter".into(), + prefab_hash: 1307165496i32, + desc: "The electronic printer will create any electronic part you need. From circuit boards and electronic devices to solar panels. The choice is yours. Upgrade the device using a Electronic Printer Mod for additional recipes and faster processing speeds." + .into(), + name: "Electronics Printer".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Reagents, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::RecipeHash, MemoryAccess::ReadWrite), + (LogicType::CompletionRatio, MemoryAccess::Read), + (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::Ingot }, SlotInfo { + name : "Export".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: true, + }, + memory: MemoryInfo { + instructions: Some( + vec![ + ("DeviceSetLock".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |" + .into(), typ : "PrinterInstruction".into(), value : 6i64 }), + ("EjectAllReagents".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" + .into(), typ : "PrinterInstruction".into(), value : 8i64 }), + ("EjectReagent".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |" + .into(), typ : "PrinterInstruction".into(), value : 7i64 }), + ("ExecuteRecipe".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" + .into(), typ : "PrinterInstruction".into(), value : 2i64 }), + ("JumpIfNextInvalid".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 4i64 }), + ("JumpToAddress".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 5i64 }), + ("MissingRecipeReagent".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" + .into(), typ : "PrinterInstruction".into(), value : 9i64 }), + ("StackPointer".into(), Instruction { description : + "| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 1i64 }), + ("WaitUntilNextValid".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" + .into(), typ : "PrinterInstruction".into(), value : 3i64 }) + ] + .into_iter() + .collect(), + ), + memory_access: MemoryAccess::ReadWrite, + memory_size: 64u32, + }, + } + .into(), + ), + ( + -827912235i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureElevatorLevelFront".into(), + prefab_hash: -827912235i32, + desc: "".into(), + name: "Elevator Level (Cabled)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::ElevatorSpeed, + MemoryAccess::ReadWrite), (LogicType::ElevatorLevel, + MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Elevator, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Elevator, role : ConnectionRole::None }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 2060648791i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureElevatorLevelIndustrial".into(), + prefab_hash: 2060648791i32, + desc: "".into(), + name: "Elevator Level".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::ElevatorSpeed, + MemoryAccess::ReadWrite), (LogicType::ElevatorLevel, + MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Elevator, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Elevator, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 826144419i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureElevatorShaft".into(), + prefab_hash: 826144419i32, + desc: "".into(), + name: "Elevator Shaft (Cabled)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::ElevatorSpeed, + MemoryAccess::ReadWrite), (LogicType::ElevatorLevel, + MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Elevator, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Elevator, role : ConnectionRole::None }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1998354978i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureElevatorShaftIndustrial".into(), + prefab_hash: 1998354978i32, + desc: "".into(), + name: "Elevator Shaft".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::ElevatorSpeed, MemoryAccess::ReadWrite), + (LogicType::ElevatorLevel, MemoryAccess::ReadWrite), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Elevator, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Elevator, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1668452680i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureEmergencyButton".into(), + prefab_hash: 1668452680i32, + desc: "Description coming.".into(), + name: "Important Button".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 2035781224i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureEngineMountTypeA1".into(), + prefab_hash: 2035781224i32, + desc: "".into(), + name: "Engine Mount (Type A1)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -1429782576i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureEvaporationChamber".into(), + prefab_hash: -1429782576i32, + desc: "A device for safely evaporating liquids into gasses. Liquids and Gasses will both exist safely inside the device. Lowering the pressure target of the in-built back pressure regulator using the setting wheel will change the boiling temperature of liquids inside.\n The secondary gas input on the left is a heat-exchanger input and allows for heat exchange between the secondary input pipe and the internal atmosphere of the Evaporation Chamber. \n Paired with Condensation Chamber Stationeers can exploit the phase change properties of gases to build a DIY air conditioner." + .into(), + name: "Evaporation Chamber".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::RatioOxygen, + MemoryAccess::Read), (LogicType::RatioCarbonDioxide, + MemoryAccess::Read), (LogicType::RatioNitrogen, + MemoryAccess::Read), (LogicType::RatioPollutant, + MemoryAccess::Read), (LogicType::RatioVolatiles, + MemoryAccess::Read), (LogicType::RatioWater, MemoryAccess::Read), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input2 }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::None }, + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 195298587i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureExpansionValve".into(), + prefab_hash: 195298587i32, + desc: "Allows for moving liquids from a liquid pipe into a gas pipe. Only allows liquids to pass in one direction. Typically this is done to allow the liquid to evaporate into a gas as part of an airconditioning loop." + .into(), + name: "Expansion Valve".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1622567418i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureFairingTypeA1".into(), + prefab_hash: 1622567418i32, + desc: "".into(), + name: "Fairing (Type A1)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -104908736i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureFairingTypeA2".into(), + prefab_hash: -104908736i32, + desc: "".into(), + name: "Fairing (Type A2)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -1900541738i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureFairingTypeA3".into(), + prefab_hash: -1900541738i32, + desc: "".into(), + name: "Fairing (Type A3)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -348054045i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureFiltration".into(), + prefab_hash: -348054045i32, + desc: "The Filtration Unit is based on a long-standing ExMin system, itself based on older designs of uncertain provenance. It is available in the Kit (Atmospherics).\nThe device has nonetheless proven indispensable for Stationeer atmospheric systems, as it can filter two gases simultaneously from a single pipe network using a dual filter array. The unit has an input, and a filter output as well as an unfiltered outlet for any residual gases.\n" + .into(), + name: "Filtration".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()), (2u32, vec![] .into_iter().collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::PressureInput, MemoryAccess::Read), + (LogicType::TemperatureInput, MemoryAccess::Read), + (LogicType::RatioOxygenInput, MemoryAccess::Read), + (LogicType::RatioCarbonDioxideInput, MemoryAccess::Read), + (LogicType::RatioNitrogenInput, MemoryAccess::Read), + (LogicType::RatioPollutantInput, MemoryAccess::Read), + (LogicType::RatioVolatilesInput, MemoryAccess::Read), + (LogicType::RatioWaterInput, MemoryAccess::Read), + (LogicType::RatioNitrousOxideInput, MemoryAccess::Read), + (LogicType::TotalMolesInput, MemoryAccess::Read), + (LogicType::PressureOutput, MemoryAccess::Read), + (LogicType::TemperatureOutput, MemoryAccess::Read), + (LogicType::RatioOxygenOutput, MemoryAccess::Read), + (LogicType::RatioCarbonDioxideOutput, MemoryAccess::Read), + (LogicType::RatioNitrogenOutput, MemoryAccess::Read), + (LogicType::RatioPollutantOutput, MemoryAccess::Read), + (LogicType::RatioVolatilesOutput, MemoryAccess::Read), + (LogicType::RatioWaterOutput, MemoryAccess::Read), + (LogicType::RatioNitrousOxideOutput, MemoryAccess::Read), + (LogicType::TotalMolesOutput, MemoryAccess::Read), + (LogicType::PressureOutput2, MemoryAccess::Read), + (LogicType::TemperatureOutput2, MemoryAccess::Read), + (LogicType::RatioOxygenOutput2, MemoryAccess::Read), + (LogicType::RatioCarbonDioxideOutput2, MemoryAccess::Read), + (LogicType::RatioNitrogenOutput2, MemoryAccess::Read), + (LogicType::RatioPollutantOutput2, MemoryAccess::Read), + (LogicType::RatioVolatilesOutput2, MemoryAccess::Read), + (LogicType::RatioWaterOutput2, MemoryAccess::Read), + (LogicType::RatioNitrousOxideOutput2, MemoryAccess::Read), + (LogicType::TotalMolesOutput2, MemoryAccess::Read), + (LogicType::CombustionInput, MemoryAccess::Read), + (LogicType::CombustionOutput, MemoryAccess::Read), + (LogicType::CombustionOutput2, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogenInput, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogenOutput, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogenOutput2, MemoryAccess::Read), + (LogicType::RatioLiquidOxygenInput, MemoryAccess::Read), + (LogicType::RatioLiquidOxygenOutput, MemoryAccess::Read), + (LogicType::RatioLiquidOxygenOutput2, MemoryAccess::Read), + (LogicType::RatioLiquidVolatilesInput, MemoryAccess::Read), + (LogicType::RatioLiquidVolatilesOutput, MemoryAccess::Read), + (LogicType::RatioLiquidVolatilesOutput2, MemoryAccess::Read), + (LogicType::RatioSteamInput, MemoryAccess::Read), + (LogicType::RatioSteamOutput, MemoryAccess::Read), + (LogicType::RatioSteamOutput2, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxideInput, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxideOutput, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxideOutput2, MemoryAccess::Read), + (LogicType::RatioLiquidPollutantInput, MemoryAccess::Read), + (LogicType::RatioLiquidPollutantOutput, MemoryAccess::Read), + (LogicType::RatioLiquidPollutantOutput2, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxideInput, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxideOutput, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxideOutput2, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Idle".into()), (1u32, "Active".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: true, + }, + slots: vec![ + SlotInfo { name : "Gas Filter".into(), typ : Class::GasFilter }, + SlotInfo { name : "Gas Filter".into(), typ : Class::GasFilter }, + SlotInfo { name : "Programmable Chip".into(), typ : + Class::ProgrammableChip } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Waste }, + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: Some(2u32), + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + -1529819532i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureFlagSmall".into(), + prefab_hash: -1529819532i32, + desc: "".into(), + name: "Small Flag".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -1535893860i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureFlashingLight".into(), + prefab_hash: -1535893860i32, + desc: "Few objects or ideas are as clearly and transparently named as the Flashing Light, although fans of scrupulous accuracy have been known to refer to it by its full, official title: \'Default Yellow Flashing Light\'." + .into(), + name: "Flashing Light".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 839890807i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureFlatBench".into(), + prefab_hash: 839890807i32, + desc: "".into(), + name: "Bench (Flat)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Seat".into(), typ : Class::Entity }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1048813293i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureFloorDrain".into(), + prefab_hash: 1048813293i32, + desc: "A passive liquid floor inlet that quickly removes liquids in one direction from the world into the connected pipe network. It will equalise gasses with the world atmosphere also." + .into(), + name: "Passive Liquid Inlet".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 1432512808i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureFrame".into(), + prefab_hash: 1432512808i32, + desc: "More durable than the Iron Frame, steel frames also have several variations for more complex constructions, such as the Steel Frame (Corner) and Steel Frame (Corner Cut). Like iron frames, they are placed then completed by welding Steel Sheets to the open framework." + .into(), + name: "Steel Frame".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -2112390778i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureFrameCorner".into(), + prefab_hash: -2112390778i32, + desc: "More durable than the Iron Frame, steel frames also offer several variations for more complex lattice constructions. \nWith a little patience and maneuvering, the corner frame\'s Gothic-inspired silhouette allows the creation of ogival arches and even more ambitious architecture, although they are not airtight and cannot be built on." + .into(), + name: "Steel Frame (Corner)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 271315669i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureFrameCornerCut".into(), + prefab_hash: 271315669i32, + desc: "0.Mode0\n1.Mode1".into(), + name: "Steel Frame (Corner Cut)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -1240951678i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureFrameIron".into(), + prefab_hash: -1240951678i32, + desc: "".into(), + name: "Iron Frame".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -302420053i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureFrameSide".into(), + prefab_hash: -302420053i32, + desc: "More durable than the Iron Frame, steel frames also provide variations for more ornate constructions." + .into(), + name: "Steel Frame (Side)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 958476921i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureFridgeBig".into(), + prefab_hash: 958476921i32, + desc: "The Xigo Koolaid fridge is a self-cooling storage device with 15 slots that preserves food when powered and turned on. While many users have complained about the placement of the power switch, its place in the pantheon of off-world whiteware is unquestioned.\n \nWith its own permanent internal atmosphere, the Koolaid fridge slows the decay of food by maintaining an optimal internal temperature. Its power usage varies on the external temperature against which it must balance its internal temperature. As such, it must shed heat to operate, so the Koolaid fridge DOES NOT work in a vacuum.\n \nAlso, don\'t leave the door open, as it will equalize with the current world temperature. And maybe start to beep.\n\nFor more information about food preservation, visit the food decay section of the Stationpedia." + .into(), + name: "Fridge (Large)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (2u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (3u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (4u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (5u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (6u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (7u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (8u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (9u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (10u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (11u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (12u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (13u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (14u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 751887598i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureFridgeSmall".into(), + prefab_hash: 751887598i32, + desc: "Essentially a heavily insulated box that allows users to pipe in any desired atmosphere, the Recurso Minibar fridge was a simple solution to the problem of food decay. It stores a small number of items, at any temperature you can muster.\n \n For more information about food preservation, visit the food decay section of the Stationpedia." + .into(), + name: "Fridge Small".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Pressure, + MemoryAccess::Read), (LogicType::Temperature, + MemoryAccess::Read), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::RatioOxygen, + MemoryAccess::Read), (LogicType::RatioCarbonDioxide, + MemoryAccess::Read), (LogicType::RatioNitrogen, + MemoryAccess::Read), (LogicType::RatioPollutant, + MemoryAccess::Read), (LogicType::RatioVolatiles, + MemoryAccess::Read), (LogicType::RatioWater, MemoryAccess::Read), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 1947944864i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureFurnace".into(), + prefab_hash: 1947944864i32, + desc: "The Zhurong furnace employs a high-temperature gas mixture of Oxygen and Volatiles to smelt ingots and a range of alloys as raw materials for fabricators.\nA basic gas mixture can be achieved by adding Ice (Oxite) and Ice (Volatiles) in a 1:2 ratio directly to the furnace, but more complex alloys will require careful management of a dedicated gas mixing network. Exact ingredient ratios must be observed. Likewise, smelting ores at insufficient temperatures will produce reagents, which must be recycled.\nIf liquids are present in the furnace, they will gather there until the furnace is connected to a liquid pipe network." + .into(), + name: "Furnace".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Pressure, + MemoryAccess::Read), (LogicType::Temperature, + MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Reagents, + MemoryAccess::Read), (LogicType::RatioOxygen, + MemoryAccess::Read), (LogicType::RatioCarbonDioxide, + MemoryAccess::Read), (LogicType::RatioNitrogen, + MemoryAccess::Read), (LogicType::RatioPollutant, + MemoryAccess::Read), (LogicType::RatioVolatiles, + MemoryAccess::Read), (LogicType::RatioWater, MemoryAccess::Read), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::RecipeHash, MemoryAccess::Read), + (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { + name : "Export".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Output2 }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: true, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: false, + has_open_state: true, + has_reagents: true, + }, + } + .into(), + ), + ( + 1033024712i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureFuselageTypeA1".into(), + prefab_hash: 1033024712i32, + desc: "".into(), + name: "Fuselage (Type A1)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -1533287054i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureFuselageTypeA2".into(), + prefab_hash: -1533287054i32, + desc: "".into(), + name: "Fuselage (Type A2)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 1308115015i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureFuselageTypeA4".into(), + prefab_hash: 1308115015i32, + desc: "".into(), + name: "Fuselage (Type A4)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 147395155i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureFuselageTypeC5".into(), + prefab_hash: 147395155i32, + desc: "".into(), + name: "Fuselage (Type C5)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 1165997963i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureGasGenerator".into(), + prefab_hash: 1165997963i32, + desc: "".into(), + name: "Gas Fuel Generator".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PowerGeneration, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 2104106366i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureGasMixer".into(), + prefab_hash: 2104106366i32, + desc: "Indispensable for producing precise atmospheric ratios, this gas mixer blends two gases in proportions ranging anywhere from 0-100%." + .into(), + name: "Gas Mixer".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Input2 }, + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PowerAndData, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1252983604i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureGasSensor".into(), + prefab_hash: -1252983604i32, + desc: "Gas sensors are designed to monitor and report basic atmospheric information, including temperature, pressure, and gas ratios. They also make wonderful wedding presents." + .into(), + name: "Gas Sensor".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1632165346i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureGasTankStorage".into(), + prefab_hash: 1632165346i32, + desc: "When connected to a pipe network, the tank storage unit allows you to refill a Canister, as well as read various atmospheric data from the Gas Canister." + .into(), + name: "Gas Tank Storage".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Pressure, MemoryAccess::Read), + (LogicSlotType::Temperature, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::Volume, MemoryAccess::Read), + (LogicSlotType::Open, MemoryAccess::ReadWrite), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), + (LogicType::Quantity, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Gas Canister".into(), typ : Class::GasCanister } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1680477930i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureGasUmbilicalFemale".into(), + prefab_hash: -1680477930i32, + desc: "".into(), + name: "Umbilical Socket (Gas)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -648683847i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureGasUmbilicalFemaleSide".into(), + prefab_hash: -648683847i32, + desc: "".into(), + name: "Umbilical Socket Angle (Gas)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1814939203i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureGasUmbilicalMale".into(), + prefab_hash: -1814939203i32, + desc: "0.Left\n1.Center\n2.Right".into(), + name: "Umbilical (Gas)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::Read), + (LogicType::Error, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Left".into()), (1u32, "Center".into()), (2u32, + "Right".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PowerAndData, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + -324331872i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureGlassDoor".into(), + prefab_hash: -324331872i32, + desc: "0.Operate\n1.Logic".into(), + name: "Glass Door".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::Idle, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Operate".into()), (1u32, "Logic".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + -214232602i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureGovernedGasEngine".into(), + prefab_hash: -214232602i32, + desc: "The most reliable of all the rocket engines, the Pumped Gas Engine runs on a 2:1 mix of Volatiles to Oxygen gas." + .into(), + name: "Pumped Gas Engine".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::Throttle, MemoryAccess::ReadWrite), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::PassedMoles, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PowerAndData, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -619745681i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureGroundBasedTelescope".into(), + prefab_hash: -619745681i32, + desc: "A telescope that can be oriented to observe Celestial Bodies. When within full alignment will show orbital information for that celestial object. Atmospheric conditions may disrupt the ability to observe some objects at some times of day. To collect Horizontal and Vertical values you can use a Rocket Celestial Tracker while it is in orbit, or a Daylight Sensor for primary body data." + .into(), + name: "Telescope".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Horizontal, + MemoryAccess::ReadWrite), (LogicType::Vertical, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::HorizontalRatio, + MemoryAccess::ReadWrite), (LogicType::VerticalRatio, + MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::CelestialHash, + MemoryAccess::Read), (LogicType::AlignmentError, + MemoryAccess::Read), (LogicType::DistanceAu, MemoryAccess::Read), + (LogicType::OrbitPeriod, MemoryAccess::Read), + (LogicType::Inclination, MemoryAccess::Read), + (LogicType::Eccentricity, MemoryAccess::Read), + (LogicType::SemiMajorAxis, MemoryAccess::Read), + (LogicType::DistanceKm, MemoryAccess::Read), + (LogicType::CelestialParentHash, MemoryAccess::Read), + (LogicType::TrueAnomaly, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + -1758710260i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureGrowLight".into(), + prefab_hash: -1758710260i32, + desc: "Agrizero\'s leading hydroponic lighting system, the GrowUp UV light supplements sunshine in low light or sun-distant conditions. The unit adds growability over the space of a grid, so requires proximate placement to work. " + .into(), + name: "Grow Light".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 958056199i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureHarvie".into(), + prefab_hash: 958056199i32, + desc: "Use above a Hydroponics Tray or Hydroponics Device to manage the planting and harvest of your crops. It contains a button that will allow you to activate it\'s modes, or connect it to a logic system to do this for you. The modes indicate current growth status of the plant below. Import is used for planting, and harvested plants are sent to export." + .into(), + name: "Harvie".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (2u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::ClearMemory, + MemoryAccess::Write), (LogicType::ExportCount, + MemoryAccess::Read), (LogicType::ImportCount, + MemoryAccess::Read), (LogicType::Plant, MemoryAccess::Write), + (LogicType::Harvest, MemoryAccess::Write), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Idle".into()), (1u32, "Happy".into()), (2u32, + "UnHappy".into()), (3u32, "Dead".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::Plant }, SlotInfo { + name : "Export".into(), typ : Class::None }, SlotInfo { name : "Hand" + .into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 944685608i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureHeatExchangeLiquidtoGas".into(), + prefab_hash: 944685608i32, + desc: "The original specs for the N Series Flow-P heat exchanger were rumored to have been scrawled on the back of a burger receipt by a bored Sinotai designer riding up the Brazilian space elevator, but that hasn\'t stopped it becoming one of the most widely-copied heat exchanger designs in the Solar System.\nThe \'N Flow-P\' has four connections, allowing you to pass separate liquid and gas networks into the unit, which then works to equalize temperature across the two separate networks.\nAs the N Flow-P is a passive system, it equalizes pressure across the entire of each individual network, unless connected to devices like a Volume Pump or a Liquid Back Volume Regulator." + .into(), + name: "Heat Exchanger - Liquid + Gas".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 21266291i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureHeatExchangerGastoGas".into(), + prefab_hash: 21266291i32, + desc: "The original specs for the N Series Flow-P heat exchanger were rumored to have been scrawled on the back of a burger receipt by a bored Sinotai designer riding up the Brazilian space elevator, but that hasn\'t stopped it becoming one of the most widely-copied heat exchanger designs in the Solar System.\nThe \'N Flow-P\' has four connections, allowing you to pass two gas networks into the unit, which then works to equalize temperature across the two separate networks.\nAs the N Flow-P is a passive system, it equalizes pressure across the entire of each individual network, unless connected to gas management devices like a Volume Pump or a Back Pressure Regulator." + .into(), + name: "Heat Exchanger - Gas".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -613784254i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureHeatExchangerLiquidtoLiquid".into(), + prefab_hash: -613784254i32, + desc: "The original specs for the N Series Flow-P heat exchanger were rumored to have been scrawled on the back of a burger receipt by a bored Sinotai designer riding up the Brazilian space elevator, but that hasn\'t stopped it becoming one of the most widely-copied heat exchanger designs in the Solar System.\nThe \'N Flow-P\' has four connections, allowing you to pass two liquid networks into the unit, which then works to equalize temperature across the two separate networks.\nAs the N Flow-P is a passive system, it equalizes pressure across the entire of each individual network, unless connected to liquid management devices like a Liquid Volume Pump or a Liquid Back Volume Regulator.\n" + .into(), + name: "Heat Exchanger - Liquid".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1070427573i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureHorizontalAutoMiner".into(), + prefab_hash: 1070427573i32, + desc: "The Recurso OGRE (Orthogonal Ground Rotating Excavator) is a base structure with attached mining vehicle, which will mine a horizontal shaft up to X meters long. When full, the mining vehicle will return to the base to empty itself, before returning to dig. If it encounters empty space, it will also return to base and await instruction. The unit will return if deactivated.\n \nThe OGRE can be connected to a chute system, and is controllable by a logic network. Note that the OGRE outputs more ore than a conventional Mining Drill over the same area, due to more efficient processing.\n\nMODES\nIdle - 0\nMining - 1\nReturning - 2\nDepostingOre - 3\nFinished - 4\n" + .into(), + name: "OGRE".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::ClearMemory, + MemoryAccess::Write), (LogicType::ExportCount, + MemoryAccess::Read), (LogicType::ImportCount, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { + name : "Export".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + -1888248335i32, + StructureLogicDeviceMemoryTemplate { + prefab: PrefabInfo { + prefab_name: "StructureHydraulicPipeBender".into(), + prefab_hash: -1888248335i32, + desc: "A go-to tool for all your atmospheric and plumbing needs, the ExMin Atmoprinter will create everything from pipes, pumps and tanks, to vents and filters, ensuring your survival in any environment. Upgrade the Atmoprinter using a Pipe Bender Mod for additional recipes and faster processing speeds." + .into(), + name: "Hydraulic Pipe Bender".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Reagents, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::RecipeHash, MemoryAccess::ReadWrite), + (LogicType::CompletionRatio, MemoryAccess::Read), + (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::Ingot }, SlotInfo { + name : "Export".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: true, + }, + memory: MemoryInfo { + instructions: Some( + vec![ + ("DeviceSetLock".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |" + .into(), typ : "PrinterInstruction".into(), value : 6i64 }), + ("EjectAllReagents".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" + .into(), typ : "PrinterInstruction".into(), value : 8i64 }), + ("EjectReagent".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |" + .into(), typ : "PrinterInstruction".into(), value : 7i64 }), + ("ExecuteRecipe".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" + .into(), typ : "PrinterInstruction".into(), value : 2i64 }), + ("JumpIfNextInvalid".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 4i64 }), + ("JumpToAddress".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 5i64 }), + ("MissingRecipeReagent".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" + .into(), typ : "PrinterInstruction".into(), value : 9i64 }), + ("StackPointer".into(), Instruction { description : + "| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 1i64 }), + ("WaitUntilNextValid".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" + .into(), typ : "PrinterInstruction".into(), value : 3i64 }) + ] + .into_iter() + .collect(), + ), + memory_access: MemoryAccess::ReadWrite, + memory_size: 64u32, + }, + } + .into(), + ), + ( + 1441767298i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureHydroponicsStation".into(), + prefab_hash: 1441767298i32, + desc: "".into(), + name: "Hydroponics Station".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Efficiency, MemoryAccess::Read), + (LogicSlotType::Health, MemoryAccess::Read), + (LogicSlotType::Growth, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::Mature, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Efficiency, MemoryAccess::Read), + (LogicSlotType::Health, MemoryAccess::Read), + (LogicSlotType::Growth, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::Mature, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (2u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Efficiency, MemoryAccess::Read), + (LogicSlotType::Health, MemoryAccess::Read), + (LogicSlotType::Growth, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::Mature, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (3u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Efficiency, MemoryAccess::Read), + (LogicSlotType::Health, MemoryAccess::Read), + (LogicSlotType::Growth, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::Mature, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (4u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Efficiency, MemoryAccess::Read), + (LogicSlotType::Health, MemoryAccess::Read), + (LogicSlotType::Growth, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::Mature, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (5u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Efficiency, MemoryAccess::Read), + (LogicSlotType::Health, MemoryAccess::Read), + (LogicSlotType::Growth, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::Mature, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (6u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Efficiency, MemoryAccess::Read), + (LogicSlotType::Health, MemoryAccess::Read), + (LogicSlotType::Growth, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::Mature, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (7u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Efficiency, MemoryAccess::Read), + (LogicSlotType::Health, MemoryAccess::Read), + (LogicSlotType::Growth, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::Mature, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Plant".into(), typ : Class::Plant }, SlotInfo { + name : "Plant".into(), typ : Class::Plant }, SlotInfo { name : + "Plant".into(), typ : Class::Plant }, SlotInfo { name : "Plant" + .into(), typ : Class::Plant }, SlotInfo { name : "Plant".into(), typ + : Class::Plant }, SlotInfo { name : "Plant".into(), typ : + Class::Plant }, SlotInfo { name : "Plant".into(), typ : Class::Plant + }, SlotInfo { name : "Plant".into(), typ : Class::Plant } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None }, + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1464854517i32, + StructureSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "StructureHydroponicsTray".into(), + prefab_hash: 1464854517i32, + desc: "The Agrizero hydroponics tray is the ideal vessel for growing a range of plantlife. It must be supplied with water using a pipe network, and sufficient light to generate photosynthesis. \nIt can be automated using the Harvie." + .into(), + name: "Hydroponics Tray".into(), + }, + structure: StructureInfo { small_grid: true }, + slots: vec![ + SlotInfo { name : "Plant".into(), typ : Class::Plant }, SlotInfo { + name : "Fertiliser".into(), typ : Class::Plant } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + -1841632400i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureHydroponicsTrayData".into(), + prefab_hash: -1841632400i32, + desc: "The Agrizero hydroponics device is the ideal vessel for growing a range of plantlife. It must be supplied with Water using a pipe network, and sufficient light to generate photosynthesis. \nIt can be automated using the Harvie. Note that unlike the Hydroponics Tray, these cannot be placed consecutively as they are considered devices rather than pure pipes. They do, however, allow data interrogation for logic systems." + .into(), + name: "Hydroponics Device".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Efficiency, MemoryAccess::Read), + (LogicSlotType::Health, MemoryAccess::Read), + (LogicSlotType::Growth, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::Mature, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::Seeding, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Plant".into(), typ : Class::Plant }, SlotInfo { + name : "Fertiliser".into(), typ : Class::Plant } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::None }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 443849486i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureIceCrusher".into(), + prefab_hash: 443849486i32, + desc: "The Recurso KoolAuger converts various ices into their respective gases and liquids.\nA remarkably smart and compact sublimation-melting unit, it produces gas or liquid depending on the ice being processed. The upper outlet is gas, the lower for liquid, and while you can attach any pipe you like to either outlet, it will only function if the correct network is attached. It will also only pass gas or liquid into a network if it is powered and turned on.\nIf the KoolAuger is full, it will not accept any further ice until the gas or liquid contents is drained. In this state, it will flash a yellow error state on the activation switch." + .into(), + name: "Ice Crusher".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ImportCount, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Import".into(), typ : Class::Ore }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None }, + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Output2 } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1005491513i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureIgniter".into(), + prefab_hash: 1005491513i32, + desc: "It gets the party started. Especially if that party is an explosive gas mixture." + .into(), + name: "Igniter".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::On, MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1693382705i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInLineTankGas1x1".into(), + prefab_hash: -1693382705i32, + desc: "A small expansion tank that increases the volume of a pipe network." + .into(), + name: "In-Line Tank Small Gas".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 35149429i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInLineTankGas1x2".into(), + prefab_hash: 35149429i32, + desc: "A small expansion tank that increases the volume of a pipe network." + .into(), + name: "In-Line Tank Gas".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 543645499i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInLineTankLiquid1x1".into(), + prefab_hash: 543645499i32, + desc: "A small expansion tank that increases the volume of a pipe network." + .into(), + name: "In-Line Tank Small Liquid".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -1183969663i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInLineTankLiquid1x2".into(), + prefab_hash: -1183969663i32, + desc: "A small expansion tank that increases the volume of a pipe network." + .into(), + name: "In-Line Tank Liquid".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 1818267386i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInsulatedInLineTankGas1x1".into(), + prefab_hash: 1818267386i32, + desc: "".into(), + name: "Insulated In-Line Tank Small Gas".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -177610944i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInsulatedInLineTankGas1x2".into(), + prefab_hash: -177610944i32, + desc: "".into(), + name: "Insulated In-Line Tank Gas".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -813426145i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInsulatedInLineTankLiquid1x1".into(), + prefab_hash: -813426145i32, + desc: "".into(), + name: "Insulated In-Line Tank Small Liquid".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 1452100517i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInsulatedInLineTankLiquid1x2".into(), + prefab_hash: 1452100517i32, + desc: "".into(), + name: "Insulated In-Line Tank Liquid".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -1967711059i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInsulatedPipeCorner".into(), + prefab_hash: -1967711059i32, + desc: "Insulated pipes greatly reduce heat loss from gases stored in them." + .into(), + name: "Insulated Pipe (Corner)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -92778058i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInsulatedPipeCrossJunction".into(), + prefab_hash: -92778058i32, + desc: "Insulated pipes greatly reduce heat loss from gases stored in them." + .into(), + name: "Insulated Pipe (Cross Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 1328210035i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInsulatedPipeCrossJunction3".into(), + prefab_hash: 1328210035i32, + desc: "Insulated pipes greatly reduce heat loss from gases stored in them." + .into(), + name: "Insulated Pipe (3-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -783387184i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInsulatedPipeCrossJunction4".into(), + prefab_hash: -783387184i32, + desc: "Insulated pipes greatly reduce heat loss from gases stored in them." + .into(), + name: "Insulated Pipe (4-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -1505147578i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInsulatedPipeCrossJunction5".into(), + prefab_hash: -1505147578i32, + desc: "Insulated pipes greatly reduce heat loss from gases stored in them." + .into(), + name: "Insulated Pipe (5-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 1061164284i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInsulatedPipeCrossJunction6".into(), + prefab_hash: 1061164284i32, + desc: "Insulated pipes greatly reduce heat loss from gases stored in them." + .into(), + name: "Insulated Pipe (6-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 1713710802i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInsulatedPipeLiquidCorner".into(), + prefab_hash: 1713710802i32, + desc: "Liquid piping with very low temperature loss or gain.".into(), + name: "Insulated Liquid Pipe (Corner)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 1926651727i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInsulatedPipeLiquidCrossJunction".into(), + prefab_hash: 1926651727i32, + desc: "Liquid piping with very low temperature loss or gain.".into(), + name: "Insulated Liquid Pipe (3-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 363303270i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInsulatedPipeLiquidCrossJunction4".into(), + prefab_hash: 363303270i32, + desc: "Liquid piping with very low temperature loss or gain.".into(), + name: "Insulated Liquid Pipe (4-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 1654694384i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInsulatedPipeLiquidCrossJunction5".into(), + prefab_hash: 1654694384i32, + desc: "Liquid piping with very low temperature loss or gain.".into(), + name: "Insulated Liquid Pipe (5-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -72748982i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInsulatedPipeLiquidCrossJunction6".into(), + prefab_hash: -72748982i32, + desc: "Liquid piping with very low temperature loss or gain.".into(), + name: "Insulated Liquid Pipe (6-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 295678685i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInsulatedPipeLiquidStraight".into(), + prefab_hash: 295678685i32, + desc: "Liquid piping with very low temperature loss or gain.".into(), + name: "Insulated Liquid Pipe (Straight)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -532384855i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInsulatedPipeLiquidTJunction".into(), + prefab_hash: -532384855i32, + desc: "Liquid piping with very low temperature loss or gain.".into(), + name: "Insulated Liquid Pipe (T Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 2134172356i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInsulatedPipeStraight".into(), + prefab_hash: 2134172356i32, + desc: "Insulated pipes greatly reduce heat loss from gases stored in them." + .into(), + name: "Insulated Pipe (Straight)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -2076086215i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInsulatedPipeTJunction".into(), + prefab_hash: -2076086215i32, + desc: "Insulated pipes greatly reduce heat loss from gases stored in them." + .into(), + name: "Insulated Pipe (T Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -31273349i32, + StructureSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInsulatedTankConnector".into(), + prefab_hash: -31273349i32, + desc: "".into(), + name: "Insulated Tank Connector".into(), + }, + structure: StructureInfo { small_grid: true }, + slots: vec![SlotInfo { name : "".into(), typ : Class::None }] + .into_iter() + .collect(), + } + .into(), + ), + ( + -1602030414i32, + StructureSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInsulatedTankConnectorLiquid".into(), + prefab_hash: -1602030414i32, + desc: "".into(), + name: "Insulated Tank Connector Liquid".into(), + }, + structure: StructureInfo { small_grid: true }, + slots: vec![ + SlotInfo { name : "Portable Slot".into(), typ : Class::None } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + -2096421875i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInteriorDoorGlass".into(), + prefab_hash: -2096421875i32, + desc: "0.Operate\n1.Logic".into(), + name: "Interior Door Glass".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::Idle, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Operate".into()), (1u32, "Logic".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 847461335i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInteriorDoorPadded".into(), + prefab_hash: 847461335i32, + desc: "0.Operate\n1.Logic".into(), + name: "Interior Door Padded".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::Idle, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Operate".into()), (1u32, "Logic".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 1981698201i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInteriorDoorPaddedThin".into(), + prefab_hash: 1981698201i32, + desc: "0.Operate\n1.Logic".into(), + name: "Interior Door Padded Thin".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::Idle, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Operate".into()), (1u32, "Logic".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + -1182923101i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureInteriorDoorTriangle".into(), + prefab_hash: -1182923101i32, + desc: "0.Operate\n1.Logic".into(), + name: "Interior Door Triangle".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::Idle, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Operate".into()), (1u32, "Logic".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + -828056979i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureKlaxon".into(), + prefab_hash: -828056979i32, + desc: "Klaxons allow you to play over 50 announcements and sounds, depending on your Logic set-up. Set the mode to select the output." + .into(), + name: "Klaxon Speaker".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::Volume, + MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::SoundAlert, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "None".into()), (1u32, "Alarm2".into()), (2u32, + "Alarm3".into()), (3u32, "Alarm4".into()), (4u32, "Alarm5" + .into()), (5u32, "Alarm6".into()), (6u32, "Alarm7".into()), + (7u32, "Music1".into()), (8u32, "Music2".into()), (9u32, + "Music3".into()), (10u32, "Alarm8".into()), (11u32, "Alarm9" + .into()), (12u32, "Alarm10".into()), (13u32, "Alarm11" + .into()), (14u32, "Alarm12".into()), (15u32, "Danger" + .into()), (16u32, "Warning".into()), (17u32, "Alert".into()), + (18u32, "StormIncoming".into()), (19u32, "IntruderAlert" + .into()), (20u32, "Depressurising".into()), (21u32, + "Pressurising".into()), (22u32, "AirlockCycling".into()), + (23u32, "PowerLow".into()), (24u32, "SystemFailure".into()), + (25u32, "Welcome".into()), (26u32, "MalfunctionDetected" + .into()), (27u32, "HaltWhoGoesThere".into()), (28u32, + "FireFireFire".into()), (29u32, "One".into()), (30u32, "Two" + .into()), (31u32, "Three".into()), (32u32, "Four".into()), + (33u32, "Five".into()), (34u32, "Floor".into()), (35u32, + "RocketLaunching".into()), (36u32, "LiftOff".into()), (37u32, + "TraderIncoming".into()), (38u32, "TraderLanded".into()), + (39u32, "PressureHigh".into()), (40u32, "PressureLow" + .into()), (41u32, "TemperatureHigh".into()), (42u32, + "TemperatureLow".into()), (43u32, "PollutantsDetected" + .into()), (44u32, "HighCarbonDioxide".into()), (45u32, + "Alarm1".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -415420281i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLadder".into(), + prefab_hash: -415420281i32, + desc: "".into(), + name: "Ladder".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 1541734993i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLadderEnd".into(), + prefab_hash: 1541734993i32, + desc: "".into(), + name: "Ladder End".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -1230658883i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLargeDirectHeatExchangeGastoGas".into(), + prefab_hash: -1230658883i32, + desc: "Direct Heat Exchangers equalize the temperature of the two input networks." + .into(), + name: "Large Direct Heat Exchanger - Gas + Gas".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Input2 } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1412338038i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLargeDirectHeatExchangeGastoLiquid".into(), + prefab_hash: 1412338038i32, + desc: "Direct Heat Exchangers equalize the temperature of the two input networks." + .into(), + name: "Large Direct Heat Exchanger - Gas + Liquid".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Input2 } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 792686502i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLargeDirectHeatExchangeLiquidtoLiquid".into(), + prefab_hash: 792686502i32, + desc: "Direct Heat Exchangers equalize the temperature of the two input networks." + .into(), + name: "Large Direct Heat Exchange - Liquid + Liquid".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Input2 } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -566775170i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLargeExtendableRadiator".into(), + prefab_hash: -566775170i32, + desc: "Omptimised for radiating heat in vacuum and low pressure environments. If pointed at the sun it will heat its contents rapidly via solar heating. The panels can fold away to stop all heat radiation/solar heating and protect them from storms." + .into(), + name: "Large Extendable Radiator".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Horizontal, + MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: false, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + -1351081801i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLargeHangerDoor".into(), + prefab_hash: -1351081801i32, + desc: "1 x 3 modular door piece for building hangar doors.".into(), + name: "Large Hangar Door".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::Idle, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Operate".into()), (1u32, "Logic".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 1913391845i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLargeSatelliteDish".into(), + prefab_hash: 1913391845i32, + desc: "This large communications unit can be used to communicate with nearby trade vessels.\n\n When connected to a Computer containing a Communications Motherboard motherboard, a Landingpad Center, and a Vending Machine, this allows Stationeers to contact traders. Adjust its horizontal and vertical attributes either directly or through logic." + .into(), + name: "Large Satellite Dish".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Horizontal, + MemoryAccess::ReadWrite), (LogicType::Vertical, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::Idle, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::SignalStrength, MemoryAccess::Read), + (LogicType::SignalId, MemoryAccess::Read), + (LogicType::InterrogationProgress, MemoryAccess::Read), + (LogicType::TargetPadIndex, MemoryAccess::ReadWrite), + (LogicType::SizeX, MemoryAccess::Read), (LogicType::SizeZ, + MemoryAccess::Read), (LogicType::MinimumWattsToContact, + MemoryAccess::Read), (LogicType::WattsReachingContact, + MemoryAccess::Read), (LogicType::ContactTypeId, + MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::BestContactFilter, + MemoryAccess::ReadWrite), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -558953231i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLaunchMount".into(), + prefab_hash: -558953231i32, + desc: "The first piece to place whern building a rocket. Rockets can be constructed and/or landed here. Each Launch Mount will be allocated a slot on the Space Map and assigned a Location Code." + .into(), + name: "Launch Mount".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 797794350i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLightLong".into(), + prefab_hash: 797794350i32, + desc: "".into(), + name: "Wall Light (Long)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1847265835i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLightLongAngled".into(), + prefab_hash: 1847265835i32, + desc: "".into(), + name: "Wall Light (Long Angled)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 555215790i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLightLongWide".into(), + prefab_hash: 555215790i32, + desc: "".into(), + name: "Wall Light (Long Wide)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1514476632i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLightRound".into(), + prefab_hash: 1514476632i32, + desc: "Description coming.".into(), + name: "Light Round".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1592905386i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLightRoundAngled".into(), + prefab_hash: 1592905386i32, + desc: "Description coming.".into(), + name: "Light Round (Angled)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1436121888i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLightRoundSmall".into(), + prefab_hash: 1436121888i32, + desc: "Description coming.".into(), + name: "Light Round (Small)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1687692899i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLiquidDrain".into(), + prefab_hash: 1687692899i32, + desc: "When connected to power and activated, it pumps liquid from a liquid network into the world." + .into(), + name: "Active Liquid Outlet".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -2113838091i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLiquidPipeAnalyzer".into(), + prefab_hash: -2113838091i32, + desc: "".into(), + name: "Liquid Pipe Analyzer".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::RatioOxygen, + MemoryAccess::Read), (LogicType::RatioCarbonDioxide, + MemoryAccess::Read), (LogicType::RatioNitrogen, + MemoryAccess::Read), (LogicType::RatioPollutant, + MemoryAccess::Read), (LogicType::RatioVolatiles, + MemoryAccess::Read), (LogicType::RatioWater, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume, + MemoryAccess::Read), (LogicType::RatioNitrousOxide, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::VolumeOfLiquid, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -287495560i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLiquidPipeHeater".into(), + prefab_hash: -287495560i32, + desc: "Adds 1000 joules of heat per tick to the contents of your pipe network." + .into(), + name: "Pipe Heater (Liquid)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -782453061i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLiquidPipeOneWayValve".into(), + prefab_hash: -782453061i32, + desc: "The one way valve moves liquid in one direction only: from input side to output side. It only permits flow if the input pressure is higher than output pressure.." + .into(), + name: "One Way Valve (Liquid)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 2072805863i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLiquidPipeRadiator".into(), + prefab_hash: 2072805863i32, + desc: "A simple heat exchanger, pipe radiators can be placed on pipes to shed or gain heat, depending on the temperature of the surrounding atmosphere. If the atmosphere is hotter, heat will be added to the liquid within the pipe network, and visa versa if colder. In a vacuum, heat will be radiated. \nThe speed of heat gain or loss will depend on the liquid in question. Adding multiple radiators will speed up heat transfer." + .into(), + name: "Liquid Pipe Convection Radiator".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 482248766i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLiquidPressureRegulator".into(), + prefab_hash: 482248766i32, + desc: "Regulates the volume ratio of liquid in the output Liquid pipe. This is expressed as percentage where 100 is totally full and 0 is empty." + .into(), + name: "Liquid Volume Regulator".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1098900430i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLiquidTankBig".into(), + prefab_hash: 1098900430i32, + desc: "".into(), + name: "Liquid Tank Big".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume, + MemoryAccess::Read), (LogicType::RatioNitrousOxide, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::VolumeOfLiquid, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1430440215i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLiquidTankBigInsulated".into(), + prefab_hash: -1430440215i32, + desc: "".into(), + name: "Insulated Liquid Tank Big".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume, + MemoryAccess::Read), (LogicType::RatioNitrousOxide, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::VolumeOfLiquid, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1988118157i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLiquidTankSmall".into(), + prefab_hash: 1988118157i32, + desc: "".into(), + name: "Liquid Tank Small".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume, + MemoryAccess::Read), (LogicType::RatioNitrousOxide, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::VolumeOfLiquid, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 608607718i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLiquidTankSmallInsulated".into(), + prefab_hash: 608607718i32, + desc: "".into(), + name: "Insulated Liquid Tank Small".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume, + MemoryAccess::Read), (LogicType::RatioNitrousOxide, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::VolumeOfLiquid, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1691898022i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLiquidTankStorage".into(), + prefab_hash: 1691898022i32, + desc: "When connected to a liquid pipe network, the tank storage unit allows you to refill a Liquid Canister, as well as read various atmospheric data from the Gas Canister. It will not accept gas canisters." + .into(), + name: "Liquid Tank Storage".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Pressure, MemoryAccess::Read), + (LogicSlotType::Temperature, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::Volume, MemoryAccess::Read), + (LogicSlotType::Open, MemoryAccess::ReadWrite), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), + (LogicType::Quantity, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Liquid Canister".into(), typ : + Class::LiquidCanister } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1051805505i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLiquidTurboVolumePump".into(), + prefab_hash: -1051805505i32, + desc: "Shifts 10 times more liquid than a basic Volume Pump, with a mode that can be set to flow in either direction." + .into(), + name: "Turbo Volume Pump (Liquid)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Right".into()), (1u32, "Left".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None }, + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1734723642i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLiquidUmbilicalFemale".into(), + prefab_hash: 1734723642i32, + desc: "".into(), + name: "Umbilical Socket (Liquid)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1220870319i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLiquidUmbilicalFemaleSide".into(), + prefab_hash: 1220870319i32, + desc: "".into(), + name: "Umbilical Socket Angle (Liquid)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1798420047i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLiquidUmbilicalMale".into(), + prefab_hash: -1798420047i32, + desc: "0.Left\n1.Center\n2.Right".into(), + name: "Umbilical (Liquid)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::Read), + (LogicType::Error, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Left".into()), (1u32, "Center".into()), (2u32, + "Right".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PowerAndData, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 1849974453i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLiquidValve".into(), + prefab_hash: 1849974453i32, + desc: "".into(), + name: "Liquid Valve".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -454028979i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLiquidVolumePump".into(), + prefab_hash: -454028979i32, + desc: "".into(), + name: "Liquid Volume Pump".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -647164662i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLockerSmall".into(), + prefab_hash: -647164662i32, + desc: "".into(), + name: "Locker (Small)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (2u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (3u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: false, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 264413729i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicBatchReader".into(), + prefab_hash: 264413729i32, + desc: "".into(), + name: "Batch Reader".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Setting, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 436888930i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicBatchSlotReader".into(), + prefab_hash: 436888930i32, + desc: "".into(), + name: "Batch Slot Reader".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Setting, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1415443359i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicBatchWriter".into(), + prefab_hash: 1415443359i32, + desc: "".into(), + name: "Batch Writer".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ForceWrite, MemoryAccess::Write), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 491845673i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicButton".into(), + prefab_hash: 491845673i32, + desc: "".into(), + name: "Button".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1489728908i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicCompare".into(), + prefab_hash: -1489728908i32, + desc: "0.Equals\n1.Greater\n2.Less\n3.NotEquals".into(), + name: "Logic Compare".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Equals".into()), (1u32, "Greater".into()), (2u32, + "Less".into()), (3u32, "NotEquals".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 554524804i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicDial".into(), + prefab_hash: 554524804i32, + desc: "An assignable dial with up to 1000 modes.".into(), + name: "Dial".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Mode, MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1942143074i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicGate".into(), + prefab_hash: 1942143074i32, + desc: "A logic device that performs a logical operation on one or more binary inputs that produces a single binary output. An input greater than zero is considered true for operations." + .into(), + name: "Logic Gate".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "AND".into()), (1u32, "OR".into()), (2u32, "XOR" + .into()), (3u32, "NAND".into()), (4u32, "NOR".into()), (5u32, + "XNOR".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 2077593121i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicHashGen".into(), + prefab_hash: 2077593121i32, + desc: "".into(), + name: "Logic Hash Generator".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::Read), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1657691323i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicMath".into(), + prefab_hash: 1657691323i32, + desc: "0.Add\n1.Subtract\n2.Multiply\n3.Divide\n4.Mod\n5.Atan2\n6.Pow\n7.Log" + .into(), + name: "Logic Math".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Add".into()), (1u32, "Subtract".into()), (2u32, + "Multiply".into()), (3u32, "Divide".into()), (4u32, "Mod" + .into()), (5u32, "Atan2".into()), (6u32, "Pow".into()), + (7u32, "Log".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1160020195i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicMathUnary".into(), + prefab_hash: -1160020195i32, + desc: "0.Ceil\n1.Floor\n2.Abs\n3.Log\n4.Exp\n5.Round\n6.Rand\n7.Sqrt\n8.Sin\n9.Cos\n10.Tan\n11.Asin\n12.Acos\n13.Atan\n14.Not" + .into(), + name: "Math Unary".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Ceil".into()), (1u32, "Floor".into()), (2u32, "Abs" + .into()), (3u32, "Log".into()), (4u32, "Exp".into()), (5u32, + "Round".into()), (6u32, "Rand".into()), (7u32, "Sqrt" + .into()), (8u32, "Sin".into()), (9u32, "Cos".into()), (10u32, + "Tan".into()), (11u32, "Asin".into()), (12u32, "Acos" + .into()), (13u32, "Atan".into()), (14u32, "Not".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -851746783i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicMemory".into(), + prefab_hash: -851746783i32, + desc: "".into(), + name: "Logic Memory".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 929022276i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicMinMax".into(), + prefab_hash: 929022276i32, + desc: "0.Greater\n1.Less".into(), + name: "Logic Min/Max".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Greater".into()), (1u32, "Less".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 2096189278i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicMirror".into(), + prefab_hash: 2096189278i32, + desc: "".into(), + name: "Logic Mirror".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![].into_iter().collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -345383640i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicReader".into(), + prefab_hash: -345383640i32, + desc: "".into(), + name: "Logic Reader".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Setting, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -124308857i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicReagentReader".into(), + prefab_hash: -124308857i32, + desc: "".into(), + name: "Reagent Reader".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Setting, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 876108549i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicRocketDownlink".into(), + prefab_hash: 876108549i32, + desc: "".into(), + name: "Logic Rocket Downlink".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 546002924i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicRocketUplink".into(), + prefab_hash: 546002924i32, + desc: "".into(), + name: "Logic Uplink".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1822736084i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicSelect".into(), + prefab_hash: 1822736084i32, + desc: "0.Equals\n1.Greater\n2.Less\n3.NotEquals".into(), + name: "Logic Select".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Equals".into()), (1u32, "Greater".into()), (2u32, + "Less".into()), (3u32, "NotEquals".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -767867194i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicSlotReader".into(), + prefab_hash: -767867194i32, + desc: "".into(), + name: "Slot Reader".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Setting, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 873418029i32, + StructureLogicDeviceMemoryTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicSorter".into(), + prefab_hash: 873418029i32, + desc: "Contains an Internal Memory which is assessed to check whether something should be sorted. When an item is in the Import Slot, the stack is checked and if result is true the thing is moved to the Export 2 slot, otherwise it is moved to the Export slot. The Mode is used in how the stack is assessed, by default the mode is ALL, so every instruction in the stack would need to return true." + .into(), + name: "Logic Sorter".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (2u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (3u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::ClearMemory, + MemoryAccess::Write), (LogicType::ExportCount, + MemoryAccess::Read), (LogicType::ImportCount, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "All".into()), (1u32, "Any".into()), (2u32, "None" + .into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { + name : "Export".into(), typ : Class::None }, SlotInfo { name : + "Export 2".into(), typ : Class::None }, SlotInfo { name : "Data Disk" + .into(), typ : Class::DataDisk } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Output2 }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::PowerAndData, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + memory: MemoryInfo { + instructions: Some( + vec![ + ("FilterPrefabHashEquals".into(), Instruction { description : + "| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | PREFAB_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |" + .into(), typ : "SorterInstruction".into(), value : 1i64 }), + ("FilterPrefabHashNotEquals".into(), Instruction { + description : + "| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | PREFAB_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |" + .into(), typ : "SorterInstruction".into(), value : 2i64 }), + ("FilterQuantityCompare".into(), Instruction { description : + "| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | CONDITION_OPERATION | BYTE_8 |\r\n| 16-31 | QUANTITY | USHORT_16 |\r\n| 32-63 | UNUSED | 32 |" + .into(), typ : "SorterInstruction".into(), value : 5i64 }), + ("FilterSlotTypeCompare".into(), Instruction { description : + "| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | CONDITION_OPERATION | BYTE_8 |\r\n| 16-31 | SLOT_TYPE | USHORT_16 |\r\n| 32-63 | UNUSED | 32 |" + .into(), typ : "SorterInstruction".into(), value : 4i64 }), + ("FilterSortingClassCompare".into(), Instruction { + description : + "| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | CONDITION_OPERATION | BYTE_8 |\r\n| 16-31 | SORTING_CLASS | USHORT_16 |\r\n| 32-63 | UNUSED | 32 |" + .into(), typ : "SorterInstruction".into(), value : 3i64 }), + ("LimitNextExecutionByCount".into(), Instruction { + description : + "| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | COUNT | UINT_32 |\r\n| 40-63 | UNUSED | 24 |" + .into(), typ : "SorterInstruction".into(), value : 6i64 }) + ] + .into_iter() + .collect(), + ), + memory_access: MemoryAccess::ReadWrite, + memory_size: 32u32, + }, + } + .into(), + ), + ( + 1220484876i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicSwitch".into(), + prefab_hash: 1220484876i32, + desc: "".into(), + name: "Lever".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: false, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 321604921i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicSwitch2".into(), + prefab_hash: 321604921i32, + desc: "".into(), + name: "Switch".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: false, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + -693235651i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicTransmitter".into(), + prefab_hash: -693235651i32, + desc: "Connects to Logic Transmitter" + .into(), + name: "Logic Transmitter".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![].into_iter().collect(), + modes: Some( + vec![(0u32, "Passive".into()), (1u32, "Active".into())] + .into_iter() + .collect(), + ), + transmission_receiver: true, + wireless_logic: true, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1326019434i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicWriter".into(), + prefab_hash: -1326019434i32, + desc: "".into(), + name: "Logic Writer".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ForceWrite, MemoryAccess::Write), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1321250424i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureLogicWriterSwitch".into(), + prefab_hash: -1321250424i32, + desc: "".into(), + name: "Logic Writer Switch".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ForceWrite, MemoryAccess::Write), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1808154199i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureManualHatch".into(), + prefab_hash: -1808154199i32, + desc: "Can be welded using a Welding Torch or Arc Welder to lock it in the current state. Use the welder again to unlock." + .into(), + name: "Manual Hatch".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::Idle, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Operate".into()), (1u32, "Logic".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + -1918215845i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureMediumConvectionRadiator".into(), + prefab_hash: -1918215845i32, + desc: "A stand-alone radiator unit optimized for exchanging heat with its surrounding atmosphere." + .into(), + name: "Medium Convection Radiator".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1169014183i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureMediumConvectionRadiatorLiquid".into(), + prefab_hash: -1169014183i32, + desc: "A stand-alone liquid radiator unit optimized for exchanging heat with its surrounding atmosphere." + .into(), + name: "Medium Convection Radiator Liquid".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -566348148i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureMediumHangerDoor".into(), + prefab_hash: -566348148i32, + desc: "1 x 2 modular door piece for building hangar doors.".into(), + name: "Medium Hangar Door".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::Idle, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Operate".into()), (1u32, "Logic".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + -975966237i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureMediumRadiator".into(), + prefab_hash: -975966237i32, + desc: "A stand-alone radiator unit optimized for radiating heat in vacuums." + .into(), + name: "Medium Radiator".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1141760613i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureMediumRadiatorLiquid".into(), + prefab_hash: -1141760613i32, + desc: "A stand-alone liquid radiator unit optimized for radiating heat in vacuums." + .into(), + name: "Medium Radiator Liquid".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1093860567i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureMediumRocketGasFuelTank".into(), + prefab_hash: -1093860567i32, + desc: "".into(), + name: "Gas Capsule Tank Medium".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume, + MemoryAccess::Read), (LogicType::RatioNitrousOxide, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::VolumeOfLiquid, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1143639539i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureMediumRocketLiquidFuelTank".into(), + prefab_hash: 1143639539i32, + desc: "".into(), + name: "Liquid Capsule Tank Medium".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume, + MemoryAccess::Read), (LogicType::RatioNitrousOxide, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::VolumeOfLiquid, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1713470563i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureMotionSensor".into(), + prefab_hash: -1713470563i32, + desc: "Originally developed to monitor dance marathons, the motion sensor can also be connected to Logic systems for security purposes, automatic lighting, doors and various other applications.\nThe sensor activates whenever a player enters the grid it is placed on." + .into(), + name: "Motion Sensor".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Activate, MemoryAccess::ReadWrite), + (LogicType::Quantity, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1898243702i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureNitrolyzer".into(), + prefab_hash: 1898243702i32, + desc: "This device is used to create Nitrous Oxide from Oxygen, Nitrogen, and a large amount of energy. The process does not completely transform all the available gas at once, so the output is a mix of all three gasses, which may need further processing. More NOS will be created, if the gas inside the machine is close to a 1/1 ratio of Oxygen to Nitrogen. The second gas input line in optional, and not required if the gas is pre mixed." + .into(), + name: "Nitrolyzer".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::PressureInput, MemoryAccess::Read), + (LogicType::TemperatureInput, MemoryAccess::Read), + (LogicType::RatioOxygenInput, MemoryAccess::Read), + (LogicType::RatioCarbonDioxideInput, MemoryAccess::Read), + (LogicType::RatioNitrogenInput, MemoryAccess::Read), + (LogicType::RatioPollutantInput, MemoryAccess::Read), + (LogicType::RatioVolatilesInput, MemoryAccess::Read), + (LogicType::RatioWaterInput, MemoryAccess::Read), + (LogicType::RatioNitrousOxideInput, MemoryAccess::Read), + (LogicType::TotalMolesInput, MemoryAccess::Read), + (LogicType::PressureInput2, MemoryAccess::Read), + (LogicType::TemperatureInput2, MemoryAccess::Read), + (LogicType::RatioOxygenInput2, MemoryAccess::Read), + (LogicType::RatioCarbonDioxideInput2, MemoryAccess::Read), + (LogicType::RatioNitrogenInput2, MemoryAccess::Read), + (LogicType::RatioPollutantInput2, MemoryAccess::Read), + (LogicType::RatioVolatilesInput2, MemoryAccess::Read), + (LogicType::RatioWaterInput2, MemoryAccess::Read), + (LogicType::RatioNitrousOxideInput2, MemoryAccess::Read), + (LogicType::TotalMolesInput2, MemoryAccess::Read), + (LogicType::PressureOutput, MemoryAccess::Read), + (LogicType::TemperatureOutput, MemoryAccess::Read), + (LogicType::RatioOxygenOutput, MemoryAccess::Read), + (LogicType::RatioCarbonDioxideOutput, MemoryAccess::Read), + (LogicType::RatioNitrogenOutput, MemoryAccess::Read), + (LogicType::RatioPollutantOutput, MemoryAccess::Read), + (LogicType::RatioVolatilesOutput, MemoryAccess::Read), + (LogicType::RatioWaterOutput, MemoryAccess::Read), + (LogicType::RatioNitrousOxideOutput, MemoryAccess::Read), + (LogicType::TotalMolesOutput, MemoryAccess::Read), + (LogicType::CombustionInput, MemoryAccess::Read), + (LogicType::CombustionInput2, MemoryAccess::Read), + (LogicType::CombustionOutput, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogenInput, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogenInput2, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogenOutput, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidOxygenInput, MemoryAccess::Read), + (LogicType::RatioLiquidOxygenInput2, MemoryAccess::Read), + (LogicType::RatioLiquidOxygenOutput, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioLiquidVolatilesInput, MemoryAccess::Read), + (LogicType::RatioLiquidVolatilesInput2, MemoryAccess::Read), + (LogicType::RatioLiquidVolatilesOutput, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioSteamInput, MemoryAccess::Read), + (LogicType::RatioSteamInput2, MemoryAccess::Read), + (LogicType::RatioSteamOutput, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxideInput, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxideInput2, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxideOutput, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidPollutantInput, MemoryAccess::Read), + (LogicType::RatioLiquidPollutantInput2, MemoryAccess::Read), + (LogicType::RatioLiquidPollutantOutput, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxideInput, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxideInput2, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxideOutput, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Idle".into()), (1u32, "Active".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: true, + }, + slots: vec![ + SlotInfo { name : "Programmable Chip".into(), typ : + Class::ProgrammableChip } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input2 }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: Some(2u32), + has_activate_state: true, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 322782515i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureOccupancySensor".into(), + prefab_hash: 322782515i32, + desc: "Will be triggered if there is a player in the same room as the sensor. The quantity variable will show the number of players. You can use configure it to only detect players who hold the correct Access Card using a Cartridge (Access Controller) in a Handheld Tablet. This sensor only works when placed in a room." + .into(), + name: "Occupancy Sensor".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Activate, MemoryAccess::Read), (LogicType::Quantity, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1794932560i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureOverheadShortCornerLocker".into(), + prefab_hash: -1794932560i32, + desc: "".into(), + name: "Overhead Corner Locker".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: false, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 1468249454i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureOverheadShortLocker".into(), + prefab_hash: 1468249454i32, + desc: "".into(), + name: "Overhead Locker".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (2u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (3u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (4u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (5u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (6u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (7u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (8u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (9u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: false, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 2066977095i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePassiveLargeRadiatorGas".into(), + prefab_hash: 2066977095i32, + desc: "Has been replaced by Medium Convection Radiator." + .into(), + name: "Medium Convection Radiator".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 24786172i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePassiveLargeRadiatorLiquid".into(), + prefab_hash: 24786172i32, + desc: "Has been replaced by Medium Convection Radiator Liquid." + .into(), + name: "Medium Convection Radiator Liquid".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1812364811i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePassiveLiquidDrain".into(), + prefab_hash: 1812364811i32, + desc: "Moves liquids from a pipe network to the world atmosphere." + .into(), + name: "Passive Liquid Drain".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 335498166i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePassiveVent".into(), + prefab_hash: 335498166i32, + desc: "Passive vents allow gases to move into and out of pipe networks, which are closed systems unless connected to a device or structure. Passive vents are not powered, merely an aperture, essentially turning an enclosed space into part of the pipe network. " + .into(), + name: "Passive Vent".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 1363077139i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePassiveVentInsulated".into(), + prefab_hash: 1363077139i32, + desc: "".into(), + name: "Insulated Passive Vent".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -1674187440i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePassthroughHeatExchangerGasToGas".into(), + prefab_hash: -1674187440i32, + desc: "Exchange heat from one pipe network to another. By drawing down the pressure of the outputs with a pump or regulator and regulating input pressures, the temperatures of two counterflowing networks can be effectively exchanged.\n Balancing the throughput of both inputs is key to creating a good exhange of temperatures." + .into(), + name: "CounterFlow Heat Exchanger - Gas + Gas".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Input2 }, + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Output2 } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1928991265i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePassthroughHeatExchangerGasToLiquid".into(), + prefab_hash: 1928991265i32, + desc: "Exchange heat from one pipe network to another. By drawing down the pressure of the outputs with a pump or regulator and regulating input pressures, the temperatures of two counterflowing networks can be effectively exchanged.\n Balancing the throughput of both inputs is key to creating a good exhange of temperatures." + .into(), + name: "CounterFlow Heat Exchanger - Gas + Liquid".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Input2 }, + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Output2 } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1472829583i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePassthroughHeatExchangerLiquidToLiquid" + .into(), + prefab_hash: -1472829583i32, + desc: "Exchange heat from one pipe network to another. By drawing down the pressure of the outputs with a pump or regulator and regulating input pressures, the temperatures of two counterflowing networks can be effectively exchanged.\n Balancing the throughput of both inputs is key to creating a good exchange of temperatures." + .into(), + name: "CounterFlow Heat Exchanger - Liquid + Liquid".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Input2 }, + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Output2 } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1434523206i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePictureFrameThickLandscapeLarge".into(), + prefab_hash: -1434523206i32, + desc: "".into(), + name: "Picture Frame Thick Landscape Large".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -2041566697i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePictureFrameThickLandscapeSmall".into(), + prefab_hash: -2041566697i32, + desc: "".into(), + name: "Picture Frame Thick Landscape Small".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 950004659i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePictureFrameThickMountLandscapeLarge".into(), + prefab_hash: 950004659i32, + desc: "".into(), + name: "Picture Frame Thick Landscape Large".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 347154462i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePictureFrameThickMountLandscapeSmall".into(), + prefab_hash: 347154462i32, + desc: "".into(), + name: "Picture Frame Thick Landscape Small".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -1459641358i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePictureFrameThickMountPortraitLarge".into(), + prefab_hash: -1459641358i32, + desc: "".into(), + name: "Picture Frame Thick Mount Portrait Large".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -2066653089i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePictureFrameThickMountPortraitSmall".into(), + prefab_hash: -2066653089i32, + desc: "".into(), + name: "Picture Frame Thick Mount Portrait Small".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -1686949570i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePictureFrameThickPortraitLarge".into(), + prefab_hash: -1686949570i32, + desc: "".into(), + name: "Picture Frame Thick Portrait Large".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -1218579821i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePictureFrameThickPortraitSmall".into(), + prefab_hash: -1218579821i32, + desc: "".into(), + name: "Picture Frame Thick Portrait Small".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -1418288625i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePictureFrameThinLandscapeLarge".into(), + prefab_hash: -1418288625i32, + desc: "".into(), + name: "Picture Frame Thin Landscape Large".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -2024250974i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePictureFrameThinLandscapeSmall".into(), + prefab_hash: -2024250974i32, + desc: "".into(), + name: "Picture Frame Thin Landscape Small".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -1146760430i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePictureFrameThinMountLandscapeLarge".into(), + prefab_hash: -1146760430i32, + desc: "".into(), + name: "Picture Frame Thin Landscape Large".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -1752493889i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePictureFrameThinMountLandscapeSmall".into(), + prefab_hash: -1752493889i32, + desc: "".into(), + name: "Picture Frame Thin Landscape Small".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 1094895077i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePictureFrameThinMountPortraitLarge".into(), + prefab_hash: 1094895077i32, + desc: "".into(), + name: "Picture Frame Thin Portrait Large".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 1835796040i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePictureFrameThinMountPortraitSmall".into(), + prefab_hash: 1835796040i32, + desc: "".into(), + name: "Picture Frame Thin Portrait Small".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 1212777087i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePictureFrameThinPortraitLarge".into(), + prefab_hash: 1212777087i32, + desc: "".into(), + name: "Picture Frame Thin Portrait Large".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 1684488658i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePictureFrameThinPortraitSmall".into(), + prefab_hash: 1684488658i32, + desc: "".into(), + name: "Picture Frame Thin Portrait Small".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 435685051i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeAnalysizer".into(), + prefab_hash: 435685051i32, + desc: "Allegedly the outcome of a weekend father-daughter electronics project by an overzealous {ExMin engineer, the pipe analyzer is essentially a more advanced version of the Pipe Meter.\nDisplaying the internal pressure of pipe networks, it also reads out temperature and gas contents, and can be connected to a Console or Computer via a {Logic system." + .into(), + name: "Pipe Analyzer".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::RatioOxygen, + MemoryAccess::Read), (LogicType::RatioCarbonDioxide, + MemoryAccess::Read), (LogicType::RatioNitrogen, + MemoryAccess::Read), (LogicType::RatioPollutant, + MemoryAccess::Read), (LogicType::RatioVolatiles, + MemoryAccess::Read), (LogicType::RatioWater, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), (LogicType::Volume, + MemoryAccess::Read), (LogicType::RatioNitrousOxide, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::VolumeOfLiquid, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1785673561i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeCorner".into(), + prefab_hash: -1785673561i32, + desc: "You can upgrade this pipe to an Insulated Pipe (Corner) using an Kit (Insulated Pipe) and a Wrench." + .into(), + name: "Pipe (Corner)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 465816159i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeCowl".into(), + prefab_hash: 465816159i32, + desc: "".into(), + name: "Pipe Cowl".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -1405295588i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeCrossJunction".into(), + prefab_hash: -1405295588i32, + desc: "You can upgrade this pipe to an Insulated Pipe (Cross Junction) using an Kit (Insulated Pipe) and a Wrench." + .into(), + name: "Pipe (Cross Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 2038427184i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeCrossJunction3".into(), + prefab_hash: 2038427184i32, + desc: "You can upgrade this pipe to an Insulated Pipe (3-Way Junction) using an Kit (Insulated Pipe) and a Wrench." + .into(), + name: "Pipe (3-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -417629293i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeCrossJunction4".into(), + prefab_hash: -417629293i32, + desc: "You can upgrade this pipe to an Insulated Pipe (4-Way Junction) using an Kit (Insulated Pipe) and a Wrench." + .into(), + name: "Pipe (4-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -1877193979i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeCrossJunction5".into(), + prefab_hash: -1877193979i32, + desc: "You can upgrade this pipe to an Insulated Pipe (5-Way Junction) using an Kit (Insulated Pipe) and a Wrench." + .into(), + name: "Pipe (5-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 152378047i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeCrossJunction6".into(), + prefab_hash: 152378047i32, + desc: "You can upgrade this pipe to an Insulated Pipe (6-Way Junction) using an Kit (Insulated Pipe) and a Wrench." + .into(), + name: "Pipe (6-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -419758574i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeHeater".into(), + prefab_hash: -419758574i32, + desc: "Adds 1000 joules of heat per tick to the contents of your pipe network." + .into(), + name: "Pipe Heater (Gas)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1286441942i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeIgniter".into(), + prefab_hash: 1286441942i32, + desc: "Ignites the atmosphere inside the attached pipe network." + .into(), + name: "Pipe Igniter".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -2068497073i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeInsulatedLiquidCrossJunction".into(), + prefab_hash: -2068497073i32, + desc: "Liquid piping with very low temperature loss or gain.".into(), + name: "Insulated Liquid Pipe (Cross Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -999721119i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeLabel".into(), + prefab_hash: -999721119i32, + desc: "As its perspicacious name suggests, the pipe label is designed to be attached to a straight stretch of pipe. Users can then label the label with the Labeller." + .into(), + name: "Pipe Label".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1856720921i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeLiquidCorner".into(), + prefab_hash: -1856720921i32, + desc: "You can upgrade this pipe to an Insulated Liquid Pipe (Corner) using an Kit (Insulated Liquid Pipe) and a Wrench." + .into(), + name: "Liquid Pipe (Corner)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 1848735691i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeLiquidCrossJunction".into(), + prefab_hash: 1848735691i32, + desc: "You can upgrade this pipe to an Insulated Liquid Pipe (Cross Junction) using an Kit (Insulated Liquid Pipe) and a Wrench." + .into(), + name: "Liquid Pipe (Cross Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 1628087508i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeLiquidCrossJunction3".into(), + prefab_hash: 1628087508i32, + desc: "You can upgrade this pipe to an using an Kit (Insulated Liquid Pipe) and a Wrench." + .into(), + name: "Liquid Pipe (3-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -9555593i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeLiquidCrossJunction4".into(), + prefab_hash: -9555593i32, + desc: "You can upgrade this pipe to an Insulated Liquid Pipe (4-Way Junction) using an Kit (Insulated Liquid Pipe) and a Wrench." + .into(), + name: "Liquid Pipe (4-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -2006384159i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeLiquidCrossJunction5".into(), + prefab_hash: -2006384159i32, + desc: "You can upgrade this pipe to an Insulated Liquid Pipe (5-Way Junction) using an Kit (Insulated Liquid Pipe) and a Wrench." + .into(), + name: "Liquid Pipe (5-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 291524699i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeLiquidCrossJunction6".into(), + prefab_hash: 291524699i32, + desc: "You can upgrade this pipe to an Insulated Liquid Pipe (6-Way Junction) using an Kit (Insulated Liquid Pipe) and a Wrench." + .into(), + name: "Liquid Pipe (6-Way Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 667597982i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeLiquidStraight".into(), + prefab_hash: 667597982i32, + desc: "You can upgrade this pipe to an Insulated Liquid Pipe (Straight) using an Kit (Insulated Liquid Pipe) and a Wrench." + .into(), + name: "Liquid Pipe (Straight)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 262616717i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeLiquidTJunction".into(), + prefab_hash: 262616717i32, + desc: "You can upgrade this pipe to an Insulated Liquid Pipe (T Junction) using an Kit (Insulated Liquid Pipe) and a Wrench." + .into(), + name: "Liquid Pipe (T Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -1798362329i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeMeter".into(), + prefab_hash: -1798362329i32, + desc: "While the Stationeers program has, thus far, inspired little in the way of classical poetry, the following haiku was found etched, ironically, on a piece of pipe wreckage found on Vulcan:\n\"Humble pipe meter\nspeaks the truth, transmits pressure\nwithin any pipe\"" + .into(), + name: "Pipe Meter".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1580412404i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeOneWayValve".into(), + prefab_hash: 1580412404i32, + desc: "The one way valve moves gas in one direction only: from input side to output side. It only permits flow if the input pressure is higher than output pressure.\n" + .into(), + name: "One Way Valve (Gas)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1305252611i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeOrgan".into(), + prefab_hash: 1305252611i32, + desc: "The pipe organ can be attached to one end of a Kit (Pipe Valve). The length of the pipe after the pipe organ changes the pitch of the note it will play when the valve is opened. Use Logic to open and close the valves to create some custom tunes for your base or an audible warning." + .into(), + name: "Pipe Organ".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 1696603168i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeRadiator".into(), + prefab_hash: 1696603168i32, + desc: "A simple heat exchanger, pipe radiators can be placed on pipes to shed or gain heat, depending on the temperature of the surrounding atmosphere. If the atmosphere is hotter, heat will be added the gas within the pipe network, and visa versa if colder. In a vacuum, heat will be radiated. \nThe speed of heat gain or loss will depend on the gas in question. Adding multiple radiators will speed up heat transfer." + .into(), + name: "Pipe Convection Radiator".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -399883995i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeRadiatorFlat".into(), + prefab_hash: -399883995i32, + desc: "A pipe mounted radiator optimized for radiating heat in vacuums." + .into(), + name: "Pipe Radiator".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 2024754523i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeRadiatorFlatLiquid".into(), + prefab_hash: 2024754523i32, + desc: "A liquid pipe mounted radiator optimized for radiating heat in vacuums." + .into(), + name: "Pipe Radiator Liquid".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 73728932i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeStraight".into(), + prefab_hash: 73728932i32, + desc: "You can upgrade this pipe to an Insulated Pipe (Straight) using an Kit (Insulated Pipe) and a Wrench." + .into(), + name: "Pipe (Straight)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -913817472i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePipeTJunction".into(), + prefab_hash: -913817472i32, + desc: "You can upgrade this pipe to an Insulated Pipe (T Junction) using an Kit (Insulated Pipe) and a Wrench." + .into(), + name: "Pipe (T Junction)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -1125641329i32, + StructureSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePlanter".into(), + prefab_hash: -1125641329i32, + desc: "A small planter for decorative or hydroponic purposes. Can be connected to Water, or watered manually using a Water Bottle or Liquid Canister (Water)." + .into(), + name: "Planter".into(), + }, + structure: StructureInfo { small_grid: true }, + slots: vec![ + SlotInfo { name : "Plant".into(), typ : Class::Plant }, SlotInfo { + name : "Plant".into(), typ : Class::Plant } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + 1559586682i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePlatformLadderOpen".into(), + prefab_hash: 1559586682i32, + desc: "".into(), + name: "Ladder Platform".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 989835703i32, + StructureSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePlinth".into(), + prefab_hash: 989835703i32, + desc: "".into(), + name: "Plinth".into(), + }, + structure: StructureInfo { small_grid: true }, + slots: vec![SlotInfo { name : "".into(), typ : Class::None }] + .into_iter() + .collect(), + } + .into(), + ), + ( + -899013427i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePortablesConnector".into(), + prefab_hash: -899013427i32, + desc: "".into(), + name: "Portables Connector".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "".into(), typ : Class::None }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Input2 } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + -782951720i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePowerConnector".into(), + prefab_hash: -782951720i32, + desc: "Attaches a Kit (Portable Generator) to a power network." + .into(), + name: "Power Connector".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Portable Slot".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + -65087121i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePowerTransmitter".into(), + prefab_hash: -65087121i32, + desc: "The Norsec Wireless Power Transmitter is an uni-directional, A-to-B, far field microwave electrical transmission system.The rotatable base transmitter delivers a narrow, non-lethal microwave beam to a dedicated base receiver.\nThe transmitter must be aligned to the base station in order to transmit any power. The brightness of the transmitter\'s collimator arc provides an indication of transmission intensity. Note that there is an attrition over longer ranges, so the unit requires more power over greater distances to deliver the same output." + .into(), + name: "Microwave Power Transmitter".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::Read), (LogicType::Error, MemoryAccess::Read), + (LogicType::Charge, MemoryAccess::Read), (LogicType::Horizontal, + MemoryAccess::ReadWrite), (LogicType::Vertical, + MemoryAccess::ReadWrite), (LogicType::PowerPotential, + MemoryAccess::Read), (LogicType::PowerActual, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PositionX, MemoryAccess::Read), + (LogicType::PositionY, MemoryAccess::Read), + (LogicType::PositionZ, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Unlinked".into()), (1u32, "Linked".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -327468845i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePowerTransmitterOmni".into(), + prefab_hash: -327468845i32, + desc: "".into(), + name: "Power Transmitter Omni".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1195820278i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePowerTransmitterReceiver".into(), + prefab_hash: 1195820278i32, + desc: "The Norsec Wireless Power Transmitter is an uni-directional, A-to-B, far field microwave electrical transmission system.The rotatable base transmitter delivers a narrow, non-lethal microwave beam to a dedicated base receiver.\nThe transmitter must be aligned to the base station in order to transmit any power. The brightness of the transmitter\'s collimator arc provides an indication of transmission intensity. Note that there is an attrition over longer ranges, so the unit requires more power over greater distances to deliver the same output.Connects to Logic Transmitter" + .into(), + name: "Microwave Power Receiver".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::Read), (LogicType::Error, MemoryAccess::Read), + (LogicType::Charge, MemoryAccess::Read), (LogicType::Horizontal, + MemoryAccess::ReadWrite), (LogicType::Vertical, + MemoryAccess::ReadWrite), (LogicType::PowerPotential, + MemoryAccess::Read), (LogicType::PowerActual, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PositionX, MemoryAccess::Read), + (LogicType::PositionY, MemoryAccess::Read), + (LogicType::PositionZ, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Unlinked".into()), (1u32, "Linked".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: true, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 101488029i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePowerUmbilicalFemale".into(), + prefab_hash: 101488029i32, + desc: "".into(), + name: "Umbilical Socket (Power)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1922506192i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePowerUmbilicalFemaleSide".into(), + prefab_hash: 1922506192i32, + desc: "".into(), + name: "Umbilical Socket Angle (Power)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1529453938i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePowerUmbilicalMale".into(), + prefab_hash: 1529453938i32, + desc: "0.Left\n1.Center\n2.Right".into(), + name: "Umbilical (Power)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, MemoryAccess::Read), + (LogicType::Error, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Left".into()), (1u32, "Center".into()), (2u32, + "Right".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 938836756i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePoweredVent".into(), + prefab_hash: 938836756i32, + desc: "Great for moving large quantities of air into a pipe network. Its primary purpose is for the creation of multi-grid airlocks. It can effeciently pull a vacuum on a small to medium sized room." + .into(), + name: "Powered Vent".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::PressureExternal, MemoryAccess::ReadWrite), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Outward".into()), (1u32, "Inward".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -785498334i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePoweredVentLarge".into(), + prefab_hash: -785498334i32, + desc: "For building large scale airlock systems and pressurised hangers, a bigger and bolder version of the Powered Vent that can effeciently pull a vacuum in large room." + .into(), + name: "Powered Vent Large".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::PressureExternal, MemoryAccess::ReadWrite), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Outward".into()), (1u32, "Inward".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 23052817i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePressurantValve".into(), + prefab_hash: 23052817i32, + desc: "Pumps gas into a liquid pipe in order to raise the pressure" + .into(), + name: "Pressurant Valve".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -624011170i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePressureFedGasEngine".into(), + prefab_hash: -624011170i32, + desc: "Inefficient but very powerful, the Pressure Fed Gas Engine moves gas from each of its two inputs based on the pressure of the input pipes. Control the mixing ratio of fuels by tweaking the input pressures to target a 2:1 mix of Volatiles to Oxygen gas. Chilling propellant gasses or using Nitrous Oxide as an oxydizer will result in even higher thrust outputs." + .into(), + name: "Pressure Fed Gas Engine".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::Throttle, MemoryAccess::ReadWrite), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::PassedMoles, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Input2 }, + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 379750958i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePressureFedLiquidEngine".into(), + prefab_hash: 379750958i32, + desc: "Highly efficient and powerful, the Pressure Fed Liquid Engine is a challenging engine to run in a stable configuration. Liquid is pulled from the input into the engine based on the input gas pressure. Some gas is also moved in this process so Stationeers will need to devise a system to maintain a high gas pressure in the liquid input pipe. The second liquid pipe connection is an optional heat-exchanger connection which exchanges heat between the pipes contents and the engine bell, the Setting variable drives the effectiveness of the heat-exchanger." + .into(), + name: "Pressure Fed Liquid Engine".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::Throttle, MemoryAccess::ReadWrite), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::PassedMoles, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Input2 }, + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -2008706143i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePressurePlateLarge".into(), + prefab_hash: -2008706143i32, + desc: "".into(), + name: "Trigger Plate (Large)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::Read), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1269458680i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePressurePlateMedium".into(), + prefab_hash: 1269458680i32, + desc: "".into(), + name: "Trigger Plate (Medium)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::Read), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1536471028i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePressurePlateSmall".into(), + prefab_hash: -1536471028i32, + desc: "".into(), + name: "Trigger Plate (Small)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::Read), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 209854039i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePressureRegulator".into(), + prefab_hash: 209854039i32, + desc: "Controlling the flow of gas between two pipe networks, pressure regulators shift gas until a set pressure on the outlet side is achieved, or the gas supply is exhausted. The back pressure regulator, by contrast, will only operate when pressure on the intake side exceeds the set value. With a max pressure of over 20,000kPa, it requires power to operate." + .into(), + name: "Pressure Regulator".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 568800213i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureProximitySensor".into(), + prefab_hash: 568800213i32, + desc: "Will be triggered if there is a player in the range of the sensor (as defined by the setting dial). The quantity variable will show the number of players. You can configure the sensor to only detect players who hold the correct Access Card using a Cartridge (Access Controller) in a Handheld Tablet." + .into(), + name: "Proximity Sensor".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Activate, MemoryAccess::Read), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Quantity, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -2031440019i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePumpedLiquidEngine".into(), + prefab_hash: -2031440019i32, + desc: "Liquid propellants bring greater efficiencies with Pumped Liquid Engine. Two inputs are provided so Stationeers can seperate their fuels, the Setting variable controls the mixing ratio of the inputs. The engine is designed to run on Liquid Volatiles and Liquid Oxygen, some Stationeers have reported excessive thrust values by switching to Liquid Nitrous Oxide" + .into(), + name: "Pumped Liquid Engine".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::Throttle, MemoryAccess::ReadWrite), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::PassedMoles, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::None }, + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -737232128i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructurePurgeValve".into(), + prefab_hash: -737232128i32, + desc: "Allows for removal of pressurant gas and evaporated liquids from a liquid pipe. Similar in function to a Back Pressure Regulator the Purge Valve moves gas from the input liquid pipe to the output gas pipe aiming to keep the pressure of the input at the target setting." + .into(), + name: "Purge Valve".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1756913871i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureRailing".into(), + prefab_hash: -1756913871i32, + desc: "\"Safety third.\"".into(), + name: "Railing Industrial (Type 1)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -1633947337i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureRecycler".into(), + prefab_hash: -1633947337i32, + desc: "A device for collecting the raw resources while destroying an item. Produces Reagent Mix containing packages of reagents. Pass these through the Centrifuge to gain back the source ores. Plants and organic matter passed through will create Biomass, which when passed through the Centrifuge will produce Biomass." + .into(), + name: "Recycler".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::Reagents, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { + name : "Export".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: true, + }, + } + .into(), + ), + ( + -1577831321i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureRefrigeratedVendingMachine".into(), + prefab_hash: -1577831321i32, + desc: "The refrigerated OmniKool vending machine is an advanced version of the standard Vending Machine, which maintains an optimum pressure and constant temperature of -130 degrees C, to prevent food spoilage. It can hold up to 100 stacks.\nThe OmniKool also has an in-built Stacker, allowing players to set the stack sizes of any items ADDED to the device. The unit\'s default stack size is 50.\nNOTE: altering stack sizes DOES NOT update existing stacks within the machine, only those subsequently added. " + .into(), + name: "Refrigerated Vending Machine".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()), (2u32, vec![] .into_iter().collect()), (3u32, vec![] + .into_iter().collect()), (4u32, vec![] .into_iter().collect()), + (5u32, vec![] .into_iter().collect()), (6u32, vec![] .into_iter() + .collect()), (7u32, vec![] .into_iter().collect()), (8u32, vec![] + .into_iter().collect()), (9u32, vec![] .into_iter().collect()), + (10u32, vec![] .into_iter().collect()), (11u32, vec![] + .into_iter().collect()), (12u32, vec![] .into_iter().collect()), + (13u32, vec![] .into_iter().collect()), (14u32, vec![] + .into_iter().collect()), (15u32, vec![] .into_iter().collect()), + (16u32, vec![] .into_iter().collect()), (17u32, vec![] + .into_iter().collect()), (18u32, vec![] .into_iter().collect()), + (19u32, vec![] .into_iter().collect()), (20u32, vec![] + .into_iter().collect()), (21u32, vec![] .into_iter().collect()), + (22u32, vec![] .into_iter().collect()), (23u32, vec![] + .into_iter().collect()), (24u32, vec![] .into_iter().collect()), + (25u32, vec![] .into_iter().collect()), (26u32, vec![] + .into_iter().collect()), (27u32, vec![] .into_iter().collect()), + (28u32, vec![] .into_iter().collect()), (29u32, vec![] + .into_iter().collect()), (30u32, vec![] .into_iter().collect()), + (31u32, vec![] .into_iter().collect()), (32u32, vec![] + .into_iter().collect()), (33u32, vec![] .into_iter().collect()), + (34u32, vec![] .into_iter().collect()), (35u32, vec![] + .into_iter().collect()), (36u32, vec![] .into_iter().collect()), + (37u32, vec![] .into_iter().collect()), (38u32, vec![] + .into_iter().collect()), (39u32, vec![] .into_iter().collect()), + (40u32, vec![] .into_iter().collect()), (41u32, vec![] + .into_iter().collect()), (42u32, vec![] .into_iter().collect()), + (43u32, vec![] .into_iter().collect()), (44u32, vec![] + .into_iter().collect()), (45u32, vec![] .into_iter().collect()), + (46u32, vec![] .into_iter().collect()), (47u32, vec![] + .into_iter().collect()), (48u32, vec![] .into_iter().collect()), + (49u32, vec![] .into_iter().collect()), (50u32, vec![] + .into_iter().collect()), (51u32, vec![] .into_iter().collect()), + (52u32, vec![] .into_iter().collect()), (53u32, vec![] + .into_iter().collect()), (54u32, vec![] .into_iter().collect()), + (55u32, vec![] .into_iter().collect()), (56u32, vec![] + .into_iter().collect()), (57u32, vec![] .into_iter().collect()), + (58u32, vec![] .into_iter().collect()), (59u32, vec![] + .into_iter().collect()), (60u32, vec![] .into_iter().collect()), + (61u32, vec![] .into_iter().collect()), (62u32, vec![] + .into_iter().collect()), (63u32, vec![] .into_iter().collect()), + (64u32, vec![] .into_iter().collect()), (65u32, vec![] + .into_iter().collect()), (66u32, vec![] .into_iter().collect()), + (67u32, vec![] .into_iter().collect()), (68u32, vec![] + .into_iter().collect()), (69u32, vec![] .into_iter().collect()), + (70u32, vec![] .into_iter().collect()), (71u32, vec![] + .into_iter().collect()), (72u32, vec![] .into_iter().collect()), + (73u32, vec![] .into_iter().collect()), (74u32, vec![] + .into_iter().collect()), (75u32, vec![] .into_iter().collect()), + (76u32, vec![] .into_iter().collect()), (77u32, vec![] + .into_iter().collect()), (78u32, vec![] .into_iter().collect()), + (79u32, vec![] .into_iter().collect()), (80u32, vec![] + .into_iter().collect()), (81u32, vec![] .into_iter().collect()), + (82u32, vec![] .into_iter().collect()), (83u32, vec![] + .into_iter().collect()), (84u32, vec![] .into_iter().collect()), + (85u32, vec![] .into_iter().collect()), (86u32, vec![] + .into_iter().collect()), (87u32, vec![] .into_iter().collect()), + (88u32, vec![] .into_iter().collect()), (89u32, vec![] + .into_iter().collect()), (90u32, vec![] .into_iter().collect()), + (91u32, vec![] .into_iter().collect()), (92u32, vec![] + .into_iter().collect()), (93u32, vec![] .into_iter().collect()), + (94u32, vec![] .into_iter().collect()), (95u32, vec![] + .into_iter().collect()), (96u32, vec![] .into_iter().collect()), + (97u32, vec![] .into_iter().collect()), (98u32, vec![] + .into_iter().collect()), (99u32, vec![] .into_iter().collect()), + (100u32, vec![] .into_iter().collect()), (101u32, vec![] + .into_iter().collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::RatioOxygen, + MemoryAccess::Read), (LogicType::RatioCarbonDioxide, + MemoryAccess::Read), (LogicType::RatioNitrogen, + MemoryAccess::Read), (LogicType::RatioPollutant, + MemoryAccess::Read), (LogicType::RatioVolatiles, + MemoryAccess::Read), (LogicType::RatioWater, MemoryAccess::Read), + (LogicType::Ratio, MemoryAccess::Read), (LogicType::Quantity, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::RequestHash, MemoryAccess::ReadWrite), + (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { + name : "Export".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: true, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 2027713511i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureReinforcedCompositeWindow".into(), + prefab_hash: 2027713511i32, + desc: "Enjoy vistas of even the most savage, alien landscapes with these heavy duty window frames, which are resistant to pressure differentials up to 1MPa." + .into(), + name: "Reinforced Window (Composite)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -816454272i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureReinforcedCompositeWindowSteel".into(), + prefab_hash: -816454272i32, + desc: "Enjoy vistas of even the most savage, alien landscapes with these heavy duty window frames, which are resistant to pressure differentials up to 1MPa." + .into(), + name: "Reinforced Window (Composite Steel)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 1939061729i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureReinforcedWallPaddedWindow".into(), + prefab_hash: 1939061729i32, + desc: "Enjoy vistas of even the most savage, alien landscapes with these heavy duty window frames, which are resistant to pressure differentials up to 1MPa." + .into(), + name: "Reinforced Window (Padded)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 158502707i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureReinforcedWallPaddedWindowThin".into(), + prefab_hash: 158502707i32, + desc: "Enjoy vistas of even the most savage, alien landscapes with these heavy duty window frames, which are resistant to pressure differentials up to 1MPa." + .into(), + name: "Reinforced Window (Thin)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 808389066i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureRocketAvionics".into(), + prefab_hash: 808389066i32, + desc: "".into(), + name: "Rocket Avionics".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), + (LogicType::Reagents, MemoryAccess::Read), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), + (LogicType::Quantity, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::VelocityRelativeY, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::Progress, MemoryAccess::Read), + (LogicType::DestinationCode, MemoryAccess::ReadWrite), + (LogicType::Acceleration, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::AutoShutOff, MemoryAccess::ReadWrite), + (LogicType::Mass, MemoryAccess::Read), (LogicType::DryMass, + MemoryAccess::Read), (LogicType::Thrust, MemoryAccess::Read), + (LogicType::Weight, MemoryAccess::Read), + (LogicType::ThrustToWeight, MemoryAccess::Read), + (LogicType::TimeToDestination, MemoryAccess::Read), + (LogicType::BurnTimeRemaining, MemoryAccess::Read), + (LogicType::AutoLand, MemoryAccess::Write), + (LogicType::FlightControlRule, MemoryAccess::Read), + (LogicType::ReEntryAltitude, MemoryAccess::Read), + (LogicType::Apex, MemoryAccess::Read), (LogicType::RatioHydrogen, + MemoryAccess::Read), (LogicType::RatioLiquidHydrogen, + MemoryAccess::Read), (LogicType::RatioPollutedWater, + MemoryAccess::Read), (LogicType::Discover, MemoryAccess::Read), + (LogicType::Chart, MemoryAccess::Read), (LogicType::Survey, + MemoryAccess::Read), (LogicType::NavPoints, MemoryAccess::Read), + (LogicType::ChartedNavPoints, MemoryAccess::Read), + (LogicType::Sites, MemoryAccess::Read), (LogicType::CurrentCode, + MemoryAccess::Read), (LogicType::Density, MemoryAccess::Read), + (LogicType::Richness, MemoryAccess::Read), (LogicType::Size, + MemoryAccess::Read), (LogicType::TotalQuantity, + MemoryAccess::Read), (LogicType::MinedQuantity, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Invalid".into()), (1u32, "None".into()), (2u32, + "Mine".into()), (3u32, "Survey".into()), (4u32, "Discover" + .into()), (5u32, "Chart".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: true, + }, + } + .into(), + ), + ( + 997453927i32, + StructureLogicDeviceMemoryTemplate { + prefab: PrefabInfo { + prefab_name: "StructureRocketCelestialTracker".into(), + prefab_hash: 997453927i32, + desc: "The Celestial Tracker can be placed in Rockets and when turned on will provide data that can be used to orientate devices such as the Telescope. The Horizontal and Vertical output is localized to the orientation of the tracker. You can calibrate your alignment by comparing the result for the primary body with the output from the Daylight Sensor. Full functionality will only be available in orbit, but you can configure using the primary body. For aligning with the telescope, have the face plate facing up and the cables facing in the same direction as for the telescope and the output values will be aligned." + .into(), + name: "Rocket Celestial Tracker".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Horizontal, MemoryAccess::Read), + (LogicType::Vertical, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), (LogicType::Index, + MemoryAccess::ReadWrite), (LogicType::CelestialHash, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + memory: MemoryInfo { + instructions: Some( + vec![ + ("BodyOrientation".into(), Instruction { description : + "| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | CELESTIAL_INDEX | BYTE_8 |\r\n| 16-31 | HORIZONTAL_DECI_DEGREES | SHORT_16 |\r\n| 32-47 | VERTICAL_DECI_DEGREES | SHORT_16 |\r\n| 48-63 | UNUSED | 16 |" + .into(), typ : "CelestialTracking".into(), value : 1i64 }) + ] + .into_iter() + .collect(), + ), + memory_access: MemoryAccess::Read, + memory_size: 12u32, + }, + } + .into(), + ), + ( + 150135861i32, + StructureLogicDeviceMemoryTemplate { + prefab: PrefabInfo { + prefab_name: "StructureRocketCircuitHousing".into(), + prefab_hash: 150135861i32, + desc: "".into(), + name: "Rocket Circuit Housing".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::LineNumber, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::LineNumber, MemoryAccess::ReadWrite), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: true, + }, + slots: vec![ + SlotInfo { name : "Programmable Chip".into(), typ : + Class::ProgrammableChip } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: Some(6u32), + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + memory: MemoryInfo { + instructions: None, + memory_access: MemoryAccess::ReadWrite, + memory_size: 0u32, + }, + } + .into(), + ), + ( + 178472613i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureRocketEngineTiny".into(), + prefab_hash: 178472613i32, + desc: "".into(), + name: "Rocket Engine (Tiny)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::RatioOxygen, + MemoryAccess::Read), (LogicType::RatioCarbonDioxide, + MemoryAccess::Read), (LogicType::RatioNitrogen, + MemoryAccess::Read), (LogicType::RatioPollutant, + MemoryAccess::Read), (LogicType::RatioVolatiles, + MemoryAccess::Read), (LogicType::RatioWater, MemoryAccess::Read), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PowerAndData, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1781051034i32, + StructureLogicDeviceMemoryTemplate { + prefab: PrefabInfo { + prefab_name: "StructureRocketManufactory".into(), + prefab_hash: 1781051034i32, + desc: "".into(), + name: "Rocket Manufactory".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Reagents, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::RecipeHash, MemoryAccess::ReadWrite), + (LogicType::CompletionRatio, MemoryAccess::Read), + (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::Ingot }, SlotInfo { + name : "Export".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: true, + }, + memory: MemoryInfo { + instructions: Some( + vec![ + ("DeviceSetLock".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |" + .into(), typ : "PrinterInstruction".into(), value : 6i64 }), + ("EjectAllReagents".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" + .into(), typ : "PrinterInstruction".into(), value : 8i64 }), + ("EjectReagent".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |" + .into(), typ : "PrinterInstruction".into(), value : 7i64 }), + ("ExecuteRecipe".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" + .into(), typ : "PrinterInstruction".into(), value : 2i64 }), + ("JumpIfNextInvalid".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 4i64 }), + ("JumpToAddress".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 5i64 }), + ("MissingRecipeReagent".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" + .into(), typ : "PrinterInstruction".into(), value : 9i64 }), + ("StackPointer".into(), Instruction { description : + "| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 1i64 }), + ("WaitUntilNextValid".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" + .into(), typ : "PrinterInstruction".into(), value : 3i64 }) + ] + .into_iter() + .collect(), + ), + memory_access: MemoryAccess::ReadWrite, + memory_size: 64u32, + }, + } + .into(), + ), + ( + -2087223687i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureRocketMiner".into(), + prefab_hash: -2087223687i32, + desc: "Gathers available resources at the rocket\'s current space location." + .into(), + name: "Rocket Miner".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Quantity, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::ClearMemory, + MemoryAccess::Write), (LogicType::ExportCount, + MemoryAccess::Read), (LogicType::ImportCount, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::DrillCondition, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Export".into(), typ : Class::None }, SlotInfo { + name : "Drill Head Slot".into(), typ : Class::DrillHead } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::PowerAndData, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 2014252591i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureRocketScanner".into(), + prefab_hash: 2014252591i32, + desc: "".into(), + name: "Rocket Scanner".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Scanner Head Slot".into(), typ : + Class::ScanningHead } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -654619479i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureRocketTower".into(), + prefab_hash: -654619479i32, + desc: "".into(), + name: "Launch Tower".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 518925193i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureRocketTransformerSmall".into(), + prefab_hash: 518925193i32, + desc: "".into(), + name: "Transformer Small (Rocket)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 806513938i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureRover".into(), + prefab_hash: 806513938i32, + desc: "".into(), + name: "Rover Frame".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -1875856925i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSDBHopper".into(), + prefab_hash: -1875856925i32, + desc: "".into(), + name: "SDB Hopper".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), + (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ImportCount, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Import".into(), typ : Class::None }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 467225612i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSDBHopperAdvanced".into(), + prefab_hash: 467225612i32, + desc: "".into(), + name: "SDB Hopper Advanced".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::ClearMemory, + MemoryAccess::Write), (LogicType::ImportCount, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Import".into(), typ : Class::None }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None }, + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: false, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 1155865682i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSDBSilo".into(), + prefab_hash: 1155865682i32, + desc: "The majestic silo holds large quantities of almost anything. While it is doing that, it cannot be deconstructed. Note also, that any food you put into a silo is likely to decay extremely rapidly. The silo can hold up to 600 stacks." + .into(), + name: "SDB Silo".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Quantity, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Mode0".into()), (1u32, "Mode1".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { + name : "Export".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 439026183i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSatelliteDish".into(), + prefab_hash: 439026183i32, + desc: "This medium communications unit can be used to communicate with nearby trade vessels.\n \nWhen connected to a Computer containing a Communications Motherboard motherboard, a Landingpad Center, and a Vending Machine, this allows Stationeers to contact traders. Adjust its horizontal and vertical attributes either directly or through logic." + .into(), + name: "Medium Satellite Dish".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Horizontal, + MemoryAccess::ReadWrite), (LogicType::Vertical, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::Idle, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::SignalStrength, MemoryAccess::Read), + (LogicType::SignalId, MemoryAccess::Read), + (LogicType::InterrogationProgress, MemoryAccess::Read), + (LogicType::TargetPadIndex, MemoryAccess::ReadWrite), + (LogicType::SizeX, MemoryAccess::Read), (LogicType::SizeZ, + MemoryAccess::Read), (LogicType::MinimumWattsToContact, + MemoryAccess::Read), (LogicType::WattsReachingContact, + MemoryAccess::Read), (LogicType::ContactTypeId, + MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::BestContactFilter, + MemoryAccess::ReadWrite), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -641491515i32, + StructureLogicDeviceMemoryTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSecurityPrinter".into(), + prefab_hash: -641491515i32, + desc: "Any Stationeer concerned about security needs the Harkwell-designed Vigilant-E security printer. Use the Vigilant-E to create a Cartridge (Access Controller), in order to restrict access to different parts of your base via keycards like the Access Card (Blue). The printer also makes a variety of weapons and ammunitions to defend your base against any hostile, aggressive or just slightly rude entites you encounter as you explore the Solar System.\n" + .into(), + name: "Security Printer".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Reagents, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::RecipeHash, MemoryAccess::ReadWrite), + (LogicType::CompletionRatio, MemoryAccess::Read), + (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::Ingot }, SlotInfo { + name : "Export".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: true, + }, + memory: MemoryInfo { + instructions: Some( + vec![ + ("DeviceSetLock".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |" + .into(), typ : "PrinterInstruction".into(), value : 6i64 }), + ("EjectAllReagents".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" + .into(), typ : "PrinterInstruction".into(), value : 8i64 }), + ("EjectReagent".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |" + .into(), typ : "PrinterInstruction".into(), value : 7i64 }), + ("ExecuteRecipe".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" + .into(), typ : "PrinterInstruction".into(), value : 2i64 }), + ("JumpIfNextInvalid".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 4i64 }), + ("JumpToAddress".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 5i64 }), + ("MissingRecipeReagent".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" + .into(), typ : "PrinterInstruction".into(), value : 9i64 }), + ("StackPointer".into(), Instruction { description : + "| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 1i64 }), + ("WaitUntilNextValid".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" + .into(), typ : "PrinterInstruction".into(), value : 3i64 }) + ] + .into_iter() + .collect(), + ), + memory_access: MemoryAccess::ReadWrite, + memory_size: 64u32, + }, + } + .into(), + ), + ( + 1172114950i32, + StructureSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "StructureShelf".into(), + prefab_hash: 1172114950i32, + desc: "".into(), + name: "Shelf".into(), + }, + structure: StructureInfo { small_grid: true }, + slots: vec![ + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + 182006674i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureShelfMedium".into(), + prefab_hash: 182006674i32, + desc: "A shelf for putting things on, so you can see them.".into(), + name: "Shelf Medium".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (2u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (3u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (4u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (5u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (6u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (7u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (8u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (9u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (10u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (11u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (12u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (13u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (14u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 1330754486i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureShortCornerLocker".into(), + prefab_hash: 1330754486i32, + desc: "".into(), + name: "Short Corner Locker".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: false, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + -554553467i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureShortLocker".into(), + prefab_hash: -554553467i32, + desc: "".into(), + name: "Short Locker".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (2u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (3u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (4u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (5u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (6u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (7u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (8u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (9u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: false, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + -775128944i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureShower".into(), + prefab_hash: -775128944i32, + desc: "".into(), + name: "Shower".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + -1081797501i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureShowerPowered".into(), + prefab_hash: -1081797501i32, + desc: "".into(), + name: "Shower (Powered)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 879058460i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSign1x1".into(), + prefab_hash: 879058460i32, + desc: "".into(), + name: "Sign 1x1".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 908320837i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSign2x1".into(), + prefab_hash: 908320837i32, + desc: "".into(), + name: "Sign 2x1".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -492611i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSingleBed".into(), + prefab_hash: -492611i32, + desc: "Description coming.".into(), + name: "Single Bed".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Bed".into(), typ : Class::Entity }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1467449329i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSleeper".into(), + prefab_hash: -1467449329i32, + desc: "".into(), + name: "Sleeper".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::EntityState, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Bed".into(), typ : Class::Entity }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 1213495833i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSleeperLeft".into(), + prefab_hash: 1213495833i32, + desc: "A horizontal variant of the sleeper. Will keep players hydrated and fed while they are logged out - as long as a breathable atmosphere is provided." + .into(), + name: "Sleeper Left".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::EntityState, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Safe".into()), (1u32, "Unsafe".into()), (2u32, + "Unpowered".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Player".into(), typ : Class::Entity }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + -1812330717i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSleeperRight".into(), + prefab_hash: -1812330717i32, + desc: "A horizontal variant of the sleeper. Will keep players hydrated and fed while they are logged out - as long as a breathable atmosphere is provided." + .into(), + name: "Sleeper Right".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::EntityState, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Safe".into()), (1u32, "Unsafe".into()), (2u32, + "Unpowered".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Player".into(), typ : Class::Entity }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + -1300059018i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSleeperVertical".into(), + prefab_hash: -1300059018i32, + desc: "The vertical variant of the sleeper. Will keep players hydrated and fed while they are logged out - as long as a breathable atmosphere is provided." + .into(), + name: "Sleeper Vertical".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::EntityState, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Safe".into()), (1u32, "Unsafe".into()), (2u32, + "Unpowered".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Player".into(), typ : Class::Entity }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 1382098999i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSleeperVerticalDroid".into(), + prefab_hash: 1382098999i32, + desc: "The Droid Sleeper will recharge robot batteries and equiped suit batteries if present. This sleeper variant is only safe for robots. Entering as a non robot character will cause you to take damage." + .into(), + name: "Droid Sleeper Vertical".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Player".into(), typ : Class::Entity }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 1310303582i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSmallDirectHeatExchangeGastoGas".into(), + prefab_hash: 1310303582i32, + desc: "Direct Heat Exchangers equalize the temperature of the two input networks." + .into(), + name: "Small Direct Heat Exchanger - Gas + Gas".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Input2 } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1825212016i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSmallDirectHeatExchangeLiquidtoGas".into(), + prefab_hash: 1825212016i32, + desc: "Direct Heat Exchangers equalize the temperature of the two input networks." + .into(), + name: "Small Direct Heat Exchanger - Liquid + Gas ".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Input2 } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -507770416i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSmallDirectHeatExchangeLiquidtoLiquid".into(), + prefab_hash: -507770416i32, + desc: "Direct Heat Exchangers equalize the temperature of the two input networks." + .into(), + name: "Small Direct Heat Exchanger - Liquid + Liquid".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Input2 } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -2138748650i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSmallSatelliteDish".into(), + prefab_hash: -2138748650i32, + desc: "This small communications unit can be used to communicate with nearby trade vessels.\n\n When connected to a Computer containing a Communications Motherboard motherboard, a Landingpad Center, and a Vending Machine, this allows Stationeers to contact traders. Adjust its horizontal and vertical attributes either directly or through logic." + .into(), + name: "Small Satellite Dish".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Horizontal, + MemoryAccess::ReadWrite), (LogicType::Vertical, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::Idle, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::SignalStrength, MemoryAccess::Read), + (LogicType::SignalId, MemoryAccess::Read), + (LogicType::InterrogationProgress, MemoryAccess::Read), + (LogicType::TargetPadIndex, MemoryAccess::ReadWrite), + (LogicType::SizeX, MemoryAccess::Read), (LogicType::SizeZ, + MemoryAccess::Read), (LogicType::MinimumWattsToContact, + MemoryAccess::Read), (LogicType::WattsReachingContact, + MemoryAccess::Read), (LogicType::ContactTypeId, + MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::BestContactFilter, + MemoryAccess::ReadWrite), (LogicType::NameHash, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1633000411i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSmallTableBacklessDouble".into(), + prefab_hash: -1633000411i32, + desc: "".into(), + name: "Small (Table Backless Double)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -1897221677i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSmallTableBacklessSingle".into(), + prefab_hash: -1897221677i32, + desc: "".into(), + name: "Small (Table Backless Single)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 1260651529i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSmallTableDinnerSingle".into(), + prefab_hash: 1260651529i32, + desc: "".into(), + name: "Small (Table Dinner Single)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -660451023i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSmallTableRectangleDouble".into(), + prefab_hash: -660451023i32, + desc: "".into(), + name: "Small (Table Rectangle Double)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -924678969i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSmallTableRectangleSingle".into(), + prefab_hash: -924678969i32, + desc: "".into(), + name: "Small (Table Rectangle Single)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -19246131i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSmallTableThickDouble".into(), + prefab_hash: -19246131i32, + desc: "".into(), + name: "Small (Table Thick Double)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -291862981i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSmallTableThickSingle".into(), + prefab_hash: -291862981i32, + desc: "".into(), + name: "Small Table (Thick Single)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -2045627372i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSolarPanel".into(), + prefab_hash: -2045627372i32, + desc: "Sinotai\'s standard solar panels are used for generating power from sunlight. They can be connected to Logic systems, in order to track sunlight, but their reduced during storms and when damaged. You can repair these using some trusty Duct Tape." + .into(), + name: "Solar Panel".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Charge, MemoryAccess::Read), (LogicType::Horizontal, + MemoryAccess::ReadWrite), (LogicType::Vertical, + MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1554349863i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSolarPanel45".into(), + prefab_hash: -1554349863i32, + desc: "Sinotai basic solar panels generate power from sunlight, sitting at 45 degrees to the ground. Their efficiency is reduced during storms and when damaged. You can repair these using some trusty Duct Tape." + .into(), + name: "Solar Panel (Angled)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Charge, MemoryAccess::Read), (LogicType::Horizontal, + MemoryAccess::ReadWrite), (LogicType::Vertical, + MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 930865127i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSolarPanel45Reinforced".into(), + prefab_hash: 930865127i32, + desc: "This solar panel is resistant to storm damage.".into(), + name: "Solar Panel (Heavy Angled)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Charge, MemoryAccess::Read), (LogicType::Horizontal, + MemoryAccess::ReadWrite), (LogicType::Vertical, + MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -539224550i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSolarPanelDual".into(), + prefab_hash: -539224550i32, + desc: "Sinotai dual solar panels are used for generating power from sunlight, with dedicated data and power ports. They can be connected to {Logic systems, in order to track sunlight, but their efficiency is reduced during storms and when damaged. You can repair these using some trusty Duct Tape." + .into(), + name: "Solar Panel (Dual)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Charge, MemoryAccess::Read), (LogicType::Horizontal, + MemoryAccess::ReadWrite), (LogicType::Vertical, + MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1545574413i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSolarPanelDualReinforced".into(), + prefab_hash: -1545574413i32, + desc: "This solar panel is resistant to storm damage.".into(), + name: "Solar Panel (Heavy Dual)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Charge, MemoryAccess::Read), (LogicType::Horizontal, + MemoryAccess::ReadWrite), (LogicType::Vertical, + MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1968102968i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSolarPanelFlat".into(), + prefab_hash: 1968102968i32, + desc: "Sinotai basic solar panels generate power from sunlight. They lie flat to the ground, and their efficiency is reduced during storms and when damaged. You can repair these using some trusty Duct Tape." + .into(), + name: "Solar Panel (Flat)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Charge, MemoryAccess::Read), (LogicType::Horizontal, + MemoryAccess::ReadWrite), (LogicType::Vertical, + MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1697196770i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSolarPanelFlatReinforced".into(), + prefab_hash: 1697196770i32, + desc: "This solar panel is resistant to storm damage.".into(), + name: "Solar Panel (Heavy Flat)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Charge, MemoryAccess::Read), (LogicType::Horizontal, + MemoryAccess::ReadWrite), (LogicType::Vertical, + MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -934345724i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSolarPanelReinforced".into(), + prefab_hash: -934345724i32, + desc: "This solar panel is resistant to storm damage.".into(), + name: "Solar Panel (Heavy)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Charge, MemoryAccess::Read), (LogicType::Horizontal, + MemoryAccess::ReadWrite), (LogicType::Vertical, + MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 813146305i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSolidFuelGenerator".into(), + prefab_hash: 813146305i32, + desc: "The mainstay of power generation for Stationeers, this device provides 20kW of power. Multiple solid resources can be loaded. While operating, the device will output its maximum power regardless of whether you have captured it or not. Watch for blown wires! It will output much more power than your regular Cable Coil can handle." + .into(), + name: "Generator (Solid Fuel)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::ClearMemory, + MemoryAccess::Write), (LogicType::ImportCount, + MemoryAccess::Read), (LogicType::PowerGeneration, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Not Generating".into()), (1u32, "Generating".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Input".into(), typ : Class::Ore }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::None }, + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1009150565i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSorter".into(), + prefab_hash: -1009150565i32, + desc: "No amount of automation is complete without some way of moving different items to different parts of a system. The Xigo A2B sorter can be programmed via a computer with a Sorter Motherboard to direct various items into different chute networks. Filtered items are always passed out the righthand side of the sorter, while non filtered items continue straight through." + .into(), + name: "Sorter".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (2u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (3u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::ClearMemory, + MemoryAccess::Write), (LogicType::ExportCount, + MemoryAccess::Read), (LogicType::ImportCount, + MemoryAccess::Read), (LogicType::Output, + MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "Split".into()), (1u32, "Filter".into()), (2u32, + "Logic".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { + name : "Export".into(), typ : Class::None }, SlotInfo { name : + "Export 2".into(), typ : Class::None }, SlotInfo { name : "Data Disk" + .into(), typ : Class::DataDisk } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Output2 }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::PowerAndData, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -2020231820i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureStacker".into(), + prefab_hash: -2020231820i32, + desc: "A stacker is an important part of any automated chute network. The Xigo ProKompile can be set manually or via logic, to make sure items passing through the stacker are maximized for your storage needs.\nThe ProKompile can stack a wide variety of things such as ingots, as well as splitting stacks into appropriate sizes as needed." + .into(), + name: "Stacker".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (2u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::ClearMemory, + MemoryAccess::Write), (LogicType::ExportCount, + MemoryAccess::Read), (LogicType::ImportCount, + MemoryAccess::Read), (LogicType::Output, + MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Automatic".into()), (1u32, "Logic".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { + name : "Export".into(), typ : Class::None }, SlotInfo { name : + "Processing".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1585641623i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureStackerReverse".into(), + prefab_hash: 1585641623i32, + desc: "A stacker is an important part of any automated chute network. The Xigo ProKompile can be set manually or via logic, to make sure items passing through the stacker are maximized for your storage needs. The reversed stacker has power and data on the opposite side.\nThe ProKompile can stack a wide variety of things such as ingots, as well as splitting stacks into appropriate sizes as needed." + .into(), + name: "Stacker".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (2u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::ClearMemory, + MemoryAccess::Write), (LogicType::ExportCount, + MemoryAccess::Read), (LogicType::ImportCount, + MemoryAccess::Read), (LogicType::Output, + MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Automatic".into()), (1u32, "Logic".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { + name : "Export".into(), typ : Class::None }, SlotInfo { name : + "Export".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1405018945i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureStairs4x2".into(), + prefab_hash: 1405018945i32, + desc: "".into(), + name: "Stairs".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 155214029i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureStairs4x2RailL".into(), + prefab_hash: 155214029i32, + desc: "".into(), + name: "Stairs with Rail (Left)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -212902482i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureStairs4x2RailR".into(), + prefab_hash: -212902482i32, + desc: "".into(), + name: "Stairs with Rail (Right)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -1088008720i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureStairs4x2Rails".into(), + prefab_hash: -1088008720i32, + desc: "".into(), + name: "Stairs with Rails".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 505924160i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureStairwellBackLeft".into(), + prefab_hash: 505924160i32, + desc: "".into(), + name: "Stairwell (Back Left)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -862048392i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureStairwellBackPassthrough".into(), + prefab_hash: -862048392i32, + desc: "".into(), + name: "Stairwell (Back Passthrough)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -2128896573i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureStairwellBackRight".into(), + prefab_hash: -2128896573i32, + desc: "".into(), + name: "Stairwell (Back Right)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -37454456i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureStairwellFrontLeft".into(), + prefab_hash: -37454456i32, + desc: "".into(), + name: "Stairwell (Front Left)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -1625452928i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureStairwellFrontPassthrough".into(), + prefab_hash: -1625452928i32, + desc: "".into(), + name: "Stairwell (Front Passthrough)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 340210934i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureStairwellFrontRight".into(), + prefab_hash: 340210934i32, + desc: "".into(), + name: "Stairwell (Front Right)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 2049879875i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureStairwellNoDoors".into(), + prefab_hash: 2049879875i32, + desc: "".into(), + name: "Stairwell (No Doors)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -260316435i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureStirlingEngine".into(), + prefab_hash: -260316435i32, + desc: "Harnessing an ancient thermal exploit, the Recurso \'Libra\' Stirling Engine generates power via the expansion and contraction of a working gas to drive pistons operating an electrical generator.\n \nWhen high pressure hot gas is supplied into the input pipe, this gas will heat the hot side of the unit, then pass into the output pipe. The cooler side uses the room\'s ambient atmosphere, which must be kept at a lower temperature and pressure in order to create a differential. Add a working gas by inserting a Gas Canister. The unit must be deactivated when adding or removing canisters, or the working gas may leak into the surrounding atmosphere.\n \nGases with a low molecular mass make the most efficient working gases. Increasing the moles of working gas can result in a greater potential power output. However, overpressuring the unit may have ... sub-optimal results." + .into(), + name: "Stirling Engine".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Pressure, MemoryAccess::Read), + (LogicType::Temperature, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::RatioOxygen, MemoryAccess::Read), + (LogicType::RatioCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioNitrogen, MemoryAccess::Read), + (LogicType::RatioPollutant, MemoryAccess::Read), + (LogicType::RatioVolatiles, MemoryAccess::Read), + (LogicType::RatioWater, MemoryAccess::Read), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::Quantity, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PowerGeneration, + MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::Volume, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::EnvironmentEfficiency, MemoryAccess::Read), + (LogicType::WorkingGasEfficiency, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Gas Canister".into(), typ : Class::GasCanister } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -793623899i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureStorageLocker".into(), + prefab_hash: -793623899i32, + desc: "".into(), + name: "Locker".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (2u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (3u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (4u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (5u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (6u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (7u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (8u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (9u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (10u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (11u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (12u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (13u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (14u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (15u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (16u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (17u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (18u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (19u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (20u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (21u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (22u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (23u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (24u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (25u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (26u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (27u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (28u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (29u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { name : "".into(), typ : + Class::None }, SlotInfo { name : "".into(), typ : Class::None }, + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: false, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 255034731i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureSuitStorage".into(), + prefab_hash: 255034731i32, + desc: "As tidy as it is useful, the suit storage rack holds an Eva Suit, Space Helmet and a Jetpack Basic.\nWhen powered and connected to and , it will recharge the suit\'s batteries, refill the Canister (Oxygen) and your Filter (Nitrogen) Gas Canister. The wastetank will be pumped out to the pipe connected to the waste outlet.\nAll the rack\'s pipes must be connected or the unit will show an error state, but it will still charge the battery." + .into(), + name: "Suit Storage".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Pressure, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::Open, MemoryAccess::ReadWrite), + (LogicSlotType::On, MemoryAccess::ReadWrite), + (LogicSlotType::Lock, MemoryAccess::ReadWrite), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Pressure, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::PressureWaste, MemoryAccess::Read), + (LogicSlotType::PressureAir, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (2u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Pressure, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Helmet".into(), typ : Class::Helmet }, SlotInfo { + name : "Suit".into(), typ : Class::Suit }, SlotInfo { name : "Back" + .into(), typ : Class::Back } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None }, + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Input2 }, + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1606848156i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureTankBig".into(), + prefab_hash: -1606848156i32, + desc: "".into(), + name: "Large Tank".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Pressure, + MemoryAccess::Read), (LogicType::Temperature, + MemoryAccess::Read), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::RatioOxygen, + MemoryAccess::Read), (LogicType::RatioCarbonDioxide, + MemoryAccess::Read), (LogicType::RatioNitrogen, + MemoryAccess::Read), (LogicType::RatioPollutant, + MemoryAccess::Read), (LogicType::RatioVolatiles, + MemoryAccess::Read), (LogicType::RatioWater, MemoryAccess::Read), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::Volume, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::VolumeOfLiquid, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 1280378227i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureTankBigInsulated".into(), + prefab_hash: 1280378227i32, + desc: "".into(), + name: "Tank Big (Insulated)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Pressure, + MemoryAccess::Read), (LogicType::Temperature, + MemoryAccess::Read), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::RatioOxygen, + MemoryAccess::Read), (LogicType::RatioCarbonDioxide, + MemoryAccess::Read), (LogicType::RatioNitrogen, + MemoryAccess::Read), (LogicType::RatioPollutant, + MemoryAccess::Read), (LogicType::RatioVolatiles, + MemoryAccess::Read), (LogicType::RatioWater, MemoryAccess::Read), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::Volume, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::VolumeOfLiquid, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + -1276379454i32, + StructureSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "StructureTankConnector".into(), + prefab_hash: -1276379454i32, + desc: "Tank connectors are basic mounting devices that allow you to attach a Portable Gas Tank to a gas pipe network." + .into(), + name: "Tank Connector".into(), + }, + structure: StructureInfo { small_grid: true }, + slots: vec![SlotInfo { name : "".into(), typ : Class::None }] + .into_iter() + .collect(), + } + .into(), + ), + ( + 1331802518i32, + StructureSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "StructureTankConnectorLiquid".into(), + prefab_hash: 1331802518i32, + desc: "These basic mounting devices allow you to attach a Portable Liquid Tank to a liquid pipe network." + .into(), + name: "Liquid Tank Connector".into(), + }, + structure: StructureInfo { small_grid: true }, + slots: vec![ + SlotInfo { name : "Portable Slot".into(), typ : Class::None } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + 1013514688i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureTankSmall".into(), + prefab_hash: 1013514688i32, + desc: "".into(), + name: "Small Tank".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Pressure, + MemoryAccess::Read), (LogicType::Temperature, + MemoryAccess::Read), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::RatioOxygen, + MemoryAccess::Read), (LogicType::RatioCarbonDioxide, + MemoryAccess::Read), (LogicType::RatioNitrogen, + MemoryAccess::Read), (LogicType::RatioPollutant, + MemoryAccess::Read), (LogicType::RatioVolatiles, + MemoryAccess::Read), (LogicType::RatioWater, MemoryAccess::Read), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::Volume, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::VolumeOfLiquid, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 955744474i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureTankSmallAir".into(), + prefab_hash: 955744474i32, + desc: "".into(), + name: "Small Tank (Air)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Pressure, + MemoryAccess::Read), (LogicType::Temperature, + MemoryAccess::Read), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::RatioOxygen, + MemoryAccess::Read), (LogicType::RatioCarbonDioxide, + MemoryAccess::Read), (LogicType::RatioNitrogen, + MemoryAccess::Read), (LogicType::RatioPollutant, + MemoryAccess::Read), (LogicType::RatioVolatiles, + MemoryAccess::Read), (LogicType::RatioWater, MemoryAccess::Read), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::Volume, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::VolumeOfLiquid, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 2102454415i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureTankSmallFuel".into(), + prefab_hash: 2102454415i32, + desc: "".into(), + name: "Small Tank (Fuel)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Pressure, + MemoryAccess::Read), (LogicType::Temperature, + MemoryAccess::Read), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::RatioOxygen, + MemoryAccess::Read), (LogicType::RatioCarbonDioxide, + MemoryAccess::Read), (LogicType::RatioNitrogen, + MemoryAccess::Read), (LogicType::RatioPollutant, + MemoryAccess::Read), (LogicType::RatioVolatiles, + MemoryAccess::Read), (LogicType::RatioWater, MemoryAccess::Read), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::Volume, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::VolumeOfLiquid, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 272136332i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureTankSmallInsulated".into(), + prefab_hash: 272136332i32, + desc: "".into(), + name: "Tank Small (Insulated)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Open, MemoryAccess::ReadWrite), (LogicType::Pressure, + MemoryAccess::Read), (LogicType::Temperature, + MemoryAccess::Read), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::RatioOxygen, + MemoryAccess::Read), (LogicType::RatioCarbonDioxide, + MemoryAccess::Read), (LogicType::RatioNitrogen, + MemoryAccess::Read), (LogicType::RatioPollutant, + MemoryAccess::Read), (LogicType::RatioVolatiles, + MemoryAccess::Read), (LogicType::RatioWater, MemoryAccess::Read), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::TotalMoles, MemoryAccess::Read), + (LogicType::Volume, MemoryAccess::Read), + (LogicType::RatioNitrousOxide, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::Combustion, MemoryAccess::Read), + (LogicType::RatioLiquidNitrogen, MemoryAccess::Read), + (LogicType::VolumeOfLiquid, MemoryAccess::Read), + (LogicType::RatioLiquidOxygen, MemoryAccess::Read), + (LogicType::RatioLiquidVolatiles, MemoryAccess::Read), + (LogicType::RatioSteam, MemoryAccess::Read), + (LogicType::RatioLiquidCarbonDioxide, MemoryAccess::Read), + (LogicType::RatioLiquidPollutant, MemoryAccess::Read), + (LogicType::RatioLiquidNitrousOxide, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::RatioHydrogen, MemoryAccess::Read), + (LogicType::RatioLiquidHydrogen, MemoryAccess::Read), + (LogicType::RatioPollutedWater, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: true, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + -465741100i32, + StructureLogicDeviceMemoryTemplate { + prefab: PrefabInfo { + prefab_name: "StructureToolManufactory".into(), + prefab_hash: -465741100i32, + desc: "No mission can be completed without the proper tools. The Norsec ThuulDek manufactory can fabricate almost any tool or hand-held device a Stationeer may need to complete their mission, as well as a variety of delightful paints.\nUpgrade the device using a Tool Printer Mod for additional recipes and faster processing speeds." + .into(), + name: "Tool Manufactory".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Reagents, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::RecipeHash, MemoryAccess::ReadWrite), + (LogicType::CompletionRatio, MemoryAccess::Read), + (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ExportCount, MemoryAccess::Read), + (LogicType::ImportCount, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::Ingot }, SlotInfo { + name : "Export".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: true, + has_reagents: true, + }, + memory: MemoryInfo { + instructions: Some( + vec![ + ("DeviceSetLock".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | LOCK_STATE | BOOL_8 |\r\n| 16-63 | UNUSED | 48 |" + .into(), typ : "PrinterInstruction".into(), value : 6i64 }), + ("EjectAllReagents".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" + .into(), typ : "PrinterInstruction".into(), value : 8i64 }), + ("EjectReagent".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-39 | REAGENT_HASH | INT_32 |\r\n| 40-63 | UNUSED | 24 |" + .into(), typ : "PrinterInstruction".into(), value : 7i64 }), + ("ExecuteRecipe".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY | BYTE_8 |\r\n| 16-47 | PREFAB_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" + .into(), typ : "PrinterInstruction".into(), value : 2i64 }), + ("JumpIfNextInvalid".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 4i64 }), + ("JumpToAddress".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | STACK_ADDRESS | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 5i64 }), + ("MissingRecipeReagent".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 54 TO 62 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-15 | QUANTITY_CEIL | BYTE_8 |\r\n| 16-47 | REAGENT_HASH | INT_32 |\r\n| 48-63 | UNUSED | 16 |" + .into(), typ : "PrinterInstruction".into(), value : 9i64 }), + ("StackPointer".into(), Instruction { description : + "| VALID ONLY AT ADDRESS 63 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-23 | INDEX | USHORT_16 |\r\n| 24-63 | UNUSED | 40 |" + .into(), typ : "PrinterInstruction".into(), value : 1i64 }), + ("WaitUntilNextValid".into(), Instruction { description : + "| VALID ONLY AT ADDRESSES 0 TO 53 |\r\n| 0-7 | OP_CODE | BYTE_8 |\r\n| 8-63 | UNUSED | 56 |" + .into(), typ : "PrinterInstruction".into(), value : 3i64 }) + ] + .into_iter() + .collect(), + ), + memory_access: MemoryAccess::ReadWrite, + memory_size: 64u32, + }, + } + .into(), + ), + ( + 1473807953i32, + StructureSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "StructureTorpedoRack".into(), + prefab_hash: 1473807953i32, + desc: "".into(), + name: "Torpedo Rack".into(), + }, + structure: StructureInfo { small_grid: true }, + slots: vec![ + SlotInfo { name : "Torpedo".into(), typ : Class::Torpedo }, SlotInfo + { name : "Torpedo".into(), typ : Class::Torpedo }, SlotInfo { name : + "Torpedo".into(), typ : Class::Torpedo }, SlotInfo { name : "Torpedo" + .into(), typ : Class::Torpedo }, SlotInfo { name : "Torpedo".into(), + typ : Class::Torpedo }, SlotInfo { name : "Torpedo".into(), typ : + Class::Torpedo }, SlotInfo { name : "Torpedo".into(), typ : + Class::Torpedo }, SlotInfo { name : "Torpedo".into(), typ : + Class::Torpedo } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + 1570931620i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureTraderWaypoint".into(), + prefab_hash: 1570931620i32, + desc: "".into(), + name: "Trader Waypoint".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1423212473i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureTransformer".into(), + prefab_hash: -1423212473i32, + desc: "The large Norsec transformer is a critical component of extended electrical networks, controlling the maximum power that will flow down a cable. To prevent overloading, output can be set from 0 to 50,000W. \nNote that transformers operate as data isolators, preventing data flowing into any network beyond it." + .into(), + name: "Transformer (Large)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1065725831i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureTransformerMedium".into(), + prefab_hash: -1065725831i32, + desc: "Transformers control the maximum power that will flow down a sub-network of cables, to prevent overloading electrical systems. \nMedium transformers are used in larger setups where more than 5000W is required, with output that can be set to a maximum of 25000W.\nNote that transformers also operate as data isolators, preventing data flowing into any network beyond it." + .into(), + name: "Transformer (Medium)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PowerAndData, role : ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 833912764i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureTransformerMediumReversed".into(), + prefab_hash: 833912764i32, + desc: "Transformers control the maximum power that will flow down a sub-network of cables, to prevent overloading electrical systems. \nMedium transformers are used in larger setups where more than 5000W is required, with output that can be set to a maximum of 25000W.\nNote that transformers also operate as data isolators, preventing data flowing into any network beyond it." + .into(), + name: "Transformer Reversed (Medium)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::PowerAndData, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -890946730i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureTransformerSmall".into(), + prefab_hash: -890946730i32, + desc: "Transformers control the maximum power that will flow down a cable subnetwork, to prevent overloading electrical systems. Output on small transformers can be set from 0 to 5000W.\nNote that transformers operate as data isolators, preventing data flowing into any network beyond it." + .into(), + name: "Transformer (Small)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::Output } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1054059374i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureTransformerSmallReversed".into(), + prefab_hash: 1054059374i32, + desc: "Transformers control the maximum power that will flow down a cable subnetwork, to prevent overloading electrical systems. Output on small transformers can be set from 0 to 5000W.\nNote that transformers operate as data isolators, preventing data flowing into any network beyond it." + .into(), + name: "Transformer Reversed (Small)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::PowerAndData, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1282191063i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureTurbineGenerator".into(), + prefab_hash: 1282191063i32, + desc: "".into(), + name: "Turbine Generator".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::PowerGeneration, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1310794736i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureTurboVolumePump".into(), + prefab_hash: 1310794736i32, + desc: "Shifts 10 times more gas than a basic Volume Pump, with a mode that can be set to flow in either direction." + .into(), + name: "Turbo Volume Pump (Gas)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::Setting, + MemoryAccess::ReadWrite), (LogicType::Maximum, + MemoryAccess::Read), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Right".into()), (1u32, "Left".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None }, + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 750118160i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureUnloader".into(), + prefab_hash: 750118160i32, + desc: "The Xigo Re:Gurge is a handy unit for unloading any items inserted into it, and feeding them into a chute network. For instance, if you add a full Mining Belt, the Re:Gurge will empty a mining belt of its contents, insert them into the chute network, then insert the mining belt itself. A Sorter is recommended to reclaim the mining belt.\n\nOutput = 0 exporting the main item\nOutput = 1 exporting items inside and eventually the main item." + .into(), + name: "Unloader".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::ClearMemory, + MemoryAccess::Write), (LogicType::ExportCount, + MemoryAccess::Read), (LogicType::ImportCount, + MemoryAccess::Read), (LogicType::Output, + MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Automatic".into()), (1u32, "Logic".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { + name : "Export".into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1622183451i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureUprightWindTurbine".into(), + prefab_hash: 1622183451i32, + desc: "Norsec\'s basic wind turbine is an easily fabricated, rapidly deployed design that is strong enough to withstand the worst that environments can throw at it. \nWhile the wind turbine is optimized to produce power even on low atmosphere worlds (up to 200W), it performs best in denser environments. Output varies with wind speed, and during storms, may increase dramatically (up to 800W), so be careful to design your power networks with that in mind." + .into(), + name: "Upright Wind Turbine".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::PowerGeneration, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -692036078i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureValve".into(), + prefab_hash: -692036078i32, + desc: "".into(), + name: "Valve".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -443130773i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureVendingMachine".into(), + prefab_hash: -443130773i32, + desc: "The Xigo-designed \'Slot Mate\' vending machine allows storage of almost any item, while also operating as a distribution point for working with Traders. You cannot trade without a vending machine, or its more advanced equivalent, the Refrigerated Vending Machine. Each vending machine can hold up to 100 stacks." + .into(), + name: "Vending Machine".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![] .into_iter().collect()), (1u32, vec![] .into_iter() + .collect()), (2u32, vec![] .into_iter().collect()), (3u32, vec![] + .into_iter().collect()), (4u32, vec![] .into_iter().collect()), + (5u32, vec![] .into_iter().collect()), (6u32, vec![] .into_iter() + .collect()), (7u32, vec![] .into_iter().collect()), (8u32, vec![] + .into_iter().collect()), (9u32, vec![] .into_iter().collect()), + (10u32, vec![] .into_iter().collect()), (11u32, vec![] + .into_iter().collect()), (12u32, vec![] .into_iter().collect()), + (13u32, vec![] .into_iter().collect()), (14u32, vec![] + .into_iter().collect()), (15u32, vec![] .into_iter().collect()), + (16u32, vec![] .into_iter().collect()), (17u32, vec![] + .into_iter().collect()), (18u32, vec![] .into_iter().collect()), + (19u32, vec![] .into_iter().collect()), (20u32, vec![] + .into_iter().collect()), (21u32, vec![] .into_iter().collect()), + (22u32, vec![] .into_iter().collect()), (23u32, vec![] + .into_iter().collect()), (24u32, vec![] .into_iter().collect()), + (25u32, vec![] .into_iter().collect()), (26u32, vec![] + .into_iter().collect()), (27u32, vec![] .into_iter().collect()), + (28u32, vec![] .into_iter().collect()), (29u32, vec![] + .into_iter().collect()), (30u32, vec![] .into_iter().collect()), + (31u32, vec![] .into_iter().collect()), (32u32, vec![] + .into_iter().collect()), (33u32, vec![] .into_iter().collect()), + (34u32, vec![] .into_iter().collect()), (35u32, vec![] + .into_iter().collect()), (36u32, vec![] .into_iter().collect()), + (37u32, vec![] .into_iter().collect()), (38u32, vec![] + .into_iter().collect()), (39u32, vec![] .into_iter().collect()), + (40u32, vec![] .into_iter().collect()), (41u32, vec![] + .into_iter().collect()), (42u32, vec![] .into_iter().collect()), + (43u32, vec![] .into_iter().collect()), (44u32, vec![] + .into_iter().collect()), (45u32, vec![] .into_iter().collect()), + (46u32, vec![] .into_iter().collect()), (47u32, vec![] + .into_iter().collect()), (48u32, vec![] .into_iter().collect()), + (49u32, vec![] .into_iter().collect()), (50u32, vec![] + .into_iter().collect()), (51u32, vec![] .into_iter().collect()), + (52u32, vec![] .into_iter().collect()), (53u32, vec![] + .into_iter().collect()), (54u32, vec![] .into_iter().collect()), + (55u32, vec![] .into_iter().collect()), (56u32, vec![] + .into_iter().collect()), (57u32, vec![] .into_iter().collect()), + (58u32, vec![] .into_iter().collect()), (59u32, vec![] + .into_iter().collect()), (60u32, vec![] .into_iter().collect()), + (61u32, vec![] .into_iter().collect()), (62u32, vec![] + .into_iter().collect()), (63u32, vec![] .into_iter().collect()), + (64u32, vec![] .into_iter().collect()), (65u32, vec![] + .into_iter().collect()), (66u32, vec![] .into_iter().collect()), + (67u32, vec![] .into_iter().collect()), (68u32, vec![] + .into_iter().collect()), (69u32, vec![] .into_iter().collect()), + (70u32, vec![] .into_iter().collect()), (71u32, vec![] + .into_iter().collect()), (72u32, vec![] .into_iter().collect()), + (73u32, vec![] .into_iter().collect()), (74u32, vec![] + .into_iter().collect()), (75u32, vec![] .into_iter().collect()), + (76u32, vec![] .into_iter().collect()), (77u32, vec![] + .into_iter().collect()), (78u32, vec![] .into_iter().collect()), + (79u32, vec![] .into_iter().collect()), (80u32, vec![] + .into_iter().collect()), (81u32, vec![] .into_iter().collect()), + (82u32, vec![] .into_iter().collect()), (83u32, vec![] + .into_iter().collect()), (84u32, vec![] .into_iter().collect()), + (85u32, vec![] .into_iter().collect()), (86u32, vec![] + .into_iter().collect()), (87u32, vec![] .into_iter().collect()), + (88u32, vec![] .into_iter().collect()), (89u32, vec![] + .into_iter().collect()), (90u32, vec![] .into_iter().collect()), + (91u32, vec![] .into_iter().collect()), (92u32, vec![] + .into_iter().collect()), (93u32, vec![] .into_iter().collect()), + (94u32, vec![] .into_iter().collect()), (95u32, vec![] + .into_iter().collect()), (96u32, vec![] .into_iter().collect()), + (97u32, vec![] .into_iter().collect()), (98u32, vec![] + .into_iter().collect()), (99u32, vec![] .into_iter().collect()), + (100u32, vec![] .into_iter().collect()), (101u32, vec![] + .into_iter().collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::Ratio, MemoryAccess::Read), + (LogicType::Quantity, MemoryAccess::Read), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::RequestHash, + MemoryAccess::ReadWrite), (LogicType::ClearMemory, + MemoryAccess::Write), (LogicType::ExportCount, + MemoryAccess::Read), (LogicType::ImportCount, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Import".into(), typ : Class::None }, SlotInfo { + name : "Export".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None }, SlotInfo { name : "Storage".into(), typ + : Class::None }, SlotInfo { name : "Storage".into(), typ : + Class::None }, SlotInfo { name : "Storage".into(), typ : Class::None + }, SlotInfo { name : "Storage".into(), typ : Class::None }, SlotInfo + { name : "Storage".into(), typ : Class::None }, SlotInfo { name : + "Storage".into(), typ : Class::None }, SlotInfo { name : "Storage" + .into(), typ : Class::None } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::Chute, role : ConnectionRole::Output }, + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -321403609i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureVolumePump".into(), + prefab_hash: -321403609i32, + desc: "The volume pump pumps pumpable gases. It also separates out pipe networks into separate networks." + .into(), + name: "Volume Pump".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Pipe, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -858143148i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallArch".into(), + prefab_hash: -858143148i32, + desc: "".into(), + name: "Wall (Arch)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 1649708822i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallArchArrow".into(), + prefab_hash: 1649708822i32, + desc: "".into(), + name: "Wall (Arch Arrow)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 1794588890i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallArchCornerRound".into(), + prefab_hash: 1794588890i32, + desc: "".into(), + name: "Wall (Arch Corner Round)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -1963016580i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallArchCornerSquare".into(), + prefab_hash: -1963016580i32, + desc: "".into(), + name: "Wall (Arch Corner Square)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 1281911841i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallArchCornerTriangle".into(), + prefab_hash: 1281911841i32, + desc: "".into(), + name: "Wall (Arch Corner Triangle)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 1182510648i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallArchPlating".into(), + prefab_hash: 1182510648i32, + desc: "".into(), + name: "Wall (Arch Plating)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 782529714i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallArchTwoTone".into(), + prefab_hash: 782529714i32, + desc: "".into(), + name: "Wall (Arch Two Tone)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -739292323i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallCooler".into(), + prefab_hash: -739292323i32, + desc: "The Xigo Freezy Boi wall cooler complements the wall heater, which can only raise the temperature. The wall cooler functions by drawing heat from the surrounding atmosphere and adding that heat into its pipe network.\nIn order to run the wall cooler properly, you will need to connect pipes to the wall cooler and fill the connected pipe network with any type of gas. The gas\'s heat capacity and volume will determine how fast it reacts to temperature changes.\n\nEFFICIENCY\nThe higher the difference in temperature between the gas stored in the pipes and the room, the less efficient the wall cooler will be. So to keep the wall cooler running at an acceptable efficiency you will need to get rid of the heat that accumulates in the pipes connected to it. A common practice would be to run the pipes to the outside and use radiators on the outside section of the pipes to get rid of the heat.\nThe less efficient the wall cooler, the less power it consumes. It will consume 1010W at max efficiency. The wall cooler can be controlled by logic chips to run when the temperature hits a certain degree.\nERRORS\nIf the wall cooler is flashing an error then it is missing one of the following:\n\n- Pipe connection to the wall cooler.\n- Gas in the connected pipes, or pressure is too low.\n- Atmosphere in the surrounding environment or pressure is too low.\n\nFor more information about how to control temperatures, consult the temperature control Guides page." + .into(), + name: "Wall Cooler".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "".into(), typ : Class::DataDisk }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Pipe, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::PowerAndData, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1635864154i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallFlat".into(), + prefab_hash: 1635864154i32, + desc: "".into(), + name: "Wall (Flat)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 898708250i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallFlatCornerRound".into(), + prefab_hash: 898708250i32, + desc: "".into(), + name: "Wall (Flat Corner Round)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 298130111i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallFlatCornerSquare".into(), + prefab_hash: 298130111i32, + desc: "".into(), + name: "Wall (Flat Corner Square)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 2097419366i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallFlatCornerTriangle".into(), + prefab_hash: 2097419366i32, + desc: "".into(), + name: "Wall (Flat Corner Triangle)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -1161662836i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallFlatCornerTriangleFlat".into(), + prefab_hash: -1161662836i32, + desc: "".into(), + name: "Wall (Flat Corner Triangle Flat)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 1979212240i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallGeometryCorner".into(), + prefab_hash: 1979212240i32, + desc: "".into(), + name: "Wall (Geometry Corner)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 1049735537i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallGeometryStreight".into(), + prefab_hash: 1049735537i32, + desc: "".into(), + name: "Wall (Geometry Straight)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 1602758612i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallGeometryT".into(), + prefab_hash: 1602758612i32, + desc: "".into(), + name: "Wall (Geometry T)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -1427845483i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallGeometryTMirrored".into(), + prefab_hash: -1427845483i32, + desc: "".into(), + name: "Wall (Geometry T Mirrored)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 24258244i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallHeater".into(), + prefab_hash: 24258244i32, + desc: "The Xigo wall heater is a simple device that can be installed on a wall or frame and connected to power. When switched on, it will start heating the surrounding environment. It consumes 1010W of power and can be controlled by logic chips to run when the temperature hits a certain level." + .into(), + name: "Wall Heater".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "".into(), typ : Class::DataDisk }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1287324802i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallIron".into(), + prefab_hash: 1287324802i32, + desc: "".into(), + name: "Iron Wall (Type 1)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 1485834215i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallIron02".into(), + prefab_hash: 1485834215i32, + desc: "".into(), + name: "Iron Wall (Type 2)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 798439281i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallIron03".into(), + prefab_hash: 798439281i32, + desc: "".into(), + name: "Iron Wall (Type 3)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -1309433134i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallIron04".into(), + prefab_hash: -1309433134i32, + desc: "".into(), + name: "Iron Wall (Type 4)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 1492930217i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallLargePanel".into(), + prefab_hash: 1492930217i32, + desc: "".into(), + name: "Wall (Large Panel)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -776581573i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallLargePanelArrow".into(), + prefab_hash: -776581573i32, + desc: "".into(), + name: "Wall (Large Panel Arrow)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -1860064656i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallLight".into(), + prefab_hash: -1860064656i32, + desc: "".into(), + name: "Wall Light".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1306415132i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallLightBattery".into(), + prefab_hash: -1306415132i32, + desc: "".into(), + name: "Wall Light (Battery)".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1590330637i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallPaddedArch".into(), + prefab_hash: 1590330637i32, + desc: "".into(), + name: "Wall (Padded Arch)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -1126688298i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallPaddedArchCorner".into(), + prefab_hash: -1126688298i32, + desc: "".into(), + name: "Wall (Padded Arch Corner)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 1171987947i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallPaddedArchLightFittingTop".into(), + prefab_hash: 1171987947i32, + desc: "".into(), + name: "Wall (Padded Arch Light Fitting Top)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -1546743960i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallPaddedArchLightsFittings".into(), + prefab_hash: -1546743960i32, + desc: "".into(), + name: "Wall (Padded Arch Lights Fittings)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -155945899i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallPaddedCorner".into(), + prefab_hash: -155945899i32, + desc: "".into(), + name: "Wall (Padded Corner)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 1183203913i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallPaddedCornerThin".into(), + prefab_hash: 1183203913i32, + desc: "".into(), + name: "Wall (Padded Corner Thin)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 8846501i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallPaddedNoBorder".into(), + prefab_hash: 8846501i32, + desc: "".into(), + name: "Wall (Padded No Border)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 179694804i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallPaddedNoBorderCorner".into(), + prefab_hash: 179694804i32, + desc: "".into(), + name: "Wall (Padded No Border Corner)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -1611559100i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallPaddedThinNoBorder".into(), + prefab_hash: -1611559100i32, + desc: "".into(), + name: "Wall (Padded Thin No Border)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 1769527556i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallPaddedThinNoBorderCorner".into(), + prefab_hash: 1769527556i32, + desc: "".into(), + name: "Wall (Padded Thin No Border Corner)".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + 2087628940i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallPaddedWindow".into(), + prefab_hash: 2087628940i32, + desc: "".into(), + name: "Wall (Padded Window)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -37302931i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallPaddedWindowThin".into(), + prefab_hash: -37302931i32, + desc: "".into(), + name: "Wall (Padded Window Thin)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 635995024i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallPadding".into(), + prefab_hash: 635995024i32, + desc: "".into(), + name: "Wall (Padding)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -1243329828i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallPaddingArchVent".into(), + prefab_hash: -1243329828i32, + desc: "".into(), + name: "Wall (Padding Arch Vent)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 2024882687i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallPaddingLightFitting".into(), + prefab_hash: 2024882687i32, + desc: "".into(), + name: "Wall (Padding Light Fitting)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -1102403554i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallPaddingThin".into(), + prefab_hash: -1102403554i32, + desc: "".into(), + name: "Wall (Padding Thin)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 26167457i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallPlating".into(), + prefab_hash: 26167457i32, + desc: "".into(), + name: "Wall (Plating)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 619828719i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallSmallPanelsAndHatch".into(), + prefab_hash: 619828719i32, + desc: "".into(), + name: "Wall (Small Panels And Hatch)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -639306697i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallSmallPanelsArrow".into(), + prefab_hash: -639306697i32, + desc: "".into(), + name: "Wall (Small Panels Arrow)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 386820253i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallSmallPanelsMonoChrome".into(), + prefab_hash: 386820253i32, + desc: "".into(), + name: "Wall (Small Panels Mono Chrome)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -1407480603i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallSmallPanelsOpen".into(), + prefab_hash: -1407480603i32, + desc: "".into(), + name: "Wall (Small Panels Open)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + 1709994581i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallSmallPanelsTwoTone".into(), + prefab_hash: 1709994581i32, + desc: "".into(), + name: "Wall (Small Panels Two Tone)".into(), + }, + structure: StructureInfo { small_grid: false }, + } + .into(), + ), + ( + -1177469307i32, + StructureTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWallVent".into(), + prefab_hash: -1177469307i32, + desc: "Used to mix atmospheres passively between two walls.".into(), + name: "Wall Vent".into(), + }, + structure: StructureInfo { small_grid: true }, + } + .into(), + ), + ( + -1178961954i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWaterBottleFiller".into(), + prefab_hash: -1178961954i32, + desc: "".into(), + name: "Water Bottle Filler".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Pressure, MemoryAccess::Read), + (LogicSlotType::Temperature, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::Volume, MemoryAccess::Read), + (LogicSlotType::Open, MemoryAccess::ReadWrite), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Pressure, MemoryAccess::Read), + (LogicSlotType::Temperature, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::Volume, MemoryAccess::Read), + (LogicSlotType::Open, MemoryAccess::ReadWrite), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Error, MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Bottle Slot".into(), typ : Class::LiquidBottle }, + SlotInfo { name : "Bottle Slot".into(), typ : Class::LiquidBottle } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1433754995i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWaterBottleFillerBottom".into(), + prefab_hash: 1433754995i32, + desc: "".into(), + name: "Water Bottle Filler Bottom".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Pressure, MemoryAccess::Read), + (LogicSlotType::Temperature, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::Volume, MemoryAccess::Read), + (LogicSlotType::Open, MemoryAccess::ReadWrite), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Pressure, MemoryAccess::Read), + (LogicSlotType::Temperature, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::Volume, MemoryAccess::Read), + (LogicSlotType::Open, MemoryAccess::ReadWrite), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Error, MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::PrefabHash, + MemoryAccess::Read), (LogicType::ReferenceId, + MemoryAccess::Read), (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Bottle Slot".into(), typ : Class::LiquidBottle }, + SlotInfo { name : "Bottle Slot".into(), typ : Class::LiquidBottle } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -756587791i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWaterBottleFillerPowered".into(), + prefab_hash: -756587791i32, + desc: "".into(), + name: "Waterbottle Filler".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Pressure, MemoryAccess::Read), + (LogicSlotType::Temperature, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::Volume, MemoryAccess::Read), + (LogicSlotType::Open, MemoryAccess::ReadWrite), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Pressure, MemoryAccess::Read), + (LogicSlotType::Temperature, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::Volume, MemoryAccess::Read), + (LogicSlotType::Open, MemoryAccess::ReadWrite), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Bottle Slot".into(), typ : Class::LiquidBottle }, + SlotInfo { name : "Bottle Slot".into(), typ : Class::LiquidBottle } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Input }, ConnectionInfo { typ : + ConnectionType::PowerAndData, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1986658780i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWaterBottleFillerPoweredBottom".into(), + prefab_hash: 1986658780i32, + desc: "".into(), + name: "Waterbottle Filler".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Pressure, MemoryAccess::Read), + (LogicSlotType::Temperature, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::Volume, MemoryAccess::Read), + (LogicSlotType::Open, MemoryAccess::ReadWrite), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()), (1u32, vec![(LogicSlotType::Occupied, + MemoryAccess::Read), (LogicSlotType::OccupantHash, + MemoryAccess::Read), (LogicSlotType::Quantity, + MemoryAccess::Read), (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Pressure, MemoryAccess::Read), + (LogicSlotType::Temperature, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::Volume, MemoryAccess::Read), + (LogicSlotType::Open, MemoryAccess::ReadWrite), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Activate, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![ + SlotInfo { name : "Bottle Slot".into(), typ : Class::LiquidBottle }, + SlotInfo { name : "Bottle Slot".into(), typ : Class::LiquidBottle } + ] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::PowerAndData, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -517628750i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWaterDigitalValve".into(), + prefab_hash: -517628750i32, + desc: "".into(), + name: "Liquid Digital Valve".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::PowerAndData, role : + ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 433184168i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWaterPipeMeter".into(), + prefab_hash: 433184168i32, + desc: "".into(), + name: "Liquid Pipe Meter".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![].into_iter().collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 887383294i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWaterPurifier".into(), + prefab_hash: 887383294i32, + desc: "Cleans Polluted Water and outputs Water. The purification process requires Charcoal which can be added to the machine via the import bin. The procesing throughput can be improved by increasing the gas pressure of the input pipe relative to the gas pressure of the output pipe." + .into(), + name: "Water Purifier".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![(0u32, vec![] .into_iter().collect())] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::ClearMemory, MemoryAccess::Write), + (LogicType::ImportCount, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Import".into(), typ : Class::Ore }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::PipeLiquid, role : ConnectionRole::Input }, + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::Output }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None }, + ConnectionInfo { typ : ConnectionType::Chute, role : + ConnectionRole::Input } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -1369060582i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWaterWallCooler".into(), + prefab_hash: -1369060582i32, + desc: "".into(), + name: "Liquid Wall Cooler".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::PrefabHash, MemoryAccess::Read), + (LogicSlotType::SortingClass, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Error, + MemoryAccess::Read), (LogicType::Lock, MemoryAccess::ReadWrite), + (LogicType::Setting, MemoryAccess::ReadWrite), + (LogicType::Maximum, MemoryAccess::Read), (LogicType::Ratio, + MemoryAccess::Read), (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::RequiredPower, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "".into(), typ : Class::DataDisk }] + .into_iter() + .collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::PipeLiquid, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::PowerAndData, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: false, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 1997212478i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWeatherStation".into(), + prefab_hash: 1997212478i32, + desc: "0.NoStorm\n1.StormIncoming\n2.InStorm".into(), + name: "Weather Station".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Mode, + MemoryAccess::Read), (LogicType::Error, MemoryAccess::Read), + (LogicType::Activate, MemoryAccess::ReadWrite), (LogicType::Lock, + MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::NextWeatherEventTime, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![ + (0u32, "NoStorm".into()), (1u32, "StormIncoming".into()), + (2u32, "InStorm".into()) + ] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: true, + has_atmosphere: false, + has_color_state: false, + has_lock_state: true, + has_mode_state: true, + has_on_off_state: true, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + -2082355173i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWindTurbine".into(), + prefab_hash: -2082355173i32, + desc: "The Stationeers wind turbine was first designed by Norsec atmospheric engineers, looking to create a wind-driven power generation system that would operate even on exceedingly low atmosphere worlds. The ultra-light blades respond to exceedingly low atmospheric densities, while being strong enough to function even under huge strain in much more demanding environments.\nWhile the wind turbine is optimized to produce power (up to 500W) even on low atmosphere worlds, it performs best in denser environments. Output varies with wind speed and, during storms, may increase dramatically (up to 10,000W), so be careful to design your power networks with that in mind." + .into(), + name: "Wind Turbine".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::PowerGeneration, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Power, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Data, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: false, + has_on_off_state: false, + has_open_state: false, + has_reagents: false, + }, + } + .into(), + ), + ( + 2056377335i32, + StructureLogicDeviceTemplate { + prefab: PrefabInfo { + prefab_name: "StructureWindowShutter".into(), + prefab_hash: 2056377335i32, + desc: "For those special, private moments, a window that can be closed to prying eyes. \n \nWhen closed, has the heat transfer characteristics of a basic wall. Requires power, and can be connected to logic systems." + .into(), + name: "Window Shutter".into(), + }, + structure: StructureInfo { small_grid: true }, + logic: LogicInfo { + logic_slot_types: vec![].into_iter().collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Setting, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::RequiredPower, + MemoryAccess::Read), (LogicType::Idle, MemoryAccess::Read), + (LogicType::PrefabHash, MemoryAccess::Read), + (LogicType::ReferenceId, MemoryAccess::Read), + (LogicType::NameHash, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Operate".into()), (1u32, "Logic".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![].into_iter().collect(), + device: DeviceInfo { + connection_list: vec![ + ConnectionInfo { typ : ConnectionType::Data, role : + ConnectionRole::None }, ConnectionInfo { typ : + ConnectionType::Power, role : ConnectionRole::None } + ] + .into_iter() + .collect(), + device_pins_length: None, + has_activate_state: false, + has_atmosphere: false, + has_color_state: false, + has_lock_state: false, + has_mode_state: true, + has_on_off_state: true, + has_open_state: true, + has_reagents: false, + }, + } + .into(), + ), + ( + 1700018136i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ToolPrinterMod".into(), + prefab_hash: 1700018136i32, + desc: "Apply to an Tool Manufactory with a Welding Torch or Arc Welder to upgrade for increased processing speed and more recipe options." + .into(), + name: "Tool Printer Mod".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + 94730034i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "ToyLuna".into(), + prefab_hash: 94730034i32, + desc: "".into(), + name: "Toy Luna".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ( + -2083426457i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "UniformCommander".into(), + prefab_hash: -2083426457i32, + desc: "".into(), + name: "Uniform Commander".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Uniform, + sorting_class: SortingClass::Clothing, + }, + slots: vec![ + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { name : "Access Card" + .into(), typ : Class::AccessCard }, SlotInfo { name : "Access Card" + .into(), typ : Class::AccessCard }, SlotInfo { name : "Credit Card" + .into(), typ : Class::CreditCard } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + -48342840i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "UniformMarine".into(), + prefab_hash: -48342840i32, + desc: "".into(), + name: "Marine Uniform".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Uniform, + sorting_class: SortingClass::Clothing, + }, + slots: vec![ + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { name : "Access Card" + .into(), typ : Class::AccessCard }, SlotInfo { name : "Credit Card" + .into(), typ : Class::CreditCard } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + 810053150i32, + ItemSlotsTemplate { + prefab: PrefabInfo { + prefab_name: "UniformOrangeJumpSuit".into(), + prefab_hash: 810053150i32, + desc: "".into(), + name: "Jump Suit (Orange)".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Uniform, + sorting_class: SortingClass::Clothing, + }, + slots: vec![ + SlotInfo { name : "".into(), typ : Class::None }, SlotInfo { name : + "".into(), typ : Class::None }, SlotInfo { name : "Access Card" + .into(), typ : Class::AccessCard }, SlotInfo { name : "Credit Card" + .into(), typ : Class::CreditCard } + ] + .into_iter() + .collect(), + } + .into(), + ), + ( + 789494694i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "WeaponEnergy".into(), + prefab_hash: 789494694i32, + desc: "".into(), + name: "Weapon Energy".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Tools, + }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::On, MemoryAccess::ReadWrite), + (LogicType::ReferenceId, MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ), + ( + -385323479i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "WeaponPistolEnergy".into(), + prefab_hash: -385323479i32, + desc: "0.Stun\n1.Kill".into(), + name: "Energy Pistol".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Tools, + }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Stun".into()), (1u32, "Kill".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ), + ( + 1154745374i32, + ItemLogicTemplate { + prefab: PrefabInfo { + prefab_name: "WeaponRifleEnergy".into(), + prefab_hash: 1154745374i32, + desc: "0.Stun\n1.Kill".into(), + name: "Energy Rifle".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::None, + sorting_class: SortingClass::Tools, + }, + logic: LogicInfo { + logic_slot_types: vec![ + (0u32, vec![(LogicSlotType::Occupied, MemoryAccess::Read), + (LogicSlotType::OccupantHash, MemoryAccess::Read), + (LogicSlotType::Quantity, MemoryAccess::Read), + (LogicSlotType::Damage, MemoryAccess::Read), + (LogicSlotType::Charge, MemoryAccess::Read), + (LogicSlotType::ChargeRatio, MemoryAccess::Read), + (LogicSlotType::Class, MemoryAccess::Read), + (LogicSlotType::MaxQuantity, MemoryAccess::Read), + (LogicSlotType::ReferenceId, MemoryAccess::Read)] .into_iter() + .collect()) + ] + .into_iter() + .collect(), + logic_types: vec![ + (LogicType::Power, MemoryAccess::Read), (LogicType::Open, + MemoryAccess::ReadWrite), (LogicType::Mode, + MemoryAccess::ReadWrite), (LogicType::Error, MemoryAccess::Read), + (LogicType::Lock, MemoryAccess::ReadWrite), (LogicType::On, + MemoryAccess::ReadWrite), (LogicType::ReferenceId, + MemoryAccess::Read) + ] + .into_iter() + .collect(), + modes: Some( + vec![(0u32, "Stun".into()), (1u32, "Kill".into())] + .into_iter() + .collect(), + ), + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + }, + slots: vec![SlotInfo { name : "Battery".into(), typ : Class::Battery }] + .into_iter() + .collect(), + } + .into(), + ), + ( + -1102977898i32, + ItemTemplate { + prefab: PrefabInfo { + prefab_name: "WeaponTorpedo".into(), + prefab_hash: -1102977898i32, + desc: "".into(), + name: "Torpedo".into(), + }, + item: ItemInfo { + consumable: false, + filter_type: None, + ingredient: false, + max_quantity: 1u32, + reagents: None, + slot_class: Class::Torpedo, + sorting_class: SortingClass::Default, + }, + } + .into(), + ), + ]) +} diff --git a/ic10emu/src/vm/enums/basic_enums.rs b/stationeers_data/src/enums/basic_enums.rs similarity index 56% rename from ic10emu/src/vm/enums/basic_enums.rs rename to stationeers_data/src/enums/basic_enums.rs index 9c55dfa..53b0e13 100644 --- a/ic10emu/src/vm/enums/basic_enums.rs +++ b/stationeers_data/src/enums/basic_enums.rs @@ -1,17 +1,6 @@ -// ================================================= -// !! <-----> DO NOT MODIFY <-----> !! -// -// This module was automatically generated by an -// xtask -// -// run `cargo xtask generate` from the workspace -// to regenerate -// -// ================================================= - -use crate::vm::enums::script_enums::{LogicSlotType, LogicType}; use serde_derive::{Deserialize, Serialize}; use strum::{AsRefStr, Display, EnumIter, EnumProperty, EnumString, FromRepr}; +use super::script_enums::{LogicSlotType, LogicType}; #[derive( Debug, Display, @@ -28,19 +17,38 @@ use strum::{AsRefStr, Display, EnumIter, EnumProperty, EnumString, FromRepr}; EnumIter, FromRepr, Serialize, - Deserialize, + Deserialize )] #[strum(use_phf)] #[repr(u8)] pub enum AirConditioningMode { - #[strum(serialize = "Cold", props(docs = r#""#, value = "0"))] + #[strum(serialize = "Cold")] + #[strum(props(docs = "", value = "0"))] Cold = 0u8, - #[strum(serialize = "Hot", props(docs = r#""#, value = "1"))] + #[strum(serialize = "Hot")] + #[strum(props(docs = "", value = "1"))] Hot = 1u8, } +impl TryFrom for AirConditioningMode { + type Error = super::ParseError; + fn try_from( + value: f64, + ) -> Result>::Error> { + use strum::IntoEnumIterator; + if let Some(enm) = AirConditioningMode::iter() + .find(|enm| (f64::from(*enm as u8) - value).abs() < f64::EPSILON) + { + Ok(enm) + } else { + Err(super::ParseError { + enm: value.to_string(), + }) + } + } +} #[derive( - Debug, Default, + Debug, Display, Clone, Copy, @@ -55,21 +63,40 @@ pub enum AirConditioningMode { EnumIter, FromRepr, Serialize, - Deserialize, + Deserialize )] #[strum(use_phf)] #[repr(u8)] pub enum AirControlMode { - #[strum(serialize = "None", props(docs = r#""#, value = "0"))] + #[strum(serialize = "None")] + #[strum(props(docs = "", value = "0"))] #[default] None = 0u8, - #[strum(serialize = "Offline", props(docs = r#""#, value = "1"))] + #[strum(serialize = "Offline")] + #[strum(props(docs = "", value = "1"))] Offline = 1u8, - #[strum(serialize = "Pressure", props(docs = r#""#, value = "2"))] + #[strum(serialize = "Pressure")] + #[strum(props(docs = "", value = "2"))] Pressure = 2u8, - #[strum(serialize = "Draught", props(docs = r#""#, value = "4"))] + #[strum(serialize = "Draught")] + #[strum(props(docs = "", value = "4"))] Draught = 4u8, } +impl TryFrom for AirControlMode { + type Error = super::ParseError; + fn try_from(value: f64) -> Result>::Error> { + use strum::IntoEnumIterator; + if let Some(enm) = AirControlMode::iter() + .find(|enm| (f64::from(*enm as u8) - value).abs() < f64::EPSILON) + { + Ok(enm) + } else { + Err(super::ParseError { + enm: value.to_string(), + }) + } + } +} #[derive( Debug, Display, @@ -86,39 +113,66 @@ pub enum AirControlMode { EnumIter, FromRepr, Serialize, - Deserialize, + Deserialize )] #[strum(use_phf)] #[repr(u8)] pub enum ColorType { - #[strum(serialize = "Blue", props(docs = r#""#, value = "0"))] + #[strum(serialize = "Blue")] + #[strum(props(docs = "", value = "0"))] Blue = 0u8, - #[strum(serialize = "Gray", props(docs = r#""#, value = "1"))] + #[strum(serialize = "Gray")] + #[strum(props(docs = "", value = "1"))] Gray = 1u8, - #[strum(serialize = "Green", props(docs = r#""#, value = "2"))] + #[strum(serialize = "Green")] + #[strum(props(docs = "", value = "2"))] Green = 2u8, - #[strum(serialize = "Orange", props(docs = r#""#, value = "3"))] + #[strum(serialize = "Orange")] + #[strum(props(docs = "", value = "3"))] Orange = 3u8, - #[strum(serialize = "Red", props(docs = r#""#, value = "4"))] + #[strum(serialize = "Red")] + #[strum(props(docs = "", value = "4"))] Red = 4u8, - #[strum(serialize = "Yellow", props(docs = r#""#, value = "5"))] + #[strum(serialize = "Yellow")] + #[strum(props(docs = "", value = "5"))] Yellow = 5u8, - #[strum(serialize = "White", props(docs = r#""#, value = "6"))] + #[strum(serialize = "White")] + #[strum(props(docs = "", value = "6"))] White = 6u8, - #[strum(serialize = "Black", props(docs = r#""#, value = "7"))] + #[strum(serialize = "Black")] + #[strum(props(docs = "", value = "7"))] Black = 7u8, - #[strum(serialize = "Brown", props(docs = r#""#, value = "8"))] + #[strum(serialize = "Brown")] + #[strum(props(docs = "", value = "8"))] Brown = 8u8, - #[strum(serialize = "Khaki", props(docs = r#""#, value = "9"))] + #[strum(serialize = "Khaki")] + #[strum(props(docs = "", value = "9"))] Khaki = 9u8, - #[strum(serialize = "Pink", props(docs = r#""#, value = "10"))] + #[strum(serialize = "Pink")] + #[strum(props(docs = "", value = "10"))] Pink = 10u8, - #[strum(serialize = "Purple", props(docs = r#""#, value = "11"))] + #[strum(serialize = "Purple")] + #[strum(props(docs = "", value = "11"))] Purple = 11u8, } +impl TryFrom for ColorType { + type Error = super::ParseError; + fn try_from(value: f64) -> Result>::Error> { + use strum::IntoEnumIterator; + if let Some(enm) = ColorType::iter() + .find(|enm| (f64::from(*enm as u8) - value).abs() < f64::EPSILON) + { + Ok(enm) + } else { + Err(super::ParseError { + enm: value.to_string(), + }) + } + } +} #[derive( - Debug, Default, + Debug, Display, Clone, Copy, @@ -133,19 +187,39 @@ pub enum ColorType { EnumIter, FromRepr, Serialize, - Deserialize, + Deserialize )] #[strum(use_phf)] #[repr(u8)] pub enum DaylightSensorMode { - #[strum(serialize = "Default", props(docs = r#""#, value = "0"))] + #[strum(serialize = "Default")] + #[strum(props(docs = "", value = "0"))] #[default] Default = 0u8, - #[strum(serialize = "Horizontal", props(docs = r#""#, value = "1"))] + #[strum(serialize = "Horizontal")] + #[strum(props(docs = "", value = "1"))] Horizontal = 1u8, - #[strum(serialize = "Vertical", props(docs = r#""#, value = "2"))] + #[strum(serialize = "Vertical")] + #[strum(props(docs = "", value = "2"))] Vertical = 2u8, } +impl TryFrom for DaylightSensorMode { + type Error = super::ParseError; + fn try_from( + value: f64, + ) -> Result>::Error> { + use strum::IntoEnumIterator; + if let Some(enm) = DaylightSensorMode::iter() + .find(|enm| (f64::from(*enm as u8) - value).abs() < f64::EPSILON) + { + Ok(enm) + } else { + Err(super::ParseError { + enm: value.to_string(), + }) + } + } +} #[derive( Debug, Display, @@ -162,18 +236,36 @@ pub enum DaylightSensorMode { EnumIter, FromRepr, Serialize, - Deserialize, + Deserialize )] #[strum(use_phf)] #[repr(u8)] pub enum ElevatorMode { - #[strum(serialize = "Stationary", props(docs = r#""#, value = "0"))] + #[strum(serialize = "Stationary")] + #[strum(props(docs = "", value = "0"))] Stationary = 0u8, - #[strum(serialize = "Upward", props(docs = r#""#, value = "1"))] + #[strum(serialize = "Upward")] + #[strum(props(docs = "", value = "1"))] Upward = 1u8, - #[strum(serialize = "Downward", props(docs = r#""#, value = "2"))] + #[strum(serialize = "Downward")] + #[strum(props(docs = "", value = "2"))] Downward = 2u8, } +impl TryFrom for ElevatorMode { + type Error = super::ParseError; + fn try_from(value: f64) -> Result>::Error> { + use strum::IntoEnumIterator; + if let Some(enm) = ElevatorMode::iter() + .find(|enm| (f64::from(*enm as u8) - value).abs() < f64::EPSILON) + { + Ok(enm) + } else { + Err(super::ParseError { + enm: value.to_string(), + }) + } + } +} #[derive( Debug, Display, @@ -190,20 +282,39 @@ pub enum ElevatorMode { EnumIter, FromRepr, Serialize, - Deserialize, + Deserialize )] #[strum(use_phf)] #[repr(u8)] pub enum EntityState { - #[strum(serialize = "Alive", props(docs = r#""#, value = "0"))] + #[strum(serialize = "Alive")] + #[strum(props(docs = "", value = "0"))] Alive = 0u8, - #[strum(serialize = "Dead", props(docs = r#""#, value = "1"))] + #[strum(serialize = "Dead")] + #[strum(props(docs = "", value = "1"))] Dead = 1u8, - #[strum(serialize = "Unconscious", props(docs = r#""#, value = "2"))] + #[strum(serialize = "Unconscious")] + #[strum(props(docs = "", value = "2"))] Unconscious = 2u8, - #[strum(serialize = "Decay", props(docs = r#""#, value = "3"))] + #[strum(serialize = "Decay")] + #[strum(props(docs = "", value = "3"))] Decay = 3u8, } +impl TryFrom for EntityState { + type Error = super::ParseError; + fn try_from(value: f64) -> Result>::Error> { + use strum::IntoEnumIterator; + if let Some(enm) = EntityState::iter() + .find(|enm| (f64::from(*enm as u8) - value).abs() < f64::EPSILON) + { + Ok(enm) + } else { + Err(super::ParseError { + enm: value.to_string(), + }) + } + } +} #[derive( Debug, Display, @@ -220,48 +331,81 @@ pub enum EntityState { EnumIter, FromRepr, Serialize, - Deserialize, + Deserialize )] #[strum(use_phf)] #[repr(u32)] pub enum GasType { - #[strum(serialize = "Undefined", props(docs = r#""#, value = "0"))] + #[strum(serialize = "Undefined")] + #[strum(props(docs = "", value = "0"))] Undefined = 0u32, - #[strum(serialize = "Oxygen", props(docs = r#""#, value = "1"))] + #[strum(serialize = "Oxygen")] + #[strum(props(docs = "", value = "1"))] Oxygen = 1u32, - #[strum(serialize = "Nitrogen", props(docs = r#""#, value = "2"))] + #[strum(serialize = "Nitrogen")] + #[strum(props(docs = "", value = "2"))] Nitrogen = 2u32, - #[strum(serialize = "CarbonDioxide", props(docs = r#""#, value = "4"))] + #[strum(serialize = "CarbonDioxide")] + #[strum(props(docs = "", value = "4"))] CarbonDioxide = 4u32, - #[strum(serialize = "Volatiles", props(docs = r#""#, value = "8"))] + #[strum(serialize = "Volatiles")] + #[strum(props(docs = "", value = "8"))] Volatiles = 8u32, - #[strum(serialize = "Pollutant", props(docs = r#""#, value = "16"))] + #[strum(serialize = "Pollutant")] + #[strum(props(docs = "", value = "16"))] Pollutant = 16u32, - #[strum(serialize = "Water", props(docs = r#""#, value = "32"))] + #[strum(serialize = "Water")] + #[strum(props(docs = "", value = "32"))] Water = 32u32, - #[strum(serialize = "NitrousOxide", props(docs = r#""#, value = "64"))] + #[strum(serialize = "NitrousOxide")] + #[strum(props(docs = "", value = "64"))] NitrousOxide = 64u32, - #[strum(serialize = "LiquidNitrogen", props(docs = r#""#, value = "128"))] + #[strum(serialize = "LiquidNitrogen")] + #[strum(props(docs = "", value = "128"))] LiquidNitrogen = 128u32, - #[strum(serialize = "LiquidOxygen", props(docs = r#""#, value = "256"))] + #[strum(serialize = "LiquidOxygen")] + #[strum(props(docs = "", value = "256"))] LiquidOxygen = 256u32, - #[strum(serialize = "LiquidVolatiles", props(docs = r#""#, value = "512"))] + #[strum(serialize = "LiquidVolatiles")] + #[strum(props(docs = "", value = "512"))] LiquidVolatiles = 512u32, - #[strum(serialize = "Steam", props(docs = r#""#, value = "1024"))] + #[strum(serialize = "Steam")] + #[strum(props(docs = "", value = "1024"))] Steam = 1024u32, - #[strum(serialize = "LiquidCarbonDioxide", props(docs = r#""#, value = "2048"))] + #[strum(serialize = "LiquidCarbonDioxide")] + #[strum(props(docs = "", value = "2048"))] LiquidCarbonDioxide = 2048u32, - #[strum(serialize = "LiquidPollutant", props(docs = r#""#, value = "4096"))] + #[strum(serialize = "LiquidPollutant")] + #[strum(props(docs = "", value = "4096"))] LiquidPollutant = 4096u32, - #[strum(serialize = "LiquidNitrousOxide", props(docs = r#""#, value = "8192"))] + #[strum(serialize = "LiquidNitrousOxide")] + #[strum(props(docs = "", value = "8192"))] LiquidNitrousOxide = 8192u32, - #[strum(serialize = "Hydrogen", props(docs = r#""#, value = "16384"))] + #[strum(serialize = "Hydrogen")] + #[strum(props(docs = "", value = "16384"))] Hydrogen = 16384u32, - #[strum(serialize = "LiquidHydrogen", props(docs = r#""#, value = "32768"))] + #[strum(serialize = "LiquidHydrogen")] + #[strum(props(docs = "", value = "32768"))] LiquidHydrogen = 32768u32, - #[strum(serialize = "PollutedWater", props(docs = r#""#, value = "65536"))] + #[strum(serialize = "PollutedWater")] + #[strum(props(docs = "", value = "65536"))] PollutedWater = 65536u32, } +impl TryFrom for GasType { + type Error = super::ParseError; + fn try_from(value: f64) -> Result>::Error> { + use strum::IntoEnumIterator; + if let Some(enm) = GasType::iter() + .find(|enm| (f64::from(*enm as u32) - value).abs() < f64::EPSILON) + { + Ok(enm) + } else { + Err(super::ParseError { + enm: value.to_string(), + }) + } + } +} #[derive( Debug, Display, @@ -278,25 +422,45 @@ pub enum GasType { EnumIter, FromRepr, Serialize, - Deserialize, + Deserialize )] #[strum(use_phf)] #[repr(u8)] pub enum PowerMode { - #[strum(serialize = "Idle", props(docs = r#""#, value = "0"))] + #[strum(serialize = "Idle")] + #[strum(props(docs = "", value = "0"))] Idle = 0u8, - #[strum(serialize = "Discharged", props(docs = r#""#, value = "1"))] + #[strum(serialize = "Discharged")] + #[strum(props(docs = "", value = "1"))] Discharged = 1u8, - #[strum(serialize = "Discharging", props(docs = r#""#, value = "2"))] + #[strum(serialize = "Discharging")] + #[strum(props(docs = "", value = "2"))] Discharging = 2u8, - #[strum(serialize = "Charging", props(docs = r#""#, value = "3"))] + #[strum(serialize = "Charging")] + #[strum(props(docs = "", value = "3"))] Charging = 3u8, - #[strum(serialize = "Charged", props(docs = r#""#, value = "4"))] + #[strum(serialize = "Charged")] + #[strum(props(docs = "", value = "4"))] Charged = 4u8, } +impl TryFrom for PowerMode { + type Error = super::ParseError; + fn try_from(value: f64) -> Result>::Error> { + use strum::IntoEnumIterator; + if let Some(enm) = PowerMode::iter() + .find(|enm| (f64::from(*enm as u8) - value).abs() < f64::EPSILON) + { + Ok(enm) + } else { + Err(super::ParseError { + enm: value.to_string(), + }) + } + } +} #[derive( - Debug, Default, + Debug, Display, Clone, Copy, @@ -311,36 +475,63 @@ pub enum PowerMode { EnumIter, FromRepr, Serialize, - Deserialize, + Deserialize )] #[strum(use_phf)] #[repr(u8)] pub enum PrinterInstruction { - #[strum(serialize = "None", props(docs = r#""#, value = "0"))] + #[strum(serialize = "None")] + #[strum(props(docs = "", value = "0"))] #[default] None = 0u8, - #[strum(serialize = "StackPointer", props(docs = r#""#, value = "1"))] + #[strum(serialize = "StackPointer")] + #[strum(props(docs = "", value = "1"))] StackPointer = 1u8, - #[strum(serialize = "ExecuteRecipe", props(docs = r#""#, value = "2"))] + #[strum(serialize = "ExecuteRecipe")] + #[strum(props(docs = "", value = "2"))] ExecuteRecipe = 2u8, - #[strum(serialize = "WaitUntilNextValid", props(docs = r#""#, value = "3"))] + #[strum(serialize = "WaitUntilNextValid")] + #[strum(props(docs = "", value = "3"))] WaitUntilNextValid = 3u8, - #[strum(serialize = "JumpIfNextInvalid", props(docs = r#""#, value = "4"))] + #[strum(serialize = "JumpIfNextInvalid")] + #[strum(props(docs = "", value = "4"))] JumpIfNextInvalid = 4u8, - #[strum(serialize = "JumpToAddress", props(docs = r#""#, value = "5"))] + #[strum(serialize = "JumpToAddress")] + #[strum(props(docs = "", value = "5"))] JumpToAddress = 5u8, - #[strum(serialize = "DeviceSetLock", props(docs = r#""#, value = "6"))] + #[strum(serialize = "DeviceSetLock")] + #[strum(props(docs = "", value = "6"))] DeviceSetLock = 6u8, - #[strum(serialize = "EjectReagent", props(docs = r#""#, value = "7"))] + #[strum(serialize = "EjectReagent")] + #[strum(props(docs = "", value = "7"))] EjectReagent = 7u8, - #[strum(serialize = "EjectAllReagents", props(docs = r#""#, value = "8"))] + #[strum(serialize = "EjectAllReagents")] + #[strum(props(docs = "", value = "8"))] EjectAllReagents = 8u8, - #[strum(serialize = "MissingRecipeReagent", props(docs = r#""#, value = "9"))] + #[strum(serialize = "MissingRecipeReagent")] + #[strum(props(docs = "", value = "9"))] MissingRecipeReagent = 9u8, } +impl TryFrom for PrinterInstruction { + type Error = super::ParseError; + fn try_from( + value: f64, + ) -> Result>::Error> { + use strum::IntoEnumIterator; + if let Some(enm) = PrinterInstruction::iter() + .find(|enm| (f64::from(*enm as u8) - value).abs() < f64::EPSILON) + { + Ok(enm) + } else { + Err(super::ParseError { + enm: value.to_string(), + }) + } + } +} #[derive( - Debug, Default, + Debug, Display, Clone, Copy, @@ -355,26 +546,46 @@ pub enum PrinterInstruction { EnumIter, FromRepr, Serialize, - Deserialize, + Deserialize )] #[strum(use_phf)] #[repr(u8)] pub enum ReEntryProfile { - #[strum(serialize = "None", props(docs = r#""#, value = "0"))] + #[strum(serialize = "None")] + #[strum(props(docs = "", value = "0"))] #[default] None = 0u8, - #[strum(serialize = "Optimal", props(docs = r#""#, value = "1"))] + #[strum(serialize = "Optimal")] + #[strum(props(docs = "", value = "1"))] Optimal = 1u8, - #[strum(serialize = "Medium", props(docs = r#""#, value = "2"))] + #[strum(serialize = "Medium")] + #[strum(props(docs = "", value = "2"))] Medium = 2u8, - #[strum(serialize = "High", props(docs = r#""#, value = "3"))] + #[strum(serialize = "High")] + #[strum(props(docs = "", value = "3"))] High = 3u8, - #[strum(serialize = "Max", props(docs = r#""#, value = "4"))] + #[strum(serialize = "Max")] + #[strum(props(docs = "", value = "4"))] Max = 4u8, } +impl TryFrom for ReEntryProfile { + type Error = super::ParseError; + fn try_from(value: f64) -> Result>::Error> { + use strum::IntoEnumIterator; + if let Some(enm) = ReEntryProfile::iter() + .find(|enm| (f64::from(*enm as u8) - value).abs() < f64::EPSILON) + { + Ok(enm) + } else { + Err(super::ParseError { + enm: value.to_string(), + }) + } + } +} #[derive( - Debug, Default, + Debug, Display, Clone, Copy, @@ -389,30 +600,52 @@ pub enum ReEntryProfile { EnumIter, FromRepr, Serialize, - Deserialize, + Deserialize )] #[strum(use_phf)] #[repr(u8)] pub enum RobotMode { - #[strum(serialize = "None", props(docs = r#""#, value = "0"))] + #[strum(serialize = "None")] + #[strum(props(docs = "", value = "0"))] #[default] None = 0u8, - #[strum(serialize = "Follow", props(docs = r#""#, value = "1"))] + #[strum(serialize = "Follow")] + #[strum(props(docs = "", value = "1"))] Follow = 1u8, - #[strum(serialize = "MoveToTarget", props(docs = r#""#, value = "2"))] + #[strum(serialize = "MoveToTarget")] + #[strum(props(docs = "", value = "2"))] MoveToTarget = 2u8, - #[strum(serialize = "Roam", props(docs = r#""#, value = "3"))] + #[strum(serialize = "Roam")] + #[strum(props(docs = "", value = "3"))] Roam = 3u8, - #[strum(serialize = "Unload", props(docs = r#""#, value = "4"))] + #[strum(serialize = "Unload")] + #[strum(props(docs = "", value = "4"))] Unload = 4u8, - #[strum(serialize = "PathToTarget", props(docs = r#""#, value = "5"))] + #[strum(serialize = "PathToTarget")] + #[strum(props(docs = "", value = "5"))] PathToTarget = 5u8, - #[strum(serialize = "StorageFull", props(docs = r#""#, value = "6"))] + #[strum(serialize = "StorageFull")] + #[strum(props(docs = "", value = "6"))] StorageFull = 6u8, } +impl TryFrom for RobotMode { + type Error = super::ParseError; + fn try_from(value: f64) -> Result>::Error> { + use strum::IntoEnumIterator; + if let Some(enm) = RobotMode::iter() + .find(|enm| (f64::from(*enm as u8) - value).abs() < f64::EPSILON) + { + Ok(enm) + } else { + Err(super::ParseError { + enm: value.to_string(), + }) + } + } +} #[derive( - Debug, Default, + Debug, Display, Clone, Copy, @@ -427,28 +660,49 @@ pub enum RobotMode { EnumIter, FromRepr, Serialize, - Deserialize, + Deserialize )] #[strum(use_phf)] #[repr(u8)] pub enum RocketMode { - #[strum(serialize = "Invalid", props(docs = r#""#, value = "0"))] + #[strum(serialize = "Invalid")] + #[strum(props(docs = "", value = "0"))] Invalid = 0u8, - #[strum(serialize = "None", props(docs = r#""#, value = "1"))] + #[strum(serialize = "None")] + #[strum(props(docs = "", value = "1"))] #[default] None = 1u8, - #[strum(serialize = "Mine", props(docs = r#""#, value = "2"))] + #[strum(serialize = "Mine")] + #[strum(props(docs = "", value = "2"))] Mine = 2u8, - #[strum(serialize = "Survey", props(docs = r#""#, value = "3"))] + #[strum(serialize = "Survey")] + #[strum(props(docs = "", value = "3"))] Survey = 3u8, - #[strum(serialize = "Discover", props(docs = r#""#, value = "4"))] + #[strum(serialize = "Discover")] + #[strum(props(docs = "", value = "4"))] Discover = 4u8, - #[strum(serialize = "Chart", props(docs = r#""#, value = "5"))] + #[strum(serialize = "Chart")] + #[strum(props(docs = "", value = "5"))] Chart = 5u8, } +impl TryFrom for RocketMode { + type Error = super::ParseError; + fn try_from(value: f64) -> Result>::Error> { + use strum::IntoEnumIterator; + if let Some(enm) = RocketMode::iter() + .find(|enm| (f64::from(*enm as u8) - value).abs() < f64::EPSILON) + { + Ok(enm) + } else { + Err(super::ParseError { + enm: value.to_string(), + }) + } + } +} #[derive( - Debug, Default, + Debug, Display, Clone, Copy, @@ -463,96 +717,151 @@ pub enum RocketMode { EnumIter, FromRepr, Serialize, - Deserialize, + Deserialize )] #[strum(use_phf)] #[repr(u8)] pub enum Class { - #[strum(serialize = "None", props(docs = r#""#, value = "0"))] + #[strum(serialize = "None")] + #[strum(props(docs = "", value = "0"))] #[default] None = 0u8, - #[strum(serialize = "Helmet", props(docs = r#""#, value = "1"))] + #[strum(serialize = "Helmet")] + #[strum(props(docs = "", value = "1"))] Helmet = 1u8, - #[strum(serialize = "Suit", props(docs = r#""#, value = "2"))] + #[strum(serialize = "Suit")] + #[strum(props(docs = "", value = "2"))] Suit = 2u8, - #[strum(serialize = "Back", props(docs = r#""#, value = "3"))] + #[strum(serialize = "Back")] + #[strum(props(docs = "", value = "3"))] Back = 3u8, - #[strum(serialize = "GasFilter", props(docs = r#""#, value = "4"))] + #[strum(serialize = "GasFilter")] + #[strum(props(docs = "", value = "4"))] GasFilter = 4u8, - #[strum(serialize = "GasCanister", props(docs = r#""#, value = "5"))] + #[strum(serialize = "GasCanister")] + #[strum(props(docs = "", value = "5"))] GasCanister = 5u8, - #[strum(serialize = "Motherboard", props(docs = r#""#, value = "6"))] + #[strum(serialize = "Motherboard")] + #[strum(props(docs = "", value = "6"))] Motherboard = 6u8, - #[strum(serialize = "Circuitboard", props(docs = r#""#, value = "7"))] + #[strum(serialize = "Circuitboard")] + #[strum(props(docs = "", value = "7"))] Circuitboard = 7u8, - #[strum(serialize = "DataDisk", props(docs = r#""#, value = "8"))] + #[strum(serialize = "DataDisk")] + #[strum(props(docs = "", value = "8"))] DataDisk = 8u8, - #[strum(serialize = "Organ", props(docs = r#""#, value = "9"))] + #[strum(serialize = "Organ")] + #[strum(props(docs = "", value = "9"))] Organ = 9u8, - #[strum(serialize = "Ore", props(docs = r#""#, value = "10"))] + #[strum(serialize = "Ore")] + #[strum(props(docs = "", value = "10"))] Ore = 10u8, - #[strum(serialize = "Plant", props(docs = r#""#, value = "11"))] + #[strum(serialize = "Plant")] + #[strum(props(docs = "", value = "11"))] Plant = 11u8, - #[strum(serialize = "Uniform", props(docs = r#""#, value = "12"))] + #[strum(serialize = "Uniform")] + #[strum(props(docs = "", value = "12"))] Uniform = 12u8, - #[strum(serialize = "Entity", props(docs = r#""#, value = "13"))] + #[strum(serialize = "Entity")] + #[strum(props(docs = "", value = "13"))] Entity = 13u8, - #[strum(serialize = "Battery", props(docs = r#""#, value = "14"))] + #[strum(serialize = "Battery")] + #[strum(props(docs = "", value = "14"))] Battery = 14u8, - #[strum(serialize = "Egg", props(docs = r#""#, value = "15"))] + #[strum(serialize = "Egg")] + #[strum(props(docs = "", value = "15"))] Egg = 15u8, - #[strum(serialize = "Belt", props(docs = r#""#, value = "16"))] + #[strum(serialize = "Belt")] + #[strum(props(docs = "", value = "16"))] Belt = 16u8, - #[strum(serialize = "Tool", props(docs = r#""#, value = "17"))] + #[strum(serialize = "Tool")] + #[strum(props(docs = "", value = "17"))] Tool = 17u8, - #[strum(serialize = "Appliance", props(docs = r#""#, value = "18"))] + #[strum(serialize = "Appliance")] + #[strum(props(docs = "", value = "18"))] Appliance = 18u8, - #[strum(serialize = "Ingot", props(docs = r#""#, value = "19"))] + #[strum(serialize = "Ingot")] + #[strum(props(docs = "", value = "19"))] Ingot = 19u8, - #[strum(serialize = "Torpedo", props(docs = r#""#, value = "20"))] + #[strum(serialize = "Torpedo")] + #[strum(props(docs = "", value = "20"))] Torpedo = 20u8, - #[strum(serialize = "Cartridge", props(docs = r#""#, value = "21"))] + #[strum(serialize = "Cartridge")] + #[strum(props(docs = "", value = "21"))] Cartridge = 21u8, - #[strum(serialize = "AccessCard", props(docs = r#""#, value = "22"))] + #[strum(serialize = "AccessCard")] + #[strum(props(docs = "", value = "22"))] AccessCard = 22u8, - #[strum(serialize = "Magazine", props(docs = r#""#, value = "23"))] + #[strum(serialize = "Magazine")] + #[strum(props(docs = "", value = "23"))] Magazine = 23u8, - #[strum(serialize = "Circuit", props(docs = r#""#, value = "24"))] + #[strum(serialize = "Circuit")] + #[strum(props(docs = "", value = "24"))] Circuit = 24u8, - #[strum(serialize = "Bottle", props(docs = r#""#, value = "25"))] + #[strum(serialize = "Bottle")] + #[strum(props(docs = "", value = "25"))] Bottle = 25u8, - #[strum(serialize = "ProgrammableChip", props(docs = r#""#, value = "26"))] + #[strum(serialize = "ProgrammableChip")] + #[strum(props(docs = "", value = "26"))] ProgrammableChip = 26u8, - #[strum(serialize = "Glasses", props(docs = r#""#, value = "27"))] + #[strum(serialize = "Glasses")] + #[strum(props(docs = "", value = "27"))] Glasses = 27u8, - #[strum(serialize = "CreditCard", props(docs = r#""#, value = "28"))] + #[strum(serialize = "CreditCard")] + #[strum(props(docs = "", value = "28"))] CreditCard = 28u8, - #[strum(serialize = "DirtCanister", props(docs = r#""#, value = "29"))] + #[strum(serialize = "DirtCanister")] + #[strum(props(docs = "", value = "29"))] DirtCanister = 29u8, - #[strum(serialize = "SensorProcessingUnit", props(docs = r#""#, value = "30"))] + #[strum(serialize = "SensorProcessingUnit")] + #[strum(props(docs = "", value = "30"))] SensorProcessingUnit = 30u8, - #[strum(serialize = "LiquidCanister", props(docs = r#""#, value = "31"))] + #[strum(serialize = "LiquidCanister")] + #[strum(props(docs = "", value = "31"))] LiquidCanister = 31u8, - #[strum(serialize = "LiquidBottle", props(docs = r#""#, value = "32"))] + #[strum(serialize = "LiquidBottle")] + #[strum(props(docs = "", value = "32"))] LiquidBottle = 32u8, - #[strum(serialize = "Wreckage", props(docs = r#""#, value = "33"))] + #[strum(serialize = "Wreckage")] + #[strum(props(docs = "", value = "33"))] Wreckage = 33u8, - #[strum(serialize = "SoundCartridge", props(docs = r#""#, value = "34"))] + #[strum(serialize = "SoundCartridge")] + #[strum(props(docs = "", value = "34"))] SoundCartridge = 34u8, - #[strum(serialize = "DrillHead", props(docs = r#""#, value = "35"))] + #[strum(serialize = "DrillHead")] + #[strum(props(docs = "", value = "35"))] DrillHead = 35u8, - #[strum(serialize = "ScanningHead", props(docs = r#""#, value = "36"))] + #[strum(serialize = "ScanningHead")] + #[strum(props(docs = "", value = "36"))] ScanningHead = 36u8, - #[strum(serialize = "Flare", props(docs = r#""#, value = "37"))] + #[strum(serialize = "Flare")] + #[strum(props(docs = "", value = "37"))] Flare = 37u8, - #[strum(serialize = "Blocked", props(docs = r#""#, value = "38"))] + #[strum(serialize = "Blocked")] + #[strum(props(docs = "", value = "38"))] Blocked = 38u8, - #[strum(serialize = "SuitMod", props(docs = r#""#, value = "39"))] + #[strum(serialize = "SuitMod")] + #[strum(props(docs = "", value = "39"))] SuitMod = 39u8, } +impl TryFrom for Class { + type Error = super::ParseError; + fn try_from(value: f64) -> Result>::Error> { + use strum::IntoEnumIterator; + if let Some(enm) = Class::iter() + .find(|enm| (f64::from(*enm as u8) - value).abs() < f64::EPSILON) + { + Ok(enm) + } else { + Err(super::ParseError { + enm: value.to_string(), + }) + } + } +} #[derive( - Debug, Default, + Debug, Display, Clone, Copy, @@ -567,39 +876,52 @@ pub enum Class { EnumIter, FromRepr, Serialize, - Deserialize, + Deserialize )] #[strum(use_phf)] #[repr(u8)] pub enum SorterInstruction { - #[strum(serialize = "None", props(docs = r#""#, value = "0"))] + #[strum(serialize = "None")] + #[strum(props(docs = "", value = "0"))] #[default] None = 0u8, - #[strum(serialize = "FilterPrefabHashEquals", props(docs = r#""#, value = "1"))] + #[strum(serialize = "FilterPrefabHashEquals")] + #[strum(props(docs = "", value = "1"))] FilterPrefabHashEquals = 1u8, - #[strum( - serialize = "FilterPrefabHashNotEquals", - props(docs = r#""#, value = "2") - )] + #[strum(serialize = "FilterPrefabHashNotEquals")] + #[strum(props(docs = "", value = "2"))] FilterPrefabHashNotEquals = 2u8, - #[strum( - serialize = "FilterSortingClassCompare", - props(docs = r#""#, value = "3") - )] + #[strum(serialize = "FilterSortingClassCompare")] + #[strum(props(docs = "", value = "3"))] FilterSortingClassCompare = 3u8, - #[strum(serialize = "FilterSlotTypeCompare", props(docs = r#""#, value = "4"))] + #[strum(serialize = "FilterSlotTypeCompare")] + #[strum(props(docs = "", value = "4"))] FilterSlotTypeCompare = 4u8, - #[strum(serialize = "FilterQuantityCompare", props(docs = r#""#, value = "5"))] + #[strum(serialize = "FilterQuantityCompare")] + #[strum(props(docs = "", value = "5"))] FilterQuantityCompare = 5u8, - #[strum( - serialize = "LimitNextExecutionByCount", - props(docs = r#""#, value = "6") - )] + #[strum(serialize = "LimitNextExecutionByCount")] + #[strum(props(docs = "", value = "6"))] LimitNextExecutionByCount = 6u8, } +impl TryFrom for SorterInstruction { + type Error = super::ParseError; + fn try_from(value: f64) -> Result>::Error> { + use strum::IntoEnumIterator; + if let Some(enm) = SorterInstruction::iter() + .find(|enm| (f64::from(*enm as u8) - value).abs() < f64::EPSILON) + { + Ok(enm) + } else { + Err(super::ParseError { + enm: value.to_string(), + }) + } + } +} #[derive( - Debug, Default, + Debug, Display, Clone, Copy, @@ -614,38 +936,64 @@ pub enum SorterInstruction { EnumIter, FromRepr, Serialize, - Deserialize, + Deserialize )] #[strum(use_phf)] #[repr(u8)] pub enum SortingClass { - #[strum(serialize = "Default", props(docs = r#""#, value = "0"))] + #[strum(serialize = "Default")] + #[strum(props(docs = "", value = "0"))] #[default] Default = 0u8, - #[strum(serialize = "Kits", props(docs = r#""#, value = "1"))] + #[strum(serialize = "Kits")] + #[strum(props(docs = "", value = "1"))] Kits = 1u8, - #[strum(serialize = "Tools", props(docs = r#""#, value = "2"))] + #[strum(serialize = "Tools")] + #[strum(props(docs = "", value = "2"))] Tools = 2u8, - #[strum(serialize = "Resources", props(docs = r#""#, value = "3"))] + #[strum(serialize = "Resources")] + #[strum(props(docs = "", value = "3"))] Resources = 3u8, - #[strum(serialize = "Food", props(docs = r#""#, value = "4"))] + #[strum(serialize = "Food")] + #[strum(props(docs = "", value = "4"))] Food = 4u8, - #[strum(serialize = "Clothing", props(docs = r#""#, value = "5"))] + #[strum(serialize = "Clothing")] + #[strum(props(docs = "", value = "5"))] Clothing = 5u8, - #[strum(serialize = "Appliances", props(docs = r#""#, value = "6"))] + #[strum(serialize = "Appliances")] + #[strum(props(docs = "", value = "6"))] Appliances = 6u8, - #[strum(serialize = "Atmospherics", props(docs = r#""#, value = "7"))] + #[strum(serialize = "Atmospherics")] + #[strum(props(docs = "", value = "7"))] Atmospherics = 7u8, - #[strum(serialize = "Storage", props(docs = r#""#, value = "8"))] + #[strum(serialize = "Storage")] + #[strum(props(docs = "", value = "8"))] Storage = 8u8, - #[strum(serialize = "Ores", props(docs = r#""#, value = "9"))] + #[strum(serialize = "Ores")] + #[strum(props(docs = "", value = "9"))] Ores = 9u8, - #[strum(serialize = "Ices", props(docs = r#""#, value = "10"))] + #[strum(serialize = "Ices")] + #[strum(props(docs = "", value = "10"))] Ices = 10u8, } +impl TryFrom for SortingClass { + type Error = super::ParseError; + fn try_from(value: f64) -> Result>::Error> { + use strum::IntoEnumIterator; + if let Some(enm) = SortingClass::iter() + .find(|enm| (f64::from(*enm as u8) - value).abs() < f64::EPSILON) + { + Ok(enm) + } else { + Err(super::ParseError { + enm: value.to_string(), + }) + } + } +} #[derive( - Debug, Default, + Debug, Display, Clone, Copy, @@ -660,105 +1008,166 @@ pub enum SortingClass { EnumIter, FromRepr, Serialize, - Deserialize, + Deserialize )] #[strum(use_phf)] #[repr(u8)] pub enum SoundAlert { - #[strum(serialize = "None", props(docs = r#""#, value = "0"))] + #[strum(serialize = "None")] + #[strum(props(docs = "", value = "0"))] #[default] None = 0u8, - #[strum(serialize = "Alarm2", props(docs = r#""#, value = "1"))] + #[strum(serialize = "Alarm2")] + #[strum(props(docs = "", value = "1"))] Alarm2 = 1u8, - #[strum(serialize = "Alarm3", props(docs = r#""#, value = "2"))] + #[strum(serialize = "Alarm3")] + #[strum(props(docs = "", value = "2"))] Alarm3 = 2u8, - #[strum(serialize = "Alarm4", props(docs = r#""#, value = "3"))] + #[strum(serialize = "Alarm4")] + #[strum(props(docs = "", value = "3"))] Alarm4 = 3u8, - #[strum(serialize = "Alarm5", props(docs = r#""#, value = "4"))] + #[strum(serialize = "Alarm5")] + #[strum(props(docs = "", value = "4"))] Alarm5 = 4u8, - #[strum(serialize = "Alarm6", props(docs = r#""#, value = "5"))] + #[strum(serialize = "Alarm6")] + #[strum(props(docs = "", value = "5"))] Alarm6 = 5u8, - #[strum(serialize = "Alarm7", props(docs = r#""#, value = "6"))] + #[strum(serialize = "Alarm7")] + #[strum(props(docs = "", value = "6"))] Alarm7 = 6u8, - #[strum(serialize = "Music1", props(docs = r#""#, value = "7"))] + #[strum(serialize = "Music1")] + #[strum(props(docs = "", value = "7"))] Music1 = 7u8, - #[strum(serialize = "Music2", props(docs = r#""#, value = "8"))] + #[strum(serialize = "Music2")] + #[strum(props(docs = "", value = "8"))] Music2 = 8u8, - #[strum(serialize = "Music3", props(docs = r#""#, value = "9"))] + #[strum(serialize = "Music3")] + #[strum(props(docs = "", value = "9"))] Music3 = 9u8, - #[strum(serialize = "Alarm8", props(docs = r#""#, value = "10"))] + #[strum(serialize = "Alarm8")] + #[strum(props(docs = "", value = "10"))] Alarm8 = 10u8, - #[strum(serialize = "Alarm9", props(docs = r#""#, value = "11"))] + #[strum(serialize = "Alarm9")] + #[strum(props(docs = "", value = "11"))] Alarm9 = 11u8, - #[strum(serialize = "Alarm10", props(docs = r#""#, value = "12"))] + #[strum(serialize = "Alarm10")] + #[strum(props(docs = "", value = "12"))] Alarm10 = 12u8, - #[strum(serialize = "Alarm11", props(docs = r#""#, value = "13"))] + #[strum(serialize = "Alarm11")] + #[strum(props(docs = "", value = "13"))] Alarm11 = 13u8, - #[strum(serialize = "Alarm12", props(docs = r#""#, value = "14"))] + #[strum(serialize = "Alarm12")] + #[strum(props(docs = "", value = "14"))] Alarm12 = 14u8, - #[strum(serialize = "Danger", props(docs = r#""#, value = "15"))] + #[strum(serialize = "Danger")] + #[strum(props(docs = "", value = "15"))] Danger = 15u8, - #[strum(serialize = "Warning", props(docs = r#""#, value = "16"))] + #[strum(serialize = "Warning")] + #[strum(props(docs = "", value = "16"))] Warning = 16u8, - #[strum(serialize = "Alert", props(docs = r#""#, value = "17"))] + #[strum(serialize = "Alert")] + #[strum(props(docs = "", value = "17"))] Alert = 17u8, - #[strum(serialize = "StormIncoming", props(docs = r#""#, value = "18"))] + #[strum(serialize = "StormIncoming")] + #[strum(props(docs = "", value = "18"))] StormIncoming = 18u8, - #[strum(serialize = "IntruderAlert", props(docs = r#""#, value = "19"))] + #[strum(serialize = "IntruderAlert")] + #[strum(props(docs = "", value = "19"))] IntruderAlert = 19u8, - #[strum(serialize = "Depressurising", props(docs = r#""#, value = "20"))] + #[strum(serialize = "Depressurising")] + #[strum(props(docs = "", value = "20"))] Depressurising = 20u8, - #[strum(serialize = "Pressurising", props(docs = r#""#, value = "21"))] + #[strum(serialize = "Pressurising")] + #[strum(props(docs = "", value = "21"))] Pressurising = 21u8, - #[strum(serialize = "AirlockCycling", props(docs = r#""#, value = "22"))] + #[strum(serialize = "AirlockCycling")] + #[strum(props(docs = "", value = "22"))] AirlockCycling = 22u8, - #[strum(serialize = "PowerLow", props(docs = r#""#, value = "23"))] + #[strum(serialize = "PowerLow")] + #[strum(props(docs = "", value = "23"))] PowerLow = 23u8, - #[strum(serialize = "SystemFailure", props(docs = r#""#, value = "24"))] + #[strum(serialize = "SystemFailure")] + #[strum(props(docs = "", value = "24"))] SystemFailure = 24u8, - #[strum(serialize = "Welcome", props(docs = r#""#, value = "25"))] + #[strum(serialize = "Welcome")] + #[strum(props(docs = "", value = "25"))] Welcome = 25u8, - #[strum(serialize = "MalfunctionDetected", props(docs = r#""#, value = "26"))] + #[strum(serialize = "MalfunctionDetected")] + #[strum(props(docs = "", value = "26"))] MalfunctionDetected = 26u8, - #[strum(serialize = "HaltWhoGoesThere", props(docs = r#""#, value = "27"))] + #[strum(serialize = "HaltWhoGoesThere")] + #[strum(props(docs = "", value = "27"))] HaltWhoGoesThere = 27u8, - #[strum(serialize = "FireFireFire", props(docs = r#""#, value = "28"))] + #[strum(serialize = "FireFireFire")] + #[strum(props(docs = "", value = "28"))] FireFireFire = 28u8, - #[strum(serialize = "One", props(docs = r#""#, value = "29"))] + #[strum(serialize = "One")] + #[strum(props(docs = "", value = "29"))] One = 29u8, - #[strum(serialize = "Two", props(docs = r#""#, value = "30"))] + #[strum(serialize = "Two")] + #[strum(props(docs = "", value = "30"))] Two = 30u8, - #[strum(serialize = "Three", props(docs = r#""#, value = "31"))] + #[strum(serialize = "Three")] + #[strum(props(docs = "", value = "31"))] Three = 31u8, - #[strum(serialize = "Four", props(docs = r#""#, value = "32"))] + #[strum(serialize = "Four")] + #[strum(props(docs = "", value = "32"))] Four = 32u8, - #[strum(serialize = "Five", props(docs = r#""#, value = "33"))] + #[strum(serialize = "Five")] + #[strum(props(docs = "", value = "33"))] Five = 33u8, - #[strum(serialize = "Floor", props(docs = r#""#, value = "34"))] + #[strum(serialize = "Floor")] + #[strum(props(docs = "", value = "34"))] Floor = 34u8, - #[strum(serialize = "RocketLaunching", props(docs = r#""#, value = "35"))] + #[strum(serialize = "RocketLaunching")] + #[strum(props(docs = "", value = "35"))] RocketLaunching = 35u8, - #[strum(serialize = "LiftOff", props(docs = r#""#, value = "36"))] + #[strum(serialize = "LiftOff")] + #[strum(props(docs = "", value = "36"))] LiftOff = 36u8, - #[strum(serialize = "TraderIncoming", props(docs = r#""#, value = "37"))] + #[strum(serialize = "TraderIncoming")] + #[strum(props(docs = "", value = "37"))] TraderIncoming = 37u8, - #[strum(serialize = "TraderLanded", props(docs = r#""#, value = "38"))] + #[strum(serialize = "TraderLanded")] + #[strum(props(docs = "", value = "38"))] TraderLanded = 38u8, - #[strum(serialize = "PressureHigh", props(docs = r#""#, value = "39"))] + #[strum(serialize = "PressureHigh")] + #[strum(props(docs = "", value = "39"))] PressureHigh = 39u8, - #[strum(serialize = "PressureLow", props(docs = r#""#, value = "40"))] + #[strum(serialize = "PressureLow")] + #[strum(props(docs = "", value = "40"))] PressureLow = 40u8, - #[strum(serialize = "TemperatureHigh", props(docs = r#""#, value = "41"))] + #[strum(serialize = "TemperatureHigh")] + #[strum(props(docs = "", value = "41"))] TemperatureHigh = 41u8, - #[strum(serialize = "TemperatureLow", props(docs = r#""#, value = "42"))] + #[strum(serialize = "TemperatureLow")] + #[strum(props(docs = "", value = "42"))] TemperatureLow = 42u8, - #[strum(serialize = "PollutantsDetected", props(docs = r#""#, value = "43"))] + #[strum(serialize = "PollutantsDetected")] + #[strum(props(docs = "", value = "43"))] PollutantsDetected = 43u8, - #[strum(serialize = "HighCarbonDioxide", props(docs = r#""#, value = "44"))] + #[strum(serialize = "HighCarbonDioxide")] + #[strum(props(docs = "", value = "44"))] HighCarbonDioxide = 44u8, - #[strum(serialize = "Alarm1", props(docs = r#""#, value = "45"))] + #[strum(serialize = "Alarm1")] + #[strum(props(docs = "", value = "45"))] Alarm1 = 45u8, } +impl TryFrom for SoundAlert { + type Error = super::ParseError; + fn try_from(value: f64) -> Result>::Error> { + use strum::IntoEnumIterator; + if let Some(enm) = SoundAlert::iter() + .find(|enm| (f64::from(*enm as u8) - value).abs() < f64::EPSILON) + { + Ok(enm) + } else { + Err(super::ParseError { + enm: value.to_string(), + }) + } + } +} #[derive( Debug, Display, @@ -775,16 +1184,35 @@ pub enum SoundAlert { EnumIter, FromRepr, Serialize, - Deserialize, + Deserialize )] #[strum(use_phf)] #[repr(u8)] pub enum LogicTransmitterMode { - #[strum(serialize = "Passive", props(docs = r#""#, value = "0"))] + #[strum(serialize = "Passive")] + #[strum(props(docs = "", value = "0"))] Passive = 0u8, - #[strum(serialize = "Active", props(docs = r#""#, value = "1"))] + #[strum(serialize = "Active")] + #[strum(props(docs = "", value = "1"))] Active = 1u8, } +impl TryFrom for LogicTransmitterMode { + type Error = super::ParseError; + fn try_from( + value: f64, + ) -> Result>::Error> { + use strum::IntoEnumIterator; + if let Some(enm) = LogicTransmitterMode::iter() + .find(|enm| (f64::from(*enm as u8) - value).abs() < f64::EPSILON) + { + Ok(enm) + } else { + Err(super::ParseError { + enm: value.to_string(), + }) + } + } +} #[derive( Debug, Display, @@ -801,16 +1229,33 @@ pub enum LogicTransmitterMode { EnumIter, FromRepr, Serialize, - Deserialize, + Deserialize )] #[strum(use_phf)] #[repr(u8)] pub enum VentDirection { - #[strum(serialize = "Outward", props(docs = r#""#, value = "0"))] + #[strum(serialize = "Outward")] + #[strum(props(docs = "", value = "0"))] Outward = 0u8, - #[strum(serialize = "Inward", props(docs = r#""#, value = "1"))] + #[strum(serialize = "Inward")] + #[strum(props(docs = "", value = "1"))] Inward = 1u8, } +impl TryFrom for VentDirection { + type Error = super::ParseError; + fn try_from(value: f64) -> Result>::Error> { + use strum::IntoEnumIterator; + if let Some(enm) = VentDirection::iter() + .find(|enm| (f64::from(*enm as u8) - value).abs() < f64::EPSILON) + { + Ok(enm) + } else { + Err(super::ParseError { + enm: value.to_string(), + }) + } + } +} #[derive( Debug, Display, @@ -827,20 +1272,41 @@ pub enum VentDirection { EnumIter, FromRepr, Serialize, - Deserialize, + Deserialize )] #[strum(use_phf)] #[repr(u8)] pub enum ConditionOperation { - #[strum(serialize = "Equals", props(docs = r#""#, value = "0"))] + #[strum(serialize = "Equals")] + #[strum(props(docs = "", value = "0"))] Equals = 0u8, - #[strum(serialize = "Greater", props(docs = r#""#, value = "1"))] + #[strum(serialize = "Greater")] + #[strum(props(docs = "", value = "1"))] Greater = 1u8, - #[strum(serialize = "Less", props(docs = r#""#, value = "2"))] + #[strum(serialize = "Less")] + #[strum(props(docs = "", value = "2"))] Less = 2u8, - #[strum(serialize = "NotEquals", props(docs = r#""#, value = "3"))] + #[strum(serialize = "NotEquals")] + #[strum(props(docs = "", value = "3"))] NotEquals = 3u8, } +impl TryFrom for ConditionOperation { + type Error = super::ParseError; + fn try_from( + value: f64, + ) -> Result>::Error> { + use strum::IntoEnumIterator; + if let Some(enm) = ConditionOperation::iter() + .find(|enm| (f64::from(*enm as u8) - value).abs() < f64::EPSILON) + { + Ok(enm) + } else { + Err(super::ParseError { + enm: value.to_string(), + }) + } + } +} pub enum BasicEnum { AirCon(AirConditioningMode), AirControl(AirControlMode), @@ -942,9 +1408,8 @@ impl BasicEnum { } } impl std::str::FromStr for BasicEnum { - type Err = crate::errors::ParseError; + type Err = super::ParseError; fn from_str(s: &str) -> Result { - let end = s.len(); match s.to_lowercase().as_str() { "aircon.cold" => Ok(Self::AirCon(AirConditioningMode::Cold)), "aircon.hot" => Ok(Self::AirCon(AirConditioningMode::Hot)), @@ -982,10 +1447,14 @@ impl std::str::FromStr for BasicEnum { "entitystate.unconscious" => Ok(Self::EntityState(EntityState::Unconscious)), "gastype.carbondioxide" => Ok(Self::GasType(GasType::CarbonDioxide)), "gastype.hydrogen" => Ok(Self::GasType(GasType::Hydrogen)), - "gastype.liquidcarbondioxide" => Ok(Self::GasType(GasType::LiquidCarbonDioxide)), + "gastype.liquidcarbondioxide" => { + Ok(Self::GasType(GasType::LiquidCarbonDioxide)) + } "gastype.liquidhydrogen" => Ok(Self::GasType(GasType::LiquidHydrogen)), "gastype.liquidnitrogen" => Ok(Self::GasType(GasType::LiquidNitrogen)), - "gastype.liquidnitrousoxide" => Ok(Self::GasType(GasType::LiquidNitrousOxide)), + "gastype.liquidnitrousoxide" => { + Ok(Self::GasType(GasType::LiquidNitrousOxide)) + } "gastype.liquidoxygen" => Ok(Self::GasType(GasType::LiquidOxygen)), "gastype.liquidpollutant" => Ok(Self::GasType(GasType::LiquidPollutant)), "gastype.liquidvolatiles" => Ok(Self::GasType(GasType::LiquidVolatiles)), @@ -999,31 +1468,55 @@ impl std::str::FromStr for BasicEnum { "gastype.volatiles" => Ok(Self::GasType(GasType::Volatiles)), "gastype.water" => Ok(Self::GasType(GasType::Water)), "logicslottype.charge" => Ok(Self::LogicSlotType(LogicSlotType::Charge)), - "logicslottype.chargeratio" => Ok(Self::LogicSlotType(LogicSlotType::ChargeRatio)), + "logicslottype.chargeratio" => { + Ok(Self::LogicSlotType(LogicSlotType::ChargeRatio)) + } "logicslottype.class" => Ok(Self::LogicSlotType(LogicSlotType::Class)), "logicslottype.damage" => Ok(Self::LogicSlotType(LogicSlotType::Damage)), - "logicslottype.efficiency" => Ok(Self::LogicSlotType(LogicSlotType::Efficiency)), - "logicslottype.filtertype" => Ok(Self::LogicSlotType(LogicSlotType::FilterType)), + "logicslottype.efficiency" => { + Ok(Self::LogicSlotType(LogicSlotType::Efficiency)) + } + "logicslottype.filtertype" => { + Ok(Self::LogicSlotType(LogicSlotType::FilterType)) + } "logicslottype.growth" => Ok(Self::LogicSlotType(LogicSlotType::Growth)), "logicslottype.health" => Ok(Self::LogicSlotType(LogicSlotType::Health)), - "logicslottype.linenumber" => Ok(Self::LogicSlotType(LogicSlotType::LineNumber)), + "logicslottype.linenumber" => { + Ok(Self::LogicSlotType(LogicSlotType::LineNumber)) + } "logicslottype.lock" => Ok(Self::LogicSlotType(LogicSlotType::Lock)), "logicslottype.mature" => Ok(Self::LogicSlotType(LogicSlotType::Mature)), - "logicslottype.maxquantity" => Ok(Self::LogicSlotType(LogicSlotType::MaxQuantity)), + "logicslottype.maxquantity" => { + Ok(Self::LogicSlotType(LogicSlotType::MaxQuantity)) + } "logicslottype.none" => Ok(Self::LogicSlotType(LogicSlotType::None)), - "logicslottype.occupanthash" => Ok(Self::LogicSlotType(LogicSlotType::OccupantHash)), + "logicslottype.occupanthash" => { + Ok(Self::LogicSlotType(LogicSlotType::OccupantHash)) + } "logicslottype.occupied" => Ok(Self::LogicSlotType(LogicSlotType::Occupied)), "logicslottype.on" => Ok(Self::LogicSlotType(LogicSlotType::On)), "logicslottype.open" => Ok(Self::LogicSlotType(LogicSlotType::Open)), - "logicslottype.prefabhash" => Ok(Self::LogicSlotType(LogicSlotType::PrefabHash)), + "logicslottype.prefabhash" => { + Ok(Self::LogicSlotType(LogicSlotType::PrefabHash)) + } "logicslottype.pressure" => Ok(Self::LogicSlotType(LogicSlotType::Pressure)), - "logicslottype.pressureair" => Ok(Self::LogicSlotType(LogicSlotType::PressureAir)), - "logicslottype.pressurewaste" => Ok(Self::LogicSlotType(LogicSlotType::PressureWaste)), + "logicslottype.pressureair" => { + Ok(Self::LogicSlotType(LogicSlotType::PressureAir)) + } + "logicslottype.pressurewaste" => { + Ok(Self::LogicSlotType(LogicSlotType::PressureWaste)) + } "logicslottype.quantity" => Ok(Self::LogicSlotType(LogicSlotType::Quantity)), - "logicslottype.referenceid" => Ok(Self::LogicSlotType(LogicSlotType::ReferenceId)), + "logicslottype.referenceid" => { + Ok(Self::LogicSlotType(LogicSlotType::ReferenceId)) + } "logicslottype.seeding" => Ok(Self::LogicSlotType(LogicSlotType::Seeding)), - "logicslottype.sortingclass" => Ok(Self::LogicSlotType(LogicSlotType::SortingClass)), - "logicslottype.temperature" => Ok(Self::LogicSlotType(LogicSlotType::Temperature)), + "logicslottype.sortingclass" => { + Ok(Self::LogicSlotType(LogicSlotType::SortingClass)) + } + "logicslottype.temperature" => { + Ok(Self::LogicSlotType(LogicSlotType::Temperature)) + } "logicslottype.volume" => Ok(Self::LogicSlotType(LogicSlotType::Volume)), "logictype.acceleration" => Ok(Self::LogicType(LogicType::Acceleration)), "logictype.activate" => Ok(Self::LogicType(LogicType::Activate)), @@ -1032,11 +1525,17 @@ impl std::str::FromStr for BasicEnum { "logictype.apex" => Ok(Self::LogicType(LogicType::Apex)), "logictype.autoland" => Ok(Self::LogicType(LogicType::AutoLand)), "logictype.autoshutoff" => Ok(Self::LogicType(LogicType::AutoShutOff)), - "logictype.bestcontactfilter" => Ok(Self::LogicType(LogicType::BestContactFilter)), + "logictype.bestcontactfilter" => { + Ok(Self::LogicType(LogicType::BestContactFilter)) + } "logictype.bpm" => Ok(Self::LogicType(LogicType::Bpm)), - "logictype.burntimeremaining" => Ok(Self::LogicType(LogicType::BurnTimeRemaining)), + "logictype.burntimeremaining" => { + Ok(Self::LogicType(LogicType::BurnTimeRemaining)) + } "logictype.celestialhash" => Ok(Self::LogicType(LogicType::CelestialHash)), - "logictype.celestialparenthash" => Ok(Self::LogicType(LogicType::CelestialParentHash)), + "logictype.celestialparenthash" => { + Ok(Self::LogicType(LogicType::CelestialParentHash)) + } "logictype.channel0" => Ok(Self::LogicType(LogicType::Channel0)), "logictype.channel1" => Ok(Self::LogicType(LogicType::Channel1)), "logictype.channel2" => Ok(Self::LogicType(LogicType::Channel2)), @@ -1047,24 +1546,42 @@ impl std::str::FromStr for BasicEnum { "logictype.channel7" => Ok(Self::LogicType(LogicType::Channel7)), "logictype.charge" => Ok(Self::LogicType(LogicType::Charge)), "logictype.chart" => Ok(Self::LogicType(LogicType::Chart)), - "logictype.chartednavpoints" => Ok(Self::LogicType(LogicType::ChartedNavPoints)), + "logictype.chartednavpoints" => { + Ok(Self::LogicType(LogicType::ChartedNavPoints)) + } "logictype.clearmemory" => Ok(Self::LogicType(LogicType::ClearMemory)), - "logictype.collectablegoods" => Ok(Self::LogicType(LogicType::CollectableGoods)), + "logictype.collectablegoods" => { + Ok(Self::LogicType(LogicType::CollectableGoods)) + } "logictype.color" => Ok(Self::LogicType(LogicType::Color)), "logictype.combustion" => Ok(Self::LogicType(LogicType::Combustion)), - "logictype.combustioninput" => Ok(Self::LogicType(LogicType::CombustionInput)), - "logictype.combustioninput2" => Ok(Self::LogicType(LogicType::CombustionInput2)), - "logictype.combustionlimiter" => Ok(Self::LogicType(LogicType::CombustionLimiter)), - "logictype.combustionoutput" => Ok(Self::LogicType(LogicType::CombustionOutput)), - "logictype.combustionoutput2" => Ok(Self::LogicType(LogicType::CombustionOutput2)), - "logictype.completionratio" => Ok(Self::LogicType(LogicType::CompletionRatio)), + "logictype.combustioninput" => { + Ok(Self::LogicType(LogicType::CombustionInput)) + } + "logictype.combustioninput2" => { + Ok(Self::LogicType(LogicType::CombustionInput2)) + } + "logictype.combustionlimiter" => { + Ok(Self::LogicType(LogicType::CombustionLimiter)) + } + "logictype.combustionoutput" => { + Ok(Self::LogicType(LogicType::CombustionOutput)) + } + "logictype.combustionoutput2" => { + Ok(Self::LogicType(LogicType::CombustionOutput2)) + } + "logictype.completionratio" => { + Ok(Self::LogicType(LogicType::CompletionRatio)) + } "logictype.contacttypeid" => Ok(Self::LogicType(LogicType::ContactTypeId)), "logictype.currentcode" => Ok(Self::LogicType(LogicType::CurrentCode)), "logictype.currentresearchpodtype" => { Ok(Self::LogicType(LogicType::CurrentResearchPodType)) } "logictype.density" => Ok(Self::LogicType(LogicType::Density)), - "logictype.destinationcode" => Ok(Self::LogicType(LogicType::DestinationCode)), + "logictype.destinationcode" => { + Ok(Self::LogicType(LogicType::DestinationCode)) + } "logictype.discover" => Ok(Self::LogicType(LogicType::Discover)), "logictype.distanceau" => Ok(Self::LogicType(LogicType::DistanceAu)), "logictype.distancekm" => Ok(Self::LogicType(LogicType::DistanceKm)), @@ -1078,13 +1595,19 @@ impl std::str::FromStr for BasicEnum { Ok(Self::LogicType(LogicType::EnvironmentEfficiency)) } "logictype.error" => Ok(Self::LogicType(LogicType::Error)), - "logictype.exhaustvelocity" => Ok(Self::LogicType(LogicType::ExhaustVelocity)), + "logictype.exhaustvelocity" => { + Ok(Self::LogicType(LogicType::ExhaustVelocity)) + } "logictype.exportcount" => Ok(Self::LogicType(LogicType::ExportCount)), "logictype.exportquantity" => Ok(Self::LogicType(LogicType::ExportQuantity)), "logictype.exportslothash" => Ok(Self::LogicType(LogicType::ExportSlotHash)), - "logictype.exportslotoccupant" => Ok(Self::LogicType(LogicType::ExportSlotOccupant)), + "logictype.exportslotoccupant" => { + Ok(Self::LogicType(LogicType::ExportSlotOccupant)) + } "logictype.filtration" => Ok(Self::LogicType(LogicType::Filtration)), - "logictype.flightcontrolrule" => Ok(Self::LogicType(LogicType::FlightControlRule)), + "logictype.flightcontrolrule" => { + Ok(Self::LogicType(LogicType::FlightControlRule)) + } "logictype.flush" => Ok(Self::LogicType(LogicType::Flush)), "logictype.forcewrite" => Ok(Self::LogicType(LogicType::ForceWrite)), "logictype.forwardx" => Ok(Self::LogicType(LogicType::ForwardX)), @@ -1093,12 +1616,16 @@ impl std::str::FromStr for BasicEnum { "logictype.fuel" => Ok(Self::LogicType(LogicType::Fuel)), "logictype.harvest" => Ok(Self::LogicType(LogicType::Harvest)), "logictype.horizontal" => Ok(Self::LogicType(LogicType::Horizontal)), - "logictype.horizontalratio" => Ok(Self::LogicType(LogicType::HorizontalRatio)), + "logictype.horizontalratio" => { + Ok(Self::LogicType(LogicType::HorizontalRatio)) + } "logictype.idle" => Ok(Self::LogicType(LogicType::Idle)), "logictype.importcount" => Ok(Self::LogicType(LogicType::ImportCount)), "logictype.importquantity" => Ok(Self::LogicType(LogicType::ImportQuantity)), "logictype.importslothash" => Ok(Self::LogicType(LogicType::ImportSlotHash)), - "logictype.importslotoccupant" => Ok(Self::LogicType(LogicType::ImportSlotOccupant)), + "logictype.importslotoccupant" => { + Ok(Self::LogicType(LogicType::ImportSlotOccupant)) + } "logictype.inclination" => Ok(Self::LogicType(LogicType::Inclination)), "logictype.index" => Ok(Self::LogicType(LogicType::Index)), "logictype.interrogationprogress" => { @@ -1111,8 +1638,12 @@ impl std::str::FromStr for BasicEnum { } "logictype.mass" => Ok(Self::LogicType(LogicType::Mass)), "logictype.maximum" => Ok(Self::LogicType(LogicType::Maximum)), - "logictype.mineablesinqueue" => Ok(Self::LogicType(LogicType::MineablesInQueue)), - "logictype.mineablesinvicinity" => Ok(Self::LogicType(LogicType::MineablesInVicinity)), + "logictype.mineablesinqueue" => { + Ok(Self::LogicType(LogicType::MineablesInQueue)) + } + "logictype.mineablesinvicinity" => { + Ok(Self::LogicType(LogicType::MineablesInVicinity)) + } "logictype.minedquantity" => Ok(Self::LogicType(LogicType::MinedQuantity)), "logictype.minimumwattstocontact" => { Ok(Self::LogicType(LogicType::MinimumWattsToContact)) @@ -1134,10 +1665,18 @@ impl std::str::FromStr for BasicEnum { "logictype.output" => Ok(Self::LogicType(LogicType::Output)), "logictype.passedmoles" => Ok(Self::LogicType(LogicType::PassedMoles)), "logictype.plant" => Ok(Self::LogicType(LogicType::Plant)), - "logictype.plantefficiency1" => Ok(Self::LogicType(LogicType::PlantEfficiency1)), - "logictype.plantefficiency2" => Ok(Self::LogicType(LogicType::PlantEfficiency2)), - "logictype.plantefficiency3" => Ok(Self::LogicType(LogicType::PlantEfficiency3)), - "logictype.plantefficiency4" => Ok(Self::LogicType(LogicType::PlantEfficiency4)), + "logictype.plantefficiency1" => { + Ok(Self::LogicType(LogicType::PlantEfficiency1)) + } + "logictype.plantefficiency2" => { + Ok(Self::LogicType(LogicType::PlantEfficiency2)) + } + "logictype.plantefficiency3" => { + Ok(Self::LogicType(LogicType::PlantEfficiency3)) + } + "logictype.plantefficiency4" => { + Ok(Self::LogicType(LogicType::PlantEfficiency4)) + } "logictype.plantgrowth1" => Ok(Self::LogicType(LogicType::PlantGrowth1)), "logictype.plantgrowth2" => Ok(Self::LogicType(LogicType::PlantGrowth2)), "logictype.plantgrowth3" => Ok(Self::LogicType(LogicType::PlantGrowth3)), @@ -1155,23 +1694,37 @@ impl std::str::FromStr for BasicEnum { "logictype.positionz" => Ok(Self::LogicType(LogicType::PositionZ)), "logictype.power" => Ok(Self::LogicType(LogicType::Power)), "logictype.poweractual" => Ok(Self::LogicType(LogicType::PowerActual)), - "logictype.powergeneration" => Ok(Self::LogicType(LogicType::PowerGeneration)), + "logictype.powergeneration" => { + Ok(Self::LogicType(LogicType::PowerGeneration)) + } "logictype.powerpotential" => Ok(Self::LogicType(LogicType::PowerPotential)), "logictype.powerrequired" => Ok(Self::LogicType(LogicType::PowerRequired)), "logictype.prefabhash" => Ok(Self::LogicType(LogicType::PrefabHash)), "logictype.pressure" => Ok(Self::LogicType(LogicType::Pressure)), - "logictype.pressureefficiency" => Ok(Self::LogicType(LogicType::PressureEfficiency)), - "logictype.pressureexternal" => Ok(Self::LogicType(LogicType::PressureExternal)), + "logictype.pressureefficiency" => { + Ok(Self::LogicType(LogicType::PressureEfficiency)) + } + "logictype.pressureexternal" => { + Ok(Self::LogicType(LogicType::PressureExternal)) + } "logictype.pressureinput" => Ok(Self::LogicType(LogicType::PressureInput)), "logictype.pressureinput2" => Ok(Self::LogicType(LogicType::PressureInput2)), - "logictype.pressureinternal" => Ok(Self::LogicType(LogicType::PressureInternal)), + "logictype.pressureinternal" => { + Ok(Self::LogicType(LogicType::PressureInternal)) + } "logictype.pressureoutput" => Ok(Self::LogicType(LogicType::PressureOutput)), - "logictype.pressureoutput2" => Ok(Self::LogicType(LogicType::PressureOutput2)), - "logictype.pressuresetting" => Ok(Self::LogicType(LogicType::PressureSetting)), + "logictype.pressureoutput2" => { + Ok(Self::LogicType(LogicType::PressureOutput2)) + } + "logictype.pressuresetting" => { + Ok(Self::LogicType(LogicType::PressureSetting)) + } "logictype.progress" => Ok(Self::LogicType(LogicType::Progress)), "logictype.quantity" => Ok(Self::LogicType(LogicType::Quantity)), "logictype.ratio" => Ok(Self::LogicType(LogicType::Ratio)), - "logictype.ratiocarbondioxide" => Ok(Self::LogicType(LogicType::RatioCarbonDioxide)), + "logictype.ratiocarbondioxide" => { + Ok(Self::LogicType(LogicType::RatioCarbonDioxide)) + } "logictype.ratiocarbondioxideinput" => { Ok(Self::LogicType(LogicType::RatioCarbonDioxideInput)) } @@ -1200,8 +1753,12 @@ impl std::str::FromStr for BasicEnum { "logictype.ratioliquidcarbondioxideoutput2" => { Ok(Self::LogicType(LogicType::RatioLiquidCarbonDioxideOutput2)) } - "logictype.ratioliquidhydrogen" => Ok(Self::LogicType(LogicType::RatioLiquidHydrogen)), - "logictype.ratioliquidnitrogen" => Ok(Self::LogicType(LogicType::RatioLiquidNitrogen)), + "logictype.ratioliquidhydrogen" => { + Ok(Self::LogicType(LogicType::RatioLiquidHydrogen)) + } + "logictype.ratioliquidnitrogen" => { + Ok(Self::LogicType(LogicType::RatioLiquidNitrogen)) + } "logictype.ratioliquidnitrogeninput" => { Ok(Self::LogicType(LogicType::RatioLiquidNitrogenInput)) } @@ -1229,7 +1786,9 @@ impl std::str::FromStr for BasicEnum { "logictype.ratioliquidnitrousoxideoutput2" => { Ok(Self::LogicType(LogicType::RatioLiquidNitrousOxideOutput2)) } - "logictype.ratioliquidoxygen" => Ok(Self::LogicType(LogicType::RatioLiquidOxygen)), + "logictype.ratioliquidoxygen" => { + Ok(Self::LogicType(LogicType::RatioLiquidOxygen)) + } "logictype.ratioliquidoxygeninput" => { Ok(Self::LogicType(LogicType::RatioLiquidOxygenInput)) } @@ -1273,13 +1832,21 @@ impl std::str::FromStr for BasicEnum { Ok(Self::LogicType(LogicType::RatioLiquidVolatilesOutput2)) } "logictype.rationitrogen" => Ok(Self::LogicType(LogicType::RatioNitrogen)), - "logictype.rationitrogeninput" => Ok(Self::LogicType(LogicType::RatioNitrogenInput)), - "logictype.rationitrogeninput2" => Ok(Self::LogicType(LogicType::RatioNitrogenInput2)), - "logictype.rationitrogenoutput" => Ok(Self::LogicType(LogicType::RatioNitrogenOutput)), + "logictype.rationitrogeninput" => { + Ok(Self::LogicType(LogicType::RatioNitrogenInput)) + } + "logictype.rationitrogeninput2" => { + Ok(Self::LogicType(LogicType::RatioNitrogenInput2)) + } + "logictype.rationitrogenoutput" => { + Ok(Self::LogicType(LogicType::RatioNitrogenOutput)) + } "logictype.rationitrogenoutput2" => { Ok(Self::LogicType(LogicType::RatioNitrogenOutput2)) } - "logictype.rationitrousoxide" => Ok(Self::LogicType(LogicType::RatioNitrousOxide)), + "logictype.rationitrousoxide" => { + Ok(Self::LogicType(LogicType::RatioNitrousOxide)) + } "logictype.rationitrousoxideinput" => { Ok(Self::LogicType(LogicType::RatioNitrousOxideInput)) } @@ -1293,12 +1860,22 @@ impl std::str::FromStr for BasicEnum { Ok(Self::LogicType(LogicType::RatioNitrousOxideOutput2)) } "logictype.ratiooxygen" => Ok(Self::LogicType(LogicType::RatioOxygen)), - "logictype.ratiooxygeninput" => Ok(Self::LogicType(LogicType::RatioOxygenInput)), - "logictype.ratiooxygeninput2" => Ok(Self::LogicType(LogicType::RatioOxygenInput2)), - "logictype.ratiooxygenoutput" => Ok(Self::LogicType(LogicType::RatioOxygenOutput)), - "logictype.ratiooxygenoutput2" => Ok(Self::LogicType(LogicType::RatioOxygenOutput2)), + "logictype.ratiooxygeninput" => { + Ok(Self::LogicType(LogicType::RatioOxygenInput)) + } + "logictype.ratiooxygeninput2" => { + Ok(Self::LogicType(LogicType::RatioOxygenInput2)) + } + "logictype.ratiooxygenoutput" => { + Ok(Self::LogicType(LogicType::RatioOxygenOutput)) + } + "logictype.ratiooxygenoutput2" => { + Ok(Self::LogicType(LogicType::RatioOxygenOutput2)) + } "logictype.ratiopollutant" => Ok(Self::LogicType(LogicType::RatioPollutant)), - "logictype.ratiopollutantinput" => Ok(Self::LogicType(LogicType::RatioPollutantInput)), + "logictype.ratiopollutantinput" => { + Ok(Self::LogicType(LogicType::RatioPollutantInput)) + } "logictype.ratiopollutantinput2" => { Ok(Self::LogicType(LogicType::RatioPollutantInput2)) } @@ -1308,14 +1885,26 @@ impl std::str::FromStr for BasicEnum { "logictype.ratiopollutantoutput2" => { Ok(Self::LogicType(LogicType::RatioPollutantOutput2)) } - "logictype.ratiopollutedwater" => Ok(Self::LogicType(LogicType::RatioPollutedWater)), + "logictype.ratiopollutedwater" => { + Ok(Self::LogicType(LogicType::RatioPollutedWater)) + } "logictype.ratiosteam" => Ok(Self::LogicType(LogicType::RatioSteam)), - "logictype.ratiosteaminput" => Ok(Self::LogicType(LogicType::RatioSteamInput)), - "logictype.ratiosteaminput2" => Ok(Self::LogicType(LogicType::RatioSteamInput2)), - "logictype.ratiosteamoutput" => Ok(Self::LogicType(LogicType::RatioSteamOutput)), - "logictype.ratiosteamoutput2" => Ok(Self::LogicType(LogicType::RatioSteamOutput2)), + "logictype.ratiosteaminput" => { + Ok(Self::LogicType(LogicType::RatioSteamInput)) + } + "logictype.ratiosteaminput2" => { + Ok(Self::LogicType(LogicType::RatioSteamInput2)) + } + "logictype.ratiosteamoutput" => { + Ok(Self::LogicType(LogicType::RatioSteamOutput)) + } + "logictype.ratiosteamoutput2" => { + Ok(Self::LogicType(LogicType::RatioSteamOutput2)) + } "logictype.ratiovolatiles" => Ok(Self::LogicType(LogicType::RatioVolatiles)), - "logictype.ratiovolatilesinput" => Ok(Self::LogicType(LogicType::RatioVolatilesInput)), + "logictype.ratiovolatilesinput" => { + Ok(Self::LogicType(LogicType::RatioVolatilesInput)) + } "logictype.ratiovolatilesinput2" => { Ok(Self::LogicType(LogicType::RatioVolatilesInput2)) } @@ -1326,11 +1915,21 @@ impl std::str::FromStr for BasicEnum { Ok(Self::LogicType(LogicType::RatioVolatilesOutput2)) } "logictype.ratiowater" => Ok(Self::LogicType(LogicType::RatioWater)), - "logictype.ratiowaterinput" => Ok(Self::LogicType(LogicType::RatioWaterInput)), - "logictype.ratiowaterinput2" => Ok(Self::LogicType(LogicType::RatioWaterInput2)), - "logictype.ratiowateroutput" => Ok(Self::LogicType(LogicType::RatioWaterOutput)), - "logictype.ratiowateroutput2" => Ok(Self::LogicType(LogicType::RatioWaterOutput2)), - "logictype.reentryaltitude" => Ok(Self::LogicType(LogicType::ReEntryAltitude)), + "logictype.ratiowaterinput" => { + Ok(Self::LogicType(LogicType::RatioWaterInput)) + } + "logictype.ratiowaterinput2" => { + Ok(Self::LogicType(LogicType::RatioWaterInput2)) + } + "logictype.ratiowateroutput" => { + Ok(Self::LogicType(LogicType::RatioWaterOutput)) + } + "logictype.ratiowateroutput2" => { + Ok(Self::LogicType(LogicType::RatioWaterOutput2)) + } + "logictype.reentryaltitude" => { + Ok(Self::LogicType(LogicType::ReEntryAltitude)) + } "logictype.reagents" => Ok(Self::LogicType(LogicType::Reagents)), "logictype.recipehash" => Ok(Self::LogicType(LogicType::RecipeHash)), "logictype.referenceid" => Ok(Self::LogicType(LogicType::ReferenceId)), @@ -1351,7 +1950,9 @@ impl std::str::FromStr for BasicEnum { "logictype.sizey" => Ok(Self::LogicType(LogicType::SizeY)), "logictype.sizez" => Ok(Self::LogicType(LogicType::SizeZ)), "logictype.solarangle" => Ok(Self::LogicType(LogicType::SolarAngle)), - "logictype.solarirradiance" => Ok(Self::LogicType(LogicType::SolarIrradiance)), + "logictype.solarirradiance" => { + Ok(Self::LogicType(LogicType::SolarIrradiance)) + } "logictype.soundalert" => Ok(Self::LogicType(LogicType::SoundAlert)), "logictype.stress" => Ok(Self::LogicType(LogicType::Stress)), "logictype.survey" => Ok(Self::LogicType(LogicType::Survey)), @@ -1360,31 +1961,61 @@ impl std::str::FromStr for BasicEnum { "logictype.targety" => Ok(Self::LogicType(LogicType::TargetY)), "logictype.targetz" => Ok(Self::LogicType(LogicType::TargetZ)), "logictype.temperature" => Ok(Self::LogicType(LogicType::Temperature)), - "logictype.temperaturedifferentialefficiency" => Ok(Self::LogicType( - LogicType::TemperatureDifferentialEfficiency, - )), - "logictype.temperatureexternal" => Ok(Self::LogicType(LogicType::TemperatureExternal)), - "logictype.temperatureinput" => Ok(Self::LogicType(LogicType::TemperatureInput)), - "logictype.temperatureinput2" => Ok(Self::LogicType(LogicType::TemperatureInput2)), - "logictype.temperatureoutput" => Ok(Self::LogicType(LogicType::TemperatureOutput)), - "logictype.temperatureoutput2" => Ok(Self::LogicType(LogicType::TemperatureOutput2)), - "logictype.temperaturesetting" => Ok(Self::LogicType(LogicType::TemperatureSetting)), + "logictype.temperaturedifferentialefficiency" => { + Ok(Self::LogicType(LogicType::TemperatureDifferentialEfficiency)) + } + "logictype.temperatureexternal" => { + Ok(Self::LogicType(LogicType::TemperatureExternal)) + } + "logictype.temperatureinput" => { + Ok(Self::LogicType(LogicType::TemperatureInput)) + } + "logictype.temperatureinput2" => { + Ok(Self::LogicType(LogicType::TemperatureInput2)) + } + "logictype.temperatureoutput" => { + Ok(Self::LogicType(LogicType::TemperatureOutput)) + } + "logictype.temperatureoutput2" => { + Ok(Self::LogicType(LogicType::TemperatureOutput2)) + } + "logictype.temperaturesetting" => { + Ok(Self::LogicType(LogicType::TemperatureSetting)) + } "logictype.throttle" => Ok(Self::LogicType(LogicType::Throttle)), "logictype.thrust" => Ok(Self::LogicType(LogicType::Thrust)), "logictype.thrusttoweight" => Ok(Self::LogicType(LogicType::ThrustToWeight)), "logictype.time" => Ok(Self::LogicType(LogicType::Time)), - "logictype.timetodestination" => Ok(Self::LogicType(LogicType::TimeToDestination)), + "logictype.timetodestination" => { + Ok(Self::LogicType(LogicType::TimeToDestination)) + } "logictype.totalmoles" => Ok(Self::LogicType(LogicType::TotalMoles)), - "logictype.totalmolesinput" => Ok(Self::LogicType(LogicType::TotalMolesInput)), - "logictype.totalmolesinput2" => Ok(Self::LogicType(LogicType::TotalMolesInput2)), - "logictype.totalmolesoutput" => Ok(Self::LogicType(LogicType::TotalMolesOutput)), - "logictype.totalmolesoutput2" => Ok(Self::LogicType(LogicType::TotalMolesOutput2)), + "logictype.totalmolesinput" => { + Ok(Self::LogicType(LogicType::TotalMolesInput)) + } + "logictype.totalmolesinput2" => { + Ok(Self::LogicType(LogicType::TotalMolesInput2)) + } + "logictype.totalmolesoutput" => { + Ok(Self::LogicType(LogicType::TotalMolesOutput)) + } + "logictype.totalmolesoutput2" => { + Ok(Self::LogicType(LogicType::TotalMolesOutput2)) + } "logictype.totalquantity" => Ok(Self::LogicType(LogicType::TotalQuantity)), "logictype.trueanomaly" => Ok(Self::LogicType(LogicType::TrueAnomaly)), - "logictype.velocitymagnitude" => Ok(Self::LogicType(LogicType::VelocityMagnitude)), - "logictype.velocityrelativex" => Ok(Self::LogicType(LogicType::VelocityRelativeX)), - "logictype.velocityrelativey" => Ok(Self::LogicType(LogicType::VelocityRelativeY)), - "logictype.velocityrelativez" => Ok(Self::LogicType(LogicType::VelocityRelativeZ)), + "logictype.velocitymagnitude" => { + Ok(Self::LogicType(LogicType::VelocityMagnitude)) + } + "logictype.velocityrelativex" => { + Ok(Self::LogicType(LogicType::VelocityRelativeX)) + } + "logictype.velocityrelativey" => { + Ok(Self::LogicType(LogicType::VelocityRelativeY)) + } + "logictype.velocityrelativez" => { + Ok(Self::LogicType(LogicType::VelocityRelativeZ)) + } "logictype.velocityx" => Ok(Self::LogicType(LogicType::VelocityX)), "logictype.velocityy" => Ok(Self::LogicType(LogicType::VelocityY)), "logictype.velocityz" => Ok(Self::LogicType(LogicType::VelocityZ)), @@ -1407,31 +2038,33 @@ impl std::str::FromStr for BasicEnum { "printerinstruction.devicesetlock" => { Ok(Self::PrinterInstruction(PrinterInstruction::DeviceSetLock)) } - "printerinstruction.ejectallreagents" => Ok(Self::PrinterInstruction( - PrinterInstruction::EjectAllReagents, - )), + "printerinstruction.ejectallreagents" => { + Ok(Self::PrinterInstruction(PrinterInstruction::EjectAllReagents)) + } "printerinstruction.ejectreagent" => { Ok(Self::PrinterInstruction(PrinterInstruction::EjectReagent)) } "printerinstruction.executerecipe" => { Ok(Self::PrinterInstruction(PrinterInstruction::ExecuteRecipe)) } - "printerinstruction.jumpifnextinvalid" => Ok(Self::PrinterInstruction( - PrinterInstruction::JumpIfNextInvalid, - )), + "printerinstruction.jumpifnextinvalid" => { + Ok(Self::PrinterInstruction(PrinterInstruction::JumpIfNextInvalid)) + } "printerinstruction.jumptoaddress" => { Ok(Self::PrinterInstruction(PrinterInstruction::JumpToAddress)) } - "printerinstruction.missingrecipereagent" => Ok(Self::PrinterInstruction( - PrinterInstruction::MissingRecipeReagent, - )), - "printerinstruction.none" => Ok(Self::PrinterInstruction(PrinterInstruction::None)), + "printerinstruction.missingrecipereagent" => { + Ok(Self::PrinterInstruction(PrinterInstruction::MissingRecipeReagent)) + } + "printerinstruction.none" => { + Ok(Self::PrinterInstruction(PrinterInstruction::None)) + } "printerinstruction.stackpointer" => { Ok(Self::PrinterInstruction(PrinterInstruction::StackPointer)) } - "printerinstruction.waituntilnextvalid" => Ok(Self::PrinterInstruction( - PrinterInstruction::WaitUntilNextValid, - )), + "printerinstruction.waituntilnextvalid" => { + Ok(Self::PrinterInstruction(PrinterInstruction::WaitUntilNextValid)) + } "reentryprofile.high" => Ok(Self::ReEntryProfile(ReEntryProfile::High)), "reentryprofile.max" => Ok(Self::ReEntryProfile(ReEntryProfile::Max)), "reentryprofile.medium" => Ok(Self::ReEntryProfile(ReEntryProfile::Medium)), @@ -1482,7 +2115,9 @@ impl std::str::FromStr for BasicEnum { "slotclass.plant" => Ok(Self::SlotClass(Class::Plant)), "slotclass.programmablechip" => Ok(Self::SlotClass(Class::ProgrammableChip)), "slotclass.scanninghead" => Ok(Self::SlotClass(Class::ScanningHead)), - "slotclass.sensorprocessingunit" => Ok(Self::SlotClass(Class::SensorProcessingUnit)), + "slotclass.sensorprocessingunit" => { + Ok(Self::SlotClass(Class::SensorProcessingUnit)) + } "slotclass.soundcartridge" => Ok(Self::SlotClass(Class::SoundCartridge)), "slotclass.suit" => Ok(Self::SlotClass(Class::Suit)), "slotclass.suitmod" => Ok(Self::SlotClass(Class::SuitMod)), @@ -1490,27 +2125,31 @@ impl std::str::FromStr for BasicEnum { "slotclass.torpedo" => Ok(Self::SlotClass(Class::Torpedo)), "slotclass.uniform" => Ok(Self::SlotClass(Class::Uniform)), "slotclass.wreckage" => Ok(Self::SlotClass(Class::Wreckage)), - "sorterinstruction.filterprefabhashequals" => Ok(Self::SorterInstruction( - SorterInstruction::FilterPrefabHashEquals, - )), - "sorterinstruction.filterprefabhashnotequals" => Ok(Self::SorterInstruction( - SorterInstruction::FilterPrefabHashNotEquals, - )), - "sorterinstruction.filterquantitycompare" => Ok(Self::SorterInstruction( - SorterInstruction::FilterQuantityCompare, - )), - "sorterinstruction.filterslottypecompare" => Ok(Self::SorterInstruction( - SorterInstruction::FilterSlotTypeCompare, - )), - "sorterinstruction.filtersortingclasscompare" => Ok(Self::SorterInstruction( - SorterInstruction::FilterSortingClassCompare, - )), - "sorterinstruction.limitnextexecutionbycount" => Ok(Self::SorterInstruction( - SorterInstruction::LimitNextExecutionByCount, - )), - "sorterinstruction.none" => Ok(Self::SorterInstruction(SorterInstruction::None)), + "sorterinstruction.filterprefabhashequals" => { + Ok(Self::SorterInstruction(SorterInstruction::FilterPrefabHashEquals)) + } + "sorterinstruction.filterprefabhashnotequals" => { + Ok(Self::SorterInstruction(SorterInstruction::FilterPrefabHashNotEquals)) + } + "sorterinstruction.filterquantitycompare" => { + Ok(Self::SorterInstruction(SorterInstruction::FilterQuantityCompare)) + } + "sorterinstruction.filterslottypecompare" => { + Ok(Self::SorterInstruction(SorterInstruction::FilterSlotTypeCompare)) + } + "sorterinstruction.filtersortingclasscompare" => { + Ok(Self::SorterInstruction(SorterInstruction::FilterSortingClassCompare)) + } + "sorterinstruction.limitnextexecutionbycount" => { + Ok(Self::SorterInstruction(SorterInstruction::LimitNextExecutionByCount)) + } + "sorterinstruction.none" => { + Ok(Self::SorterInstruction(SorterInstruction::None)) + } "sortingclass.appliances" => Ok(Self::SortingClass(SortingClass::Appliances)), - "sortingclass.atmospherics" => Ok(Self::SortingClass(SortingClass::Atmospherics)), + "sortingclass.atmospherics" => { + Ok(Self::SortingClass(SortingClass::Atmospherics)) + } "sortingclass.clothing" => Ok(Self::SortingClass(SortingClass::Clothing)), "sortingclass.default" => Ok(Self::SortingClass(SortingClass::Default)), "sortingclass.food" => Ok(Self::SortingClass(SortingClass::Food)), @@ -1544,7 +2183,9 @@ impl std::str::FromStr for BasicEnum { "sound.highcarbondioxide" => Ok(Self::Sound(SoundAlert::HighCarbonDioxide)), "sound.intruderalert" => Ok(Self::Sound(SoundAlert::IntruderAlert)), "sound.liftoff" => Ok(Self::Sound(SoundAlert::LiftOff)), - "sound.malfunctiondetected" => Ok(Self::Sound(SoundAlert::MalfunctionDetected)), + "sound.malfunctiondetected" => { + Ok(Self::Sound(SoundAlert::MalfunctionDetected)) + } "sound.music1" => Ok(Self::Sound(SoundAlert::Music1)), "sound.music2" => Ok(Self::Sound(SoundAlert::Music2)), "sound.music3" => Ok(Self::Sound(SoundAlert::Music3)), @@ -1566,20 +2207,23 @@ impl std::str::FromStr for BasicEnum { "sound.two" => Ok(Self::Sound(SoundAlert::Two)), "sound.warning" => Ok(Self::Sound(SoundAlert::Warning)), "sound.welcome" => Ok(Self::Sound(SoundAlert::Welcome)), - "transmittermode.active" => Ok(Self::TransmitterMode(LogicTransmitterMode::Active)), - "transmittermode.passive" => Ok(Self::TransmitterMode(LogicTransmitterMode::Passive)), + "transmittermode.active" => { + Ok(Self::TransmitterMode(LogicTransmitterMode::Active)) + } + "transmittermode.passive" => { + Ok(Self::TransmitterMode(LogicTransmitterMode::Passive)) + } "vent.inward" => Ok(Self::Vent(VentDirection::Inward)), "vent.outward" => Ok(Self::Vent(VentDirection::Outward)), "equals" => Ok(Self::Unnamed(ConditionOperation::Equals)), "greater" => Ok(Self::Unnamed(ConditionOperation::Greater)), "less" => Ok(Self::Unnamed(ConditionOperation::Less)), "notequals" => Ok(Self::Unnamed(ConditionOperation::NotEquals)), - _ => Err(crate::errors::ParseError { - line: 0, - start: 0, - end, - msg: format!("Unknown enum '{}'", s), - }), + _ => { + Err(super::ParseError { + enm: s.to_string(), + }) + } } } } @@ -1606,7 +2250,7 @@ impl std::fmt::Display for BasicEnum { Self::Sound(enm) => write!(f, "Sound.{}", enm), Self::TransmitterMode(enm) => write!(f, "TransmitterMode.{}", enm), Self::Vent(enm) => write!(f, "Vent.{}", enm), - Self::Unnamed(enm) => write!(f, "{}", enm), + Self::Unnamed(enm) => write!(f, "_unnamed{}", enm), } } } diff --git a/stationeers_data/src/enums/prefabs.rs b/stationeers_data/src/enums/prefabs.rs new file mode 100644 index 0000000..e33b183 --- /dev/null +++ b/stationeers_data/src/enums/prefabs.rs @@ -0,0 +1,7686 @@ +use serde_derive::{Deserialize, Serialize}; +use strum::{AsRefStr, Display, EnumIter, EnumProperty, EnumString, FromRepr}; +#[derive( + Debug, + Display, + Clone, + Copy, + PartialEq, + Eq, + PartialOrd, + Ord, + Hash, + EnumString, + AsRefStr, + EnumProperty, + EnumIter, + FromRepr, + Serialize, + Deserialize +)] +#[strum(use_phf)] +#[repr(i32)] +pub enum StationpediaPrefab { + #[strum(serialize = "ItemKitGroundTelescope")] + #[strum(props(name = "Kit (Telescope)", desc = "", value = "-2140672772"))] + ItemKitGroundTelescope = -2140672772i32, + #[strum(serialize = "StructureSmallSatelliteDish")] + #[strum( + props( + name = "Small Satellite Dish", + desc = "This small communications unit can be used to communicate with nearby trade vessels.\n\n When connected to a Computer containing a Communications Motherboard motherboard, a Landingpad Center, and a Vending Machine, this allows Stationeers to contact traders. Adjust its horizontal and vertical attributes either directly or through logic.", + value = "-2138748650" + ) + )] + StructureSmallSatelliteDish = -2138748650i32, + #[strum(serialize = "StructureStairwellBackRight")] + #[strum(props(name = "Stairwell (Back Right)", desc = "", value = "-2128896573"))] + StructureStairwellBackRight = -2128896573i32, + #[strum(serialize = "StructureBench2")] + #[strum(props(name = "Bench (High Tech Style)", desc = "", value = "-2127086069"))] + StructureBench2 = -2127086069i32, + #[strum(serialize = "ItemLiquidPipeValve")] + #[strum( + props( + name = "Kit (Liquid Pipe Valve)", + desc = "This kit creates a Liquid Valve.", + value = "-2126113312" + ) + )] + ItemLiquidPipeValve = -2126113312i32, + #[strum(serialize = "ItemDisposableBatteryCharger")] + #[strum( + props( + name = "Disposable Battery Charger", + desc = "Consumable battery the recharges your suit battery. If used on a HEM-Droid it will recharge the HEM-Droids internal battery.", + value = "-2124435700" + ) + )] + ItemDisposableBatteryCharger = -2124435700i32, + #[strum(serialize = "StructureBatterySmall")] + #[strum( + props( + name = "Auxiliary Rocket Battery ", + desc = "0.Empty\n1.Critical\n2.VeryLow\n3.Low\n4.Medium\n5.High\n6.Full", + value = "-2123455080" + ) + )] + StructureBatterySmall = -2123455080i32, + #[strum(serialize = "StructureLiquidPipeAnalyzer")] + #[strum(props(name = "Liquid Pipe Analyzer", desc = "", value = "-2113838091"))] + StructureLiquidPipeAnalyzer = -2113838091i32, + #[strum(serialize = "ItemGasTankStorage")] + #[strum( + props( + name = "Kit (Canister Storage)", + desc = "This kit produces a Kit (Canister Storage) for refilling a Canister.", + value = "-2113012215" + ) + )] + ItemGasTankStorage = -2113012215i32, + #[strum(serialize = "StructureFrameCorner")] + #[strum( + props( + name = "Steel Frame (Corner)", + desc = "More durable than the Iron Frame, steel frames also offer several variations for more complex lattice constructions. \nWith a little patience and maneuvering, the corner frame's Gothic-inspired silhouette allows the creation of ogival arches and even more ambitious architecture, although they are not airtight and cannot be built on.", + value = "-2112390778" + ) + )] + StructureFrameCorner = -2112390778i32, + #[strum(serialize = "ItemPotatoBaked")] + #[strum(props(name = "Baked Potato", desc = "", value = "-2111886401"))] + ItemPotatoBaked = -2111886401i32, + #[strum(serialize = "ItemFlashingLight")] + #[strum(props(name = "Kit (Flashing Light)", desc = "", value = "-2107840748"))] + ItemFlashingLight = -2107840748i32, + #[strum(serialize = "ItemLiquidPipeVolumePump")] + #[strum(props(name = "Kit (Liquid Volume Pump)", desc = "", value = "-2106280569"))] + ItemLiquidPipeVolumePump = -2106280569i32, + #[strum(serialize = "StructureAirlock")] + #[strum( + props( + name = "Airlock", + desc = "The standard airlock is a powered portal that forms the main component of an airlock chamber. As long as the airlock is not locked, it can be manually opened using a crowbar.", + value = "-2105052344" + ) + )] + StructureAirlock = -2105052344i32, + #[strum(serialize = "ItemCannedCondensedMilk")] + #[strum( + props( + name = "Canned Condensed Milk", + desc = "Made in an Advanced Packaging Machine or Basic Packaging Machine, using Condensed Milk and an Empty Can, canned condensed milk is fairly high in nutrition, and does not decay.", + value = "-2104175091" + ) + )] + ItemCannedCondensedMilk = -2104175091i32, + #[strum(serialize = "ItemKitHydraulicPipeBender")] + #[strum( + props(name = "Kit (Hydraulic Pipe Bender)", desc = "", value = "-2098556089") + )] + ItemKitHydraulicPipeBender = -2098556089i32, + #[strum(serialize = "ItemKitLogicMemory")] + #[strum(props(name = "Kit (Logic Memory)", desc = "", value = "-2098214189"))] + ItemKitLogicMemory = -2098214189i32, + #[strum(serialize = "StructureInteriorDoorGlass")] + #[strum( + props( + name = "Interior Door Glass", + desc = "0.Operate\n1.Logic", + value = "-2096421875" + ) + )] + StructureInteriorDoorGlass = -2096421875i32, + #[strum(serialize = "StructureAirConditioner")] + #[strum( + props( + name = "Air Conditioner", + desc = "Built using the Kit (Atmospherics), the ExMin-designed air conditioner is used to raise or lower input gas temperature.\n\t \nThe unit has three pipe connections: input, output, and waste. Gas fed into the input will be heated or cooled to reach the target temperature, while the opposite will happen to gas on the waste network.\n\nMultiple Efficiency Multipliers can effect the amount of energy the Air Conditioner uses, and these can be view on the unit's green Information Panel. As the temperature difference between input and waste increases, the Temperature Differential Efficiency Multiplier will decrease. If input or waste temperature is extremely hot or cold, the Operational Temperature Efficiency will decrease. If the input or waste pipe has approach low pressures, the Pressure Efficiency will decrease.\n\nPipe Convection Radiators may be useful in bringing extreme pipe temperatures back towards normal world temperatures. \n \nFor more information on using the air conditioner, consult the temperature control Guides page.", + value = "-2087593337" + ) + )] + StructureAirConditioner = -2087593337i32, + #[strum(serialize = "StructureRocketMiner")] + #[strum( + props( + name = "Rocket Miner", + desc = "Gathers available resources at the rocket's current space location.", + value = "-2087223687" + ) + )] + StructureRocketMiner = -2087223687i32, + #[strum(serialize = "DynamicGPR")] + #[strum( + props( + name = "", + desc = "", + value = "-2085885850" + ) + )] + DynamicGpr = -2085885850i32, + #[strum(serialize = "UniformCommander")] + #[strum(props(name = "Uniform Commander", desc = "", value = "-2083426457"))] + UniformCommander = -2083426457i32, + #[strum(serialize = "StructureWindTurbine")] + #[strum( + props( + name = "Wind Turbine", + desc = "The Stationeers wind turbine was first designed by Norsec atmospheric engineers, looking to create a wind-driven power generation system that would operate even on exceedingly low atmosphere worlds. The ultra-light blades respond to exceedingly low atmospheric densities, while being strong enough to function even under huge strain in much more demanding environments.\nWhile the wind turbine is optimized to produce power (up to 500W) even on low atmosphere worlds, it performs best in denser environments. Output varies with wind speed and, during storms, may increase dramatically (up to 10,000W), so be careful to design your power networks with that in mind.", + value = "-2082355173" + ) + )] + StructureWindTurbine = -2082355173i32, + #[strum(serialize = "StructureInsulatedPipeTJunction")] + #[strum( + props( + name = "Insulated Pipe (T Junction)", + desc = "Insulated pipes greatly reduce heat loss from gases stored in them.", + value = "-2076086215" + ) + )] + StructureInsulatedPipeTJunction = -2076086215i32, + #[strum(serialize = "ItemPureIcePollutedWater")] + #[strum( + props( + name = "Pure Ice Polluted Water", + desc = "A frozen chunk of Polluted Water", + value = "-2073202179" + ) + )] + ItemPureIcePollutedWater = -2073202179i32, + #[strum(serialize = "RailingIndustrial02")] + #[strum( + props(name = "Railing Industrial (Type 2)", desc = "", value = "-2072792175") + )] + RailingIndustrial02 = -2072792175i32, + #[strum(serialize = "StructurePipeInsulatedLiquidCrossJunction")] + #[strum( + props( + name = "Insulated Liquid Pipe (Cross Junction)", + desc = "Liquid piping with very low temperature loss or gain.", + value = "-2068497073" + ) + )] + StructurePipeInsulatedLiquidCrossJunction = -2068497073i32, + #[strum(serialize = "ItemWeldingTorch")] + #[strum( + props( + name = "Welding Torch", + desc = "Stored in the standard issue Stationeers Tool Belt, the Arlite welding torch is used to construct a range of essential structures.\nAn upgraded version of the classic 'Zairo' model first manufactured by ExMin for modular space habitat assembly, the Arlite is powered by a single Canister (Fuel) and designed to function equally well in deep space and deep gravity wells.", + value = "-2066892079" + ) + )] + ItemWeldingTorch = -2066892079i32, + #[strum(serialize = "StructurePictureFrameThickMountPortraitSmall")] + #[strum( + props( + name = "Picture Frame Thick Mount Portrait Small", + desc = "", + value = "-2066653089" + ) + )] + StructurePictureFrameThickMountPortraitSmall = -2066653089i32, + #[strum(serialize = "Landingpad_DataConnectionPiece")] + #[strum( + props( + name = "Landingpad Data And Power", + desc = "Provides power to the landing pad. The data port must be connected to the data port of a computer with a communications motherboard for a trader to be called in to land.", + value = "-2066405918" + ) + )] + LandingpadDataConnectionPiece = -2066405918i32, + #[strum(serialize = "ItemKitPictureFrame")] + #[strum(props(name = "Kit Picture Frame", desc = "", value = "-2062364768"))] + ItemKitPictureFrame = -2062364768i32, + #[strum(serialize = "ItemMKIIArcWelder")] + #[strum(props(name = "Mk II Arc Welder", desc = "", value = "-2061979347"))] + ItemMkiiArcWelder = -2061979347i32, + #[strum(serialize = "StructureCompositeWindow")] + #[strum( + props( + name = "Composite Window", + desc = "Air-tight and resistant to extreme temperatures, composite walls come in several charming, near identical varieties - reflecting their designer's focus on form over function.", + value = "-2060571986" + ) + )] + StructureCompositeWindow = -2060571986i32, + #[strum(serialize = "ItemEmergencyDrill")] + #[strum(props(name = "Emergency Drill", desc = "", value = "-2052458905"))] + ItemEmergencyDrill = -2052458905i32, + #[strum(serialize = "Rover_MkI")] + #[strum( + props( + name = "Rover MkI", + desc = "A distant cousin of the jeep, the Mk I {Sinotai electric rover is one of the most simple and durable light vehicles in the known universe. Able to carry two passengers and cargo such as the Portable Gas Tank (Air) or , it is powered by up to three batteries, accepting everything including Battery Cell (Nuclear).\nA quad-array of hub-mounted electric engines propels the reinforced aluminium frame over most terrain and modest obstacles. While the Mk I is designed for stability in low-horizontality circumstances, if it rolls, try using your Crowbar to put it right way up.Connects to Logic Transmitter", + value = "-2049946335" + ) + )] + RoverMkI = -2049946335i32, + #[strum(serialize = "StructureSolarPanel")] + #[strum( + props( + name = "Solar Panel", + desc = "Sinotai's standard solar panels are used for generating power from sunlight. They can be connected to Logic systems, in order to track sunlight, but their reduced during storms and when damaged. You can repair these using some trusty Duct Tape.", + value = "-2045627372" + ) + )] + StructureSolarPanel = -2045627372i32, + #[strum(serialize = "CircuitboardShipDisplay")] + #[strum( + props( + name = "Ship Display", + desc = "When the original Stationeer Handbook collapsed under its own weight into a singularity, certain information was irretrievably lost. Amongst this mysterious corpus of knowledge is the exact purpose of the ship display board.", + value = "-2044446819" + ) + )] + CircuitboardShipDisplay = -2044446819i32, + #[strum(serialize = "StructureBench")] + #[strum( + props( + name = "Powered Bench", + desc = "When it's time to sit, nothing supports you like a bench. This bench is powered, so you can use appliances like the Microwave.", + value = "-2042448192" + ) + )] + StructureBench = -2042448192i32, + #[strum(serialize = "StructurePictureFrameThickLandscapeSmall")] + #[strum( + props( + name = "Picture Frame Thick Landscape Small", + desc = "", + value = "-2041566697" + ) + )] + StructurePictureFrameThickLandscapeSmall = -2041566697i32, + #[strum(serialize = "ItemKitLargeSatelliteDish")] + #[strum( + props(name = "Kit (Large Satellite Dish)", desc = "", value = "-2039971217") + )] + ItemKitLargeSatelliteDish = -2039971217i32, + #[strum(serialize = "ItemKitMusicMachines")] + #[strum(props(name = "Kit (Music Machines)", desc = "", value = "-2038889137"))] + ItemKitMusicMachines = -2038889137i32, + #[strum(serialize = "ItemStelliteGlassSheets")] + #[strum( + props( + name = "Stellite Glass Sheets", + desc = "A stronger glass substitute.", + value = "-2038663432" + ) + )] + ItemStelliteGlassSheets = -2038663432i32, + #[strum(serialize = "ItemKitVendingMachine")] + #[strum(props(name = "Kit (Vending Machine)", desc = "", value = "-2038384332"))] + ItemKitVendingMachine = -2038384332i32, + #[strum(serialize = "StructurePumpedLiquidEngine")] + #[strum( + props( + name = "Pumped Liquid Engine", + desc = "Liquid propellants bring greater efficiencies with Pumped Liquid Engine. Two inputs are provided so Stationeers can seperate their fuels, the Setting variable controls the mixing ratio of the inputs. The engine is designed to run on Liquid Volatiles and Liquid Oxygen, some Stationeers have reported excessive thrust values by switching to Liquid Nitrous Oxide", + value = "-2031440019" + ) + )] + StructurePumpedLiquidEngine = -2031440019i32, + #[strum(serialize = "StructurePictureFrameThinLandscapeSmall")] + #[strum( + props( + name = "Picture Frame Thin Landscape Small", + desc = "", + value = "-2024250974" + ) + )] + StructurePictureFrameThinLandscapeSmall = -2024250974i32, + #[strum(serialize = "StructureStacker")] + #[strum( + props( + name = "Stacker", + desc = "A stacker is an important part of any automated chute network. The Xigo ProKompile can be set manually or via logic, to make sure items passing through the stacker are maximized for your storage needs.\nThe ProKompile can stack a wide variety of things such as ingots, as well as splitting stacks into appropriate sizes as needed.", + value = "-2020231820" + ) + )] + StructureStacker = -2020231820i32, + #[strum(serialize = "ItemMKIIScrewdriver")] + #[strum( + props( + name = "Mk II Screwdriver", + desc = "This standard issue frictional adherence adjustor is a top of the line, bi-rotational model with a columnated uni-grip. It's definitely not just a screwdriver. Use it for construction and deconstruction of certain kits, and setting values on logic units. The MK II is more resistant to temperature and pressure.", + value = "-2015613246" + ) + )] + ItemMkiiScrewdriver = -2015613246i32, + #[strum(serialize = "StructurePressurePlateLarge")] + #[strum(props(name = "Trigger Plate (Large)", desc = "", value = "-2008706143"))] + StructurePressurePlateLarge = -2008706143i32, + #[strum(serialize = "StructurePipeLiquidCrossJunction5")] + #[strum( + props( + name = "Liquid Pipe (5-Way Junction)", + desc = "You can upgrade this pipe to an Insulated Liquid Pipe (5-Way Junction) using an Kit (Insulated Liquid Pipe) and a Wrench.", + value = "-2006384159" + ) + )] + StructurePipeLiquidCrossJunction5 = -2006384159i32, + #[strum(serialize = "ItemGasFilterWater")] + #[strum( + props( + name = "Filter (Water)", + desc = "Sinotai filters are used to capture various gases, which can be disposed of, or used elsewhere. Water can be collected by filtering smelted Ice (Water)", + value = "-1993197973" + ) + )] + ItemGasFilterWater = -1993197973i32, + #[strum(serialize = "SpaceShuttle")] + #[strum( + props( + name = "Space Shuttle", + desc = "An antiquated Sinotai transport craft, long since decommissioned.", + value = "-1991297271" + ) + )] + SpaceShuttle = -1991297271i32, + #[strum(serialize = "SeedBag_Fern")] + #[strum( + props( + name = "Fern Seeds", + desc = "Grow a Fern.", + value = "-1990600883" + ) + )] + SeedBagFern = -1990600883i32, + #[strum(serialize = "ItemSecurityCamera")] + #[strum( + props( + name = "Security Camera", + desc = "Security cameras can be paired with a Motion Sensor, then connected to a Console fitted with a Camera Display for that 'always watched' feeling.", + value = "-1981101032" + ) + )] + ItemSecurityCamera = -1981101032i32, + #[strum(serialize = "CardboardBox")] + #[strum(props(name = "Cardboard Box", desc = "", value = "-1976947556"))] + CardboardBox = -1976947556i32, + #[strum(serialize = "ItemSoundCartridgeSynth")] + #[strum(props(name = "Sound Cartridge Synth", desc = "", value = "-1971419310"))] + ItemSoundCartridgeSynth = -1971419310i32, + #[strum(serialize = "StructureCornerLocker")] + #[strum(props(name = "Corner Locker", desc = "", value = "-1968255729"))] + StructureCornerLocker = -1968255729i32, + #[strum(serialize = "StructureInsulatedPipeCorner")] + #[strum( + props( + name = "Insulated Pipe (Corner)", + desc = "Insulated pipes greatly reduce heat loss from gases stored in them.", + value = "-1967711059" + ) + )] + StructureInsulatedPipeCorner = -1967711059i32, + #[strum(serialize = "StructureWallArchCornerSquare")] + #[strum(props(name = "Wall (Arch Corner Square)", desc = "", value = "-1963016580"))] + StructureWallArchCornerSquare = -1963016580i32, + #[strum(serialize = "StructureControlChair")] + #[strum( + props( + name = "Control Chair", + desc = "Once, these chairs were the heart of space-going behemoths. Now, they're items of nostalgia built only by a handful of Stationeers with a sense of history. In other words, kitsch.", + value = "-1961153710" + ) + )] + StructureControlChair = -1961153710i32, + #[strum(serialize = "PortableComposter")] + #[strum( + props( + name = "Portable Composter", + desc = "A simple composting device, the basic composter creates Fertilizer out of organic matter. It accepts food, Decayed Food or Biomass. It requires a full Liquid Canister and a battery to operate, accelerating the natural composting process.\nWhen processing, it releases nitrogen and volatiles, as well a small amount of heat.\n\nCompost composition\nFertilizer is produced at a 1:3 ratio of fertilizer to ingredients. The fertilizer's effects on plants will vary depending on the respective proportions of its ingredients.\n\n- food increases PLANT YIELD up to two times\n- Decayed Food increases plant GROWTH SPEED up to two times\n- Biomass increases the NUMBER OF GROWTH CYCLES the fertilizer lasts for", + value = "-1958705204" + ) + )] + PortableComposter = -1958705204i32, + #[strum(serialize = "CartridgeGPS")] + #[strum(props(name = "GPS", desc = "", value = "-1957063345"))] + CartridgeGps = -1957063345i32, + #[strum(serialize = "StructureConsoleLED1x3")] + #[strum( + props( + name = "LED Display (Large)", + desc = "0.Default\n1.Percent\n2.Power", + value = "-1949054743" + ) + )] + StructureConsoleLed1X3 = -1949054743i32, + #[strum(serialize = "ItemDuctTape")] + #[strum( + props( + name = "Duct Tape", + desc = "In the distant past, one of Earth's great champions taught a generation of 'Fix-It People' that duct tape was the answer to any problem. Stationeers have demonstrated that this is truth holds strong, so long as the problem is a damaged Eva Suit, Jetpack Basic, Space Helmet, or even a Solar Panel.\nTo use on yourself: put duct tape in your active hand, hold RIGHT MOUSE BUTTON to automatically repair damage.", + value = "-1943134693" + ) + )] + ItemDuctTape = -1943134693i32, + #[strum(serialize = "DynamicLiquidCanisterEmpty")] + #[strum( + props( + name = "Portable Liquid Tank", + desc = "This portable tank stores liquid, and liquid only. You can bolt one to a Kit (Liquid Tank Connector) using a Wrench, then connect it to a pipe network to refill it. You can refill a Liquid Canister (Water) by attaching it to the tank's striped section. Or you could use a Wrench to attach it to a rocket and take it somewhere distant and dry, then feel good about yourself.", + value = "-1939209112" + ) + )] + DynamicLiquidCanisterEmpty = -1939209112i32, + #[strum(serialize = "ItemKitDeepMiner")] + #[strum(props(name = "Kit (Deep Miner)", desc = "", value = "-1935075707"))] + ItemKitDeepMiner = -1935075707i32, + #[strum(serialize = "ItemKitAutomatedOven")] + #[strum(props(name = "Kit (Automated Oven)", desc = "", value = "-1931958659"))] + ItemKitAutomatedOven = -1931958659i32, + #[strum(serialize = "MothershipCore")] + #[strum( + props( + name = "Mothership Core", + desc = "A relic of from an earlier era of space ambition, Sinotai's mothership cores formed the central element of a generation's space-going creations. While Sinotai's pivot to smaller, modular craft upset some purists, motherships continue to be built and maintained by dedicated enthusiasts.", + value = "-1930442922" + ) + )] + MothershipCore = -1930442922i32, + #[strum(serialize = "ItemKitSolarPanel")] + #[strum(props(name = "Kit (Solar Panel)", desc = "", value = "-1924492105"))] + ItemKitSolarPanel = -1924492105i32, + #[strum(serialize = "CircuitboardPowerControl")] + #[strum( + props( + name = "Power Control", + desc = "Under distant suns and demanding environments, Stationeer systems need to balance reliability, resilience and versatility. The power control board allows remote enabling and disabling of selected devices, disconnecting manual operation. \n \nThe circuit board has two modes: 'Link' switches all devices on or off; 'Toggle' switches each device to their alternate state. ", + value = "-1923778429" + ) + )] + CircuitboardPowerControl = -1923778429i32, + #[strum(serialize = "SeedBag_Tomato")] + #[strum( + props( + name = "Tomato Seeds", + desc = "Grow a Tomato.", + value = "-1922066841" + ) + )] + SeedBagTomato = -1922066841i32, + #[strum(serialize = "StructureChuteUmbilicalFemale")] + #[strum(props(name = "Umbilical Socket (Chute)", desc = "", value = "-1918892177"))] + StructureChuteUmbilicalFemale = -1918892177i32, + #[strum(serialize = "StructureMediumConvectionRadiator")] + #[strum( + props( + name = "Medium Convection Radiator", + desc = "A stand-alone radiator unit optimized for exchanging heat with its surrounding atmosphere.", + value = "-1918215845" + ) + )] + StructureMediumConvectionRadiator = -1918215845i32, + #[strum(serialize = "ItemGasFilterVolatilesInfinite")] + #[strum( + props( + name = "Catalytic Filter (Volatiles)", + desc = "A filter that selectively targets Volatiles. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle.", + value = "-1916176068" + ) + )] + ItemGasFilterVolatilesInfinite = -1916176068i32, + #[strum(serialize = "MotherboardSorter")] + #[strum( + props( + name = "Sorter Motherboard", + desc = "Motherboards are connected to Computers to perform various technical functions.\nThe Norsec-designed K-cops 10-10 sorter motherboard permits Stationeers to control which items a Sorter does, and does not, permit to pass.", + value = "-1908268220" + ) + )] + MotherboardSorter = -1908268220i32, + #[strum(serialize = "ItemSoundCartridgeDrums")] + #[strum(props(name = "Sound Cartridge Drums", desc = "", value = "-1901500508"))] + ItemSoundCartridgeDrums = -1901500508i32, + #[strum(serialize = "StructureFairingTypeA3")] + #[strum(props(name = "Fairing (Type A3)", desc = "", value = "-1900541738"))] + StructureFairingTypeA3 = -1900541738i32, + #[strum(serialize = "RailingElegant02")] + #[strum(props(name = "Railing Elegant (Type 2)", desc = "", value = "-1898247915"))] + RailingElegant02 = -1898247915i32, + #[strum(serialize = "ItemStelliteIngot")] + #[strum(props(name = "Ingot (Stellite)", desc = "", value = "-1897868623"))] + ItemStelliteIngot = -1897868623i32, + #[strum(serialize = "StructureSmallTableBacklessSingle")] + #[strum( + props(name = "Small (Table Backless Single)", desc = "", value = "-1897221677") + )] + StructureSmallTableBacklessSingle = -1897221677i32, + #[strum(serialize = "StructureHydraulicPipeBender")] + #[strum( + props( + name = "Hydraulic Pipe Bender", + desc = "A go-to tool for all your atmospheric and plumbing needs, the ExMin Atmoprinter will create everything from pipes, pumps and tanks, to vents and filters, ensuring your survival in any environment. Upgrade the Atmoprinter using a Pipe Bender Mod for additional recipes and faster processing speeds.", + value = "-1888248335" + ) + )] + StructureHydraulicPipeBender = -1888248335i32, + #[strum(serialize = "ItemWrench")] + #[strum( + props( + name = "Wrench", + desc = "One of humanity's enduring contributions to the cosmos, the wrench represents the essence of our species. A simple, effective and spiritually barren tool, use it to build and deconstruct a variety of structures", + value = "-1886261558" + ) + )] + ItemWrench = -1886261558i32, + #[strum(serialize = "SeedBag_SugarCane")] + #[strum(props(name = "Sugarcane Seeds", desc = "", value = "-1884103228"))] + SeedBagSugarCane = -1884103228i32, + #[strum(serialize = "ItemSoundCartridgeBass")] + #[strum(props(name = "Sound Cartridge Bass", desc = "", value = "-1883441704"))] + ItemSoundCartridgeBass = -1883441704i32, + #[strum(serialize = "ItemSprayCanGreen")] + #[strum( + props( + name = "Spray Paint (Green)", + desc = "Green is the color of life, and longing. Paradoxically, it's also the color of envy, and tolerance. It denotes sickness, youth, and wealth. But really, it's just what light does at around 500 billionths of a meter.", + value = "-1880941852" + ) + )] + ItemSprayCanGreen = -1880941852i32, + #[strum(serialize = "StructurePipeCrossJunction5")] + #[strum( + props( + name = "Pipe (5-Way Junction)", + desc = "You can upgrade this pipe to an Insulated Pipe (5-Way Junction) using an Kit (Insulated Pipe) and a Wrench.", + value = "-1877193979" + ) + )] + StructurePipeCrossJunction5 = -1877193979i32, + #[strum(serialize = "StructureSDBHopper")] + #[strum(props(name = "SDB Hopper", desc = "", value = "-1875856925"))] + StructureSdbHopper = -1875856925i32, + #[strum(serialize = "ItemMKIIMiningDrill")] + #[strum( + props( + name = "Mk II Mining Drill", + desc = "The handheld 'Topo' tri-cone rotary mining drill was made for one thing: quick digging. Modeled on a classic Recurso zero-g design, it functions equally well in vacuum and atmosphere, with cemented carbide bits to increase resilience and bearing life, and reduce spalling. As Jenk Murtons once said, 'The Topo don't stopo.' The MK II is more resistant to temperature and pressure.", + value = "-1875271296" + ) + )] + ItemMkiiMiningDrill = -1875271296i32, + #[strum(serialize = "Landingpad_TaxiPieceCorner")] + #[strum(props(name = "Landingpad Taxi Corner", desc = "", value = "-1872345847"))] + LandingpadTaxiPieceCorner = -1872345847i32, + #[strum(serialize = "ItemKitStairwell")] + #[strum(props(name = "Kit (Stairwell)", desc = "", value = "-1868555784"))] + ItemKitStairwell = -1868555784i32, + #[strum(serialize = "ItemKitVendingMachineRefrigerated")] + #[strum( + props( + name = "Kit (Vending Machine Refrigerated)", + desc = "", + value = "-1867508561" + ) + )] + ItemKitVendingMachineRefrigerated = -1867508561i32, + #[strum(serialize = "ItemKitGasUmbilical")] + #[strum(props(name = "Kit (Gas Umbilical)", desc = "", value = "-1867280568"))] + ItemKitGasUmbilical = -1867280568i32, + #[strum(serialize = "ItemBatteryCharger")] + #[strum( + props( + name = "Kit (Battery Charger)", + desc = "This kit produces a 5-slot Kit (Battery Charger).", + value = "-1866880307" + ) + )] + ItemBatteryCharger = -1866880307i32, + #[strum(serialize = "ItemMuffin")] + #[strum( + props( + name = "Muffin", + desc = "A delicious, semi-healthful snack, nothing comforts a Stationeer 800 million kilometers from home like a hand-made muffin.", + value = "-1864982322" + ) + )] + ItemMuffin = -1864982322i32, + #[strum(serialize = "ItemKitDynamicHydroponics")] + #[strum( + props(name = "Kit (Portable Hydroponics)", desc = "", value = "-1861154222") + )] + ItemKitDynamicHydroponics = -1861154222i32, + #[strum(serialize = "StructureWallLight")] + #[strum(props(name = "Wall Light", desc = "", value = "-1860064656"))] + StructureWallLight = -1860064656i32, + #[strum(serialize = "StructurePipeLiquidCorner")] + #[strum( + props( + name = "Liquid Pipe (Corner)", + desc = "You can upgrade this pipe to an Insulated Liquid Pipe (Corner) using an Kit (Insulated Liquid Pipe) and a Wrench.", + value = "-1856720921" + ) + )] + StructurePipeLiquidCorner = -1856720921i32, + #[strum(serialize = "ItemGasCanisterWater")] + #[strum(props(name = "Liquid Canister (Water)", desc = "", value = "-1854861891"))] + ItemGasCanisterWater = -1854861891i32, + #[strum(serialize = "ItemKitLaunchMount")] + #[strum(props(name = "Kit (Launch Mount)", desc = "", value = "-1854167549"))] + ItemKitLaunchMount = -1854167549i32, + #[strum(serialize = "DeviceLfoVolume")] + #[strum( + props( + name = "Low frequency oscillator", + desc = "The low frequency oscillator (or LFO) makes everything sound dark, twisted and crunchy by altering the shape of the waves output by a Logic Step Sequencer.\n \nTo set up an LFO:\n\n1. Place the LFO unit\n2. Set the LFO output to a Passive Speaker\n2. Set a sequencers' output to LFO - so the sequencer's signal runs through the LFO to a speaker.\n3. Place a Stop Watch or use an existing one, then use a Logic Writer to write it to the LFO.\n4. Use another logic writer to write the BPM to the LFO.\n5. You are ready. This is the future. You're in space. Make it sound cool.\n\nFor more info, check out the music page.", + value = "-1844430312" + ) + )] + DeviceLfoVolume = -1844430312i32, + #[strum(serialize = "StructureCableCornerH3")] + #[strum( + props(name = "Heavy Cable (3-Way Corner)", desc = "", value = "-1843379322") + )] + StructureCableCornerH3 = -1843379322i32, + #[strum(serialize = "StructureCompositeCladdingAngledCornerInner")] + #[strum( + props( + name = "Composite Cladding (Angled Corner Inner)", + desc = "", + value = "-1841871763" + ) + )] + StructureCompositeCladdingAngledCornerInner = -1841871763i32, + #[strum(serialize = "StructureHydroponicsTrayData")] + #[strum( + props( + name = "Hydroponics Device", + desc = "The Agrizero hydroponics device is the ideal vessel for growing a range of plantlife. It must be supplied with Water using a pipe network, and sufficient light to generate photosynthesis. \nIt can be automated using the Harvie. Note that unlike the Hydroponics Tray, these cannot be placed consecutively as they are considered devices rather than pure pipes. They do, however, allow data interrogation for logic systems.", + value = "-1841632400" + ) + )] + StructureHydroponicsTrayData = -1841632400i32, + #[strum(serialize = "ItemKitInsulatedPipeUtilityLiquid")] + #[strum( + props( + name = "Kit (Insulated Pipe Utility Liquid)", + desc = "", + value = "-1831558953" + ) + )] + ItemKitInsulatedPipeUtilityLiquid = -1831558953i32, + #[strum(serialize = "ItemKitWall")] + #[strum(props(name = "Kit (Wall)", desc = "", value = "-1826855889"))] + ItemKitWall = -1826855889i32, + #[strum(serialize = "ItemWreckageAirConditioner1")] + #[strum(props(name = "Wreckage Air Conditioner", desc = "", value = "-1826023284"))] + ItemWreckageAirConditioner1 = -1826023284i32, + #[strum(serialize = "ItemKitStirlingEngine")] + #[strum(props(name = "Kit (Stirling Engine)", desc = "", value = "-1821571150"))] + ItemKitStirlingEngine = -1821571150i32, + #[strum(serialize = "StructureGasUmbilicalMale")] + #[strum( + props( + name = "Umbilical (Gas)", + desc = "0.Left\n1.Center\n2.Right", + value = "-1814939203" + ) + )] + StructureGasUmbilicalMale = -1814939203i32, + #[strum(serialize = "StructureSleeperRight")] + #[strum( + props( + name = "Sleeper Right", + desc = "A horizontal variant of the sleeper. Will keep players hydrated and fed while they are logged out - as long as a breathable atmosphere is provided.", + value = "-1812330717" + ) + )] + StructureSleeperRight = -1812330717i32, + #[strum(serialize = "StructureManualHatch")] + #[strum( + props( + name = "Manual Hatch", + desc = "Can be welded using a Welding Torch or Arc Welder to lock it in the current state. Use the welder again to unlock.", + value = "-1808154199" + ) + )] + StructureManualHatch = -1808154199i32, + #[strum(serialize = "ItemOxite")] + #[strum( + props( + name = "Ice (Oxite)", + desc = "Oxite ice is largely composed of frozen Oxygen, and found on many planets in the Solar System. Highly valuable and sought after, not all planets a Stationeer visits will have some. \n\nHighly sensitive to temperature, oxite will begin to melt as soon as it is mined, unless the temperature is below zero, or it is stored in the Mining Belt, Mining Belt MK II or devices like the Ice Crusher or Fridge Small. When melting, oxite produces a mixture of Oxygen and Nitrogen.", + value = "-1805394113" + ) + )] + ItemOxite = -1805394113i32, + #[strum(serialize = "ItemKitLiquidTurboVolumePump")] + #[strum( + props( + name = "Kit (Turbo Volume Pump - Liquid)", + desc = "", + value = "-1805020897" + ) + )] + ItemKitLiquidTurboVolumePump = -1805020897i32, + #[strum(serialize = "StructureLiquidUmbilicalMale")] + #[strum( + props( + name = "Umbilical (Liquid)", + desc = "0.Left\n1.Center\n2.Right", + value = "-1798420047" + ) + )] + StructureLiquidUmbilicalMale = -1798420047i32, + #[strum(serialize = "StructurePipeMeter")] + #[strum( + props( + name = "Pipe Meter", + desc = "While the Stationeers program has, thus far, inspired little in the way of classical poetry, the following haiku was found etched, ironically, on a piece of pipe wreckage found on Vulcan:\n\"Humble pipe meter\nspeaks the truth, transmits pressure\nwithin any pipe\"", + value = "-1798362329" + ) + )] + StructurePipeMeter = -1798362329i32, + #[strum(serialize = "ItemKitUprightWindTurbine")] + #[strum( + props(name = "Kit (Upright Wind Turbine)", desc = "", value = "-1798044015") + )] + ItemKitUprightWindTurbine = -1798044015i32, + #[strum(serialize = "ItemPipeRadiator")] + #[strum( + props( + name = "Kit (Radiator)", + desc = "This kit creates a Pipe Convection Radiator.", + value = "-1796655088" + ) + )] + ItemPipeRadiator = -1796655088i32, + #[strum(serialize = "StructureOverheadShortCornerLocker")] + #[strum(props(name = "Overhead Corner Locker", desc = "", value = "-1794932560"))] + StructureOverheadShortCornerLocker = -1794932560i32, + #[strum(serialize = "ItemCableAnalyser")] + #[strum(props(name = "Kit (Cable Analyzer)", desc = "", value = "-1792787349"))] + ItemCableAnalyser = -1792787349i32, + #[strum(serialize = "Landingpad_LiquidConnectorOutwardPiece")] + #[strum( + props( + name = "Landingpad Liquid Output", + desc = "Pumps liquid purchased from a trader out of the landing pad. You can increase the landing pad's liquid storage capacity by adding more Landingpad Gas Storage to the landing pad.", + value = "-1788929869" + ) + )] + LandingpadLiquidConnectorOutwardPiece = -1788929869i32, + #[strum(serialize = "StructurePipeCorner")] + #[strum( + props( + name = "Pipe (Corner)", + desc = "You can upgrade this pipe to an Insulated Pipe (Corner) using an Kit (Insulated Pipe) and a Wrench.", + value = "-1785673561" + ) + )] + StructurePipeCorner = -1785673561i32, + #[strum(serialize = "ItemKitSensor")] + #[strum(props(name = "Kit (Sensors)", desc = "", value = "-1776897113"))] + ItemKitSensor = -1776897113i32, + #[strum(serialize = "ItemReusableFireExtinguisher")] + #[strum( + props( + name = "Fire Extinguisher (Reusable)", + desc = "Requires a canister filled with any inert liquid to opperate.", + value = "-1773192190" + ) + )] + ItemReusableFireExtinguisher = -1773192190i32, + #[strum(serialize = "CartridgeOreScanner")] + #[strum( + props( + name = "Ore Scanner", + desc = "When inserted into a Handheld Tablet the scanner will display minerals hidden underground on the tablet.", + value = "-1768732546" + ) + )] + CartridgeOreScanner = -1768732546i32, + #[strum(serialize = "ItemPipeVolumePump")] + #[strum( + props( + name = "Kit (Volume Pump)", + desc = "This kit creates a Volume Pump.", + value = "-1766301997" + ) + )] + ItemPipeVolumePump = -1766301997i32, + #[strum(serialize = "StructureGrowLight")] + #[strum( + props( + name = "Grow Light", + desc = "Agrizero's leading hydroponic lighting system, the GrowUp UV light supplements sunshine in low light or sun-distant conditions. The unit adds growability over the space of a grid, so requires proximate placement to work. ", + value = "-1758710260" + ) + )] + StructureGrowLight = -1758710260i32, + #[strum(serialize = "ItemHardSuit")] + #[strum( + props( + name = "Hardsuit", + desc = "Connects to Logic Transmitter", + value = "-1758310454" + ) + )] + ItemHardSuit = -1758310454i32, + #[strum(serialize = "StructureRailing")] + #[strum( + props( + name = "Railing Industrial (Type 1)", + desc = "\"Safety third.\"", + value = "-1756913871" + ) + )] + StructureRailing = -1756913871i32, + #[strum(serialize = "StructureCableJunction4Burnt")] + #[strum( + props(name = "Burnt Cable (4-Way Junction)", desc = "", value = "-1756896811") + )] + StructureCableJunction4Burnt = -1756896811i32, + #[strum(serialize = "ItemCreditCard")] + #[strum(props(name = "Credit Card", desc = "", value = "-1756772618"))] + ItemCreditCard = -1756772618i32, + #[strum(serialize = "ItemKitBlastDoor")] + #[strum(props(name = "Kit (Blast Door)", desc = "", value = "-1755116240"))] + ItemKitBlastDoor = -1755116240i32, + #[strum(serialize = "ItemKitAutolathe")] + #[strum(props(name = "Kit (Autolathe)", desc = "", value = "-1753893214"))] + ItemKitAutolathe = -1753893214i32, + #[strum(serialize = "ItemKitPassiveLargeRadiatorGas")] + #[strum(props(name = "Kit (Medium Radiator)", desc = "", value = "-1752768283"))] + ItemKitPassiveLargeRadiatorGas = -1752768283i32, + #[strum(serialize = "StructurePictureFrameThinMountLandscapeSmall")] + #[strum( + props( + name = "Picture Frame Thin Landscape Small", + desc = "", + value = "-1752493889" + ) + )] + StructurePictureFrameThinMountLandscapeSmall = -1752493889i32, + #[strum(serialize = "ItemPipeHeater")] + #[strum( + props( + name = "Pipe Heater Kit (Gas)", + desc = "Creates a Pipe Heater (Gas).", + value = "-1751627006" + ) + )] + ItemPipeHeater = -1751627006i32, + #[strum(serialize = "ItemPureIceLiquidPollutant")] + #[strum( + props( + name = "Pure Ice Liquid Pollutant", + desc = "A frozen chunk of pure Liquid Pollutant", + value = "-1748926678" + ) + )] + ItemPureIceLiquidPollutant = -1748926678i32, + #[strum(serialize = "ItemKitDrinkingFountain")] + #[strum(props(name = "Kit (Drinking Fountain)", desc = "", value = "-1743663875"))] + ItemKitDrinkingFountain = -1743663875i32, + #[strum(serialize = "DynamicGasCanisterEmpty")] + #[strum( + props( + name = "Portable Gas Tank", + desc = "Portable gas tanks store gas. To refill one, bolt it to a Kit (Tank Connector), then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or bad things happen. Once it's full, you can refill a Canister by attaching it to the tank's striped section. Or you could vent the tank's variable flow rate valve into a room and create an atmosphere.", + value = "-1741267161" + ) + )] + DynamicGasCanisterEmpty = -1741267161i32, + #[strum(serialize = "ItemSpaceCleaner")] + #[strum( + props( + name = "Space Cleaner", + desc = "There was a time when humanity really wanted to keep space clean. That time has passed.", + value = "-1737666461" + ) + )] + ItemSpaceCleaner = -1737666461i32, + #[strum(serialize = "ItemAuthoringToolRocketNetwork")] + #[strum( + props( + name = "", + desc = "", + value = "-1731627004" + ) + )] + ItemAuthoringToolRocketNetwork = -1731627004i32, + #[strum(serialize = "ItemSensorProcessingUnitMesonScanner")] + #[strum( + props( + name = "Sensor Processing Unit (T-Ray Scanner)", + desc = "The T-Ray Scanner Sensor Processing Unit can be inserted into the Sensor Lenses to show an overlay of pipes and cables. This can be useful when building behind walls or other structures.", + value = "-1730464583" + ) + )] + ItemSensorProcessingUnitMesonScanner = -1730464583i32, + #[strum(serialize = "ItemWaterWallCooler")] + #[strum(props(name = "Kit (Liquid Wall Cooler)", desc = "", value = "-1721846327"))] + ItemWaterWallCooler = -1721846327i32, + #[strum(serialize = "ItemPureIceLiquidCarbonDioxide")] + #[strum( + props( + name = "Pure Ice Liquid Carbon Dioxide", + desc = "A frozen chunk of pure Liquid Carbon Dioxide", + value = "-1715945725" + ) + )] + ItemPureIceLiquidCarbonDioxide = -1715945725i32, + #[strum(serialize = "AccessCardRed")] + #[strum(props(name = "Access Card (Red)", desc = "", value = "-1713748313"))] + AccessCardRed = -1713748313i32, + #[strum(serialize = "DynamicGasCanisterAir")] + #[strum( + props( + name = "Portable Gas Tank (Air)", + desc = "Portable gas tanks do one thing: store gas. But there's lots you can do with them. To refill the tank, bolt it to a Kit (Tank Connector), then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or bad things happen. Once it's full, you can refill a Canister (Oxygen) by attaching it to the tank's striped section. Or you could vent the tank's variable flow rate valve into a room and create an atmosphere. They also attach to rovers and rockets. Alternatively, kick it over and practice barrel rolling. The possibilities are endless.", + value = "-1713611165" + ) + )] + DynamicGasCanisterAir = -1713611165i32, + #[strum(serialize = "StructureMotionSensor")] + #[strum( + props( + name = "Motion Sensor", + desc = "Originally developed to monitor dance marathons, the motion sensor can also be connected to Logic systems for security purposes, automatic lighting, doors and various other applications.\nThe sensor activates whenever a player enters the grid it is placed on.", + value = "-1713470563" + ) + )] + StructureMotionSensor = -1713470563i32, + #[strum(serialize = "ItemCookedPowderedEggs")] + #[strum( + props( + name = "Powdered Eggs", + desc = "A high-nutrient cooked food, which can be canned.", + value = "-1712264413" + ) + )] + ItemCookedPowderedEggs = -1712264413i32, + #[strum(serialize = "ItemGasCanisterNitrousOxide")] + #[strum(props(name = "Gas Canister (Sleeping)", desc = "", value = "-1712153401"))] + ItemGasCanisterNitrousOxide = -1712153401i32, + #[strum(serialize = "ItemKitHeatExchanger")] + #[strum(props(name = "Kit Heat Exchanger", desc = "", value = "-1710540039"))] + ItemKitHeatExchanger = -1710540039i32, + #[strum(serialize = "ItemPureIceNitrogen")] + #[strum( + props( + name = "Pure Ice Nitrogen", + desc = "A frozen chunk of pure Nitrogen", + value = "-1708395413" + ) + )] + ItemPureIceNitrogen = -1708395413i32, + #[strum(serialize = "ItemKitPipeRadiatorLiquid")] + #[strum( + props(name = "Kit (Pipe Radiator Liquid)", desc = "", value = "-1697302609") + )] + ItemKitPipeRadiatorLiquid = -1697302609i32, + #[strum(serialize = "StructureInLineTankGas1x1")] + #[strum( + props( + name = "In-Line Tank Small Gas", + desc = "A small expansion tank that increases the volume of a pipe network.", + value = "-1693382705" + ) + )] + StructureInLineTankGas1X1 = -1693382705i32, + #[strum(serialize = "SeedBag_Rice")] + #[strum( + props( + name = "Rice Seeds", + desc = "Grow some Rice.", + value = "-1691151239" + ) + )] + SeedBagRice = -1691151239i32, + #[strum(serialize = "StructurePictureFrameThickPortraitLarge")] + #[strum( + props( + name = "Picture Frame Thick Portrait Large", + desc = "", + value = "-1686949570" + ) + )] + StructurePictureFrameThickPortraitLarge = -1686949570i32, + #[strum(serialize = "ApplianceDeskLampLeft")] + #[strum(props(name = "Appliance Desk Lamp Left", desc = "", value = "-1683849799"))] + ApplianceDeskLampLeft = -1683849799i32, + #[strum(serialize = "ItemWreckageWallCooler1")] + #[strum(props(name = "Wreckage Wall Cooler", desc = "", value = "-1682930158"))] + ItemWreckageWallCooler1 = -1682930158i32, + #[strum(serialize = "StructureGasUmbilicalFemale")] + #[strum(props(name = "Umbilical Socket (Gas)", desc = "", value = "-1680477930"))] + StructureGasUmbilicalFemale = -1680477930i32, + #[strum(serialize = "ItemGasFilterWaterInfinite")] + #[strum( + props( + name = "Catalytic Filter (Water)", + desc = "A filter that selectively targets Water. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle.", + value = "-1678456554" + ) + )] + ItemGasFilterWaterInfinite = -1678456554i32, + #[strum(serialize = "StructurePassthroughHeatExchangerGasToGas")] + #[strum( + props( + name = "CounterFlow Heat Exchanger - Gas + Gas", + desc = "Exchange heat from one pipe network to another. By drawing down the pressure of the outputs with a pump or regulator and regulating input pressures, the temperatures of two counterflowing networks can be effectively exchanged.\n Balancing the throughput of both inputs is key to creating a good exhange of temperatures.", + value = "-1674187440" + ) + )] + StructurePassthroughHeatExchangerGasToGas = -1674187440i32, + #[strum(serialize = "StructureAutomatedOven")] + #[strum(props(name = "Automated Oven", desc = "", value = "-1672404896"))] + StructureAutomatedOven = -1672404896i32, + #[strum(serialize = "StructureElectrolyzer")] + #[strum( + props( + name = "Electrolyzer", + desc = "The Norsec-designed Electrolyzer splits Water into hydrogen and Oxygen. Employing unknown proprietary technology, the device uses water's latent heat as the energy to drive the electrosis process. If there is a downside to this near-miraculous fission, it's that the device is limited by the quantity of power available, which is used to maintain the temperature output. In other words, the machine works best with hot gas.", + value = "-1668992663" + ) + )] + StructureElectrolyzer = -1668992663i32, + #[strum(serialize = "MonsterEgg")] + #[strum( + props( + name = "", + desc = "", + value = "-1667675295" + ) + )] + MonsterEgg = -1667675295i32, + #[strum(serialize = "ItemMiningDrillHeavy")] + #[strum( + props( + name = "Mining Drill (Heavy)", + desc = "Sometimes mining trips require something a little bigger to bring home the goods. This scaled up version of the Recurso 'Topo' design Mining Drill can literally move mountains. The heavy mining drill will remove more ground and mine ore more quickly than the standard mining drill. The heavy mining drill is also resilient to temperature and pressure. So no matter what planet or extreme weather conditions may be present, the Recurso heavy mining drill will get the job done.", + value = "-1663349918" + ) + )] + ItemMiningDrillHeavy = -1663349918i32, + #[strum(serialize = "ItemAstroloySheets")] + #[strum(props(name = "Astroloy Sheets", desc = "", value = "-1662476145"))] + ItemAstroloySheets = -1662476145i32, + #[strum(serialize = "ItemWreckageTurbineGenerator1")] + #[strum( + props(name = "Wreckage Turbine Generator", desc = "", value = "-1662394403") + )] + ItemWreckageTurbineGenerator1 = -1662394403i32, + #[strum(serialize = "ItemMiningBackPack")] + #[strum(props(name = "Mining Backpack", desc = "", value = "-1650383245"))] + ItemMiningBackPack = -1650383245i32, + #[strum(serialize = "ItemSprayCanGrey")] + #[strum( + props( + name = "Spray Paint (Grey)", + desc = "Arguably the most popular color in the universe, grey was invented so designers had something to do.", + value = "-1645266981" + ) + )] + ItemSprayCanGrey = -1645266981i32, + #[strum(serialize = "ItemReagentMix")] + #[strum( + props( + name = "Reagent Mix", + desc = "Reagent mix is pure potential. A slurry of undifferentiated ores, it is output by the Recycler and can be fed into the Centrifuge to separate and recover the individual materials. Reagent mix is also output by the Furnace when the current contents are ejected without smelting a specific ingot.", + value = "-1641500434" + ) + )] + ItemReagentMix = -1641500434i32, + #[strum(serialize = "CartridgeAccessController")] + #[strum( + props(name = "Cartridge (Access Controller)", desc = "", value = "-1634532552") + )] + CartridgeAccessController = -1634532552i32, + #[strum(serialize = "StructureRecycler")] + #[strum( + props( + name = "Recycler", + desc = "A device for collecting the raw resources while destroying an item. Produces Reagent Mix containing packages of reagents. Pass these through the Centrifuge to gain back the source ores. Plants and organic matter passed through will create Biomass, which when passed through the Centrifuge will produce Biomass.", + value = "-1633947337" + ) + )] + StructureRecycler = -1633947337i32, + #[strum(serialize = "StructureSmallTableBacklessDouble")] + #[strum( + props(name = "Small (Table Backless Double)", desc = "", value = "-1633000411") + )] + StructureSmallTableBacklessDouble = -1633000411i32, + #[strum(serialize = "ItemKitRocketGasFuelTank")] + #[strum( + props(name = "Kit (Rocket Gas Fuel Tank)", desc = "", value = "-1629347579") + )] + ItemKitRocketGasFuelTank = -1629347579i32, + #[strum(serialize = "StructureStairwellFrontPassthrough")] + #[strum( + props(name = "Stairwell (Front Passthrough)", desc = "", value = "-1625452928") + )] + StructureStairwellFrontPassthrough = -1625452928i32, + #[strum(serialize = "StructureCableJunctionBurnt")] + #[strum(props(name = "Burnt Cable (Junction)", desc = "", value = "-1620686196"))] + StructureCableJunctionBurnt = -1620686196i32, + #[strum(serialize = "ItemKitPipe")] + #[strum(props(name = "Kit (Pipe)", desc = "", value = "-1619793705"))] + ItemKitPipe = -1619793705i32, + #[strum(serialize = "ItemPureIce")] + #[strum( + props( + name = "Pure Ice Water", + desc = "A frozen chunk of pure Water", + value = "-1616308158" + ) + )] + ItemPureIce = -1616308158i32, + #[strum(serialize = "StructureBasketHoop")] + #[strum(props(name = "Basket Hoop", desc = "", value = "-1613497288"))] + StructureBasketHoop = -1613497288i32, + #[strum(serialize = "StructureWallPaddedThinNoBorder")] + #[strum( + props(name = "Wall (Padded Thin No Border)", desc = "", value = "-1611559100") + )] + StructureWallPaddedThinNoBorder = -1611559100i32, + #[strum(serialize = "StructureTankBig")] + #[strum(props(name = "Large Tank", desc = "", value = "-1606848156"))] + StructureTankBig = -1606848156i32, + #[strum(serialize = "StructureInsulatedTankConnectorLiquid")] + #[strum( + props(name = "Insulated Tank Connector Liquid", desc = "", value = "-1602030414") + )] + StructureInsulatedTankConnectorLiquid = -1602030414i32, + #[strum(serialize = "ItemKitTurbineGenerator")] + #[strum(props(name = "Kit (Turbine Generator)", desc = "", value = "-1590715731"))] + ItemKitTurbineGenerator = -1590715731i32, + #[strum(serialize = "ItemKitCrateMkII")] + #[strum(props(name = "Kit (Crate Mk II)", desc = "", value = "-1585956426"))] + ItemKitCrateMkIi = -1585956426i32, + #[strum(serialize = "StructureRefrigeratedVendingMachine")] + #[strum( + props( + name = "Refrigerated Vending Machine", + desc = "The refrigerated OmniKool vending machine is an advanced version of the standard Vending Machine, which maintains an optimum pressure and constant temperature of -130 degrees C, to prevent food spoilage. It can hold up to 100 stacks.\nThe OmniKool also has an in-built Stacker, allowing players to set the stack sizes of any items ADDED to the device. The unit's default stack size is 50.\nNOTE: altering stack sizes DOES NOT update existing stacks within the machine, only those subsequently added. ", + value = "-1577831321" + ) + )] + StructureRefrigeratedVendingMachine = -1577831321i32, + #[strum(serialize = "ItemFlowerBlue")] + #[strum(props(name = "Flower (Blue)", desc = "", value = "-1573623434"))] + ItemFlowerBlue = -1573623434i32, + #[strum(serialize = "ItemWallCooler")] + #[strum( + props( + name = "Kit (Wall Cooler)", + desc = "This kit creates a Wall Cooler.", + value = "-1567752627" + ) + )] + ItemWallCooler = -1567752627i32, + #[strum(serialize = "StructureSolarPanel45")] + #[strum( + props( + name = "Solar Panel (Angled)", + desc = "Sinotai basic solar panels generate power from sunlight, sitting at 45 degrees to the ground. Their efficiency is reduced during storms and when damaged. You can repair these using some trusty Duct Tape.", + value = "-1554349863" + ) + )] + StructureSolarPanel45 = -1554349863i32, + #[strum(serialize = "ItemGasCanisterPollutants")] + #[strum(props(name = "Canister (Pollutants)", desc = "", value = "-1552586384"))] + ItemGasCanisterPollutants = -1552586384i32, + #[strum(serialize = "CartridgeAtmosAnalyser")] + #[strum( + props( + name = "Atmos Analyzer", + desc = "The Lorenz atmos analyzer is a multi-functional mass-spectrometer designed by ExMin for use with the OreCore Handheld Tablet. It displays the pressure, concentration and molar quantity of gas in rooms, tanks, or pipe networks.", + value = "-1550278665" + ) + )] + CartridgeAtmosAnalyser = -1550278665i32, + #[strum(serialize = "StructureWallPaddedArchLightsFittings")] + #[strum( + props( + name = "Wall (Padded Arch Lights Fittings)", + desc = "", + value = "-1546743960" + ) + )] + StructureWallPaddedArchLightsFittings = -1546743960i32, + #[strum(serialize = "StructureSolarPanelDualReinforced")] + #[strum( + props( + name = "Solar Panel (Heavy Dual)", + desc = "This solar panel is resistant to storm damage.", + value = "-1545574413" + ) + )] + StructureSolarPanelDualReinforced = -1545574413i32, + #[strum(serialize = "StructureCableCorner4")] + #[strum(props(name = "Cable (4-Way Corner)", desc = "", value = "-1542172466"))] + StructureCableCorner4 = -1542172466i32, + #[strum(serialize = "StructurePressurePlateSmall")] + #[strum(props(name = "Trigger Plate (Small)", desc = "", value = "-1536471028"))] + StructurePressurePlateSmall = -1536471028i32, + #[strum(serialize = "StructureFlashingLight")] + #[strum( + props( + name = "Flashing Light", + desc = "Few objects or ideas are as clearly and transparently named as the Flashing Light, although fans of scrupulous accuracy have been known to refer to it by its full, official title: 'Default Yellow Flashing Light'.", + value = "-1535893860" + ) + )] + StructureFlashingLight = -1535893860i32, + #[strum(serialize = "StructureFuselageTypeA2")] + #[strum(props(name = "Fuselage (Type A2)", desc = "", value = "-1533287054"))] + StructureFuselageTypeA2 = -1533287054i32, + #[strum(serialize = "ItemPipeDigitalValve")] + #[strum( + props( + name = "Kit (Digital Valve)", + desc = "This kit creates a Digital Valve.", + value = "-1532448832" + ) + )] + ItemPipeDigitalValve = -1532448832i32, + #[strum(serialize = "StructureCableJunctionH5")] + #[strum( + props(name = "Heavy Cable (5-Way Junction)", desc = "", value = "-1530571426") + )] + StructureCableJunctionH5 = -1530571426i32, + #[strum(serialize = "StructureFlagSmall")] + #[strum(props(name = "Small Flag", desc = "", value = "-1529819532"))] + StructureFlagSmall = -1529819532i32, + #[strum(serialize = "StopWatch")] + #[strum(props(name = "Stop Watch", desc = "", value = "-1527229051"))] + StopWatch = -1527229051i32, + #[strum(serialize = "ItemUraniumOre")] + #[strum( + props( + name = "Ore (Uranium)", + desc = "In 1934, Enrico Fermi noticed that bombarding uranium with neutrons produced a burst of beta rays, and a new material. This process was named 'nuclear fission', and resulted in cheap energy, the Cold War, and countless thousand deaths. While reasonably common throughout the Solar System, Stationeers are wary of the material.", + value = "-1516581844" + ) + )] + ItemUraniumOre = -1516581844i32, + #[strum(serialize = "Landingpad_ThreshholdPiece")] + #[strum(props(name = "Landingpad Threshhold", desc = "", value = "-1514298582"))] + LandingpadThreshholdPiece = -1514298582i32, + #[strum(serialize = "ItemFlowerGreen")] + #[strum(props(name = "Flower (Green)", desc = "", value = "-1513337058"))] + ItemFlowerGreen = -1513337058i32, + #[strum(serialize = "StructureCompositeCladdingAngled")] + #[strum( + props(name = "Composite Cladding (Angled)", desc = "", value = "-1513030150") + )] + StructureCompositeCladdingAngled = -1513030150i32, + #[strum(serialize = "StructureChairThickSingle")] + #[strum(props(name = "Chair (Thick Single)", desc = "", value = "-1510009608"))] + StructureChairThickSingle = -1510009608i32, + #[strum(serialize = "StructureInsulatedPipeCrossJunction5")] + #[strum( + props( + name = "Insulated Pipe (5-Way Junction)", + desc = "Insulated pipes greatly reduce heat loss from gases stored in them.", + value = "-1505147578" + ) + )] + StructureInsulatedPipeCrossJunction5 = -1505147578i32, + #[strum(serialize = "ItemNitrice")] + #[strum( + props( + name = "Ice (Nitrice)", + desc = "Nitrice is the nickname given to solid Nitrogen Ice, and found on many planets and moons in the Solar System. Given the inert nature of the Nitrogen it produces, the ice is useful when making breathable atmospheres with low flammability.\n\nHighly sensitive to temperature, nitrice will begin to melt as soon as it is mined, unless the temperature is below zero, or it is stored in the Mining Belt, Mining Belt MK II or devices like the Ice Crusher or Fridge Small.", + value = "-1499471529" + ) + )] + ItemNitrice = -1499471529i32, + #[strum(serialize = "StructureCargoStorageSmall")] + #[strum(props(name = "Cargo Storage (Small)", desc = "", value = "-1493672123"))] + StructureCargoStorageSmall = -1493672123i32, + #[strum(serialize = "StructureLogicCompare")] + #[strum( + props( + name = "Logic Compare", + desc = "0.Equals\n1.Greater\n2.Less\n3.NotEquals", + value = "-1489728908" + ) + )] + StructureLogicCompare = -1489728908i32, + #[strum(serialize = "Landingpad_TaxiPieceStraight")] + #[strum(props(name = "Landingpad Taxi Straight", desc = "", value = "-1477941080"))] + LandingpadTaxiPieceStraight = -1477941080i32, + #[strum(serialize = "StructurePassthroughHeatExchangerLiquidToLiquid")] + #[strum( + props( + name = "CounterFlow Heat Exchanger - Liquid + Liquid", + desc = "Exchange heat from one pipe network to another. By drawing down the pressure of the outputs with a pump or regulator and regulating input pressures, the temperatures of two counterflowing networks can be effectively exchanged.\n Balancing the throughput of both inputs is key to creating a good exchange of temperatures.", + value = "-1472829583" + ) + )] + StructurePassthroughHeatExchangerLiquidToLiquid = -1472829583i32, + #[strum(serialize = "ItemKitCompositeCladding")] + #[strum(props(name = "Kit (Cladding)", desc = "", value = "-1470820996"))] + ItemKitCompositeCladding = -1470820996i32, + #[strum(serialize = "StructureChuteInlet")] + #[strum( + props( + name = "Chute Inlet", + desc = "The aim for any Stationeer is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps.\nThe chute inlet is an aperture by which items can be introduced to import/export networks. Note that its origins in zero-gravity mining means chute inlets are unpowered and permanently open, rather than interactable, allowing objects to be thrown in. They can be connected to logic systems to monitor throughput.", + value = "-1469588766" + ) + )] + StructureChuteInlet = -1469588766i32, + #[strum(serialize = "StructureSleeper")] + #[strum(props(name = "Sleeper", desc = "", value = "-1467449329"))] + StructureSleeper = -1467449329i32, + #[strum(serialize = "CartridgeElectronicReader")] + #[strum(props(name = "eReader", desc = "", value = "-1462180176"))] + CartridgeElectronicReader = -1462180176i32, + #[strum(serialize = "StructurePictureFrameThickMountPortraitLarge")] + #[strum( + props( + name = "Picture Frame Thick Mount Portrait Large", + desc = "", + value = "-1459641358" + ) + )] + StructurePictureFrameThickMountPortraitLarge = -1459641358i32, + #[strum(serialize = "ItemSteelFrames")] + #[strum( + props( + name = "Steel Frames", + desc = "An advanced and stronger version of Iron Frames, steel frames are placed by right-clicking. To complete construction, use Steel Sheets and a Welding Torch in your active hand.", + value = "-1448105779" + ) + )] + ItemSteelFrames = -1448105779i32, + #[strum(serialize = "StructureChuteFlipFlopSplitter")] + #[strum( + props( + name = "Chute Flip Flop Splitter", + desc = "A chute that toggles between two outputs", + value = "-1446854725" + ) + )] + StructureChuteFlipFlopSplitter = -1446854725i32, + #[strum(serialize = "StructurePictureFrameThickLandscapeLarge")] + #[strum( + props( + name = "Picture Frame Thick Landscape Large", + desc = "", + value = "-1434523206" + ) + )] + StructurePictureFrameThickLandscapeLarge = -1434523206i32, + #[strum(serialize = "ItemKitAdvancedComposter")] + #[strum(props(name = "Kit (Advanced Composter)", desc = "", value = "-1431998347"))] + ItemKitAdvancedComposter = -1431998347i32, + #[strum(serialize = "StructureLiquidTankBigInsulated")] + #[strum(props(name = "Insulated Liquid Tank Big", desc = "", value = "-1430440215"))] + StructureLiquidTankBigInsulated = -1430440215i32, + #[strum(serialize = "StructureEvaporationChamber")] + #[strum( + props( + name = "Evaporation Chamber", + desc = "A device for safely evaporating liquids into gasses. Liquids and Gasses will both exist safely inside the device. Lowering the pressure target of the in-built back pressure regulator using the setting wheel will change the boiling temperature of liquids inside.\n The secondary gas input on the left is a heat-exchanger input and allows for heat exchange between the secondary input pipe and the internal atmosphere of the Evaporation Chamber. \n Paired with Condensation Chamber Stationeers can exploit the phase change properties of gases to build a DIY air conditioner.", + value = "-1429782576" + ) + )] + StructureEvaporationChamber = -1429782576i32, + #[strum(serialize = "StructureWallGeometryTMirrored")] + #[strum( + props(name = "Wall (Geometry T Mirrored)", desc = "", value = "-1427845483") + )] + StructureWallGeometryTMirrored = -1427845483i32, + #[strum(serialize = "KitchenTableShort")] + #[strum(props(name = "Kitchen Table (Short)", desc = "", value = "-1427415566"))] + KitchenTableShort = -1427415566i32, + #[strum(serialize = "StructureChairRectangleSingle")] + #[strum(props(name = "Chair (Rectangle Single)", desc = "", value = "-1425428917"))] + StructureChairRectangleSingle = -1425428917i32, + #[strum(serialize = "StructureTransformer")] + #[strum( + props( + name = "Transformer (Large)", + desc = "The large Norsec transformer is a critical component of extended electrical networks, controlling the maximum power that will flow down a cable. To prevent overloading, output can be set from 0 to 50,000W. \nNote that transformers operate as data isolators, preventing data flowing into any network beyond it.", + value = "-1423212473" + ) + )] + StructureTransformer = -1423212473i32, + #[strum(serialize = "StructurePictureFrameThinLandscapeLarge")] + #[strum( + props( + name = "Picture Frame Thin Landscape Large", + desc = "", + value = "-1418288625" + ) + )] + StructurePictureFrameThinLandscapeLarge = -1418288625i32, + #[strum(serialize = "StructureCompositeCladdingAngledCornerInnerLong")] + #[strum( + props( + name = "Composite Cladding (Angled Corner Inner Long)", + desc = "", + value = "-1417912632" + ) + )] + StructureCompositeCladdingAngledCornerInnerLong = -1417912632i32, + #[strum(serialize = "ItemPlantEndothermic_Genepool2")] + #[strum( + props( + name = "Winterspawn (Beta variant)", + desc = "Agrizero's Winterspawn atmospheric bio-processor is a recent addition to their catalog of genespliced environmental decorations. Using ambient heat to split Water into Volatiles and Oxygen, the Winterspawn cools its surroundings when supplied with sufficient Nitrogen. The beta variant has a peak cooling and electrolysis capacity of 150Watts and is most efficient operating in air temperatures of 14 to 24 Degrees Celsius.", + value = "-1414203269" + ) + )] + ItemPlantEndothermicGenepool2 = -1414203269i32, + #[strum(serialize = "ItemFlowerOrange")] + #[strum(props(name = "Flower (Orange)", desc = "", value = "-1411986716"))] + ItemFlowerOrange = -1411986716i32, + #[strum(serialize = "AccessCardBlue")] + #[strum(props(name = "Access Card (Blue)", desc = "", value = "-1411327657"))] + AccessCardBlue = -1411327657i32, + #[strum(serialize = "StructureWallSmallPanelsOpen")] + #[strum(props(name = "Wall (Small Panels Open)", desc = "", value = "-1407480603"))] + StructureWallSmallPanelsOpen = -1407480603i32, + #[strum(serialize = "ItemNickelIngot")] + #[strum(props(name = "Ingot (Nickel)", desc = "", value = "-1406385572"))] + ItemNickelIngot = -1406385572i32, + #[strum(serialize = "StructurePipeCrossJunction")] + #[strum( + props( + name = "Pipe (Cross Junction)", + desc = "You can upgrade this pipe to an Insulated Pipe (Cross Junction) using an Kit (Insulated Pipe) and a Wrench.", + value = "-1405295588" + ) + )] + StructurePipeCrossJunction = -1405295588i32, + #[strum(serialize = "StructureCableJunction6")] + #[strum( + props( + name = "Cable (6-Way Junction)", + desc = "Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of Stationeer duty - so much so, the ODA designated it an official 'tool' during the 3rd Decannual Stationeer Solar Conference.\nNormal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy).", + value = "-1404690610" + ) + )] + StructureCableJunction6 = -1404690610i32, + #[strum(serialize = "ItemPassiveVentInsulated")] + #[strum( + props(name = "Kit (Insulated Passive Vent)", desc = "", value = "-1397583760") + )] + ItemPassiveVentInsulated = -1397583760i32, + #[strum(serialize = "ItemKitChairs")] + #[strum(props(name = "Kit (Chairs)", desc = "", value = "-1394008073"))] + ItemKitChairs = -1394008073i32, + #[strum(serialize = "StructureBatteryLarge")] + #[strum( + props( + name = "Station Battery (Large)", + desc = "Providing even better large-scale, reliable power storage than the {THING;StructureBattery}, the Sinotai 'Da Dianchi' large station battery is the heart of most Stationeer bases. \nThere are a variety of cautions to the design of electrical systems using batteries, and every experienced Stationeer has a story to tell, hence the Stationeer adage: 'Dianzi cooks, but it also frys.' \nPOWER OUTPUT\nAble to store up to 9000001 watts of power, there are no practical limits to its throughput, hence it is wise to use Cable Coil (Heavy). Seasoned electrical engineers will also laugh in the face of those who fail to separate out their power generation networks using an Area Power Control and Transformer (Large). ", + value = "-1388288459" + ) + )] + StructureBatteryLarge = -1388288459i32, + #[strum(serialize = "ItemGasFilterNitrogenL")] + #[strum(props(name = "Heavy Filter (Nitrogen)", desc = "", value = "-1387439451"))] + ItemGasFilterNitrogenL = -1387439451i32, + #[strum(serialize = "KitchenTableTall")] + #[strum(props(name = "Kitchen Table (Tall)", desc = "", value = "-1386237782"))] + KitchenTableTall = -1386237782i32, + #[strum(serialize = "StructureCapsuleTankGas")] + #[strum(props(name = "Gas Capsule Tank Small", desc = "", value = "-1385712131"))] + StructureCapsuleTankGas = -1385712131i32, + #[strum(serialize = "StructureCryoTubeVertical")] + #[strum( + props( + name = "Cryo Tube Vertical", + desc = "The vertical variant of the cryo tube. Will heal players and organs as well as revive dead players when provided with an atmosphere of Nitrogen below -150C.", + value = "-1381321828" + ) + )] + StructureCryoTubeVertical = -1381321828i32, + #[strum(serialize = "StructureWaterWallCooler")] + #[strum(props(name = "Liquid Wall Cooler", desc = "", value = "-1369060582"))] + StructureWaterWallCooler = -1369060582i32, + #[strum(serialize = "ItemKitTables")] + #[strum(props(name = "Kit (Tables)", desc = "", value = "-1361598922"))] + ItemKitTables = -1361598922i32, + #[strum(serialize = "StructureLargeHangerDoor")] + #[strum( + props( + name = "Large Hangar Door", + desc = "1 x 3 modular door piece for building hangar doors.", + value = "-1351081801" + ) + )] + StructureLargeHangerDoor = -1351081801i32, + #[strum(serialize = "ItemGoldOre")] + #[strum( + props( + name = "Ore (Gold)", + desc = "Surprisingly common throughout the Solar System, Gold is thought to originate in the heart of supernovas, gathering as dust in the early stages of solar formation, then incorporating into the slowly accreting planetary bodies. Now a prized element in Stationeer construction, Gold is valued not for its beauty, but its reliability: inert, durable, conductive and highly stable, gold's strength is that it does nothing.", + value = "-1348105509" + ) + )] + ItemGoldOre = -1348105509i32, + #[strum(serialize = "ItemCannedMushroom")] + #[strum( + props( + name = "Canned Mushroom", + desc = "Made in an Advanced Packaging Machine or Basic Packaging Machine, using Cooked Mushroom and a Empty Can, delicious mushroom soup is fairly high in nutrition, and does not decay.", + value = "-1344601965" + ) + )] + ItemCannedMushroom = -1344601965i32, + #[strum(serialize = "AppliancePaintMixer")] + #[strum(props(name = "Paint Mixer", desc = "", value = "-1339716113"))] + AppliancePaintMixer = -1339716113i32, + #[strum(serialize = "AccessCardGray")] + #[strum(props(name = "Access Card (Gray)", desc = "", value = "-1339479035"))] + AccessCardGray = -1339479035i32, + #[strum(serialize = "StructureChuteDigitalValveRight")] + #[strum( + props( + name = "Chute Digital Valve Right", + desc = "The Digital Chute Valve will stop the flow of materials when set to closed and when set to open, will act like a straight chute. The valve will automatically close after a certain number of items have passed through. This threshold can be set using the dial.", + value = "-1337091041" + ) + )] + StructureChuteDigitalValveRight = -1337091041i32, + #[strum(serialize = "ItemSugarCane")] + #[strum(props(name = "Sugarcane", desc = "", value = "-1335056202"))] + ItemSugarCane = -1335056202i32, + #[strum(serialize = "ItemKitSmallDirectHeatExchanger")] + #[strum( + props( + name = "Kit (Small Direct Heat Exchanger)", + desc = "", + value = "-1332682164" + ) + )] + ItemKitSmallDirectHeatExchanger = -1332682164i32, + #[strum(serialize = "AccessCardBlack")] + #[strum(props(name = "Access Card (Black)", desc = "", value = "-1330388999"))] + AccessCardBlack = -1330388999i32, + #[strum(serialize = "StructureLogicWriter")] + #[strum(props(name = "Logic Writer", desc = "", value = "-1326019434"))] + StructureLogicWriter = -1326019434i32, + #[strum(serialize = "StructureLogicWriterSwitch")] + #[strum(props(name = "Logic Writer Switch", desc = "", value = "-1321250424"))] + StructureLogicWriterSwitch = -1321250424i32, + #[strum(serialize = "StructureWallIron04")] + #[strum(props(name = "Iron Wall (Type 4)", desc = "", value = "-1309433134"))] + StructureWallIron04 = -1309433134i32, + #[strum(serialize = "ItemPureIceLiquidVolatiles")] + #[strum( + props( + name = "Pure Ice Liquid Volatiles", + desc = "A frozen chunk of pure Liquid Volatiles", + value = "-1306628937" + ) + )] + ItemPureIceLiquidVolatiles = -1306628937i32, + #[strum(serialize = "StructureWallLightBattery")] + #[strum(props(name = "Wall Light (Battery)", desc = "", value = "-1306415132"))] + StructureWallLightBattery = -1306415132i32, + #[strum(serialize = "AppliancePlantGeneticAnalyzer")] + #[strum( + props( + name = "Plant Genetic Analyzer", + desc = "The Genetic Analyzer can be used to process samples from the Plant Sampler. Once processed, the genetic information of the sampled plant can be viewed by clicking on the search button.\n\nIndividual Gene Value Widgets: \nMost gene values will appear as a sliding bar between a minimum value on the left and a maximum value on the right. The actual value of the gene is in the middle of the bar, in orange.\n\nMultiple Gene Value Widgets: \nFor temperature and pressure ranges, four genes appear on the same widget. The orange values underneath the bar are the minimum and maximum thresholds for growth. Outside of this range, the plant will stop growing and eventually die. The blue values underneath the bar are the minimum and maximum thresholds for ideal growth. Inside of this range, the plant will grow at maximum speed. The white values above the bar are the minimum and maximum achievable values for the growth threshold.", + value = "-1303038067" + ) + )] + AppliancePlantGeneticAnalyzer = -1303038067i32, + #[strum(serialize = "ItemIronIngot")] + #[strum( + props( + name = "Ingot (Iron)", + desc = "The most basic unit of construction available to Stationeer-kind, iron ingots are created by smelting Ore (Iron) in the Furnace and Arc Furnace, and used to create a variety of items.", + value = "-1301215609" + ) + )] + ItemIronIngot = -1301215609i32, + #[strum(serialize = "StructureSleeperVertical")] + #[strum( + props( + name = "Sleeper Vertical", + desc = "The vertical variant of the sleeper. Will keep players hydrated and fed while they are logged out - as long as a breathable atmosphere is provided.", + value = "-1300059018" + ) + )] + StructureSleeperVertical = -1300059018i32, + #[strum(serialize = "Landingpad_2x2CenterPiece01")] + #[strum( + props( + name = "Landingpad 2x2 Center Piece", + desc = "Recommended for larger traders. This allows for the creation of 4x4 and 6x6 landing areas with symetrical doors", + value = "-1295222317" + ) + )] + Landingpad2X2CenterPiece01 = -1295222317i32, + #[strum(serialize = "SeedBag_Corn")] + #[strum( + props( + name = "Corn Seeds", + desc = "Grow a Corn.", + value = "-1290755415" + ) + )] + SeedBagCorn = -1290755415i32, + #[strum(serialize = "StructureDigitalValve")] + #[strum( + props( + name = "Digital Valve", + desc = "The digital valve allows Stationeers to create logic-controlled valves and pipe networks.", + value = "-1280984102" + ) + )] + StructureDigitalValve = -1280984102i32, + #[strum(serialize = "StructureTankConnector")] + #[strum( + props( + name = "Tank Connector", + desc = "Tank connectors are basic mounting devices that allow you to attach a Portable Gas Tank to a gas pipe network.", + value = "-1276379454" + ) + )] + StructureTankConnector = -1276379454i32, + #[strum(serialize = "ItemSuitModCryogenicUpgrade")] + #[strum( + props( + name = "Cryogenic Suit Upgrade", + desc = "Enables suits with basic cooling functionality to work with cryogenic liquid.", + value = "-1274308304" + ) + )] + ItemSuitModCryogenicUpgrade = -1274308304i32, + #[strum(serialize = "ItemKitLandingPadWaypoint")] + #[strum(props(name = "Kit (Landing Pad Runway)", desc = "", value = "-1267511065"))] + ItemKitLandingPadWaypoint = -1267511065i32, + #[strum(serialize = "DynamicGasTankAdvancedOxygen")] + #[strum( + props( + name = "Portable Gas Tank Mk II (Oxygen)", + desc = "0.Mode0\n1.Mode1", + value = "-1264455519" + ) + )] + DynamicGasTankAdvancedOxygen = -1264455519i32, + #[strum(serialize = "ItemBasketBall")] + #[strum(props(name = "Basket Ball", desc = "", value = "-1262580790"))] + ItemBasketBall = -1262580790i32, + #[strum(serialize = "ItemSpacepack")] + #[strum( + props( + name = "Spacepack", + desc = "The basic CHAC spacepack isn't 'technically' a jetpack, it's a gas thruster. It can be powered by any gas, so long as the internal pressure of the canister is higher than the ambient external pressure. If the external pressure is greater, the spacepack will not function.\nIndispensable for building, mining and general movement, it has ten storage slots and lets Stationeers fly at 3m/s, compared to the more powerful Jetpack Basic or Hardsuit Jetpack. Adjusting the thrust value alters your rate of acceleration, while activating the stablizer causes the spacepack to hover when a given height is reached.\nUSE: 'J' to activate; 'space' to fly up; 'left ctrl' to descend; and 'WASD' to move.", + value = "-1260618380" + ) + )] + ItemSpacepack = -1260618380i32, + #[strum(serialize = "ItemKitRocketDatalink")] + #[strum(props(name = "Kit (Rocket Datalink)", desc = "", value = "-1256996603"))] + ItemKitRocketDatalink = -1256996603i32, + #[strum(serialize = "StructureGasSensor")] + #[strum( + props( + name = "Gas Sensor", + desc = "Gas sensors are designed to monitor and report basic atmospheric information, including temperature, pressure, and gas ratios. They also make wonderful wedding presents.", + value = "-1252983604" + ) + )] + StructureGasSensor = -1252983604i32, + #[strum(serialize = "ItemPureIceCarbonDioxide")] + #[strum( + props( + name = "Pure Ice Carbon Dioxide", + desc = "A frozen chunk of pure Carbon Dioxide", + value = "-1251009404" + ) + )] + ItemPureIceCarbonDioxide = -1251009404i32, + #[strum(serialize = "ItemKitTurboVolumePump")] + #[strum( + props(name = "Kit (Turbo Volume Pump - Gas)", desc = "", value = "-1248429712") + )] + ItemKitTurboVolumePump = -1248429712i32, + #[strum(serialize = "ItemGasFilterNitrousOxide")] + #[strum(props(name = "Filter (Nitrous Oxide)", desc = "", value = "-1247674305"))] + ItemGasFilterNitrousOxide = -1247674305i32, + #[strum(serialize = "StructureChairThickDouble")] + #[strum(props(name = "Chair (Thick Double)", desc = "", value = "-1245724402"))] + StructureChairThickDouble = -1245724402i32, + #[strum(serialize = "StructureWallPaddingArchVent")] + #[strum(props(name = "Wall (Padding Arch Vent)", desc = "", value = "-1243329828"))] + StructureWallPaddingArchVent = -1243329828i32, + #[strum(serialize = "ItemKitConsole")] + #[strum(props(name = "Kit (Consoles)", desc = "", value = "-1241851179"))] + ItemKitConsole = -1241851179i32, + #[strum(serialize = "ItemKitBeds")] + #[strum(props(name = "Kit (Beds)", desc = "", value = "-1241256797"))] + ItemKitBeds = -1241256797i32, + #[strum(serialize = "StructureFrameIron")] + #[strum(props(name = "Iron Frame", desc = "", value = "-1240951678"))] + StructureFrameIron = -1240951678i32, + #[strum(serialize = "ItemDirtyOre")] + #[strum( + props( + name = "Dirty Ore", + desc = "Ore mined from bedrock via the Deep Miner which then can be used in the Centrifuge, or Combustion Centrifuge. Once processed, it produces ore in a ratio similar to the average found on the planet's surface. ", + value = "-1234745580" + ) + )] + ItemDirtyOre = -1234745580i32, + #[strum(serialize = "StructureLargeDirectHeatExchangeGastoGas")] + #[strum( + props( + name = "Large Direct Heat Exchanger - Gas + Gas", + desc = "Direct Heat Exchangers equalize the temperature of the two input networks.", + value = "-1230658883" + ) + )] + StructureLargeDirectHeatExchangeGastoGas = -1230658883i32, + #[strum(serialize = "ItemSensorProcessingUnitOreScanner")] + #[strum( + props( + name = "Sensor Processing Unit (Ore Scanner)", + desc = "The Sensor Processing unit can be inserted into Sensor Lenses to reveal underground minerals in a HUD.", + value = "-1219128491" + ) + )] + ItemSensorProcessingUnitOreScanner = -1219128491i32, + #[strum(serialize = "StructurePictureFrameThickPortraitSmall")] + #[strum( + props( + name = "Picture Frame Thick Portrait Small", + desc = "", + value = "-1218579821" + ) + )] + StructurePictureFrameThickPortraitSmall = -1218579821i32, + #[strum(serialize = "ItemGasFilterOxygenL")] + #[strum(props(name = "Heavy Filter (Oxygen)", desc = "", value = "-1217998945"))] + ItemGasFilterOxygenL = -1217998945i32, + #[strum(serialize = "Landingpad_LiquidConnectorInwardPiece")] + #[strum(props(name = "Landingpad Liquid Input", desc = "", value = "-1216167727"))] + LandingpadLiquidConnectorInwardPiece = -1216167727i32, + #[strum(serialize = "ItemWreckageStructureWeatherStation008")] + #[strum( + props( + name = "Wreckage Structure Weather Station", + desc = "", + value = "-1214467897" + ) + )] + ItemWreckageStructureWeatherStation008 = -1214467897i32, + #[strum(serialize = "ItemPlantThermogenic_Creative")] + #[strum( + props(name = "Thermogenic Plant Creative", desc = "", value = "-1208890208") + )] + ItemPlantThermogenicCreative = -1208890208i32, + #[strum(serialize = "ItemRocketScanningHead")] + #[strum(props(name = "Rocket Scanner Head", desc = "", value = "-1198702771"))] + ItemRocketScanningHead = -1198702771i32, + #[strum(serialize = "StructureCableStraightBurnt")] + #[strum(props(name = "Burnt Cable (Straight)", desc = "", value = "-1196981113"))] + StructureCableStraightBurnt = -1196981113i32, + #[strum(serialize = "ItemHydroponicTray")] + #[strum( + props( + name = "Kit (Hydroponic Tray)", + desc = "This kits creates a Hydroponics Tray for growing various plants.", + value = "-1193543727" + ) + )] + ItemHydroponicTray = -1193543727i32, + #[strum(serialize = "ItemCannedRicePudding")] + #[strum( + props( + name = "Canned Rice Pudding", + desc = "Made in an Advanced Packaging Machine or Basic Packaging Machine, using Cooked Rice and an Empty Can, canned rice pudding is a sweet treat, fairly high in nutrition, and does not decay.", + value = "-1185552595" + ) + )] + ItemCannedRicePudding = -1185552595i32, + #[strum(serialize = "StructureInLineTankLiquid1x2")] + #[strum( + props( + name = "In-Line Tank Liquid", + desc = "A small expansion tank that increases the volume of a pipe network.", + value = "-1183969663" + ) + )] + StructureInLineTankLiquid1X2 = -1183969663i32, + #[strum(serialize = "StructureInteriorDoorTriangle")] + #[strum( + props( + name = "Interior Door Triangle", + desc = "0.Operate\n1.Logic", + value = "-1182923101" + ) + )] + StructureInteriorDoorTriangle = -1182923101i32, + #[strum(serialize = "ItemKitElectronicsPrinter")] + #[strum(props(name = "Kit (Electronics Printer)", desc = "", value = "-1181922382"))] + ItemKitElectronicsPrinter = -1181922382i32, + #[strum(serialize = "StructureWaterBottleFiller")] + #[strum(props(name = "Water Bottle Filler", desc = "", value = "-1178961954"))] + StructureWaterBottleFiller = -1178961954i32, + #[strum(serialize = "StructureWallVent")] + #[strum( + props( + name = "Wall Vent", + desc = "Used to mix atmospheres passively between two walls.", + value = "-1177469307" + ) + )] + StructureWallVent = -1177469307i32, + #[strum(serialize = "ItemSensorLenses")] + #[strum( + props( + name = "Sensor Lenses", + desc = "These Norsec glasses might not be the most fashionable thing, but when a Sensor Processing Unit (Ore Scanner) is inserted, Stationeers can use these handy glasses to x-ray the ground and find ores that are hidden beneath the surface.", + value = "-1176140051" + ) + )] + ItemSensorLenses = -1176140051i32, + #[strum(serialize = "ItemSoundCartridgeLeads")] + #[strum(props(name = "Sound Cartridge Leads", desc = "", value = "-1174735962"))] + ItemSoundCartridgeLeads = -1174735962i32, + #[strum(serialize = "StructureMediumConvectionRadiatorLiquid")] + #[strum( + props( + name = "Medium Convection Radiator Liquid", + desc = "A stand-alone liquid radiator unit optimized for exchanging heat with its surrounding atmosphere.", + value = "-1169014183" + ) + )] + StructureMediumConvectionRadiatorLiquid = -1169014183i32, + #[strum(serialize = "ItemKitFridgeBig")] + #[strum(props(name = "Kit (Fridge Large)", desc = "", value = "-1168199498"))] + ItemKitFridgeBig = -1168199498i32, + #[strum(serialize = "ItemKitPipeLiquid")] + #[strum(props(name = "Kit (Liquid Pipe)", desc = "", value = "-1166461357"))] + ItemKitPipeLiquid = -1166461357i32, + #[strum(serialize = "StructureWallFlatCornerTriangleFlat")] + #[strum( + props( + name = "Wall (Flat Corner Triangle Flat)", + desc = "", + value = "-1161662836" + ) + )] + StructureWallFlatCornerTriangleFlat = -1161662836i32, + #[strum(serialize = "StructureLogicMathUnary")] + #[strum( + props( + name = "Math Unary", + desc = "0.Ceil\n1.Floor\n2.Abs\n3.Log\n4.Exp\n5.Round\n6.Rand\n7.Sqrt\n8.Sin\n9.Cos\n10.Tan\n11.Asin\n12.Acos\n13.Atan\n14.Not", + value = "-1160020195" + ) + )] + StructureLogicMathUnary = -1160020195i32, + #[strum(serialize = "ItemPlantEndothermic_Creative")] + #[strum( + props(name = "Endothermic Plant Creative", desc = "", value = "-1159179557") + )] + ItemPlantEndothermicCreative = -1159179557i32, + #[strum(serialize = "ItemSensorProcessingUnitCelestialScanner")] + #[strum( + props( + name = "Sensor Processing Unit (Celestial Scanner)", + desc = "", + value = "-1154200014" + ) + )] + ItemSensorProcessingUnitCelestialScanner = -1154200014i32, + #[strum(serialize = "StructureChairRectangleDouble")] + #[strum(props(name = "Chair (Rectangle Double)", desc = "", value = "-1152812099"))] + StructureChairRectangleDouble = -1152812099i32, + #[strum(serialize = "ItemGasCanisterOxygen")] + #[strum(props(name = "Canister (Oxygen)", desc = "", value = "-1152261938"))] + ItemGasCanisterOxygen = -1152261938i32, + #[strum(serialize = "ItemPureIceOxygen")] + #[strum( + props( + name = "Pure Ice Oxygen", + desc = "A frozen chunk of pure Oxygen", + value = "-1150448260" + ) + )] + ItemPureIceOxygen = -1150448260i32, + #[strum(serialize = "StructureBackPressureRegulator")] + #[strum( + props( + name = "Back Pressure Regulator", + desc = "Unlike the Pressure Regulator, which closes when the input exceeds a given pressure, the back pressure regulator opens when input pressure reaches a given value.", + value = "-1149857558" + ) + )] + StructureBackPressureRegulator = -1149857558i32, + #[strum(serialize = "StructurePictureFrameThinMountLandscapeLarge")] + #[strum( + props( + name = "Picture Frame Thin Landscape Large", + desc = "", + value = "-1146760430" + ) + )] + StructurePictureFrameThinMountLandscapeLarge = -1146760430i32, + #[strum(serialize = "StructureMediumRadiatorLiquid")] + #[strum( + props( + name = "Medium Radiator Liquid", + desc = "A stand-alone liquid radiator unit optimized for radiating heat in vacuums.", + value = "-1141760613" + ) + )] + StructureMediumRadiatorLiquid = -1141760613i32, + #[strum(serialize = "ApplianceMicrowave")] + #[strum( + props( + name = "Microwave", + desc = "While countless 'better' ways of cooking Food have been invented in the last few hundred years, few are as durable or easy to fabricate as the OK-Zoomer microwave. Licensed from Xigo, the plans are based on a classic model from the mid-21st century, giving it a charmingly retro feel. But don't worry, it oscillates Water molecules more than adequately. \nJust bolt it to a Powered Bench using a Wrench to power it, follow the recipe, and you're cooking.", + value = "-1136173965" + ) + )] + ApplianceMicrowave = -1136173965i32, + #[strum(serialize = "ItemPipeGasMixer")] + #[strum( + props( + name = "Kit (Gas Mixer)", + desc = "This kit creates a Gas Mixer.", + value = "-1134459463" + ) + )] + ItemPipeGasMixer = -1134459463i32, + #[strum(serialize = "CircuitboardModeControl")] + #[strum( + props( + name = "Mode Control", + desc = "Can't decide which mode you love most? This circuit board allows you to switch any connected device between operation modes.", + value = "-1134148135" + ) + )] + CircuitboardModeControl = -1134148135i32, + #[strum(serialize = "StructureActiveVent")] + #[strum( + props( + name = "Active Vent", + desc = "The active vent is a powered device for maintaining gas pressure by pumping gas into (or out of) a pipe network. The vent has two modes: 'Outward' sets it to pump gas into a space until pressure is reached; 'Inward' sets it to pump gas out until pressure is reached. The pressure parameter can be set on a connected Console. Default pressure is 101kPa for Outward; 0kPa for Inward ...", + value = "-1129453144" + ) + )] + StructureActiveVent = -1129453144i32, + #[strum(serialize = "StructureWallPaddedArchCorner")] + #[strum(props(name = "Wall (Padded Arch Corner)", desc = "", value = "-1126688298"))] + StructureWallPaddedArchCorner = -1126688298i32, + #[strum(serialize = "StructurePlanter")] + #[strum( + props( + name = "Planter", + desc = "A small planter for decorative or hydroponic purposes. Can be connected to Water, or watered manually using a Water Bottle or Liquid Canister (Water).", + value = "-1125641329" + ) + )] + StructurePlanter = -1125641329i32, + #[strum(serialize = "StructureBatteryMedium")] + #[strum( + props( + name = "Battery (Medium)", + desc = "0.Empty\n1.Critical\n2.VeryLow\n3.Low\n4.Medium\n5.High\n6.Full", + value = "-1125305264" + ) + )] + StructureBatteryMedium = -1125305264i32, + #[strum(serialize = "ItemHorticultureBelt")] + #[strum(props(name = "Horticulture Belt", desc = "", value = "-1117581553"))] + ItemHorticultureBelt = -1117581553i32, + #[strum(serialize = "CartridgeMedicalAnalyser")] + #[strum( + props( + name = "Medical Analyzer", + desc = "When added to the OreCore Handheld Tablet, Asura's's ReadyMed medical analyzer reveals the health, or otherwise, of users various organs. Due to a design flaw, older models were notorious for producing quasar-like levels of x-ray radiation. Recent advances in shielding have more than halved the risk to users.", + value = "-1116110181" + ) + )] + CartridgeMedicalAnalyser = -1116110181i32, + #[strum(serialize = "StructureCompositeFloorGrating3")] + #[strum( + props( + name = "Composite Floor Grating (Type 3)", + desc = "", + value = "-1113471627" + ) + )] + StructureCompositeFloorGrating3 = -1113471627i32, + #[strum(serialize = "ItemPlainCake")] + #[strum(props(name = "Cake", desc = "", value = "-1108244510"))] + ItemPlainCake = -1108244510i32, + #[strum(serialize = "ItemWreckageStructureWeatherStation004")] + #[strum( + props( + name = "Wreckage Structure Weather Station", + desc = "", + value = "-1104478996" + ) + )] + ItemWreckageStructureWeatherStation004 = -1104478996i32, + #[strum(serialize = "StructureCableFuse1k")] + #[strum(props(name = "Fuse (1kW)", desc = "", value = "-1103727120"))] + StructureCableFuse1K = -1103727120i32, + #[strum(serialize = "WeaponTorpedo")] + #[strum(props(name = "Torpedo", desc = "", value = "-1102977898"))] + WeaponTorpedo = -1102977898i32, + #[strum(serialize = "StructureWallPaddingThin")] + #[strum(props(name = "Wall (Padding Thin)", desc = "", value = "-1102403554"))] + StructureWallPaddingThin = -1102403554i32, + #[strum(serialize = "Landingpad_GasConnectorOutwardPiece")] + #[strum( + props( + name = "Landingpad Gas Output", + desc = "Pumps gas purchased from a trader out of the landing pad. You can increase the landing pad's gas storage capacity by adding more Landingpad Gas Storage to the landing pad.", + value = "-1100218307" + ) + )] + LandingpadGasConnectorOutwardPiece = -1100218307i32, + #[strum(serialize = "AppliancePlantGeneticSplicer")] + #[strum( + props( + name = "Plant Genetic Splicer", + desc = "The Genetic Splicer can be used to copy a single gene from one 'source' plant to another 'target' plant of the same type. After copying, the source plant will be destroyed.\n \nTo begin splicing, place a plant or seed bag in the left slot (source) and place another plant or seed bag of the same type in the right slot (target). You can select a gene using the arrow buttons. Close the sliding door and press the green activate button. Once splicing has begun, the device will be locked until the process has finished (which will take approximately twenty minutes). If you want to cancel splicing you can power off the bench or detach the appliance as a last resort.", + value = "-1094868323" + ) + )] + AppliancePlantGeneticSplicer = -1094868323i32, + #[strum(serialize = "StructureMediumRocketGasFuelTank")] + #[strum(props(name = "Gas Capsule Tank Medium", desc = "", value = "-1093860567"))] + StructureMediumRocketGasFuelTank = -1093860567i32, + #[strum(serialize = "StructureStairs4x2Rails")] + #[strum(props(name = "Stairs with Rails", desc = "", value = "-1088008720"))] + StructureStairs4X2Rails = -1088008720i32, + #[strum(serialize = "StructureShowerPowered")] + #[strum(props(name = "Shower (Powered)", desc = "", value = "-1081797501"))] + StructureShowerPowered = -1081797501i32, + #[strum(serialize = "ItemCookedMushroom")] + #[strum( + props( + name = "Cooked Mushroom", + desc = "A high-nutrient cooked food, which can be canned.", + value = "-1076892658" + ) + )] + ItemCookedMushroom = -1076892658i32, + #[strum(serialize = "ItemGlasses")] + #[strum(props(name = "Glasses", desc = "", value = "-1068925231"))] + ItemGlasses = -1068925231i32, + #[strum(serialize = "KitchenTableSimpleTall")] + #[strum( + props(name = "Kitchen Table (Simple Tall)", desc = "", value = "-1068629349") + )] + KitchenTableSimpleTall = -1068629349i32, + #[strum(serialize = "ItemGasFilterOxygenM")] + #[strum(props(name = "Medium Filter (Oxygen)", desc = "", value = "-1067319543"))] + ItemGasFilterOxygenM = -1067319543i32, + #[strum(serialize = "StructureTransformerMedium")] + #[strum( + props( + name = "Transformer (Medium)", + desc = "Transformers control the maximum power that will flow down a sub-network of cables, to prevent overloading electrical systems. \nMedium transformers are used in larger setups where more than 5000W is required, with output that can be set to a maximum of 25000W.\nNote that transformers also operate as data isolators, preventing data flowing into any network beyond it.", + value = "-1065725831" + ) + )] + StructureTransformerMedium = -1065725831i32, + #[strum(serialize = "ItemKitDynamicCanister")] + #[strum(props(name = "Kit (Portable Gas Tank)", desc = "", value = "-1061945368"))] + ItemKitDynamicCanister = -1061945368i32, + #[strum(serialize = "ItemEmergencyPickaxe")] + #[strum(props(name = "Emergency Pickaxe", desc = "", value = "-1061510408"))] + ItemEmergencyPickaxe = -1061510408i32, + #[strum(serialize = "ItemWheat")] + #[strum( + props( + name = "Wheat", + desc = "A classical symbol of growth and new life, wheat takes a moderate time to grow. Its main use is to create flour using the Reagent Processor.", + value = "-1057658015" + ) + )] + ItemWheat = -1057658015i32, + #[strum(serialize = "ItemEmergencyArcWelder")] + #[strum(props(name = "Emergency Arc Welder", desc = "", value = "-1056029600"))] + ItemEmergencyArcWelder = -1056029600i32, + #[strum(serialize = "ItemGasFilterOxygenInfinite")] + #[strum( + props( + name = "Catalytic Filter (Oxygen)", + desc = "A filter that selectively targets Oxygen. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle.", + value = "-1055451111" + ) + )] + ItemGasFilterOxygenInfinite = -1055451111i32, + #[strum(serialize = "StructureLiquidTurboVolumePump")] + #[strum( + props( + name = "Turbo Volume Pump (Liquid)", + desc = "Shifts 10 times more liquid than a basic Volume Pump, with a mode that can be set to flow in either direction.", + value = "-1051805505" + ) + )] + StructureLiquidTurboVolumePump = -1051805505i32, + #[strum(serialize = "ItemPureIceLiquidHydrogen")] + #[strum( + props( + name = "Pure Ice Liquid Hydrogen", + desc = "A frozen chunk of pure Liquid Hydrogen", + value = "-1044933269" + ) + )] + ItemPureIceLiquidHydrogen = -1044933269i32, + #[strum(serialize = "StructureCompositeCladdingAngledCornerInnerLongR")] + #[strum( + props( + name = "Composite Cladding (Angled Corner Inner Long R)", + desc = "", + value = "-1032590967" + ) + )] + StructureCompositeCladdingAngledCornerInnerLongR = -1032590967i32, + #[strum(serialize = "StructureAreaPowerControlReversed")] + #[strum( + props( + name = "Area Power Control", + desc = "An Area Power Control (APC) has three main functions. \nIts primary purpose is to regulate power flow, ensuring uninterrupted performance from devices and machinery, especially those with a fluctuating draw. \nAPCs also create sub-networks, as no devices on the far side of an APC are visible on the main network. \nLastly, an APC charges batteries, which can provide backup power to the sub-network in the case of an outage. Note that an APC requires a battery to stabilize power draw. It also has two variants, each allowing power to flow in one direction only.", + value = "-1032513487" + ) + )] + StructureAreaPowerControlReversed = -1032513487i32, + #[strum(serialize = "StructureChuteOutlet")] + #[strum( + props( + name = "Chute Outlet", + desc = "The aim for any Stationeer is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps.\nThe chute outlet is an aperture for exiting items from import/export networks. Note that the outlet's origins in zero-gravity mining means they are permanently open, rather than interactable, but can be connected to logic systems to monitor throughput.", + value = "-1022714809" + ) + )] + StructureChuteOutlet = -1022714809i32, + #[strum(serialize = "ItemKitHarvie")] + #[strum(props(name = "Kit (Harvie)", desc = "", value = "-1022693454"))] + ItemKitHarvie = -1022693454i32, + #[strum(serialize = "ItemGasCanisterFuel")] + #[strum(props(name = "Canister (Fuel)", desc = "", value = "-1014695176"))] + ItemGasCanisterFuel = -1014695176i32, + #[strum(serialize = "StructureCompositeWall04")] + #[strum(props(name = "Composite Wall (Type 4)", desc = "", value = "-1011701267"))] + StructureCompositeWall04 = -1011701267i32, + #[strum(serialize = "StructureSorter")] + #[strum( + props( + name = "Sorter", + desc = "No amount of automation is complete without some way of moving different items to different parts of a system. The Xigo A2B sorter can be programmed via a computer with a Sorter Motherboard to direct various items into different chute networks. Filtered items are always passed out the righthand side of the sorter, while non filtered items continue straight through.", + value = "-1009150565" + ) + )] + StructureSorter = -1009150565i32, + #[strum(serialize = "StructurePipeLabel")] + #[strum( + props( + name = "Pipe Label", + desc = "As its perspicacious name suggests, the pipe label is designed to be attached to a straight stretch of pipe. Users can then label the label with the Labeller.", + value = "-999721119" + ) + )] + StructurePipeLabel = -999721119i32, + #[strum(serialize = "ItemCannedEdamame")] + #[strum( + props( + name = "Canned Edamame", + desc = "Made in an Advanced Packaging Machine or Basic Packaging Machine, using Cooked Soybean and an Empty Can, canned edamame beans are fairly high in nutrition, and do not decay.", + value = "-999714082" + ) + )] + ItemCannedEdamame = -999714082i32, + #[strum(serialize = "ItemTomato")] + #[strum( + props( + name = "Tomato", + desc = "Tomato plants are perennial, and will produce multiple harvests without needing to be replanted. Once the plant is mature, it will fruit at a moderate pace.", + value = "-998592080" + ) + )] + ItemTomato = -998592080i32, + #[strum(serialize = "ItemCobaltOre")] + #[strum( + props( + name = "Ore (Cobalt)", + desc = "Cobalt is a chemical element with the symbol \"Co\" and is typically found in only small deposits. Cobalt is a rare substance, but used create the Heal Pill and several alloys.", + value = "-983091249" + ) + )] + ItemCobaltOre = -983091249i32, + #[strum(serialize = "StructureCableCorner4HBurnt")] + #[strum( + props(name = "Burnt Heavy Cable (4-Way Corner)", desc = "", value = "-981223316") + )] + StructureCableCorner4HBurnt = -981223316i32, + #[strum(serialize = "Landingpad_StraightPiece01")] + #[strum( + props( + name = "Landingpad Straight", + desc = "Extends the size of the landing pad area. A basic trader shuttle requires a 3x3 clear landing area.", + value = "-976273247" + ) + )] + LandingpadStraightPiece01 = -976273247i32, + #[strum(serialize = "StructureMediumRadiator")] + #[strum( + props( + name = "Medium Radiator", + desc = "A stand-alone radiator unit optimized for radiating heat in vacuums.", + value = "-975966237" + ) + )] + StructureMediumRadiator = -975966237i32, + #[strum(serialize = "ItemDynamicScrubber")] + #[strum(props(name = "Kit (Portable Scrubber)", desc = "", value = "-971920158"))] + ItemDynamicScrubber = -971920158i32, + #[strum(serialize = "StructureCondensationValve")] + #[strum( + props( + name = "Condensation Valve", + desc = "Allows for the removal of any liquids from a gas pipe into a liquid pipe. Only allows liquids to pass in one direction.", + value = "-965741795" + ) + )] + StructureCondensationValve = -965741795i32, + #[strum(serialize = "StructureChuteUmbilicalMale")] + #[strum( + props( + name = "Umbilical (Chute)", + desc = "0.Left\n1.Center\n2.Right", + value = "-958884053" + ) + )] + StructureChuteUmbilicalMale = -958884053i32, + #[strum(serialize = "ItemKitElevator")] + #[strum(props(name = "Kit (Elevator)", desc = "", value = "-945806652"))] + ItemKitElevator = -945806652i32, + #[strum(serialize = "StructureSolarPanelReinforced")] + #[strum( + props( + name = "Solar Panel (Heavy)", + desc = "This solar panel is resistant to storm damage.", + value = "-934345724" + ) + )] + StructureSolarPanelReinforced = -934345724i32, + #[strum(serialize = "ItemKitRocketTransformerSmall")] + #[strum( + props(name = "Kit (Transformer Small (Rocket))", desc = "", value = "-932335800") + )] + ItemKitRocketTransformerSmall = -932335800i32, + #[strum(serialize = "CartridgeConfiguration")] + #[strum(props(name = "Configuration", desc = "", value = "-932136011"))] + CartridgeConfiguration = -932136011i32, + #[strum(serialize = "ItemSilverIngot")] + #[strum(props(name = "Ingot (Silver)", desc = "", value = "-929742000"))] + ItemSilverIngot = -929742000i32, + #[strum(serialize = "ItemKitHydroponicAutomated")] + #[strum( + props(name = "Kit (Automated Hydroponics)", desc = "", value = "-927931558") + )] + ItemKitHydroponicAutomated = -927931558i32, + #[strum(serialize = "StructureSmallTableRectangleSingle")] + #[strum( + props(name = "Small (Table Rectangle Single)", desc = "", value = "-924678969") + )] + StructureSmallTableRectangleSingle = -924678969i32, + #[strum(serialize = "ItemWreckageStructureWeatherStation005")] + #[strum( + props( + name = "Wreckage Structure Weather Station", + desc = "", + value = "-919745414" + ) + )] + ItemWreckageStructureWeatherStation005 = -919745414i32, + #[strum(serialize = "ItemSilverOre")] + #[strum( + props( + name = "Ore (Silver)", + desc = "Silver is a chemical element with the symbol \"Ag\". Valued by many Stationeers for its attractive luster and sheen, it is also used in a variety of electronics components and alloys.", + value = "-916518678" + ) + )] + ItemSilverOre = -916518678i32, + #[strum(serialize = "StructurePipeTJunction")] + #[strum( + props( + name = "Pipe (T Junction)", + desc = "You can upgrade this pipe to an Insulated Pipe (T Junction) using an Kit (Insulated Pipe) and a Wrench.", + value = "-913817472" + ) + )] + StructurePipeTJunction = -913817472i32, + #[strum(serialize = "ItemPickaxe")] + #[strum( + props( + name = "Pickaxe", + desc = "When the sun sets and the Mining Drill runs dead, its batteries drained and your Solar Panel cold and lifeless, the Autolathe empty, the way forward unclear, one thing holds back the endless night of defeat: the trusty pickaxe.", + value = "-913649823" + ) + )] + ItemPickaxe = -913649823i32, + #[strum(serialize = "ItemPipeLiquidRadiator")] + #[strum( + props( + name = "Kit (Liquid Radiator)", + desc = "This kit creates a Liquid Pipe Convection Radiator.", + value = "-906521320" + ) + )] + ItemPipeLiquidRadiator = -906521320i32, + #[strum(serialize = "StructurePortablesConnector")] + #[strum(props(name = "Portables Connector", desc = "", value = "-899013427"))] + StructurePortablesConnector = -899013427i32, + #[strum(serialize = "StructureCompositeFloorGrating2")] + #[strum( + props( + name = "Composite Floor Grating (Type 2)", + desc = "", + value = "-895027741" + ) + )] + StructureCompositeFloorGrating2 = -895027741i32, + #[strum(serialize = "StructureTransformerSmall")] + #[strum( + props( + name = "Transformer (Small)", + desc = "Transformers control the maximum power that will flow down a cable subnetwork, to prevent overloading electrical systems. Output on small transformers can be set from 0 to 5000W.\nNote that transformers operate as data isolators, preventing data flowing into any network beyond it.", + value = "-890946730" + ) + )] + StructureTransformerSmall = -890946730i32, + #[strum(serialize = "StructureCableCorner")] + #[strum( + props( + name = "Cable (Corner)", + desc = "Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of Stationeer life - so essential, the ODA designated it an official 'tool' during the 3rd Decannual Stationeer Solar Conference.\nNormal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy).", + value = "-889269388" + ) + )] + StructureCableCorner = -889269388i32, + #[strum(serialize = "ItemKitChuteUmbilical")] + #[strum(props(name = "Kit (Chute Umbilical)", desc = "", value = "-876560854"))] + ItemKitChuteUmbilical = -876560854i32, + #[strum(serialize = "ItemPureIceSteam")] + #[strum( + props( + name = "Pure Ice Steam", + desc = "A frozen chunk of pure Steam", + value = "-874791066" + ) + )] + ItemPureIceSteam = -874791066i32, + #[strum(serialize = "ItemBeacon")] + #[strum(props(name = "Tracking Beacon", desc = "", value = "-869869491"))] + ItemBeacon = -869869491i32, + #[strum(serialize = "ItemKitWindTurbine")] + #[strum(props(name = "Kit (Wind Turbine)", desc = "", value = "-868916503"))] + ItemKitWindTurbine = -868916503i32, + #[strum(serialize = "ItemKitRocketMiner")] + #[strum(props(name = "Kit (Rocket Miner)", desc = "", value = "-867969909"))] + ItemKitRocketMiner = -867969909i32, + #[strum(serialize = "StructureStairwellBackPassthrough")] + #[strum( + props(name = "Stairwell (Back Passthrough)", desc = "", value = "-862048392") + )] + StructureStairwellBackPassthrough = -862048392i32, + #[strum(serialize = "StructureWallArch")] + #[strum(props(name = "Wall (Arch)", desc = "", value = "-858143148"))] + StructureWallArch = -858143148i32, + #[strum(serialize = "HumanSkull")] + #[strum(props(name = "Human Skull", desc = "", value = "-857713709"))] + HumanSkull = -857713709i32, + #[strum(serialize = "StructureLogicMemory")] + #[strum(props(name = "Logic Memory", desc = "", value = "-851746783"))] + StructureLogicMemory = -851746783i32, + #[strum(serialize = "StructureChuteBin")] + #[strum( + props( + name = "Chute Bin", + desc = "The Stationeer's goal is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps.\nLike most Recurso-designed systems, chute bins are simple and robust powered items, allowing items to be manually passed into chute networks by pulling a lever. They can also be programmed with logic to operate automatically, although full automation requires the use items such as a SDB Hopper.", + value = "-850484480" + ) + )] + StructureChuteBin = -850484480i32, + #[strum(serialize = "ItemKitWallFlat")] + #[strum(props(name = "Kit (Flat Wall)", desc = "", value = "-846838195"))] + ItemKitWallFlat = -846838195i32, + #[strum(serialize = "ItemActiveVent")] + #[strum( + props( + name = "Kit (Active Vent)", + desc = "When constructed, this kit places an Active Vent on any support structure.", + value = "-842048328" + ) + )] + ItemActiveVent = -842048328i32, + #[strum(serialize = "ItemFlashlight")] + #[strum( + props( + name = "Flashlight", + desc = "A flashlight with a narrow and wide beam options.", + value = "-838472102" + ) + )] + ItemFlashlight = -838472102i32, + #[strum(serialize = "ItemWreckageStructureWeatherStation001")] + #[strum( + props( + name = "Wreckage Structure Weather Station", + desc = "", + value = "-834664349" + ) + )] + ItemWreckageStructureWeatherStation001 = -834664349i32, + #[strum(serialize = "ItemBiomass")] + #[strum( + props( + name = "Biomass", + desc = "Diced organic material that is returned when food and organic matter is passed through the Recycler and Centrifuge. Can be burned in a Furnace into Charcoal for use in the Generator (Solid Fuel).", + value = "-831480639" + ) + )] + ItemBiomass = -831480639i32, + #[strum(serialize = "ItemKitPowerTransmitterOmni")] + #[strum( + props(name = "Kit (Power Transmitter Omni)", desc = "", value = "-831211676") + )] + ItemKitPowerTransmitterOmni = -831211676i32, + #[strum(serialize = "StructureKlaxon")] + #[strum( + props( + name = "Klaxon Speaker", + desc = "Klaxons allow you to play over 50 announcements and sounds, depending on your Logic set-up. Set the mode to select the output.", + value = "-828056979" + ) + )] + StructureKlaxon = -828056979i32, + #[strum(serialize = "StructureElevatorLevelFront")] + #[strum(props(name = "Elevator Level (Cabled)", desc = "", value = "-827912235"))] + StructureElevatorLevelFront = -827912235i32, + #[strum(serialize = "ItemKitPipeOrgan")] + #[strum(props(name = "Kit (Pipe Organ)", desc = "", value = "-827125300"))] + ItemKitPipeOrgan = -827125300i32, + #[strum(serialize = "ItemKitWallPadded")] + #[strum(props(name = "Kit (Padded Wall)", desc = "", value = "-821868990"))] + ItemKitWallPadded = -821868990i32, + #[strum(serialize = "DynamicGasCanisterFuel")] + #[strum( + props( + name = "Portable Gas Tank (Fuel)", + desc = "Portable tanks store gas. They're good at it. If you need to refill a tank, bolt it to a Kit (Tank Connector), then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or things get messy. You can refill a Canister (Fuel) by attaching it to the tank's striped section. Or you could use a Wrench to attach it to a rover or rocket for later. It's really up to you.", + value = "-817051527" + ) + )] + DynamicGasCanisterFuel = -817051527i32, + #[strum(serialize = "StructureReinforcedCompositeWindowSteel")] + #[strum( + props( + name = "Reinforced Window (Composite Steel)", + desc = "Enjoy vistas of even the most savage, alien landscapes with these heavy duty window frames, which are resistant to pressure differentials up to 1MPa.", + value = "-816454272" + ) + )] + StructureReinforcedCompositeWindowSteel = -816454272i32, + #[strum(serialize = "StructureConsoleLED5")] + #[strum( + props( + name = "LED Display (Small)", + desc = "0.Default\n1.Percent\n2.Power", + value = "-815193061" + ) + )] + StructureConsoleLed5 = -815193061i32, + #[strum(serialize = "StructureInsulatedInLineTankLiquid1x1")] + #[strum( + props( + name = "Insulated In-Line Tank Small Liquid", + desc = "", + value = "-813426145" + ) + )] + StructureInsulatedInLineTankLiquid1X1 = -813426145i32, + #[strum(serialize = "StructureChuteDigitalFlipFlopSplitterLeft")] + #[strum( + props( + name = "Chute Digital Flip Flop Splitter Left", + desc = "The digital flip flop will toggle between two outputs using a specified ratio (n:1). For example, setting the dial to 2 would allow two items to pass through the primary output before flipping to the secondary output.", + value = "-810874728" + ) + )] + StructureChuteDigitalFlipFlopSplitterLeft = -810874728i32, + #[strum(serialize = "MotherboardRockets")] + #[strum(props(name = "Rocket Control Motherboard", desc = "", value = "-806986392"))] + MotherboardRockets = -806986392i32, + #[strum(serialize = "ItemKitFurnace")] + #[strum(props(name = "Kit (Furnace)", desc = "", value = "-806743925"))] + ItemKitFurnace = -806743925i32, + #[strum(serialize = "ItemTropicalPlant")] + #[strum( + props( + name = "Tropical Lily", + desc = "An anthurium, evolved in the jungles of South America, which will tolerate higher temperatures than most plants.", + value = "-800947386" + ) + )] + ItemTropicalPlant = -800947386i32, + #[strum(serialize = "ItemKitLiquidTank")] + #[strum(props(name = "Kit (Liquid Tank)", desc = "", value = "-799849305"))] + ItemKitLiquidTank = -799849305i32, + #[strum(serialize = "StructureCompositeDoor")] + #[strum( + props( + name = "Composite Door", + desc = "Recurso's composite doors are rated to 300kPa, which is more than sufficient for most purposes they were designed for. However, steep pressure differentials are not your friend.", + value = "-793837322" + ) + )] + StructureCompositeDoor = -793837322i32, + #[strum(serialize = "StructureStorageLocker")] + #[strum(props(name = "Locker", desc = "", value = "-793623899"))] + StructureStorageLocker = -793623899i32, + #[strum(serialize = "RespawnPoint")] + #[strum( + props( + name = "Respawn Point", + desc = "Place a respawn point to set a player entry point to your base when loading in, or returning from the dead.", + value = "-788672929" + ) + )] + RespawnPoint = -788672929i32, + #[strum(serialize = "ItemInconelIngot")] + #[strum(props(name = "Ingot (Inconel)", desc = "", value = "-787796599"))] + ItemInconelIngot = -787796599i32, + #[strum(serialize = "StructurePoweredVentLarge")] + #[strum( + props( + name = "Powered Vent Large", + desc = "For building large scale airlock systems and pressurised hangers, a bigger and bolder version of the Powered Vent that can effeciently pull a vacuum in large room.", + value = "-785498334" + ) + )] + StructurePoweredVentLarge = -785498334i32, + #[strum(serialize = "ItemKitWallGeometry")] + #[strum(props(name = "Kit (Geometric Wall)", desc = "", value = "-784733231"))] + ItemKitWallGeometry = -784733231i32, + #[strum(serialize = "StructureInsulatedPipeCrossJunction4")] + #[strum( + props( + name = "Insulated Pipe (4-Way Junction)", + desc = "Insulated pipes greatly reduce heat loss from gases stored in them.", + value = "-783387184" + ) + )] + StructureInsulatedPipeCrossJunction4 = -783387184i32, + #[strum(serialize = "StructurePowerConnector")] + #[strum( + props( + name = "Power Connector", + desc = "Attaches a Kit (Portable Generator) to a power network.", + value = "-782951720" + ) + )] + StructurePowerConnector = -782951720i32, + #[strum(serialize = "StructureLiquidPipeOneWayValve")] + #[strum( + props( + name = "One Way Valve (Liquid)", + desc = "The one way valve moves liquid in one direction only: from input side to output side. It only permits flow if the input pressure is higher than output pressure..", + value = "-782453061" + ) + )] + StructureLiquidPipeOneWayValve = -782453061i32, + #[strum(serialize = "StructureWallLargePanelArrow")] + #[strum(props(name = "Wall (Large Panel Arrow)", desc = "", value = "-776581573"))] + StructureWallLargePanelArrow = -776581573i32, + #[strum(serialize = "StructureShower")] + #[strum(props(name = "Shower", desc = "", value = "-775128944"))] + StructureShower = -775128944i32, + #[strum(serialize = "ItemChemLightBlue")] + #[strum( + props( + name = "Chem Light (Blue)", + desc = "A safe and slightly rave-some source of blue light. Snap to activate.", + value = "-772542081" + ) + )] + ItemChemLightBlue = -772542081i32, + #[strum(serialize = "StructureLogicSlotReader")] + #[strum(props(name = "Slot Reader", desc = "", value = "-767867194"))] + StructureLogicSlotReader = -767867194i32, + #[strum(serialize = "ItemGasCanisterCarbonDioxide")] + #[strum(props(name = "Canister (CO2)", desc = "", value = "-767685874"))] + ItemGasCanisterCarbonDioxide = -767685874i32, + #[strum(serialize = "ItemPipeAnalyizer")] + #[strum( + props( + name = "Kit (Pipe Analyzer)", + desc = "This kit creates a Pipe Analyzer.", + value = "-767597887" + ) + )] + ItemPipeAnalyizer = -767597887i32, + #[strum(serialize = "StructureBatteryChargerSmall")] + #[strum(props(name = "Battery Charger Small", desc = "", value = "-761772413"))] + StructureBatteryChargerSmall = -761772413i32, + #[strum(serialize = "StructureWaterBottleFillerPowered")] + #[strum(props(name = "Waterbottle Filler", desc = "", value = "-756587791"))] + StructureWaterBottleFillerPowered = -756587791i32, + #[strum(serialize = "AppliancePackagingMachine")] + #[strum( + props( + name = "Basic Packaging Machine", + desc = "The Xigo Cannifier requires Empty Can and cooked food to create long-lasting, easily stored sustenance. Note that the Cannifier must be bolted to a Powered Bench for power, and only accepts cooked food and tin cans.\n\nOPERATION\n\n1. Add the correct ingredients to the device via the hopper in the TOP.\n\n2. Close the device using the dropdown handle.\n\n3. Activate the device.\n\n4. Remove canned goods from the outlet in the FRONT.\n\nNote: the Cannifier will flash an error on its activation switch if you attempt to activate it before closing it.\n\n\n ", + value = "-749191906" + ) + )] + AppliancePackagingMachine = -749191906i32, + #[strum(serialize = "ItemIntegratedCircuit10")] + #[strum(props(name = "Integrated Circuit (IC10)", desc = "", value = "-744098481"))] + ItemIntegratedCircuit10 = -744098481i32, + #[strum(serialize = "ItemLabeller")] + #[strum( + props( + name = "Labeller", + desc = "A labeller lets you set names and values on a variety of devices and structures, including Console and Logic.", + value = "-743968726" + ) + )] + ItemLabeller = -743968726i32, + #[strum(serialize = "StructureCableJunctionH4")] + #[strum( + props(name = "Heavy Cable (4-Way Junction)", desc = "", value = "-742234680") + )] + StructureCableJunctionH4 = -742234680i32, + #[strum(serialize = "StructureWallCooler")] + #[strum( + props( + name = "Wall Cooler", + desc = "The Xigo Freezy Boi wall cooler complements the wall heater, which can only raise the temperature. The wall cooler functions by drawing heat from the surrounding atmosphere and adding that heat into its pipe network.\nIn order to run the wall cooler properly, you will need to connect pipes to the wall cooler and fill the connected pipe network with any type of gas. The gas's heat capacity and volume will determine how fast it reacts to temperature changes.\n\nEFFICIENCY\nThe higher the difference in temperature between the gas stored in the pipes and the room, the less efficient the wall cooler will be. So to keep the wall cooler running at an acceptable efficiency you will need to get rid of the heat that accumulates in the pipes connected to it. A common practice would be to run the pipes to the outside and use radiators on the outside section of the pipes to get rid of the heat.\nThe less efficient the wall cooler, the less power it consumes. It will consume 1010W at max efficiency. The wall cooler can be controlled by logic chips to run when the temperature hits a certain degree.\nERRORS\nIf the wall cooler is flashing an error then it is missing one of the following:\n\n- Pipe connection to the wall cooler.\n- Gas in the connected pipes, or pressure is too low.\n- Atmosphere in the surrounding environment or pressure is too low.\n\nFor more information about how to control temperatures, consult the temperature control Guides page.", + value = "-739292323" + ) + )] + StructureWallCooler = -739292323i32, + #[strum(serialize = "StructurePurgeValve")] + #[strum( + props( + name = "Purge Valve", + desc = "Allows for removal of pressurant gas and evaporated liquids from a liquid pipe. Similar in function to a Back Pressure Regulator the Purge Valve moves gas from the input liquid pipe to the output gas pipe aiming to keep the pressure of the input at the target setting.", + value = "-737232128" + ) + )] + StructurePurgeValve = -737232128i32, + #[strum(serialize = "StructureCrateMount")] + #[strum(props(name = "Container Mount", desc = "", value = "-733500083"))] + StructureCrateMount = -733500083i32, + #[strum(serialize = "ItemKitDynamicGenerator")] + #[strum(props(name = "Kit (Portable Generator)", desc = "", value = "-732720413"))] + ItemKitDynamicGenerator = -732720413i32, + #[strum(serialize = "StructureConsoleDual")] + #[strum( + props( + name = "Console Dual", + desc = "This Norsec-designed control box manages devices such as the Active Vent, Gas Sensor, Composite Door and others, depending on which circuitboard is inserted into the unit. It has separate data and power ports.\nA completed console displays all devices connected to the current power network. Any devices not related to the installed circuitboard will be greyed-out and inoperable. Consoles are locked once a Data Disk is removed.", + value = "-722284333" + ) + )] + StructureConsoleDual = -722284333i32, + #[strum(serialize = "ItemGasFilterOxygen")] + #[strum( + props( + name = "Filter (Oxygen)", + desc = "Sinotai have cornered the market in filter design. Their trademarked templates are simple to print and highly efficient at capturing various gases, which can be disposed of or used elsewhere. Oxygen is a common byproduct of smelting various ores, but must be filtered of such impurities as Nitrogen using this filter and various devices, such as the Kit (Portable Scrubber).", + value = "-721824748" + ) + )] + ItemGasFilterOxygen = -721824748i32, + #[strum(serialize = "ItemCookedTomato")] + #[strum( + props( + name = "Cooked Tomato", + desc = "A high-nutrient cooked food, which can be canned.", + value = "-709086714" + ) + )] + ItemCookedTomato = -709086714i32, + #[strum(serialize = "ItemCopperOre")] + #[strum( + props( + name = "Ore (Copper)", + desc = "Copper is a chemical element with the symbol \"Cu\". This common and highly conductive material is found on most astronomical bodies and is used in a variety of manufacturing processes including electronic components, alloys, and wires.", + value = "-707307845" + ) + )] + ItemCopperOre = -707307845i32, + #[strum(serialize = "StructureLogicTransmitter")] + #[strum( + props( + name = "Logic Transmitter", + desc = "Connects to Logic Transmitter", + value = "-693235651" + ) + )] + StructureLogicTransmitter = -693235651i32, + #[strum(serialize = "StructureValve")] + #[strum(props(name = "Valve", desc = "", value = "-692036078"))] + StructureValve = -692036078i32, + #[strum(serialize = "StructureCompositeWindowIron")] + #[strum(props(name = "Iron Window", desc = "", value = "-688284639"))] + StructureCompositeWindowIron = -688284639i32, + #[strum(serialize = "ItemSprayCanBlack")] + #[strum( + props( + name = "Spray Paint (Black)", + desc = "Go classic, clandestine or just plain Gothic with black paint, which can be applied to most items. Each can has 20 uses.", + value = "-688107795" + ) + )] + ItemSprayCanBlack = -688107795i32, + #[strum(serialize = "ItemRocketMiningDrillHeadLongTerm")] + #[strum( + props(name = "Mining-Drill Head (Long Term)", desc = "", value = "-684020753") + )] + ItemRocketMiningDrillHeadLongTerm = -684020753i32, + #[strum(serialize = "ItemMiningBelt")] + #[strum( + props( + name = "Mining Belt", + desc = "Originally developed by Recurso Espaciais for asteroid mining, the Stationeer's mining belt has room for two tools and eight ore stacks. While wearing the belt, ore is automatically stored there when mined. Volatile and temperature-dependent remain stable in the environmentally controlled unit.", + value = "-676435305" + ) + )] + ItemMiningBelt = -676435305i32, + #[strum(serialize = "ItemGasCanisterSmart")] + #[strum( + props( + name = "Gas Canister (Smart)", + desc = "0.Mode0\n1.Mode1", + value = "-668314371" + ) + )] + ItemGasCanisterSmart = -668314371i32, + #[strum(serialize = "ItemFlour")] + #[strum( + props( + name = "Flour", + desc = "Pulverized Wheat, a key ingredient in many foods created by the Microwave and the Kit (Automated Oven).", + value = "-665995854" + ) + )] + ItemFlour = -665995854i32, + #[strum(serialize = "StructureSmallTableRectangleDouble")] + #[strum( + props(name = "Small (Table Rectangle Double)", desc = "", value = "-660451023") + )] + StructureSmallTableRectangleDouble = -660451023i32, + #[strum(serialize = "StructureChuteUmbilicalFemaleSide")] + #[strum( + props(name = "Umbilical Socket Angle (Chute)", desc = "", value = "-659093969") + )] + StructureChuteUmbilicalFemaleSide = -659093969i32, + #[strum(serialize = "ItemSteelIngot")] + #[strum( + props( + name = "Ingot (Steel)", + desc = "Steel ingots are a metal alloy, crafted in a Furnace by smelting Ore (Iron) and Ore (Coal) at a ratio of 3:1.\nIt may not be elegant, but Ice (Oxite) and Ice (Volatiles) can be combined at a ratio of 1:2 in a furnace to create the necessary gas mixture for smelting.", + value = "-654790771" + ) + )] + ItemSteelIngot = -654790771i32, + #[strum(serialize = "SeedBag_Wheet")] + #[strum( + props( + name = "Wheat Seeds", + desc = "Grow some Wheat.", + value = "-654756733" + ) + )] + SeedBagWheet = -654756733i32, + #[strum(serialize = "StructureRocketTower")] + #[strum(props(name = "Launch Tower", desc = "", value = "-654619479"))] + StructureRocketTower = -654619479i32, + #[strum(serialize = "StructureGasUmbilicalFemaleSide")] + #[strum( + props(name = "Umbilical Socket Angle (Gas)", desc = "", value = "-648683847") + )] + StructureGasUmbilicalFemaleSide = -648683847i32, + #[strum(serialize = "StructureLockerSmall")] + #[strum(props(name = "Locker (Small)", desc = "", value = "-647164662"))] + StructureLockerSmall = -647164662i32, + #[strum(serialize = "StructureSecurityPrinter")] + #[strum( + props( + name = "Security Printer", + desc = "Any Stationeer concerned about security needs the Harkwell-designed Vigilant-E security printer. Use the Vigilant-E to create a Cartridge (Access Controller), in order to restrict access to different parts of your base via keycards like the Access Card (Blue). The printer also makes a variety of weapons and ammunitions to defend your base against any hostile, aggressive or just slightly rude entites you encounter as you explore the Solar System.\n", + value = "-641491515" + ) + )] + StructureSecurityPrinter = -641491515i32, + #[strum(serialize = "StructureWallSmallPanelsArrow")] + #[strum(props(name = "Wall (Small Panels Arrow)", desc = "", value = "-639306697"))] + StructureWallSmallPanelsArrow = -639306697i32, + #[strum(serialize = "ItemKitDynamicMKIILiquidCanister")] + #[strum( + props(name = "Kit (Portable Liquid Tank Mk II)", desc = "", value = "-638019974") + )] + ItemKitDynamicMkiiLiquidCanister = -638019974i32, + #[strum(serialize = "ItemKitRocketManufactory")] + #[strum(props(name = "Kit (Rocket Manufactory)", desc = "", value = "-636127860"))] + ItemKitRocketManufactory = -636127860i32, + #[strum(serialize = "ItemPureIceVolatiles")] + #[strum( + props( + name = "Pure Ice Volatiles", + desc = "A frozen chunk of pure Volatiles", + value = "-633723719" + ) + )] + ItemPureIceVolatiles = -633723719i32, + #[strum(serialize = "ItemGasFilterNitrogenM")] + #[strum(props(name = "Medium Filter (Nitrogen)", desc = "", value = "-632657357"))] + ItemGasFilterNitrogenM = -632657357i32, + #[strum(serialize = "StructureCableFuse5k")] + #[strum(props(name = "Fuse (5kW)", desc = "", value = "-631590668"))] + StructureCableFuse5K = -631590668i32, + #[strum(serialize = "StructureCableJunction6Burnt")] + #[strum( + props(name = "Burnt Cable (6-Way Junction)", desc = "", value = "-628145954") + )] + StructureCableJunction6Burnt = -628145954i32, + #[strum(serialize = "StructureComputer")] + #[strum( + props( + name = "Computer", + desc = "In some ways a relic, the 'Chonk R1' was designed by severely conflicted Norsec technicians, who needed a unit that could operate with a wide range of motherboards, while also enduring the worst a new Cadet could throw at it.\nThe result is a machine described by some as 'the only PC likely to survive our collision with a black hole', while other, less appreciative users regard it as sharing most of its technological DNA with a cheese grater.\nCompatible motherboards:\n- Logic Motherboard\n- Manufacturing Motherboard\n- Sorter Motherboard\n- Communications Motherboard\n- IC Editor Motherboard", + value = "-626563514" + ) + )] + StructureComputer = -626563514i32, + #[strum(serialize = "StructurePressureFedGasEngine")] + #[strum( + props( + name = "Pressure Fed Gas Engine", + desc = "Inefficient but very powerful, the Pressure Fed Gas Engine moves gas from each of its two inputs based on the pressure of the input pipes. Control the mixing ratio of fuels by tweaking the input pressures to target a 2:1 mix of Volatiles to Oxygen gas. Chilling propellant gasses or using Nitrous Oxide as an oxydizer will result in even higher thrust outputs.", + value = "-624011170" + ) + )] + StructurePressureFedGasEngine = -624011170i32, + #[strum(serialize = "StructureGroundBasedTelescope")] + #[strum( + props( + name = "Telescope", + desc = "A telescope that can be oriented to observe Celestial Bodies. When within full alignment will show orbital information for that celestial object. Atmospheric conditions may disrupt the ability to observe some objects at some times of day. To collect Horizontal and Vertical values you can use a Rocket Celestial Tracker while it is in orbit, or a Daylight Sensor for primary body data.", + value = "-619745681" + ) + )] + StructureGroundBasedTelescope = -619745681i32, + #[strum(serialize = "ItemKitAdvancedFurnace")] + #[strum(props(name = "Kit (Advanced Furnace)", desc = "", value = "-616758353"))] + ItemKitAdvancedFurnace = -616758353i32, + #[strum(serialize = "StructureHeatExchangerLiquidtoLiquid")] + #[strum( + props( + name = "Heat Exchanger - Liquid", + desc = "The original specs for the N Series Flow-P heat exchanger were rumored to have been scrawled on the back of a burger receipt by a bored Sinotai designer riding up the Brazilian space elevator, but that hasn't stopped it becoming one of the most widely-copied heat exchanger designs in the Solar System.\nThe 'N Flow-P' has four connections, allowing you to pass two liquid networks into the unit, which then works to equalize temperature across the two separate networks.\nAs the N Flow-P is a passive system, it equalizes pressure across the entire of each individual network, unless connected to liquid management devices like a Liquid Volume Pump or a Liquid Back Volume Regulator.\n", + value = "-613784254" + ) + )] + StructureHeatExchangerLiquidtoLiquid = -613784254i32, + #[strum(serialize = "StructureChuteJunction")] + #[strum( + props( + name = "Chute (Junction)", + desc = "The aim for any Stationeer is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps.\nChute junctions are fundamental components of chute networks, allowing merging or splitting of these networks. When combined with a programmed Sorter, items can be sent down different paths to various machines with import/export slots.", + value = "-611232514" + ) + )] + StructureChuteJunction = -611232514i32, + #[strum(serialize = "StructureChuteWindow")] + #[strum( + props( + name = "Chute (Window)", + desc = "Chute's with windows let you see what's passing through your import/export network. But be warned, they are not insulated as other chutes are. Ices will melt.", + value = "-607241919" + ) + )] + StructureChuteWindow = -607241919i32, + #[strum(serialize = "ItemWearLamp")] + #[strum(props(name = "Headlamp", desc = "", value = "-598730959"))] + ItemWearLamp = -598730959i32, + #[strum(serialize = "ItemKitAdvancedPackagingMachine")] + #[strum( + props(name = "Kit (Advanced Packaging Machine)", desc = "", value = "-598545233") + )] + ItemKitAdvancedPackagingMachine = -598545233i32, + #[strum(serialize = "ItemChemLightGreen")] + #[strum( + props( + name = "Chem Light (Green)", + desc = "Enliven the dreariest, airless rock with this glowy green light. Snap to activate.", + value = "-597479390" + ) + )] + ItemChemLightGreen = -597479390i32, + #[strum(serialize = "EntityRoosterBrown")] + #[strum( + props( + name = "Entity Rooster Brown", + desc = "The common brown rooster. Don't let it hear you say that.", + value = "-583103395" + ) + )] + EntityRoosterBrown = -583103395i32, + #[strum(serialize = "StructureLargeExtendableRadiator")] + #[strum( + props( + name = "Large Extendable Radiator", + desc = "Omptimised for radiating heat in vacuum and low pressure environments. If pointed at the sun it will heat its contents rapidly via solar heating. The panels can fold away to stop all heat radiation/solar heating and protect them from storms.", + value = "-566775170" + ) + )] + StructureLargeExtendableRadiator = -566775170i32, + #[strum(serialize = "StructureMediumHangerDoor")] + #[strum( + props( + name = "Medium Hangar Door", + desc = "1 x 2 modular door piece for building hangar doors.", + value = "-566348148" + ) + )] + StructureMediumHangerDoor = -566348148i32, + #[strum(serialize = "StructureLaunchMount")] + #[strum( + props( + name = "Launch Mount", + desc = "The first piece to place whern building a rocket. Rockets can be constructed and/or landed here. Each Launch Mount will be allocated a slot on the Space Map and assigned a Location Code.", + value = "-558953231" + ) + )] + StructureLaunchMount = -558953231i32, + #[strum(serialize = "StructureShortLocker")] + #[strum(props(name = "Short Locker", desc = "", value = "-554553467"))] + StructureShortLocker = -554553467i32, + #[strum(serialize = "ItemKitCrateMount")] + #[strum(props(name = "Kit (Container Mount)", desc = "", value = "-551612946"))] + ItemKitCrateMount = -551612946i32, + #[strum(serialize = "ItemKitCryoTube")] + #[strum(props(name = "Kit (Cryo Tube)", desc = "", value = "-545234195"))] + ItemKitCryoTube = -545234195i32, + #[strum(serialize = "StructureSolarPanelDual")] + #[strum( + props( + name = "Solar Panel (Dual)", + desc = "Sinotai dual solar panels are used for generating power from sunlight, with dedicated data and power ports. They can be connected to {Logic systems, in order to track sunlight, but their efficiency is reduced during storms and when damaged. You can repair these using some trusty Duct Tape.", + value = "-539224550" + ) + )] + StructureSolarPanelDual = -539224550i32, + #[strum(serialize = "ItemPlantSwitchGrass")] + #[strum(props(name = "Switch Grass", desc = "", value = "-532672323"))] + ItemPlantSwitchGrass = -532672323i32, + #[strum(serialize = "StructureInsulatedPipeLiquidTJunction")] + #[strum( + props( + name = "Insulated Liquid Pipe (T Junction)", + desc = "Liquid piping with very low temperature loss or gain.", + value = "-532384855" + ) + )] + StructureInsulatedPipeLiquidTJunction = -532384855i32, + #[strum(serialize = "ItemKitSolarPanelBasicReinforced")] + #[strum( + props(name = "Kit (Solar Panel Basic Heavy)", desc = "", value = "-528695432") + )] + ItemKitSolarPanelBasicReinforced = -528695432i32, + #[strum(serialize = "ItemChemLightRed")] + #[strum( + props( + name = "Chem Light (Red)", + desc = "A red glowstick. Snap to activate. Then reach for the lasers.", + value = "-525810132" + ) + )] + ItemChemLightRed = -525810132i32, + #[strum(serialize = "ItemKitWallIron")] + #[strum(props(name = "Kit (Iron Wall)", desc = "", value = "-524546923"))] + ItemKitWallIron = -524546923i32, + #[strum(serialize = "ItemEggCarton")] + #[strum( + props( + name = "Egg Carton", + desc = "Within, eggs reside in mysterious, marmoreal silence.", + value = "-524289310" + ) + )] + ItemEggCarton = -524289310i32, + #[strum(serialize = "StructureWaterDigitalValve")] + #[strum(props(name = "Liquid Digital Valve", desc = "", value = "-517628750"))] + StructureWaterDigitalValve = -517628750i32, + #[strum(serialize = "StructureSmallDirectHeatExchangeLiquidtoLiquid")] + #[strum( + props( + name = "Small Direct Heat Exchanger - Liquid + Liquid", + desc = "Direct Heat Exchangers equalize the temperature of the two input networks.", + value = "-507770416" + ) + )] + StructureSmallDirectHeatExchangeLiquidtoLiquid = -507770416i32, + #[strum(serialize = "ItemWirelessBatteryCellExtraLarge")] + #[strum( + props( + name = "Wireless Battery Cell Extra Large", + desc = "0.Empty\n1.Critical\n2.VeryLow\n3.Low\n4.Medium\n5.High\n6.Full", + value = "-504717121" + ) + )] + ItemWirelessBatteryCellExtraLarge = -504717121i32, + #[strum(serialize = "ItemGasFilterPollutantsInfinite")] + #[strum( + props( + name = "Catalytic Filter (Pollutants)", + desc = "A filter that selectively targets Pollutants. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle.", + value = "-503738105" + ) + )] + ItemGasFilterPollutantsInfinite = -503738105i32, + #[strum(serialize = "ItemSprayCanBlue")] + #[strum( + props( + name = "Spray Paint (Blue)", + desc = "What kind of a color is blue? The kind of of color that says, 'Hey, what about me?'", + value = "-498464883" + ) + )] + ItemSprayCanBlue = -498464883i32, + #[strum(serialize = "RespawnPointWallMounted")] + #[strum(props(name = "Respawn Point (Mounted)", desc = "", value = "-491247370"))] + RespawnPointWallMounted = -491247370i32, + #[strum(serialize = "ItemIronSheets")] + #[strum(props(name = "Iron Sheets", desc = "", value = "-487378546"))] + ItemIronSheets = -487378546i32, + #[strum(serialize = "ItemGasCanisterVolatiles")] + #[strum(props(name = "Canister (Volatiles)", desc = "", value = "-472094806"))] + ItemGasCanisterVolatiles = -472094806i32, + #[strum(serialize = "ItemCableCoil")] + #[strum( + props( + name = "Cable Coil", + desc = "Bodily metaphors are tired and anthropocentric, but it was Frida Stuppen, the first ODA Administrator, who said, 'Let the cabling be as the nerve and the vessel, transmitting power and data alike through systems we forge among the stars.' Later commentators suggested that she was simply putting a romantic gloss on a piece of dubious economy. Whatever the case, standard cabling is where any Stationeer's network begins. \nNormal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy).", + value = "-466050668" + ) + )] + ItemCableCoil = -466050668i32, + #[strum(serialize = "StructureToolManufactory")] + #[strum( + props( + name = "Tool Manufactory", + desc = "No mission can be completed without the proper tools. The Norsec ThuulDek manufactory can fabricate almost any tool or hand-held device a Stationeer may need to complete their mission, as well as a variety of delightful paints.\nUpgrade the device using a Tool Printer Mod for additional recipes and faster processing speeds.", + value = "-465741100" + ) + )] + StructureToolManufactory = -465741100i32, + #[strum(serialize = "StructureAdvancedPackagingMachine")] + #[strum( + props( + name = "Advanced Packaging Machine", + desc = "The Xigo Advanced Cannifier Multi-Plus Pro is an automateable packaging machine that uses Empty Cans and cooked food to create canned sustenance that does not decay. Note that the ACMPP only accepts cooked food and tin cans.", + value = "-463037670" + ) + )] + StructureAdvancedPackagingMachine = -463037670i32, + #[strum(serialize = "Battery_Wireless_cell")] + #[strum( + props( + name = "Battery Wireless Cell", + desc = "0.Empty\n1.Critical\n2.VeryLow\n3.Low\n4.Medium\n5.High\n6.Full", + value = "-462415758" + ) + )] + BatteryWirelessCell = -462415758i32, + #[strum(serialize = "ItemBatteryCellLarge")] + #[strum( + props( + name = "Battery Cell (Large)", + desc = "First mass-produced by Xigo in 2155 on the basis of a unattributed prototype, the classic silicon anode solid-state design extends its optimum temperature range.\n\nPOWER OUTPUT\nThe large power cell can discharge 288kW of power. \n", + value = "-459827268" + ) + )] + ItemBatteryCellLarge = -459827268i32, + #[strum(serialize = "StructureLiquidVolumePump")] + #[strum(props(name = "Liquid Volume Pump", desc = "", value = "-454028979"))] + StructureLiquidVolumePump = -454028979i32, + #[strum(serialize = "ItemKitTransformer")] + #[strum(props(name = "Kit (Transformer Large)", desc = "", value = "-453039435"))] + ItemKitTransformer = -453039435i32, + #[strum(serialize = "StructureVendingMachine")] + #[strum( + props( + name = "Vending Machine", + desc = "The Xigo-designed 'Slot Mate' vending machine allows storage of almost any item, while also operating as a distribution point for working with Traders. You cannot trade without a vending machine, or its more advanced equivalent, the Refrigerated Vending Machine. Each vending machine can hold up to 100 stacks.", + value = "-443130773" + ) + )] + StructureVendingMachine = -443130773i32, + #[strum(serialize = "StructurePipeHeater")] + #[strum( + props( + name = "Pipe Heater (Gas)", + desc = "Adds 1000 joules of heat per tick to the contents of your pipe network.", + value = "-419758574" + ) + )] + StructurePipeHeater = -419758574i32, + #[strum(serialize = "StructurePipeCrossJunction4")] + #[strum( + props( + name = "Pipe (4-Way Junction)", + desc = "You can upgrade this pipe to an Insulated Pipe (4-Way Junction) using an Kit (Insulated Pipe) and a Wrench.", + value = "-417629293" + ) + )] + StructurePipeCrossJunction4 = -417629293i32, + #[strum(serialize = "StructureLadder")] + #[strum(props(name = "Ladder", desc = "", value = "-415420281"))] + StructureLadder = -415420281i32, + #[strum(serialize = "ItemHardJetpack")] + #[strum( + props( + name = "Hardsuit Jetpack", + desc = "The Norsec jetpack isn't 'technically' a jetpack at all, it's a gas thruster. It can be powered by any gas, so long as the internal pressure of the canister is higher than the ambient external pressure. If the external pressure is greater, the spacepack will not function. Adjusting the thrust value alters your rate of acceleration, while activating the stablizer causes the spacepack to hover when a given height is reached.\nThe hardsuit jetpack is capable of much higher speeds than the Jetpack Basic - up to 15m/s. Indispensable for building, mining and general movement, it has fourteen storage slots.\nUSE: 'J' to activate; 'space' to fly up; 'left ctrl' to descend; and 'WASD' to move.", + value = "-412551656" + ) + )] + ItemHardJetpack = -412551656i32, + #[strum(serialize = "CircuitboardCameraDisplay")] + #[strum( + props( + name = "Camera Display", + desc = "Surveillance is sometimes necessary when building bases in highly hostile environments. The camera display circuit board allows wary Stationeers to turn a Console into a security display when connected to a Camera.", + value = "-412104504" + ) + )] + CircuitboardCameraDisplay = -412104504i32, + #[strum(serialize = "ItemCopperIngot")] + #[strum( + props( + name = "Ingot (Copper)", + desc = "Copper ingots are created by smelting Ore (Copper) in the Furnace and Arc Furnace, and used to create a variety of items.", + value = "-404336834" + ) + )] + ItemCopperIngot = -404336834i32, + #[strum(serialize = "ReagentColorOrange")] + #[strum(props(name = "Color Dye (Orange)", desc = "", value = "-400696159"))] + ReagentColorOrange = -400696159i32, + #[strum(serialize = "StructureBattery")] + #[strum( + props( + name = "Station Battery", + desc = "Providing large-scale, reliable power storage, the Sinotai 'Dianzi' station battery is the heart of most Stationeer bases. \nThere are a variety of cautions to the design of electrical systems using batteries, and every experienced Stationeer has a story to tell, hence the Stationeer adage: 'Dianzi cooks, but it also frys.' \nPOWER OUTPUT\nAble to store up to 3600000W of power, there are no practical limits to its throughput, hence it is wise to use Cable Coil (Heavy). Seasoned electrical engineers will also laugh in the face of those who fail to separate out their power generation networks using an Area Power Control and Transformer (Large).", + value = "-400115994" + ) + )] + StructureBattery = -400115994i32, + #[strum(serialize = "StructurePipeRadiatorFlat")] + #[strum( + props( + name = "Pipe Radiator", + desc = "A pipe mounted radiator optimized for radiating heat in vacuums.", + value = "-399883995" + ) + )] + StructurePipeRadiatorFlat = -399883995i32, + #[strum(serialize = "StructureCompositeCladdingAngledLong")] + #[strum( + props(name = "Composite Cladding (Long Angled)", desc = "", value = "-387546514") + )] + StructureCompositeCladdingAngledLong = -387546514i32, + #[strum(serialize = "DynamicGasTankAdvanced")] + #[strum( + props(name = "Gas Tank Mk II", desc = "0.Mode0\n1.Mode1", value = "-386375420") + )] + DynamicGasTankAdvanced = -386375420i32, + #[strum(serialize = "WeaponPistolEnergy")] + #[strum( + props(name = "Energy Pistol", desc = "0.Stun\n1.Kill", value = "-385323479") + )] + WeaponPistolEnergy = -385323479i32, + #[strum(serialize = "ItemFertilizedEgg")] + #[strum( + props( + name = "Egg", + desc = "To hatch it requires an incubation temperature of between 35 and 45 degrees Celsius and will hatch into a Chick. If the egg is exposed to tepratures below 10 degrees it will no longer be viable.", + value = "-383972371" + ) + )] + ItemFertilizedEgg = -383972371i32, + #[strum(serialize = "ItemRocketMiningDrillHeadIce")] + #[strum(props(name = "Mining-Drill Head (Ice)", desc = "", value = "-380904592"))] + ItemRocketMiningDrillHeadIce = -380904592i32, + #[strum(serialize = "Flag_ODA_8m")] + #[strum(props(name = "Flag (ODA 8m)", desc = "", value = "-375156130"))] + FlagOda8M = -375156130i32, + #[strum(serialize = "AccessCardGreen")] + #[strum(props(name = "Access Card (Green)", desc = "", value = "-374567952"))] + AccessCardGreen = -374567952i32, + #[strum(serialize = "StructureChairBoothCornerLeft")] + #[strum(props(name = "Chair (Booth Corner Left)", desc = "", value = "-367720198"))] + StructureChairBoothCornerLeft = -367720198i32, + #[strum(serialize = "ItemKitFuselage")] + #[strum(props(name = "Kit (Fuselage)", desc = "", value = "-366262681"))] + ItemKitFuselage = -366262681i32, + #[strum(serialize = "ItemSolidFuel")] + #[strum(props(name = "Solid Fuel (Hydrocarbon)", desc = "", value = "-365253871"))] + ItemSolidFuel = -365253871i32, + #[strum(serialize = "ItemKitSolarPanelReinforced")] + #[strum(props(name = "Kit (Solar Panel Heavy)", desc = "", value = "-364868685"))] + ItemKitSolarPanelReinforced = -364868685i32, + #[strum(serialize = "ItemToolBelt")] + #[strum( + props( + name = "Tool Belt", + desc = "If there's one piece of equipment that embodies Stationeer life above all else, it's the humble toolbelt (Editor's note: a recent ODA survey of iconic Stationeer equipment also rated the smoking, toxic ruins of an over-pressurized Furnace lying amid the charred remains of your latest base very highly).\nDesigned to meet the most strict-ish ODA safety standards, the toolbelt's eight slots hold one thing: tools, and Cable Coil. Not to be confused with the Mining Belt.", + value = "-355127880" + ) + )] + ItemToolBelt = -355127880i32, + #[strum(serialize = "ItemEmergencyAngleGrinder")] + #[strum(props(name = "Emergency Angle Grinder", desc = "", value = "-351438780"))] + ItemEmergencyAngleGrinder = -351438780i32, + #[strum(serialize = "StructureCableFuse50k")] + #[strum(props(name = "Fuse (50kW)", desc = "", value = "-349716617"))] + StructureCableFuse50K = -349716617i32, + #[strum(serialize = "StructureCompositeCladdingAngledCornerLongR")] + #[strum( + props( + name = "Composite Cladding (Long Angled Mirrored Corner)", + desc = "", + value = "-348918222" + ) + )] + StructureCompositeCladdingAngledCornerLongR = -348918222i32, + #[strum(serialize = "StructureFiltration")] + #[strum( + props( + name = "Filtration", + desc = "The Filtration Unit is based on a long-standing ExMin system, itself based on older designs of uncertain provenance. It is available in the Kit (Atmospherics).\nThe device has nonetheless proven indispensable for Stationeer atmospheric systems, as it can filter two gases simultaneously from a single pipe network using a dual filter array. The unit has an input, and a filter output as well as an unfiltered outlet for any residual gases.\n", + value = "-348054045" + ) + )] + StructureFiltration = -348054045i32, + #[strum(serialize = "StructureLogicReader")] + #[strum(props(name = "Logic Reader", desc = "", value = "-345383640"))] + StructureLogicReader = -345383640i32, + #[strum(serialize = "ItemKitMotherShipCore")] + #[strum(props(name = "Kit (Mothership)", desc = "", value = "-344968335"))] + ItemKitMotherShipCore = -344968335i32, + #[strum(serialize = "StructureCamera")] + #[strum( + props( + name = "Camera", + desc = "Nothing says 'I care' like a security camera that's been linked a Motion Sensor and a Console fitted with a Camera Display.\nBe there, even when you're not.", + value = "-342072665" + ) + )] + StructureCamera = -342072665i32, + #[strum(serialize = "StructureCableJunctionHBurnt")] + #[strum(props(name = "Burnt Cable (Junction)", desc = "", value = "-341365649"))] + StructureCableJunctionHBurnt = -341365649i32, + #[strum(serialize = "MotherboardComms")] + #[strum( + props( + name = "Communications Motherboard", + desc = "When placed in a Computer and connected to a Landingpad Data And Power, a Medium Satellite Dish, and a Vending Machine allows Stationeers to trade with suppliers. Adjust the horizontal and vertical attributes of the Medium Satellite Dish either directly or through logic. You need a communications signal of 95% or above to establish reliable communications with a trader. A minimum of a 3x3 clear pad area with a Landingpad Center at the center is required for a trader to land.", + value = "-337075633" + ) + )] + MotherboardComms = -337075633i32, + #[strum(serialize = "AccessCardOrange")] + #[strum(props(name = "Access Card (Orange)", desc = "", value = "-332896929"))] + AccessCardOrange = -332896929i32, + #[strum(serialize = "StructurePowerTransmitterOmni")] + #[strum(props(name = "Power Transmitter Omni", desc = "", value = "-327468845"))] + StructurePowerTransmitterOmni = -327468845i32, + #[strum(serialize = "StructureGlassDoor")] + #[strum( + props(name = "Glass Door", desc = "0.Operate\n1.Logic", value = "-324331872") + )] + StructureGlassDoor = -324331872i32, + #[strum(serialize = "DynamicGasCanisterCarbonDioxide")] + #[strum( + props( + name = "Portable Gas Tank (CO2)", + desc = "Portable gas tanks do one thing: store gas. To refill the tank, bolt it to a Kit (Tank Connector), then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or ... boom. Once it's full, you can refill a Canister (CO2) by attaching it to the tank's striped section. Or you could vent the tank's variable flow rate valve into a room and create an atmosphere ... of sorts.", + value = "-322413931" + ) + )] + DynamicGasCanisterCarbonDioxide = -322413931i32, + #[strum(serialize = "StructureVolumePump")] + #[strum( + props( + name = "Volume Pump", + desc = "The volume pump pumps pumpable gases. It also separates out pipe networks into separate networks.", + value = "-321403609" + ) + )] + StructureVolumePump = -321403609i32, + #[strum(serialize = "DynamicMKIILiquidCanisterWater")] + #[strum( + props( + name = "Portable Liquid Tank Mk II (Water)", + desc = "An insulated version of the Portable Liquid Tank Mk II (Water), for storing liquids without them gaining or losing temperature.", + value = "-319510386" + ) + )] + DynamicMkiiLiquidCanisterWater = -319510386i32, + #[strum(serialize = "ItemKitRocketBattery")] + #[strum(props(name = "Kit (Rocket Battery)", desc = "", value = "-314072139"))] + ItemKitRocketBattery = -314072139i32, + #[strum(serialize = "ElectronicPrinterMod")] + #[strum( + props( + name = "Electronic Printer Mod", + desc = "Apply to an Electronics Printer with a Welding Torch or Arc Welder to upgrade for increased processing speed and more recipe options.", + value = "-311170652" + ) + )] + ElectronicPrinterMod = -311170652i32, + #[strum(serialize = "ItemWreckageHydroponicsTray1")] + #[strum(props(name = "Wreckage Hydroponics Tray", desc = "", value = "-310178617"))] + ItemWreckageHydroponicsTray1 = -310178617i32, + #[strum(serialize = "ItemKitRocketCelestialTracker")] + #[strum( + props(name = "Kit (Rocket Celestial Tracker)", desc = "", value = "-303008602") + )] + ItemKitRocketCelestialTracker = -303008602i32, + #[strum(serialize = "StructureFrameSide")] + #[strum( + props( + name = "Steel Frame (Side)", + desc = "More durable than the Iron Frame, steel frames also provide variations for more ornate constructions.", + value = "-302420053" + ) + )] + StructureFrameSide = -302420053i32, + #[strum(serialize = "ItemInvarIngot")] + #[strum(props(name = "Ingot (Invar)", desc = "", value = "-297990285"))] + ItemInvarIngot = -297990285i32, + #[strum(serialize = "StructureSmallTableThickSingle")] + #[strum(props(name = "Small Table (Thick Single)", desc = "", value = "-291862981"))] + StructureSmallTableThickSingle = -291862981i32, + #[strum(serialize = "ItemSiliconIngot")] + #[strum(props(name = "Ingot (Silicon)", desc = "", value = "-290196476"))] + ItemSiliconIngot = -290196476i32, + #[strum(serialize = "StructureLiquidPipeHeater")] + #[strum( + props( + name = "Pipe Heater (Liquid)", + desc = "Adds 1000 joules of heat per tick to the contents of your pipe network.", + value = "-287495560" + ) + )] + StructureLiquidPipeHeater = -287495560i32, + #[strum(serialize = "ItemChocolateCake")] + #[strum(props(name = "Chocolate Cake", desc = "", value = "-261575861"))] + ItemChocolateCake = -261575861i32, + #[strum(serialize = "StructureStirlingEngine")] + #[strum( + props( + name = "Stirling Engine", + desc = "Harnessing an ancient thermal exploit, the Recurso 'Libra' Stirling Engine generates power via the expansion and contraction of a working gas to drive pistons operating an electrical generator.\n \nWhen high pressure hot gas is supplied into the input pipe, this gas will heat the hot side of the unit, then pass into the output pipe. The cooler side uses the room's ambient atmosphere, which must be kept at a lower temperature and pressure in order to create a differential. Add a working gas by inserting a Gas Canister. The unit must be deactivated when adding or removing canisters, or the working gas may leak into the surrounding atmosphere.\n \nGases with a low molecular mass make the most efficient working gases. Increasing the moles of working gas can result in a greater potential power output. However, overpressuring the unit may have ... sub-optimal results.", + value = "-260316435" + ) + )] + StructureStirlingEngine = -260316435i32, + #[strum(serialize = "StructureCompositeCladdingRounded")] + #[strum( + props(name = "Composite Cladding (Rounded)", desc = "", value = "-259357734") + )] + StructureCompositeCladdingRounded = -259357734i32, + #[strum(serialize = "SMGMagazine")] + #[strum(props(name = "SMG Magazine", desc = "", value = "-256607540"))] + SmgMagazine = -256607540i32, + #[strum(serialize = "ItemLiquidPipeHeater")] + #[strum( + props( + name = "Pipe Heater Kit (Liquid)", + desc = "Creates a Pipe Heater (Liquid).", + value = "-248475032" + ) + )] + ItemLiquidPipeHeater = -248475032i32, + #[strum(serialize = "StructureArcFurnace")] + #[strum( + props( + name = "Arc Furnace", + desc = "The simplest smelting system available to the average Stationeer, Recurso's arc furnace was forged itself in the depths of the Solar System to help explorational geologists determine the purity of potential asteroidal mining targets.\nCo-opted by the ODA, it now provides Stationeers with a way to produce pure ingots of various resources.\nThe smelting process also releases a range of by product gases, principally Nitrogen, Carbon Dioxide, Volatiles and Oxygen in differing ratios. These can be recaptured from the atmosphere by filtering, but also make the arc furnace a risk in closed environments. \nUnlike the more advanced Furnace, the arc furnace cannot create alloys.", + value = "-247344692" + ) + )] + StructureArcFurnace = -247344692i32, + #[strum(serialize = "ItemTablet")] + #[strum( + props( + name = "Handheld Tablet", + desc = "The Xigo handheld 'Padi' tablet is an all-purpose data platform, provided as standard issue to all Stationeers. A dynamic multi-tool that accepts a range of cartridges, the Padi becomes an Atmos Analyzer or Tracker, Medical Analyzer, Ore Scanner, eReader, and various other functions.", + value = "-229808600" + ) + )] + ItemTablet = -229808600i32, + #[strum(serialize = "StructureGovernedGasEngine")] + #[strum( + props( + name = "Pumped Gas Engine", + desc = "The most reliable of all the rocket engines, the Pumped Gas Engine runs on a 2:1 mix of Volatiles to Oxygen gas.", + value = "-214232602" + ) + )] + StructureGovernedGasEngine = -214232602i32, + #[strum(serialize = "StructureStairs4x2RailR")] + #[strum(props(name = "Stairs with Rail (Right)", desc = "", value = "-212902482"))] + StructureStairs4X2RailR = -212902482i32, + #[strum(serialize = "ItemLeadOre")] + #[strum( + props( + name = "Ore (Lead)", + desc = "Lead is a chemical element with the symbol \"Pb\". It is a dense, heavy metal with a low melting point. Lead is a used to make a variety of things such as alloys like Ingot (Solder) and munitions.", + value = "-190236170" + ) + )] + ItemLeadOre = -190236170i32, + #[strum(serialize = "StructureBeacon")] + #[strum(props(name = "Beacon", desc = "", value = "-188177083"))] + StructureBeacon = -188177083i32, + #[strum(serialize = "ItemGasFilterCarbonDioxideInfinite")] + #[strum( + props( + name = "Catalytic Filter (Carbon Dioxide)", + desc = "A filter that selectively targets Carbon Dioxide. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle.", + value = "-185568964" + ) + )] + ItemGasFilterCarbonDioxideInfinite = -185568964i32, + #[strum(serialize = "ItemLiquidCanisterEmpty")] + #[strum(props(name = "Liquid Canister", desc = "", value = "-185207387"))] + ItemLiquidCanisterEmpty = -185207387i32, + #[strum(serialize = "ItemMKIIWireCutters")] + #[strum( + props( + name = "Mk II Wire Cutters", + desc = "Wirecutters allow you to deconstruct various structures, as well as cross-lay cables when held in your non-active hand, and defuse explosives as needed. Wirecutters are stored in the Tool Belt, along with other essential tools.", + value = "-178893251" + ) + )] + ItemMkiiWireCutters = -178893251i32, + #[strum(serialize = "ItemPlantThermogenic_Genepool1")] + #[strum( + props( + name = "Hades Flower (Alpha strain)", + desc = "The Agrizero's-created Hades Flower is the result of as dubious experiment to combine the allure of tropical plants with the comfort and homeliness of a heat pump. The plant breathes a 1:3 mix of Volatiles and Oxygen, and exhales heated Pollutant.", + value = "-177792789" + ) + )] + ItemPlantThermogenicGenepool1 = -177792789i32, + #[strum(serialize = "StructureInsulatedInLineTankGas1x2")] + #[strum(props(name = "Insulated In-Line Tank Gas", desc = "", value = "-177610944"))] + StructureInsulatedInLineTankGas1X2 = -177610944i32, + #[strum(serialize = "StructureCableCornerBurnt")] + #[strum(props(name = "Burnt Cable (Corner)", desc = "", value = "-177220914"))] + StructureCableCornerBurnt = -177220914i32, + #[strum(serialize = "StructureCableJunction")] + #[strum( + props( + name = "Cable (Junction)", + desc = "Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of Stationeer life - so much so, the ODA designated it an official 'tool' during the 3rd Decannual Stationeer Solar Conference.\nNormal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy).", + value = "-175342021" + ) + )] + StructureCableJunction = -175342021i32, + #[strum(serialize = "ItemKitLaunchTower")] + #[strum(props(name = "Kit (Rocket Launch Tower)", desc = "", value = "-174523552"))] + ItemKitLaunchTower = -174523552i32, + #[strum(serialize = "StructureBench3")] + #[strum(props(name = "Bench (Frame Style)", desc = "", value = "-164622691"))] + StructureBench3 = -164622691i32, + #[strum(serialize = "MotherboardProgrammableChip")] + #[strum( + props( + name = "IC Editor Motherboard", + desc = "When placed in a Computer, the IC Editor allows players to write and edit IC code, which can then be uploaded to a Integrated Circuit (IC10) if housed in an IC Housing.", + value = "-161107071" + ) + )] + MotherboardProgrammableChip = -161107071i32, + #[strum(serialize = "ItemSprayCanOrange")] + #[strum( + props( + name = "Spray Paint (Orange)", + desc = "Orange is fun, but also suggestive of hazards. Sitting proudly in the middle of the visual spectrum, it has nothing to prove.", + value = "-158007629" + ) + )] + ItemSprayCanOrange = -158007629i32, + #[strum(serialize = "StructureWallPaddedCorner")] + #[strum(props(name = "Wall (Padded Corner)", desc = "", value = "-155945899"))] + StructureWallPaddedCorner = -155945899i32, + #[strum(serialize = "StructureCableStraightH")] + #[strum(props(name = "Heavy Cable (Straight)", desc = "", value = "-146200530"))] + StructureCableStraightH = -146200530i32, + #[strum(serialize = "StructureDockPortSide")] + #[strum(props(name = "Dock (Port Side)", desc = "", value = "-137465079"))] + StructureDockPortSide = -137465079i32, + #[strum(serialize = "StructureCircuitHousing")] + #[strum(props(name = "IC Housing", desc = "", value = "-128473777"))] + StructureCircuitHousing = -128473777i32, + #[strum(serialize = "MotherboardMissionControl")] + #[strum( + props( + name = "", + desc = "", + value = "-127121474" + ) + )] + MotherboardMissionControl = -127121474i32, + #[strum(serialize = "ItemKitSpeaker")] + #[strum(props(name = "Kit (Speaker)", desc = "", value = "-126038526"))] + ItemKitSpeaker = -126038526i32, + #[strum(serialize = "StructureLogicReagentReader")] + #[strum(props(name = "Reagent Reader", desc = "", value = "-124308857"))] + StructureLogicReagentReader = -124308857i32, + #[strum(serialize = "ItemGasFilterNitrousOxideInfinite")] + #[strum( + props( + name = "Catalytic Filter (Nitrous Oxide)", + desc = "A filter that selectively targets Nitrous Oxide. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle.", + value = "-123934842" + ) + )] + ItemGasFilterNitrousOxideInfinite = -123934842i32, + #[strum(serialize = "ItemKitPressureFedGasEngine")] + #[strum( + props(name = "Kit (Pressure Fed Gas Engine)", desc = "", value = "-121514007") + )] + ItemKitPressureFedGasEngine = -121514007i32, + #[strum(serialize = "StructureCableJunction4HBurnt")] + #[strum( + props(name = "Burnt Cable (4-Way Junction)", desc = "", value = "-115809132") + )] + StructureCableJunction4HBurnt = -115809132i32, + #[strum(serialize = "ElevatorCarrage")] + #[strum(props(name = "Elevator", desc = "", value = "-110788403"))] + ElevatorCarrage = -110788403i32, + #[strum(serialize = "StructureFairingTypeA2")] + #[strum(props(name = "Fairing (Type A2)", desc = "", value = "-104908736"))] + StructureFairingTypeA2 = -104908736i32, + #[strum(serialize = "ItemKitPressureFedLiquidEngine")] + #[strum( + props(name = "Kit (Pressure Fed Liquid Engine)", desc = "", value = "-99091572") + )] + ItemKitPressureFedLiquidEngine = -99091572i32, + #[strum(serialize = "Meteorite")] + #[strum(props(name = "Meteorite", desc = "", value = "-99064335"))] + Meteorite = -99064335i32, + #[strum(serialize = "ItemKitArcFurnace")] + #[strum(props(name = "Kit (Arc Furnace)", desc = "", value = "-98995857"))] + ItemKitArcFurnace = -98995857i32, + #[strum(serialize = "StructureInsulatedPipeCrossJunction")] + #[strum( + props( + name = "Insulated Pipe (Cross Junction)", + desc = "Insulated pipes greatly reduce heat loss from gases stored in them.", + value = "-92778058" + ) + )] + StructureInsulatedPipeCrossJunction = -92778058i32, + #[strum(serialize = "ItemWaterPipeMeter")] + #[strum(props(name = "Kit (Liquid Pipe Meter)", desc = "", value = "-90898877"))] + ItemWaterPipeMeter = -90898877i32, + #[strum(serialize = "FireArmSMG")] + #[strum( + props(name = "Fire Arm SMG", desc = "0.Single\n1.Auto", value = "-86315541") + )] + FireArmSmg = -86315541i32, + #[strum(serialize = "ItemHardsuitHelmet")] + #[strum( + props( + name = "Hardsuit Helmet", + desc = "The Hardsuit Helmet is similar to the Space Helmet, but can withstand higher temperatures and pressures. It's perfect for enduring harsh environments like Venus and Vulcan.", + value = "-84573099" + ) + )] + ItemHardsuitHelmet = -84573099i32, + #[strum(serialize = "ItemSolderIngot")] + #[strum(props(name = "Ingot (Solder)", desc = "", value = "-82508479"))] + ItemSolderIngot = -82508479i32, + #[strum(serialize = "CircuitboardGasDisplay")] + #[strum( + props( + name = "Gas Display", + desc = "Information is power. Place this circuitboard into a Console to create a display that shows gas pressure or temperature of any connected tank, storage cannister, Kit (Pipe Analyzer) or Kit (Gas Sensor).", + value = "-82343730" + ) + )] + CircuitboardGasDisplay = -82343730i32, + #[strum(serialize = "DynamicGenerator")] + #[strum( + props( + name = "Portable Generator", + desc = "Every Stationeer's best friend, the portable generator gets you up and running, fast. Fill it with a Canister (Fuel) to power up and charge a Battery Cell (Small), or attach it to a Power Connector to link it into your electrical network. It's pressure driven, so functions more efficiently at lower temperatures, and REALLY efficiently if supercooled. Perfecting your fuel mix also makes a big difference.", + value = "-82087220" + ) + )] + DynamicGenerator = -82087220i32, + #[strum(serialize = "ItemFlowerRed")] + #[strum(props(name = "Flower (Red)", desc = "", value = "-81376085"))] + ItemFlowerRed = -81376085i32, + #[strum(serialize = "KitchenTableSimpleShort")] + #[strum( + props(name = "Kitchen Table (Simple Short)", desc = "", value = "-78099334") + )] + KitchenTableSimpleShort = -78099334i32, + #[strum(serialize = "ImGuiCircuitboardAirlockControl")] + #[strum(props(name = "Airlock (Experimental)", desc = "", value = "-73796547"))] + ImGuiCircuitboardAirlockControl = -73796547i32, + #[strum(serialize = "StructureInsulatedPipeLiquidCrossJunction6")] + #[strum( + props( + name = "Insulated Liquid Pipe (6-Way Junction)", + desc = "Liquid piping with very low temperature loss or gain.", + value = "-72748982" + ) + )] + StructureInsulatedPipeLiquidCrossJunction6 = -72748982i32, + #[strum(serialize = "StructureCompositeCladdingAngledCorner")] + #[strum( + props( + name = "Composite Cladding (Angled Corner)", + desc = "", + value = "-69685069" + ) + )] + StructureCompositeCladdingAngledCorner = -69685069i32, + #[strum(serialize = "StructurePowerTransmitter")] + #[strum( + props( + name = "Microwave Power Transmitter", + desc = "The Norsec Wireless Power Transmitter is an uni-directional, A-to-B, far field microwave electrical transmission system.The rotatable base transmitter delivers a narrow, non-lethal microwave beam to a dedicated base receiver.\nThe transmitter must be aligned to the base station in order to transmit any power. The brightness of the transmitter's collimator arc provides an indication of transmission intensity. Note that there is an attrition over longer ranges, so the unit requires more power over greater distances to deliver the same output.", + value = "-65087121" + ) + )] + StructurePowerTransmitter = -65087121i32, + #[strum(serialize = "ItemFrenchFries")] + #[strum( + props( + name = "Canned French Fries", + desc = "Because space would suck without 'em.", + value = "-57608687" + ) + )] + ItemFrenchFries = -57608687i32, + #[strum(serialize = "StructureConsoleLED1x2")] + #[strum( + props( + name = "LED Display (Medium)", + desc = "0.Default\n1.Percent\n2.Power", + value = "-53151617" + ) + )] + StructureConsoleLed1X2 = -53151617i32, + #[strum(serialize = "UniformMarine")] + #[strum(props(name = "Marine Uniform", desc = "", value = "-48342840"))] + UniformMarine = -48342840i32, + #[strum(serialize = "Battery_Wireless_cell_Big")] + #[strum( + props( + name = "Battery Wireless Cell (Big)", + desc = "0.Empty\n1.Critical\n2.VeryLow\n3.Low\n4.Medium\n5.High\n6.Full", + value = "-41519077" + ) + )] + BatteryWirelessCellBig = -41519077i32, + #[strum(serialize = "StructureCableCornerH")] + #[strum(props(name = "Heavy Cable (Corner)", desc = "", value = "-39359015"))] + StructureCableCornerH = -39359015i32, + #[strum(serialize = "ItemPipeCowl")] + #[strum( + props( + name = "Pipe Cowl", + desc = "This creates a Pipe Cowl that can be placed on the end of pipes to expose them to the world atmospheres.", + value = "-38898376" + ) + )] + ItemPipeCowl = -38898376i32, + #[strum(serialize = "StructureStairwellFrontLeft")] + #[strum(props(name = "Stairwell (Front Left)", desc = "", value = "-37454456"))] + StructureStairwellFrontLeft = -37454456i32, + #[strum(serialize = "StructureWallPaddedWindowThin")] + #[strum(props(name = "Wall (Padded Window Thin)", desc = "", value = "-37302931"))] + StructureWallPaddedWindowThin = -37302931i32, + #[strum(serialize = "StructureInsulatedTankConnector")] + #[strum(props(name = "Insulated Tank Connector", desc = "", value = "-31273349"))] + StructureInsulatedTankConnector = -31273349i32, + #[strum(serialize = "ItemKitInsulatedPipeUtility")] + #[strum( + props(name = "Kit (Insulated Pipe Utility Gas)", desc = "", value = "-27284803") + )] + ItemKitInsulatedPipeUtility = -27284803i32, + #[strum(serialize = "DynamicLight")] + #[strum( + props( + name = "Portable Light", + desc = "Philippe Starck might not applaud, but this battery-powered light source undarkens the corners when illumination's lacking. Powered by any battery, it's a 'no-frills' Xigo design that can be cheaply fabricated with the minimum of fuss. Unless you like fuss. In which case, fuss all you like.", + value = "-21970188" + ) + )] + DynamicLight = -21970188i32, + #[strum(serialize = "ItemKitBatteryLarge")] + #[strum(props(name = "Kit (Battery Large)", desc = "", value = "-21225041"))] + ItemKitBatteryLarge = -21225041i32, + #[strum(serialize = "StructureSmallTableThickDouble")] + #[strum(props(name = "Small (Table Thick Double)", desc = "", value = "-19246131"))] + StructureSmallTableThickDouble = -19246131i32, + #[strum(serialize = "ItemAmmoBox")] + #[strum(props(name = "Ammo Box", desc = "", value = "-9559091"))] + ItemAmmoBox = -9559091i32, + #[strum(serialize = "StructurePipeLiquidCrossJunction4")] + #[strum( + props( + name = "Liquid Pipe (4-Way Junction)", + desc = "You can upgrade this pipe to an Insulated Liquid Pipe (4-Way Junction) using an Kit (Insulated Liquid Pipe) and a Wrench.", + value = "-9555593" + ) + )] + StructurePipeLiquidCrossJunction4 = -9555593i32, + #[strum(serialize = "DynamicGasCanisterRocketFuel")] + #[strum( + props(name = "Dynamic Gas Canister Rocket Fuel", desc = "", value = "-8883951") + )] + DynamicGasCanisterRocketFuel = -8883951i32, + #[strum(serialize = "ItemPureIcePollutant")] + #[strum( + props( + name = "Pure Ice Pollutant", + desc = "A frozen chunk of pure Pollutant", + value = "-1755356" + ) + )] + ItemPureIcePollutant = -1755356i32, + #[strum(serialize = "ItemWreckageLargeExtendableRadiator01")] + #[strum( + props(name = "Wreckage Large Extendable Radiator", desc = "", value = "-997763") + )] + ItemWreckageLargeExtendableRadiator01 = -997763i32, + #[strum(serialize = "StructureSingleBed")] + #[strum(props(name = "Single Bed", desc = "Description coming.", value = "-492611"))] + StructureSingleBed = -492611i32, + #[strum(serialize = "StructureCableCorner3HBurnt")] + #[strum( + props( + name = "", + desc = "", + value = "2393826" + ) + )] + StructureCableCorner3HBurnt = 2393826i32, + #[strum(serialize = "StructureAutoMinerSmall")] + #[strum( + props( + name = "Autominer (Small)", + desc = "The Recurso SquareDig autominer is a structure that when built will mine a vertical 2x2 shaft until it hits bedrock. The autominer can be connected to a chute system, and is controllable by a logic network. Note that the autominer outputs more ore than a conventional Mining Drill over the same area.", + value = "7274344" + ) + )] + StructureAutoMinerSmall = 7274344i32, + #[strum(serialize = "CrateMkII")] + #[strum( + props( + name = "Crate Mk II", + desc = "A more heavily reinforced version of the iconic Dynamic Crate, the Crate Mk II is resistant to incredibly high pressures and temperatures. Short of disposing of it in a black hole, the Mk II is about as safe as luggage gets.", + value = "8709219" + ) + )] + CrateMkIi = 8709219i32, + #[strum(serialize = "ItemGasFilterWaterM")] + #[strum(props(name = "Medium Filter (Water)", desc = "", value = "8804422"))] + ItemGasFilterWaterM = 8804422i32, + #[strum(serialize = "StructureWallPaddedNoBorder")] + #[strum(props(name = "Wall (Padded No Border)", desc = "", value = "8846501"))] + StructureWallPaddedNoBorder = 8846501i32, + #[strum(serialize = "ItemGasFilterVolatiles")] + #[strum( + props( + name = "Filter (Volatiles)", + desc = "Filters are used to capture various gases, which can be disposed of or used elsewhere. Volatiles are created by exposing Ice (Volatiles) to heat. The product can then be collected and combined with Oxygen to create fuel, or used within a Furnace to smelt ores and create alloys.", + value = "15011598" + ) + )] + ItemGasFilterVolatiles = 15011598i32, + #[strum(serialize = "ItemMiningCharge")] + #[strum( + props( + name = "Mining Charge", + desc = "A low cost, high yield explosive with a 10 second timer.", + value = "15829510" + ) + )] + ItemMiningCharge = 15829510i32, + #[strum(serialize = "ItemKitEngineSmall")] + #[strum(props(name = "Kit (Engine Small)", desc = "", value = "19645163"))] + ItemKitEngineSmall = 19645163i32, + #[strum(serialize = "StructureHeatExchangerGastoGas")] + #[strum( + props( + name = "Heat Exchanger - Gas", + desc = "The original specs for the N Series Flow-P heat exchanger were rumored to have been scrawled on the back of a burger receipt by a bored Sinotai designer riding up the Brazilian space elevator, but that hasn't stopped it becoming one of the most widely-copied heat exchanger designs in the Solar System.\nThe 'N Flow-P' has four connections, allowing you to pass two gas networks into the unit, which then works to equalize temperature across the two separate networks.\nAs the N Flow-P is a passive system, it equalizes pressure across the entire of each individual network, unless connected to gas management devices like a Volume Pump or a Back Pressure Regulator.", + value = "21266291" + ) + )] + StructureHeatExchangerGastoGas = 21266291i32, + #[strum(serialize = "StructurePressurantValve")] + #[strum( + props( + name = "Pressurant Valve", + desc = "Pumps gas into a liquid pipe in order to raise the pressure", + value = "23052817" + ) + )] + StructurePressurantValve = 23052817i32, + #[strum(serialize = "StructureWallHeater")] + #[strum( + props( + name = "Wall Heater", + desc = "The Xigo wall heater is a simple device that can be installed on a wall or frame and connected to power. When switched on, it will start heating the surrounding environment. It consumes 1010W of power and can be controlled by logic chips to run when the temperature hits a certain level.", + value = "24258244" + ) + )] + StructureWallHeater = 24258244i32, + #[strum(serialize = "StructurePassiveLargeRadiatorLiquid")] + #[strum( + props( + name = "Medium Convection Radiator Liquid", + desc = "Has been replaced by Medium Convection Radiator Liquid.", + value = "24786172" + ) + )] + StructurePassiveLargeRadiatorLiquid = 24786172i32, + #[strum(serialize = "StructureWallPlating")] + #[strum(props(name = "Wall (Plating)", desc = "", value = "26167457"))] + StructureWallPlating = 26167457i32, + #[strum(serialize = "ItemSprayCanPurple")] + #[strum( + props( + name = "Spray Paint (Purple)", + desc = "Purple is a curious color. You need to be careful with purple. It can be very good, or go horribly, horribly wrong.", + value = "30686509" + ) + )] + ItemSprayCanPurple = 30686509i32, + #[strum(serialize = "DynamicGasCanisterNitrousOxide")] + #[strum( + props(name = "Portable Gas Tank (Nitrous Oxide)", desc = "", value = "30727200") + )] + DynamicGasCanisterNitrousOxide = 30727200i32, + #[strum(serialize = "StructureInLineTankGas1x2")] + #[strum( + props( + name = "In-Line Tank Gas", + desc = "A small expansion tank that increases the volume of a pipe network.", + value = "35149429" + ) + )] + StructureInLineTankGas1X2 = 35149429i32, + #[strum(serialize = "ItemSteelSheets")] + #[strum( + props( + name = "Steel Sheets", + desc = "An advanced building material, Ingot (Steel) sheets are used when constructing a Steel Frame and several other wall types.", + value = "38555961" + ) + )] + ItemSteelSheets = 38555961i32, + #[strum(serialize = "ItemGasCanisterEmpty")] + #[strum(props(name = "Canister", desc = "", value = "42280099"))] + ItemGasCanisterEmpty = 42280099i32, + #[strum(serialize = "ItemWreckageWallCooler2")] + #[strum(props(name = "Wreckage Wall Cooler", desc = "", value = "45733800"))] + ItemWreckageWallCooler2 = 45733800i32, + #[strum(serialize = "ItemPumpkinPie")] + #[strum(props(name = "Pumpkin Pie", desc = "", value = "62768076"))] + ItemPumpkinPie = 62768076i32, + #[strum(serialize = "ItemGasFilterPollutantsM")] + #[strum(props(name = "Medium Filter (Pollutants)", desc = "", value = "63677771"))] + ItemGasFilterPollutantsM = 63677771i32, + #[strum(serialize = "StructurePipeStraight")] + #[strum( + props( + name = "Pipe (Straight)", + desc = "You can upgrade this pipe to an Insulated Pipe (Straight) using an Kit (Insulated Pipe) and a Wrench.", + value = "73728932" + ) + )] + StructurePipeStraight = 73728932i32, + #[strum(serialize = "ItemKitDockingPort")] + #[strum(props(name = "Kit (Docking Port)", desc = "", value = "77421200"))] + ItemKitDockingPort = 77421200i32, + #[strum(serialize = "CartridgeTracker")] + #[strum(props(name = "Tracker", desc = "", value = "81488783"))] + CartridgeTracker = 81488783i32, + #[strum(serialize = "ToyLuna")] + #[strum(props(name = "Toy Luna", desc = "", value = "94730034"))] + ToyLuna = 94730034i32, + #[strum(serialize = "ItemWreckageTurbineGenerator2")] + #[strum(props(name = "Wreckage Turbine Generator", desc = "", value = "98602599"))] + ItemWreckageTurbineGenerator2 = 98602599i32, + #[strum(serialize = "StructurePowerUmbilicalFemale")] + #[strum(props(name = "Umbilical Socket (Power)", desc = "", value = "101488029"))] + StructurePowerUmbilicalFemale = 101488029i32, + #[strum(serialize = "DynamicSkeleton")] + #[strum(props(name = "Skeleton", desc = "", value = "106953348"))] + DynamicSkeleton = 106953348i32, + #[strum(serialize = "ItemWaterBottle")] + #[strum( + props( + name = "Water Bottle", + desc = "Delicious and pure H20, refined from local sources as varied as Venusian ice and trans-Solar comets. Empty bottles can be refilled using the Water Bottle Filler.", + value = "107741229" + ) + )] + ItemWaterBottle = 107741229i32, + #[strum(serialize = "DynamicGasCanisterVolatiles")] + #[strum( + props( + name = "Portable Gas Tank (Volatiles)", + desc = "Portable tanks store gas. To refill one, bolt it to a Kit (Tank Connector) using a Wrench, then connect it to a pipe network. Don't fill it above 10 MPa, unless you're the sort who loves complicated, flammable emergencies. You can refill a Canister (Volatiles) by attaching it to the tank's striped section. Or you could use a Wrench to attach to a rocket and show it around the Solar System.", + value = "108086870" + ) + )] + DynamicGasCanisterVolatiles = 108086870i32, + #[strum(serialize = "StructureCompositeCladdingRoundedCornerInner")] + #[strum( + props( + name = "Composite Cladding (Rounded Corner Inner)", + desc = "", + value = "110184667" + ) + )] + StructureCompositeCladdingRoundedCornerInner = 110184667i32, + #[strum(serialize = "ItemTerrainManipulator")] + #[strum( + props( + name = "Terrain Manipulator", + desc = "0.Mode0\n1.Mode1", + value = "111280987" + ) + )] + ItemTerrainManipulator = 111280987i32, + #[strum(serialize = "FlareGun")] + #[strum(props(name = "Flare Gun", desc = "", value = "118685786"))] + FlareGun = 118685786i32, + #[strum(serialize = "ItemKitPlanter")] + #[strum(props(name = "Kit (Planter)", desc = "", value = "119096484"))] + ItemKitPlanter = 119096484i32, + #[strum(serialize = "ReagentColorGreen")] + #[strum(props(name = "Color Dye (Green)", desc = "", value = "120807542"))] + ReagentColorGreen = 120807542i32, + #[strum(serialize = "DynamicGasCanisterNitrogen")] + #[strum( + props( + name = "Portable Gas Tank (Nitrogen)", + desc = "Portable tanks store gas. If you need to refill a tank, bolt it to a Kit (Tank Connector) using a Wrench, then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or you'll end up with Nitrogen in places you weren't expecting. You can refill a Canister (Nitrogen) by attaching it to the tank's striped section. Or you could use a Wrench to attach it to a rover or rocket for later.", + value = "121951301" + ) + )] + DynamicGasCanisterNitrogen = 121951301i32, + #[strum(serialize = "ItemKitPressurePlate")] + #[strum(props(name = "Kit (Trigger Plate)", desc = "", value = "123504691"))] + ItemKitPressurePlate = 123504691i32, + #[strum(serialize = "ItemKitLogicSwitch")] + #[strum(props(name = "Kit (Logic Switch)", desc = "", value = "124499454"))] + ItemKitLogicSwitch = 124499454i32, + #[strum(serialize = "StructureCompositeCladdingSpherical")] + #[strum( + props(name = "Composite Cladding (Spherical)", desc = "", value = "139107321") + )] + StructureCompositeCladdingSpherical = 139107321i32, + #[strum(serialize = "ItemLaptop")] + #[strum( + props( + name = "Laptop", + desc = "The Laptop functions as a portable IC editor. To operate the Laptop it must be powered with a battery, have a IC Editor Motherboard in the motherboard slot, and an Integrated Circuit (IC10) in the Programmable Chip Slot.\n\nYou must place the laptop down to interact with the onsreen UI.\n \nConnects to Logic Transmitter", + value = "141535121" + ) + )] + ItemLaptop = 141535121i32, + #[strum(serialize = "ApplianceSeedTray")] + #[strum( + props( + name = "Appliance Seed Tray", + desc = "The seed tray can hold up to twelve plants or seeds and can be used to facilitate fast experimentation and testing of plant genetics.", + value = "142831994" + ) + )] + ApplianceSeedTray = 142831994i32, + #[strum(serialize = "Landingpad_TaxiPieceHold")] + #[strum(props(name = "Landingpad Taxi Hold", desc = "", value = "146051619"))] + LandingpadTaxiPieceHold = 146051619i32, + #[strum(serialize = "StructureFuselageTypeC5")] + #[strum(props(name = "Fuselage (Type C5)", desc = "", value = "147395155"))] + StructureFuselageTypeC5 = 147395155i32, + #[strum(serialize = "ItemKitBasket")] + #[strum(props(name = "Kit (Basket)", desc = "", value = "148305004"))] + ItemKitBasket = 148305004i32, + #[strum(serialize = "StructureRocketCircuitHousing")] + #[strum(props(name = "Rocket Circuit Housing", desc = "", value = "150135861"))] + StructureRocketCircuitHousing = 150135861i32, + #[strum(serialize = "StructurePipeCrossJunction6")] + #[strum( + props( + name = "Pipe (6-Way Junction)", + desc = "You can upgrade this pipe to an Insulated Pipe (6-Way Junction) using an Kit (Insulated Pipe) and a Wrench.", + value = "152378047" + ) + )] + StructurePipeCrossJunction6 = 152378047i32, + #[strum(serialize = "ItemGasFilterNitrogenInfinite")] + #[strum( + props( + name = "Catalytic Filter (Nitrogen)", + desc = "A filter that selectively targets Nitrogen. It uses internal pressure differentials to regenerate a unique phase change catalyst, giving it an unlimited lifecycle.", + value = "152751131" + ) + )] + ItemGasFilterNitrogenInfinite = 152751131i32, + #[strum(serialize = "StructureStairs4x2RailL")] + #[strum(props(name = "Stairs with Rail (Left)", desc = "", value = "155214029"))] + StructureStairs4X2RailL = 155214029i32, + #[strum(serialize = "NpcChick")] + #[strum(props(name = "Chick", desc = "", value = "155856647"))] + NpcChick = 155856647i32, + #[strum(serialize = "ItemWaspaloyIngot")] + #[strum(props(name = "Ingot (Waspaloy)", desc = "", value = "156348098"))] + ItemWaspaloyIngot = 156348098i32, + #[strum(serialize = "StructureReinforcedWallPaddedWindowThin")] + #[strum( + props( + name = "Reinforced Window (Thin)", + desc = "Enjoy vistas of even the most savage, alien landscapes with these heavy duty window frames, which are resistant to pressure differentials up to 1MPa.", + value = "158502707" + ) + )] + StructureReinforcedWallPaddedWindowThin = 158502707i32, + #[strum(serialize = "ItemKitWaterBottleFiller")] + #[strum(props(name = "Kit (Water Bottle Filler)", desc = "", value = "159886536"))] + ItemKitWaterBottleFiller = 159886536i32, + #[strum(serialize = "ItemEmergencyWrench")] + #[strum(props(name = "Emergency Wrench", desc = "", value = "162553030"))] + ItemEmergencyWrench = 162553030i32, + #[strum(serialize = "StructureChuteDigitalFlipFlopSplitterRight")] + #[strum( + props( + name = "Chute Digital Flip Flop Splitter Right", + desc = "The digital flip flop will toggle between two outputs using a specified ratio (n:1). For example, setting the dial to 2 would allow two items to pass through the primary output before flipping to the secondary output.", + value = "163728359" + ) + )] + StructureChuteDigitalFlipFlopSplitterRight = 163728359i32, + #[strum(serialize = "StructureChuteStraight")] + #[strum( + props( + name = "Chute (Straight)", + desc = "Chutes act as pipes for items. Use them to connect various import/export equipment together such as the Vending Machine and printers like the Autolathe.\nThe aim for any Stationeer is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps.\nChutes are fundamental components of chute networks, which allow the transport of items between any machine or device with an import/export slot.", + value = "168307007" + ) + )] + StructureChuteStraight = 168307007i32, + #[strum(serialize = "ItemKitDoor")] + #[strum(props(name = "Kit (Door)", desc = "", value = "168615924"))] + ItemKitDoor = 168615924i32, + #[strum(serialize = "ItemWreckageAirConditioner2")] + #[strum(props(name = "Wreckage Air Conditioner", desc = "", value = "169888054"))] + ItemWreckageAirConditioner2 = 169888054i32, + #[strum(serialize = "Landingpad_GasCylinderTankPiece")] + #[strum( + props( + name = "Landingpad Gas Storage", + desc = "Increases the volume of the landing pads gas storage capacity. This volume is used for buying and selling gas to traders.", + value = "170818567" + ) + )] + LandingpadGasCylinderTankPiece = 170818567i32, + #[strum(serialize = "ItemKitStairs")] + #[strum(props(name = "Kit (Stairs)", desc = "", value = "170878959"))] + ItemKitStairs = 170878959i32, + #[strum(serialize = "ItemPlantSampler")] + #[strum( + props( + name = "Plant Sampler", + desc = "The Plant Sampler allows you to take a gene sample of a growing plant. The sampler can then be placed in the Plant Genetic Analyzer to attain and interpret the results.", + value = "173023800" + ) + )] + ItemPlantSampler = 173023800i32, + #[strum(serialize = "ItemAlienMushroom")] + #[strum(props(name = "Alien Mushroom", desc = "", value = "176446172"))] + ItemAlienMushroom = 176446172i32, + #[strum(serialize = "ItemKitSatelliteDish")] + #[strum(props(name = "Kit (Medium Satellite Dish)", desc = "", value = "178422810"))] + ItemKitSatelliteDish = 178422810i32, + #[strum(serialize = "StructureRocketEngineTiny")] + #[strum(props(name = "Rocket Engine (Tiny)", desc = "", value = "178472613"))] + StructureRocketEngineTiny = 178472613i32, + #[strum(serialize = "StructureWallPaddedNoBorderCorner")] + #[strum( + props(name = "Wall (Padded No Border Corner)", desc = "", value = "179694804") + )] + StructureWallPaddedNoBorderCorner = 179694804i32, + #[strum(serialize = "StructureShelfMedium")] + #[strum( + props( + name = "Shelf Medium", + desc = "A shelf for putting things on, so you can see them.", + value = "182006674" + ) + )] + StructureShelfMedium = 182006674i32, + #[strum(serialize = "StructureExpansionValve")] + #[strum( + props( + name = "Expansion Valve", + desc = "Allows for moving liquids from a liquid pipe into a gas pipe. Only allows liquids to pass in one direction. Typically this is done to allow the liquid to evaporate into a gas as part of an airconditioning loop.", + value = "195298587" + ) + )] + StructureExpansionValve = 195298587i32, + #[strum(serialize = "ItemCableFuse")] + #[strum(props(name = "Kit (Cable Fuses)", desc = "", value = "195442047"))] + ItemCableFuse = 195442047i32, + #[strum(serialize = "ItemKitRoverMKI")] + #[strum(props(name = "Kit (Rover Mk I)", desc = "", value = "197243872"))] + ItemKitRoverMki = 197243872i32, + #[strum(serialize = "DynamicGasCanisterWater")] + #[strum( + props( + name = "Portable Liquid Tank (Water)", + desc = "This portable tank stores liquid, and liquid only. You just have to fill it up. To do this, bolt one to a Kit (Tank Connector) using a Wrench, then connect it to Liquid Pipe (Straight) to supply liquid to a network. \nTry to keep pressure under 10 MPa, or you'll end up wet, hurt and sorry, without any of the fun.\nYou can refill a Liquid Canister (Water) by attaching it to the tank's striped section. Or you could use a Wrench to attach it to a rocket and take it somewhere distant and dry, then feel good about yourself.", + value = "197293625" + ) + )] + DynamicGasCanisterWater = 197293625i32, + #[strum(serialize = "ItemAngleGrinder")] + #[strum( + props( + name = "Angle Grinder", + desc = "Angles-be-gone with the trusty angle grinder.", + value = "201215010" + ) + )] + ItemAngleGrinder = 201215010i32, + #[strum(serialize = "StructureCableCornerH4")] + #[strum(props(name = "Heavy Cable (4-Way Corner)", desc = "", value = "205837861"))] + StructureCableCornerH4 = 205837861i32, + #[strum(serialize = "ItemEmergencySpaceHelmet")] + #[strum(props(name = "Emergency Space Helmet", desc = "", value = "205916793"))] + ItemEmergencySpaceHelmet = 205916793i32, + #[strum(serialize = "ItemKitGovernedGasRocketEngine")] + #[strum( + props(name = "Kit (Pumped Gas Rocket Engine)", desc = "", value = "206848766") + )] + ItemKitGovernedGasRocketEngine = 206848766i32, + #[strum(serialize = "StructurePressureRegulator")] + #[strum( + props( + name = "Pressure Regulator", + desc = "Controlling the flow of gas between two pipe networks, pressure regulators shift gas until a set pressure on the outlet side is achieved, or the gas supply is exhausted. The back pressure regulator, by contrast, will only operate when pressure on the intake side exceeds the set value. With a max pressure of over 20,000kPa, it requires power to operate.", + value = "209854039" + ) + )] + StructurePressureRegulator = 209854039i32, + #[strum(serialize = "StructureCompositeCladdingCylindrical")] + #[strum( + props(name = "Composite Cladding (Cylindrical)", desc = "", value = "212919006") + )] + StructureCompositeCladdingCylindrical = 212919006i32, + #[strum(serialize = "ItemCropHay")] + #[strum(props(name = "Hay", desc = "", value = "215486157"))] + ItemCropHay = 215486157i32, + #[strum(serialize = "ItemKitLogicProcessor")] + #[strum(props(name = "Kit (Logic Processor)", desc = "", value = "220644373"))] + ItemKitLogicProcessor = 220644373i32, + #[strum(serialize = "AutolathePrinterMod")] + #[strum( + props( + name = "Autolathe Printer Mod", + desc = "Apply to an Autolathe with a Welding Torch or Arc Welder to upgrade for increased processing speed and more recipe options.", + value = "221058307" + ) + )] + AutolathePrinterMod = 221058307i32, + #[strum(serialize = "StructureChuteOverflow")] + #[strum( + props( + name = "Chute Overflow", + desc = "The overflow chute will direct materials to its overflow port when the thing connected to its default port is already occupied.", + value = "225377225" + ) + )] + StructureChuteOverflow = 225377225i32, + #[strum(serialize = "ItemLiquidPipeAnalyzer")] + #[strum(props(name = "Kit (Liquid Pipe Analyzer)", desc = "", value = "226055671"))] + ItemLiquidPipeAnalyzer = 226055671i32, + #[strum(serialize = "ItemGoldIngot")] + #[strum( + props( + name = "Ingot (Gold)", + desc = "There is an enduring paradox at the heart of the Stationeers project: An initiative conceived as 'cut-price space exploration' uses Gold as a fundamental ingredient in fabricating so much of its equipment and materiel. ", + value = "226410516" + ) + )] + ItemGoldIngot = 226410516i32, + #[strum(serialize = "KitStructureCombustionCentrifuge")] + #[strum(props(name = "Kit (Combustion Centrifuge)", desc = "", value = "231903234"))] + KitStructureCombustionCentrifuge = 231903234i32, + #[strum(serialize = "ItemChocolateBar")] + #[strum(props(name = "Chocolate Bar", desc = "", value = "234601764"))] + ItemChocolateBar = 234601764i32, + #[strum(serialize = "ItemExplosive")] + #[strum(props(name = "Remote Explosive", desc = "", value = "235361649"))] + ItemExplosive = 235361649i32, + #[strum(serialize = "StructureConsole")] + #[strum( + props( + name = "Console", + desc = "This Norsec-designed control box manages devices such as the Active Vent, Passive Vent, Gas Sensor and Composite Door, depending on which circuitboard is inserted into the unit. It has a shared data/power port.\nA completed console displays all devices connected to the current power network. Any devices not related to the installed circuitboard will be greyed-out and inoperable. Consoles are locked once a Data Disk is removed.", + value = "235638270" + ) + )] + StructureConsole = 235638270i32, + #[strum(serialize = "ItemPassiveVent")] + #[strum( + props( + name = "Passive Vent", + desc = "This kit creates a Passive Vent among other variants.", + value = "238631271" + ) + )] + ItemPassiveVent = 238631271i32, + #[strum(serialize = "ItemMKIIAngleGrinder")] + #[strum( + props( + name = "Mk II Angle Grinder", + desc = "Angles-be-gone with the trusty angle grinder. The MK II is more resistant to temperature and pressure.", + value = "240174650" + ) + )] + ItemMkiiAngleGrinder = 240174650i32, + #[strum(serialize = "Handgun")] + #[strum(props(name = "Handgun", desc = "", value = "247238062"))] + Handgun = 247238062i32, + #[strum(serialize = "PassiveSpeaker")] + #[strum(props(name = "Passive Speaker", desc = "", value = "248893646"))] + PassiveSpeaker = 248893646i32, + #[strum(serialize = "ItemKitBeacon")] + #[strum(props(name = "Kit (Beacon)", desc = "", value = "249073136"))] + ItemKitBeacon = 249073136i32, + #[strum(serialize = "ItemCharcoal")] + #[strum( + props( + name = "Charcoal", + desc = "Charcoal is a lightweight, black carbon residue produced by heating Biomass in a Arc Furnace. It contains less energy potential than Ore (Coal), but can be used as a basic fuel source. Charcoal can also be substituted for coal in alloy recipes.", + value = "252561409" + ) + )] + ItemCharcoal = 252561409i32, + #[strum(serialize = "StructureSuitStorage")] + #[strum( + props( + name = "Suit Storage", + desc = "As tidy as it is useful, the suit storage rack holds an Eva Suit, Space Helmet and a Jetpack Basic.\nWhen powered and connected to and , it will recharge the suit's batteries, refill the Canister (Oxygen) and your Filter (Nitrogen) Gas Canister. The wastetank will be pumped out to the pipe connected to the waste outlet.\nAll the rack's pipes must be connected or the unit will show an error state, but it will still charge the battery.", + value = "255034731" + ) + )] + StructureSuitStorage = 255034731i32, + #[strum(serialize = "ItemCorn")] + #[strum( + props( + name = "Corn", + desc = "A long growth time staple crop. Its low requirement for darkness allows for accelerated growing if provided with extra light.", + value = "258339687" + ) + )] + ItemCorn = 258339687i32, + #[strum(serialize = "StructurePipeLiquidTJunction")] + #[strum( + props( + name = "Liquid Pipe (T Junction)", + desc = "You can upgrade this pipe to an Insulated Liquid Pipe (T Junction) using an Kit (Insulated Liquid Pipe) and a Wrench.", + value = "262616717" + ) + )] + StructurePipeLiquidTJunction = 262616717i32, + #[strum(serialize = "StructureLogicBatchReader")] + #[strum(props(name = "Batch Reader", desc = "", value = "264413729"))] + StructureLogicBatchReader = 264413729i32, + #[strum(serialize = "StructureDeepMiner")] + #[strum( + props( + name = "Deep Miner", + desc = "Drills through terrain until it hits bedrock. Once inside bedrock Dirty Ore is produced roughly every 90s", + value = "265720906" + ) + )] + StructureDeepMiner = 265720906i32, + #[strum(serialize = "ItemEmergencyScrewdriver")] + #[strum(props(name = "Emergency Screwdriver", desc = "", value = "266099983"))] + ItemEmergencyScrewdriver = 266099983i32, + #[strum(serialize = "ItemFilterFern")] + #[strum( + props( + name = "Darga Fern", + desc = "A fern adapted by Agrizeroto process a much greater volume of Carbon Dioxide into Oxygen than an average plant.", + value = "266654416" + ) + )] + ItemFilterFern = 266654416i32, + #[strum(serialize = "StructureCableCorner4Burnt")] + #[strum(props(name = "Burnt Cable (4-Way Corner)", desc = "", value = "268421361"))] + StructureCableCorner4Burnt = 268421361i32, + #[strum(serialize = "StructureFrameCornerCut")] + #[strum( + props( + name = "Steel Frame (Corner Cut)", + desc = "0.Mode0\n1.Mode1", + value = "271315669" + ) + )] + StructureFrameCornerCut = 271315669i32, + #[strum(serialize = "StructureTankSmallInsulated")] + #[strum(props(name = "Tank Small (Insulated)", desc = "", value = "272136332"))] + StructureTankSmallInsulated = 272136332i32, + #[strum(serialize = "StructureCableFuse100k")] + #[strum(props(name = "Fuse (100kW)", desc = "", value = "281380789"))] + StructureCableFuse100K = 281380789i32, + #[strum(serialize = "ItemKitIceCrusher")] + #[strum(props(name = "Kit (Ice Crusher)", desc = "", value = "288111533"))] + ItemKitIceCrusher = 288111533i32, + #[strum(serialize = "ItemKitPowerTransmitter")] + #[strum(props(name = "Kit (Power Transmitter)", desc = "", value = "291368213"))] + ItemKitPowerTransmitter = 291368213i32, + #[strum(serialize = "StructurePipeLiquidCrossJunction6")] + #[strum( + props( + name = "Liquid Pipe (6-Way Junction)", + desc = "You can upgrade this pipe to an Insulated Liquid Pipe (6-Way Junction) using an Kit (Insulated Liquid Pipe) and a Wrench.", + value = "291524699" + ) + )] + StructurePipeLiquidCrossJunction6 = 291524699i32, + #[strum(serialize = "ItemKitLandingPadBasic")] + #[strum(props(name = "Kit (Landing Pad Basic)", desc = "", value = "293581318"))] + ItemKitLandingPadBasic = 293581318i32, + #[strum(serialize = "StructureInsulatedPipeLiquidStraight")] + #[strum( + props( + name = "Insulated Liquid Pipe (Straight)", + desc = "Liquid piping with very low temperature loss or gain.", + value = "295678685" + ) + )] + StructureInsulatedPipeLiquidStraight = 295678685i32, + #[strum(serialize = "StructureWallFlatCornerSquare")] + #[strum(props(name = "Wall (Flat Corner Square)", desc = "", value = "298130111"))] + StructureWallFlatCornerSquare = 298130111i32, + #[strum(serialize = "ItemHat")] + #[strum( + props( + name = "Hat", + desc = "As the name suggests, this is a hat.", + value = "299189339" + ) + )] + ItemHat = 299189339i32, + #[strum(serialize = "ItemWaterPipeDigitalValve")] + #[strum(props(name = "Kit (Liquid Digital Valve)", desc = "", value = "309693520"))] + ItemWaterPipeDigitalValve = 309693520i32, + #[strum(serialize = "SeedBag_Mushroom")] + #[strum( + props( + name = "Mushroom Seeds", + desc = "Grow a Mushroom.", + value = "311593418" + ) + )] + SeedBagMushroom = 311593418i32, + #[strum(serialize = "StructureCableCorner3Burnt")] + #[strum(props(name = "Burnt Cable (3-Way Corner)", desc = "", value = "318437449"))] + StructureCableCorner3Burnt = 318437449i32, + #[strum(serialize = "StructureLogicSwitch2")] + #[strum(props(name = "Switch", desc = "", value = "321604921"))] + StructureLogicSwitch2 = 321604921i32, + #[strum(serialize = "StructureOccupancySensor")] + #[strum( + props( + name = "Occupancy Sensor", + desc = "Will be triggered if there is a player in the same room as the sensor. The quantity variable will show the number of players. You can use configure it to only detect players who hold the correct Access Card using a Cartridge (Access Controller) in a Handheld Tablet. This sensor only works when placed in a room.", + value = "322782515" + ) + )] + StructureOccupancySensor = 322782515i32, + #[strum(serialize = "ItemKitSDBHopper")] + #[strum(props(name = "Kit (SDB Hopper)", desc = "", value = "323957548"))] + ItemKitSdbHopper = 323957548i32, + #[strum(serialize = "ItemMKIIDrill")] + #[strum( + props( + name = "Mk II Drill", + desc = "The ExMin Off-whirled Hand Drill has been a companion to Stationeers for decades. Essential for assembling and deconstructing various items and structures, regardless of gravity, pressure or temperature.", + value = "324791548" + ) + )] + ItemMkiiDrill = 324791548i32, + #[strum(serialize = "StructureCompositeFloorGrating")] + #[strum( + props( + name = "Composite Floor Grating", + desc = "While aesthetics rank low on the ladder of Stationeer concerns, composite gratings allow the concealment of unsightly cables on floors, walls and ceilings.", + value = "324868581" + ) + )] + StructureCompositeFloorGrating = 324868581i32, + #[strum(serialize = "ItemKitSleeper")] + #[strum(props(name = "Kit (Sleeper)", desc = "", value = "326752036"))] + ItemKitSleeper = 326752036i32, + #[strum(serialize = "EntityChickenBrown")] + #[strum( + props( + name = "Entity Chicken Brown", + desc = "Like so many of its brethren, this is a chicken. A brown one. It will eat soybeans, corn, and wheat, and lay eggs. Some will be fertilized, producing further chickens. Some will not.", + value = "334097180" + ) + )] + EntityChickenBrown = 334097180i32, + #[strum(serialize = "StructurePassiveVent")] + #[strum( + props( + name = "Passive Vent", + desc = "Passive vents allow gases to move into and out of pipe networks, which are closed systems unless connected to a device or structure. Passive vents are not powered, merely an aperture, essentially turning an enclosed space into part of the pipe network. ", + value = "335498166" + ) + )] + StructurePassiveVent = 335498166i32, + #[strum(serialize = "StructureAutolathe")] + #[strum( + props( + name = "Autolathe", + desc = "The foundation of most Stationeer fabrication systems, the ExMin autolathe is a multi-axis molecular compositional system. Its complexity demands considerable time to assemble, but it remains an indispensable creation tool. Upgrade the device using a Autolathe Printer Mod for additional recipes and faster processing speeds.\n\t ", + value = "336213101" + ) + )] + StructureAutolathe = 336213101i32, + #[strum(serialize = "AccessCardKhaki")] + #[strum(props(name = "Access Card (Khaki)", desc = "", value = "337035771"))] + AccessCardKhaki = 337035771i32, + #[strum(serialize = "StructureBlastDoor")] + #[strum( + props( + name = "Blast Door", + desc = "Airtight and almost undamageable, the original 'Millmar' series of blast door was designed by off-world mining giant Recurso to protect asteroid-mining facilities from nuclear-incident-level explosive decompression.\nShort of a pocket-sized singularity blinking into the local space-time frame, there is effectively no limit to the pressure these blast doors can contain - ideal for constructing airlocks in pressure-sensitive environments.", + value = "337416191" + ) + )] + StructureBlastDoor = 337416191i32, + #[strum(serialize = "ItemKitWeatherStation")] + #[strum(props(name = "Kit (Weather Station)", desc = "", value = "337505889"))] + ItemKitWeatherStation = 337505889i32, + #[strum(serialize = "StructureStairwellFrontRight")] + #[strum(props(name = "Stairwell (Front Right)", desc = "", value = "340210934"))] + StructureStairwellFrontRight = 340210934i32, + #[strum(serialize = "ItemKitGrowLight")] + #[strum(props(name = "Kit (Grow Light)", desc = "", value = "341030083"))] + ItemKitGrowLight = 341030083i32, + #[strum(serialize = "StructurePictureFrameThickMountLandscapeSmall")] + #[strum( + props( + name = "Picture Frame Thick Landscape Small", + desc = "", + value = "347154462" + ) + )] + StructurePictureFrameThickMountLandscapeSmall = 347154462i32, + #[strum(serialize = "RoverCargo")] + #[strum( + props( + name = "Rover (Cargo)", + desc = "Connects to Logic Transmitter", + value = "350726273" + ) + )] + RoverCargo = 350726273i32, + #[strum(serialize = "StructureInsulatedPipeLiquidCrossJunction4")] + #[strum( + props( + name = "Insulated Liquid Pipe (4-Way Junction)", + desc = "Liquid piping with very low temperature loss or gain.", + value = "363303270" + ) + )] + StructureInsulatedPipeLiquidCrossJunction4 = 363303270i32, + #[strum(serialize = "ItemHardBackpack")] + #[strum( + props( + name = "Hardsuit Backpack", + desc = "This backpack can be useful when you are working inside and don't need to fly around.", + value = "374891127" + ) + )] + ItemHardBackpack = 374891127i32, + #[strum(serialize = "ItemKitDynamicLiquidCanister")] + #[strum(props(name = "Kit (Portable Liquid Tank)", desc = "", value = "375541286"))] + ItemKitDynamicLiquidCanister = 375541286i32, + #[strum(serialize = "ItemKitGasGenerator")] + #[strum(props(name = "Kit (Gas Fuel Generator)", desc = "", value = "377745425"))] + ItemKitGasGenerator = 377745425i32, + #[strum(serialize = "StructureBlocker")] + #[strum(props(name = "Blocker", desc = "", value = "378084505"))] + StructureBlocker = 378084505i32, + #[strum(serialize = "StructurePressureFedLiquidEngine")] + #[strum( + props( + name = "Pressure Fed Liquid Engine", + desc = "Highly efficient and powerful, the Pressure Fed Liquid Engine is a challenging engine to run in a stable configuration. Liquid is pulled from the input into the engine based on the input gas pressure. Some gas is also moved in this process so Stationeers will need to devise a system to maintain a high gas pressure in the liquid input pipe. The second liquid pipe connection is an optional heat-exchanger connection which exchanges heat between the pipes contents and the engine bell, the Setting variable drives the effectiveness of the heat-exchanger.", + value = "379750958" + ) + )] + StructurePressureFedLiquidEngine = 379750958i32, + #[strum(serialize = "ItemPureIceNitrous")] + #[strum( + props( + name = "Pure Ice NitrousOxide", + desc = "A frozen chunk of pure Nitrous Oxide", + value = "386754635" + ) + )] + ItemPureIceNitrous = 386754635i32, + #[strum(serialize = "StructureWallSmallPanelsMonoChrome")] + #[strum( + props(name = "Wall (Small Panels Mono Chrome)", desc = "", value = "386820253") + )] + StructureWallSmallPanelsMonoChrome = 386820253i32, + #[strum(serialize = "ItemMKIIDuctTape")] + #[strum( + props( + name = "Mk II Duct Tape", + desc = "In the distant past, one of Earth's great champions taught a generation of 'Fix-It People' that duct tape was the answer to any problem. Stationeers have demonstrated that this is truth holds strong, so long as the problem is a damaged Eva Suit, Jetpack Basic, Space Helmet, or even a Solar Panel.\nTo use on yourself: put duct tape in your active hand, hold RIGHT MOUSE BUTTON to automatically repair damage.", + value = "388774906" + ) + )] + ItemMkiiDuctTape = 388774906i32, + #[strum(serialize = "ItemWreckageStructureRTG1")] + #[strum(props(name = "Wreckage Structure RTG", desc = "", value = "391453348"))] + ItemWreckageStructureRtg1 = 391453348i32, + #[strum(serialize = "ItemPipeLabel")] + #[strum( + props( + name = "Kit (Pipe Label)", + desc = "This kit creates a Pipe Label.", + value = "391769637" + ) + )] + ItemPipeLabel = 391769637i32, + #[strum(serialize = "DynamicGasCanisterPollutants")] + #[strum( + props(name = "Portable Gas Tank (Pollutants)", desc = "", value = "396065382") + )] + DynamicGasCanisterPollutants = 396065382i32, + #[strum(serialize = "NpcChicken")] + #[strum(props(name = "Chicken", desc = "", value = "399074198"))] + NpcChicken = 399074198i32, + #[strum(serialize = "RailingElegant01")] + #[strum(props(name = "Railing Elegant (Type 1)", desc = "", value = "399661231"))] + RailingElegant01 = 399661231i32, + #[strum(serialize = "StructureBench1")] + #[strum(props(name = "Bench (Counter Style)", desc = "", value = "406745009"))] + StructureBench1 = 406745009i32, + #[strum(serialize = "ItemAstroloyIngot")] + #[strum( + props( + name = "Ingot (Astroloy)", + desc = "Due to the original Stationeer manual collapsing into a singularity, Astroloy recipes have been warped by spacetime contortions. The correct Astroloy recipe, as memorialized for all time in a series of charming plastic icons, is 1.0 Copper, 1.0 Cobalt, and 2.0 Steel.", + value = "412924554" + ) + )] + ItemAstroloyIngot = 412924554i32, + #[strum(serialize = "ItemGasFilterCarbonDioxideM")] + #[strum( + props(name = "Medium Filter (Carbon Dioxide)", desc = "", value = "416897318") + )] + ItemGasFilterCarbonDioxideM = 416897318i32, + #[strum(serialize = "ItemPillStun")] + #[strum( + props( + name = "Pill (Paralysis)", + desc = "Through rarely publicized, the existence of this pill is an open secret. For use when all else has failed, the Sayonara Suppository immobilizes and rapidly ends the average Stationeer. The delivery mode ensures that if a Stationeer chooses to take this pill, they really have to want it.", + value = "418958601" + ) + )] + ItemPillStun = 418958601i32, + #[strum(serialize = "ItemKitCrate")] + #[strum(props(name = "Kit (Crate)", desc = "", value = "429365598"))] + ItemKitCrate = 429365598i32, + #[strum(serialize = "AccessCardPink")] + #[strum(props(name = "Access Card (Pink)", desc = "", value = "431317557"))] + AccessCardPink = 431317557i32, + #[strum(serialize = "StructureWaterPipeMeter")] + #[strum(props(name = "Liquid Pipe Meter", desc = "", value = "433184168"))] + StructureWaterPipeMeter = 433184168i32, + #[strum(serialize = "Robot")] + #[strum( + props( + name = "AIMeE Bot", + desc = "Designed by - presumably drunk - Norsec roboticists, AIMeE (or Automated Independent Mechanical Entity) can be a Stationeer's best friend, or tiresome nemesis, or both several times in the same day. \n \nIntended to unearth and retrieve ores automatically, the unit requires basic programming knowledge to operate, and IC Editor Motherboard.\n\nAIMEe has 7 modes:\n\nRobotMode.None = 0 = Do nothing\nRobotMode.None = 1 = Follow nearest player\nRobotMode.None = 2 = Move to target in straight line\nRobotMode.None = 3 = Wander around looking for ores in 15 co-ords radius\nRobotMode.None = 4 = Unload in chute input or chute bin within 3 meters / 1.5 large grids\nRobotMode.None = 5 = Path(find) to target\nRobotMode.None = 6 = Automatic assigned state, shows when storage slots are fullConnects to Logic Transmitter", + value = "434786784" + ) + )] + Robot = 434786784i32, + #[strum(serialize = "StructureChuteValve")] + #[strum( + props( + name = "Chute Valve", + desc = "The Chute Valve will stop the flow of materials when set to closed and when set to open, will act like a straight chute.", + value = "434875271" + ) + )] + StructureChuteValve = 434875271i32, + #[strum(serialize = "StructurePipeAnalysizer")] + #[strum( + props( + name = "Pipe Analyzer", + desc = "Allegedly the outcome of a weekend father-daughter electronics project by an overzealous {ExMin engineer, the pipe analyzer is essentially a more advanced version of the Pipe Meter.\nDisplaying the internal pressure of pipe networks, it also reads out temperature and gas contents, and can be connected to a Console or Computer via a {Logic system.", + value = "435685051" + ) + )] + StructurePipeAnalysizer = 435685051i32, + #[strum(serialize = "StructureLogicBatchSlotReader")] + #[strum(props(name = "Batch Slot Reader", desc = "", value = "436888930"))] + StructureLogicBatchSlotReader = 436888930i32, + #[strum(serialize = "StructureSatelliteDish")] + #[strum( + props( + name = "Medium Satellite Dish", + desc = "This medium communications unit can be used to communicate with nearby trade vessels.\n \nWhen connected to a Computer containing a Communications Motherboard motherboard, a Landingpad Center, and a Vending Machine, this allows Stationeers to contact traders. Adjust its horizontal and vertical attributes either directly or through logic.", + value = "439026183" + ) + )] + StructureSatelliteDish = 439026183i32, + #[strum(serialize = "StructureIceCrusher")] + #[strum( + props( + name = "Ice Crusher", + desc = "The Recurso KoolAuger converts various ices into their respective gases and liquids.\nA remarkably smart and compact sublimation-melting unit, it produces gas or liquid depending on the ice being processed. The upper outlet is gas, the lower for liquid, and while you can attach any pipe you like to either outlet, it will only function if the correct network is attached. It will also only pass gas or liquid into a network if it is powered and turned on.\nIf the KoolAuger is full, it will not accept any further ice until the gas or liquid contents is drained. In this state, it will flash a yellow error state on the activation switch.", + value = "443849486" + ) + )] + StructureIceCrusher = 443849486i32, + #[strum(serialize = "PipeBenderMod")] + #[strum( + props( + name = "Pipe Bender Mod", + desc = "Apply to an Hydraulic Pipe Bender with a Welding Torch or Arc Welder to upgrade for increased processing speed and more recipe options.", + value = "443947415" + ) + )] + PipeBenderMod = 443947415i32, + #[strum(serialize = "StructureAdvancedComposter")] + #[strum( + props( + name = "Advanced Composter", + desc = "The advanced composter creates Fertilizer out of organic matter. It accepts food, Decayed Food or Biomass. It requires Water and power to operate, accelerating the natural composting process.\nWhen processing, it releases nitrogen and volatiles, as well a small amount of heat. \n\nCompost composition\nFertilizer is produced at a 1:3 ratio of fertilizer to ingredients. The fertilizer's effects on plants will vary depending on the respective proportions of its ingredients.\n\n- Food increases PLANT YIELD up to two times\n- Decayed Food increases plant GROWTH SPEED up to two times\n- Biomass increases the NUMBER OF GROWTH CYCLES the fertilizer lasts for up to five times\n", + value = "446212963" + ) + )] + StructureAdvancedComposter = 446212963i32, + #[strum(serialize = "ItemKitLargeDirectHeatExchanger")] + #[strum( + props(name = "Kit (Large Direct Heat Exchanger)", desc = "", value = "450164077") + )] + ItemKitLargeDirectHeatExchanger = 450164077i32, + #[strum(serialize = "ItemKitInsulatedPipe")] + #[strum(props(name = "Kit (Insulated Pipe)", desc = "", value = "452636699"))] + ItemKitInsulatedPipe = 452636699i32, + #[strum(serialize = "ItemCocoaPowder")] + #[strum(props(name = "Cocoa Powder", desc = "", value = "457286516"))] + ItemCocoaPowder = 457286516i32, + #[strum(serialize = "AccessCardPurple")] + #[strum(props(name = "Access Card (Purple)", desc = "", value = "459843265"))] + AccessCardPurple = 459843265i32, + #[strum(serialize = "ItemGasFilterNitrousOxideL")] + #[strum( + props(name = "Heavy Filter (Nitrous Oxide)", desc = "", value = "465267979") + )] + ItemGasFilterNitrousOxideL = 465267979i32, + #[strum(serialize = "StructurePipeCowl")] + #[strum(props(name = "Pipe Cowl", desc = "", value = "465816159"))] + StructurePipeCowl = 465816159i32, + #[strum(serialize = "StructureSDBHopperAdvanced")] + #[strum(props(name = "SDB Hopper Advanced", desc = "", value = "467225612"))] + StructureSdbHopperAdvanced = 467225612i32, + #[strum(serialize = "StructureCableJunctionH")] + #[strum( + props(name = "Heavy Cable (3-Way Junction)", desc = "", value = "469451637") + )] + StructureCableJunctionH = 469451637i32, + #[strum(serialize = "ItemHEMDroidRepairKit")] + #[strum( + props( + name = "HEMDroid Repair Kit", + desc = "Repairs damaged HEM-Droids to full health.", + value = "470636008" + ) + )] + ItemHemDroidRepairKit = 470636008i32, + #[strum(serialize = "ItemKitRocketCargoStorage")] + #[strum(props(name = "Kit (Rocket Cargo Storage)", desc = "", value = "479850239"))] + ItemKitRocketCargoStorage = 479850239i32, + #[strum(serialize = "StructureLiquidPressureRegulator")] + #[strum( + props( + name = "Liquid Volume Regulator", + desc = "Regulates the volume ratio of liquid in the output Liquid pipe. This is expressed as percentage where 100 is totally full and 0 is empty.", + value = "482248766" + ) + )] + StructureLiquidPressureRegulator = 482248766i32, + #[strum(serialize = "SeedBag_Switchgrass")] + #[strum(props(name = "Switchgrass Seed", desc = "", value = "488360169"))] + SeedBagSwitchgrass = 488360169i32, + #[strum(serialize = "ItemKitLadder")] + #[strum(props(name = "Kit (Ladder)", desc = "", value = "489494578"))] + ItemKitLadder = 489494578i32, + #[strum(serialize = "StructureLogicButton")] + #[strum(props(name = "Button", desc = "", value = "491845673"))] + StructureLogicButton = 491845673i32, + #[strum(serialize = "ItemRTG")] + #[strum( + props( + name = "Kit (Creative RTG)", + desc = "This kit creates that miracle of modern science, a Kit (Creative RTG).", + value = "495305053" + ) + )] + ItemRtg = 495305053i32, + #[strum(serialize = "ItemKitAIMeE")] + #[strum(props(name = "Kit (AIMeE)", desc = "", value = "496830914"))] + ItemKitAiMeE = 496830914i32, + #[strum(serialize = "ItemSprayCanWhite")] + #[strum( + props( + name = "Spray Paint (White)", + desc = "White looks clean, sharp and nice. But Stationeering can be a dirty job. White tends to scuff.", + value = "498481505" + ) + )] + ItemSprayCanWhite = 498481505i32, + #[strum(serialize = "ItemElectrumIngot")] + #[strum(props(name = "Ingot (Electrum)", desc = "", value = "502280180"))] + ItemElectrumIngot = 502280180i32, + #[strum(serialize = "MotherboardLogic")] + #[strum( + props( + name = "Logic Motherboard", + desc = "Motherboards are connected to Computers to perform various technical functions.\nThe Norsec-designed K-cops logic motherboard allows Stationeers to set variables and actions on specific logic-controlled items.", + value = "502555944" + ) + )] + MotherboardLogic = 502555944i32, + #[strum(serialize = "StructureStairwellBackLeft")] + #[strum(props(name = "Stairwell (Back Left)", desc = "", value = "505924160"))] + StructureStairwellBackLeft = 505924160i32, + #[strum(serialize = "ItemKitAccessBridge")] + #[strum(props(name = "Kit (Access Bridge)", desc = "", value = "513258369"))] + ItemKitAccessBridge = 513258369i32, + #[strum(serialize = "StructureRocketTransformerSmall")] + #[strum(props(name = "Transformer Small (Rocket)", desc = "", value = "518925193"))] + StructureRocketTransformerSmall = 518925193i32, + #[strum(serialize = "DynamicAirConditioner")] + #[strum( + props( + name = "Portable Air Conditioner", + desc = "The Sinotai-designed Huxi portable air conditioner cools by drawing heat from the atmosphere and storing it, or adding heat to the atmosphere from its internal tank. With a max internal pressure of 8106kPa, its capacity is relatively limited, physics being clear on this subject. To extend its temperature storage ability, bolt the Huxi to a Tank Connector, then connect it to a pipe network supplying hot or cold gases.", + value = "519913639" + ) + )] + DynamicAirConditioner = 519913639i32, + #[strum(serialize = "ItemKitToolManufactory")] + #[strum(props(name = "Kit (Tool Manufactory)", desc = "", value = "529137748"))] + ItemKitToolManufactory = 529137748i32, + #[strum(serialize = "ItemKitSign")] + #[strum(props(name = "Kit (Sign)", desc = "", value = "529996327"))] + ItemKitSign = 529996327i32, + #[strum(serialize = "StructureCompositeCladdingSphericalCap")] + #[strum( + props( + name = "Composite Cladding (Spherical Cap)", + desc = "", + value = "534213209" + ) + )] + StructureCompositeCladdingSphericalCap = 534213209i32, + #[strum(serialize = "ItemPureIceLiquidOxygen")] + #[strum( + props( + name = "Pure Ice Liquid Oxygen", + desc = "A frozen chunk of pure Liquid Oxygen", + value = "541621589" + ) + )] + ItemPureIceLiquidOxygen = 541621589i32, + #[strum(serialize = "ItemWreckageStructureWeatherStation003")] + #[strum( + props( + name = "Wreckage Structure Weather Station", + desc = "", + value = "542009679" + ) + )] + ItemWreckageStructureWeatherStation003 = 542009679i32, + #[strum(serialize = "StructureInLineTankLiquid1x1")] + #[strum( + props( + name = "In-Line Tank Small Liquid", + desc = "A small expansion tank that increases the volume of a pipe network.", + value = "543645499" + ) + )] + StructureInLineTankLiquid1X1 = 543645499i32, + #[strum(serialize = "ItemBatteryCellNuclear")] + #[strum( + props( + name = "Battery Cell (Nuclear)", + desc = "Illegal on Earth since the Chengdu Event, Norsec nuclear power cells found a new and drastically less safety-conscious market offworld.\n\nPOWER OUTPUT\nPushing the power-weight balance to its limits, the 'nuke' has a 2.3 megawatt charge (2304000W), reflecting its reliance on exotic superalloys.", + value = "544617306" + ) + )] + ItemBatteryCellNuclear = 544617306i32, + #[strum(serialize = "ItemCornSoup")] + #[strum( + props( + name = "Corn Soup", + desc = "Made using Cooked Corn and an Empty Can in a Basic Packaging Machine or Advanced Packaging Machine. Faily high in nutrition, canned food does not decay.", + value = "545034114" + ) + )] + ItemCornSoup = 545034114i32, + #[strum(serialize = "StructureAdvancedFurnace")] + #[strum( + props( + name = "Advanced Furnace", + desc = "The advanced furnace comes with integrated inlet and outlet pumps for controlling the unit's internal pressure.", + value = "545937711" + ) + )] + StructureAdvancedFurnace = 545937711i32, + #[strum(serialize = "StructureLogicRocketUplink")] + #[strum(props(name = "Logic Uplink", desc = "", value = "546002924"))] + StructureLogicRocketUplink = 546002924i32, + #[strum(serialize = "StructureLogicDial")] + #[strum( + props( + name = "Dial", + desc = "An assignable dial with up to 1000 modes.", + value = "554524804" + ) + )] + StructureLogicDial = 554524804i32, + #[strum(serialize = "StructureLightLongWide")] + #[strum(props(name = "Wall Light (Long Wide)", desc = "", value = "555215790"))] + StructureLightLongWide = 555215790i32, + #[strum(serialize = "StructureProximitySensor")] + #[strum( + props( + name = "Proximity Sensor", + desc = "Will be triggered if there is a player in the range of the sensor (as defined by the setting dial). The quantity variable will show the number of players. You can configure the sensor to only detect players who hold the correct Access Card using a Cartridge (Access Controller) in a Handheld Tablet.", + value = "568800213" + ) + )] + StructureProximitySensor = 568800213i32, + #[strum(serialize = "AccessCardYellow")] + #[strum(props(name = "Access Card (Yellow)", desc = "", value = "568932536"))] + AccessCardYellow = 568932536i32, + #[strum(serialize = "StructureDiodeSlide")] + #[strum(props(name = "Diode Slide", desc = "", value = "576516101"))] + StructureDiodeSlide = 576516101i32, + #[strum(serialize = "ItemKitSecurityPrinter")] + #[strum(props(name = "Kit (Security Printer)", desc = "", value = "578078533"))] + ItemKitSecurityPrinter = 578078533i32, + #[strum(serialize = "ItemKitCentrifuge")] + #[strum(props(name = "Kit (Centrifuge)", desc = "", value = "578182956"))] + ItemKitCentrifuge = 578182956i32, + #[strum(serialize = "DynamicHydroponics")] + #[strum(props(name = "Portable Hydroponics", desc = "", value = "587726607"))] + DynamicHydroponics = 587726607i32, + #[strum(serialize = "ItemKitPipeUtilityLiquid")] + #[strum(props(name = "Kit (Pipe Utility Liquid)", desc = "", value = "595478589"))] + ItemKitPipeUtilityLiquid = 595478589i32, + #[strum(serialize = "StructureCompositeFloorGrating4")] + #[strum( + props(name = "Composite Floor Grating (Type 4)", desc = "", value = "600133846") + )] + StructureCompositeFloorGrating4 = 600133846i32, + #[strum(serialize = "StructureCableStraight")] + #[strum( + props( + name = "Cable (Straight)", + desc = "Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of Stationeer life - so much so, the ODA designated it an official 'tool'.\nNormal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy).", + value = "605357050" + ) + )] + StructureCableStraight = 605357050i32, + #[strum(serialize = "StructureLiquidTankSmallInsulated")] + #[strum(props(name = "Insulated Liquid Tank Small", desc = "", value = "608607718"))] + StructureLiquidTankSmallInsulated = 608607718i32, + #[strum(serialize = "ItemKitWaterPurifier")] + #[strum(props(name = "Kit (Water Purifier)", desc = "", value = "611181283"))] + ItemKitWaterPurifier = 611181283i32, + #[strum(serialize = "ItemKitLiquidTankInsulated")] + #[strum(props(name = "Kit (Insulated Liquid Tank)", desc = "", value = "617773453"))] + ItemKitLiquidTankInsulated = 617773453i32, + #[strum(serialize = "StructureWallSmallPanelsAndHatch")] + #[strum( + props(name = "Wall (Small Panels And Hatch)", desc = "", value = "619828719") + )] + StructureWallSmallPanelsAndHatch = 619828719i32, + #[strum(serialize = "ItemGasFilterNitrogen")] + #[strum( + props( + name = "Filter (Nitrogen)", + desc = "Filters are used to capture various gases, which can be disposed of or used elsewhere. Nitrogen is a byproduct of smelting various ores, notably Ice (Nitrice), which may be combined with Oxygen to make a breathable - and considerably less flammable - atmosphere.", + value = "632853248" + ) + )] + ItemGasFilterNitrogen = 632853248i32, + #[strum(serialize = "ReagentColorYellow")] + #[strum(props(name = "Color Dye (Yellow)", desc = "", value = "635208006"))] + ReagentColorYellow = 635208006i32, + #[strum(serialize = "StructureWallPadding")] + #[strum(props(name = "Wall (Padding)", desc = "", value = "635995024"))] + StructureWallPadding = 635995024i32, + #[strum(serialize = "ItemKitPassthroughHeatExchanger")] + #[strum( + props(name = "Kit (CounterFlow Heat Exchanger)", desc = "", value = "636112787") + )] + ItemKitPassthroughHeatExchanger = 636112787i32, + #[strum(serialize = "StructureChuteDigitalValveLeft")] + #[strum( + props( + name = "Chute Digital Valve Left", + desc = "The Digital Chute Valve will stop the flow of materials when set to closed and when set to open, will act like a straight chute. The valve will automatically close after a certain number of items have passed through. This threshold can be set using the dial.", + value = "648608238" + ) + )] + StructureChuteDigitalValveLeft = 648608238i32, + #[strum(serialize = "ItemRocketMiningDrillHeadHighSpeedIce")] + #[strum( + props( + name = "Mining-Drill Head (High Speed Ice)", + desc = "", + value = "653461728" + ) + )] + ItemRocketMiningDrillHeadHighSpeedIce = 653461728i32, + #[strum(serialize = "ItemWreckageStructureWeatherStation007")] + #[strum( + props( + name = "Wreckage Structure Weather Station", + desc = "", + value = "656649558" + ) + )] + ItemWreckageStructureWeatherStation007 = 656649558i32, + #[strum(serialize = "ItemRice")] + #[strum( + props( + name = "Rice", + desc = "Rice grows at a moderate rate as long as its supplied with plenty of water. Being more dependant on water, rice plants can easily die during periods of drought.", + value = "658916791" + ) + )] + ItemRice = 658916791i32, + #[strum(serialize = "ItemPlasticSheets")] + #[strum(props(name = "Plastic Sheets", desc = "", value = "662053345"))] + ItemPlasticSheets = 662053345i32, + #[strum(serialize = "ItemKitTransformerSmall")] + #[strum(props(name = "Kit (Transformer Small)", desc = "", value = "665194284"))] + ItemKitTransformerSmall = 665194284i32, + #[strum(serialize = "StructurePipeLiquidStraight")] + #[strum( + props( + name = "Liquid Pipe (Straight)", + desc = "You can upgrade this pipe to an Insulated Liquid Pipe (Straight) using an Kit (Insulated Liquid Pipe) and a Wrench.", + value = "667597982" + ) + )] + StructurePipeLiquidStraight = 667597982i32, + #[strum(serialize = "ItemSpaceIce")] + #[strum(props(name = "Space Ice", desc = "", value = "675686937"))] + ItemSpaceIce = 675686937i32, + #[strum(serialize = "ItemRemoteDetonator")] + #[strum(props(name = "Remote Detonator", desc = "", value = "678483886"))] + ItemRemoteDetonator = 678483886i32, + #[strum(serialize = "ItemCocoaTree")] + #[strum(props(name = "Cocoa", desc = "", value = "680051921"))] + ItemCocoaTree = 680051921i32, + #[strum(serialize = "ItemKitAirlockGate")] + #[strum(props(name = "Kit (Hangar Door)", desc = "", value = "682546947"))] + ItemKitAirlockGate = 682546947i32, + #[strum(serialize = "ItemScrewdriver")] + #[strum( + props( + name = "Screwdriver", + desc = "This standard issue frictional adherence adjustor is a top of the line, bi-rotational model with a columnated uni-grip. It's definitely not just a screwdriver. Use it for construction and deconstruction of certain kits, and setting values on logic units.", + value = "687940869" + ) + )] + ItemScrewdriver = 687940869i32, + #[strum(serialize = "ItemTomatoSoup")] + #[strum( + props( + name = "Tomato Soup", + desc = "Made using Cooked Tomatos and an Empty Can in a Basic Packaging Machine or Advanced Packaging Machine.", + value = "688734890" + ) + )] + ItemTomatoSoup = 688734890i32, + #[strum(serialize = "StructureCentrifuge")] + #[strum( + props( + name = "Centrifuge", + desc = "If a Recycler or unbalanced Furnace outputs reagent mixture rather than the desired ingots, a centrifuge allows you to reclaim the raw ore. \n It also refines Dirty Ore produced from the Deep Miner and Dirty Ore produced from the Rocket Miner. \n Its bigger brother Combustion Centrifuge can be used to process items significantly faster. Items processed by the centrifuge will be de-gassed. \n If openned while powered on, the centrifuge will enter an errored state and reduce its rpm to 0 and then export any items.", + value = "690945935" + ) + )] + StructureCentrifuge = 690945935i32, + #[strum(serialize = "StructureBlockBed")] + #[strum( + props(name = "Block Bed", desc = "Description coming.", value = "697908419") + )] + StructureBlockBed = 697908419i32, + #[strum(serialize = "ItemBatteryCell")] + #[strum( + props( + name = "Battery Cell (Small)", + desc = "Harnessing a design pioneered in the early 21st century, the small battery cell is the Stationeer's basic unit of portable electrical power. While it lacks the charge of a Battery Cell (Large) or Battery Cell (Nuclear), it has the humble advantage of being fabricated from basic resources.\n\nPOWER OUTPUT\nThe small cell stores up to 36000 watts of power.", + value = "700133157" + ) + )] + ItemBatteryCell = 700133157i32, + #[strum(serialize = "ItemSpaceHelmet")] + #[strum( + props( + name = "Space Helmet", + desc = "The basic space helmet insulates Stationeers against everything from hard vacuum to weird cooking smells. Providing a pressure-controlled, breathable atmosphere, it comes with a built-in light powered by your Eva Suit Battery Cell (Small).\nIt also incorporates a lock/unlock feature to avoid accidental opening, as well as a flush function to expel and replace the internal atmosphere. If damaged, use Duct Tape to fix it, or paint it any color you like using the Paint Mixer.", + value = "714830451" + ) + )] + ItemSpaceHelmet = 714830451i32, + #[strum(serialize = "StructureCompositeWall02")] + #[strum(props(name = "Composite Wall (Type 2)", desc = "", value = "718343384"))] + StructureCompositeWall02 = 718343384i32, + #[strum(serialize = "ItemKitRocketCircuitHousing")] + #[strum( + props(name = "Kit (Rocket Circuit Housing)", desc = "", value = "721251202") + )] + ItemKitRocketCircuitHousing = 721251202i32, + #[strum(serialize = "ItemKitResearchMachine")] + #[strum(props(name = "Kit Research Machine", desc = "", value = "724776762"))] + ItemKitResearchMachine = 724776762i32, + #[strum(serialize = "ItemElectronicParts")] + #[strum(props(name = "Electronic Parts", desc = "", value = "731250882"))] + ItemElectronicParts = 731250882i32, + #[strum(serialize = "ItemKitShower")] + #[strum(props(name = "Kit (Shower)", desc = "", value = "735858725"))] + ItemKitShower = 735858725i32, + #[strum(serialize = "StructureUnloader")] + #[strum( + props( + name = "Unloader", + desc = "The Xigo Re:Gurge is a handy unit for unloading any items inserted into it, and feeding them into a chute network. For instance, if you add a full Mining Belt, the Re:Gurge will empty a mining belt of its contents, insert them into the chute network, then insert the mining belt itself. A Sorter is recommended to reclaim the mining belt.\n\nOutput = 0 exporting the main item\nOutput = 1 exporting items inside and eventually the main item.", + value = "750118160" + ) + )] + StructureUnloader = 750118160i32, + #[strum(serialize = "ItemKitRailing")] + #[strum(props(name = "Kit (Railing)", desc = "", value = "750176282"))] + ItemKitRailing = 750176282i32, + #[strum(serialize = "StructureFridgeSmall")] + #[strum( + props( + name = "Fridge Small", + desc = "Essentially a heavily insulated box that allows users to pipe in any desired atmosphere, the Recurso Minibar fridge was a simple solution to the problem of food decay. It stores a small number of items, at any temperature you can muster.\n \n For more information about food preservation, visit the food decay section of the Stationpedia.", + value = "751887598" + ) + )] + StructureFridgeSmall = 751887598i32, + #[strum(serialize = "DynamicScrubber")] + #[strum( + props( + name = "Portable Air Scrubber", + desc = "A portable scrubber does just what it sounds like: removes specific substances from the air. For instance, attaching a Filter (Carbon Dioxide) will pull Carbon Dioxide from the surrounding atmosphere. Note that the scrubber has room for one battery and two filters, which will double its operating speed. Neat. When it reaches an internal pressure of 8106kPA, an error signal will flash on the switch, indicating it needs to be emptied. Either vent it directly, or attach it to a pipe network via a Kit (Tank Connector) and a Wrench.", + value = "755048589" + ) + )] + DynamicScrubber = 755048589i32, + #[strum(serialize = "ItemKitEngineLarge")] + #[strum(props(name = "Kit (Engine Large)", desc = "", value = "755302726"))] + ItemKitEngineLarge = 755302726i32, + #[strum(serialize = "ItemKitTank")] + #[strum(props(name = "Kit (Tank)", desc = "", value = "771439840"))] + ItemKitTank = 771439840i32, + #[strum(serialize = "ItemLiquidCanisterSmart")] + #[strum( + props( + name = "Liquid Canister (Smart)", + desc = "0.Mode0\n1.Mode1", + value = "777684475" + ) + )] + ItemLiquidCanisterSmart = 777684475i32, + #[strum(serialize = "StructureWallArchTwoTone")] + #[strum(props(name = "Wall (Arch Two Tone)", desc = "", value = "782529714"))] + StructureWallArchTwoTone = 782529714i32, + #[strum(serialize = "ItemAuthoringTool")] + #[strum(props(name = "Authoring Tool", desc = "", value = "789015045"))] + ItemAuthoringTool = 789015045i32, + #[strum(serialize = "WeaponEnergy")] + #[strum(props(name = "Weapon Energy", desc = "", value = "789494694"))] + WeaponEnergy = 789494694i32, + #[strum(serialize = "ItemCerealBar")] + #[strum( + props( + name = "Cereal Bar", + desc = "Sustains, without decay. If only all our relationships were so well balanced.", + value = "791746840" + ) + )] + ItemCerealBar = 791746840i32, + #[strum(serialize = "StructureLargeDirectHeatExchangeLiquidtoLiquid")] + #[strum( + props( + name = "Large Direct Heat Exchange - Liquid + Liquid", + desc = "Direct Heat Exchangers equalize the temperature of the two input networks.", + value = "792686502" + ) + )] + StructureLargeDirectHeatExchangeLiquidtoLiquid = 792686502i32, + #[strum(serialize = "StructureLightLong")] + #[strum(props(name = "Wall Light (Long)", desc = "", value = "797794350"))] + StructureLightLong = 797794350i32, + #[strum(serialize = "StructureWallIron03")] + #[strum(props(name = "Iron Wall (Type 3)", desc = "", value = "798439281"))] + StructureWallIron03 = 798439281i32, + #[strum(serialize = "ItemPipeValve")] + #[strum( + props( + name = "Kit (Pipe Valve)", + desc = "This kit creates a Valve.", + value = "799323450" + ) + )] + ItemPipeValve = 799323450i32, + #[strum(serialize = "StructureConsoleMonitor")] + #[strum( + props( + name = "Console Monitor", + desc = "This Norsec-designed control box manages devices such as the Active Vent, Passive Vent, Gas Sensor, Security Camera and Composite Door, depending on which circuitboard is inserted into the unit. It has a shared data/power port, and a charming sloped interface.\nA completed console displays all devices connected to the current power network. Any devices not related to the installed circuitboard will be greyed-out and inoperable. Consoles are locked once a Data Disk is removed.", + value = "801677497" + ) + )] + StructureConsoleMonitor = 801677497i32, + #[strum(serialize = "StructureRover")] + #[strum(props(name = "Rover Frame", desc = "", value = "806513938"))] + StructureRover = 806513938i32, + #[strum(serialize = "StructureRocketAvionics")] + #[strum(props(name = "Rocket Avionics", desc = "", value = "808389066"))] + StructureRocketAvionics = 808389066i32, + #[strum(serialize = "UniformOrangeJumpSuit")] + #[strum(props(name = "Jump Suit (Orange)", desc = "", value = "810053150"))] + UniformOrangeJumpSuit = 810053150i32, + #[strum(serialize = "StructureSolidFuelGenerator")] + #[strum( + props( + name = "Generator (Solid Fuel)", + desc = "The mainstay of power generation for Stationeers, this device provides 20kW of power. Multiple solid resources can be loaded. While operating, the device will output its maximum power regardless of whether you have captured it or not. Watch for blown wires! It will output much more power than your regular Cable Coil can handle.", + value = "813146305" + ) + )] + StructureSolidFuelGenerator = 813146305i32, + #[strum(serialize = "Landingpad_GasConnectorInwardPiece")] + #[strum(props(name = "Landingpad Gas Input", desc = "", value = "817945707"))] + LandingpadGasConnectorInwardPiece = 817945707i32, + #[strum(serialize = "StructureElevatorShaft")] + #[strum(props(name = "Elevator Shaft (Cabled)", desc = "", value = "826144419"))] + StructureElevatorShaft = 826144419i32, + #[strum(serialize = "StructureTransformerMediumReversed")] + #[strum( + props( + name = "Transformer Reversed (Medium)", + desc = "Transformers control the maximum power that will flow down a sub-network of cables, to prevent overloading electrical systems. \nMedium transformers are used in larger setups where more than 5000W is required, with output that can be set to a maximum of 25000W.\nNote that transformers also operate as data isolators, preventing data flowing into any network beyond it.", + value = "833912764" + ) + )] + StructureTransformerMediumReversed = 833912764i32, + #[strum(serialize = "StructureFlatBench")] + #[strum(props(name = "Bench (Flat)", desc = "", value = "839890807"))] + StructureFlatBench = 839890807i32, + #[strum(serialize = "ItemPowerConnector")] + #[strum( + props( + name = "Kit (Power Connector)", + desc = "This kit creates a Power Connector.", + value = "839924019" + ) + )] + ItemPowerConnector = 839924019i32, + #[strum(serialize = "ItemKitHorizontalAutoMiner")] + #[strum(props(name = "Kit (OGRE)", desc = "", value = "844391171"))] + ItemKitHorizontalAutoMiner = 844391171i32, + #[strum(serialize = "ItemKitSolarPanelBasic")] + #[strum(props(name = "Kit (Solar Panel Basic)", desc = "", value = "844961456"))] + ItemKitSolarPanelBasic = 844961456i32, + #[strum(serialize = "ItemSprayCanBrown")] + #[strum( + props( + name = "Spray Paint (Brown)", + desc = "In more artistic Stationeers circles, the absence of brown is often lamented, but seldom changed.", + value = "845176977" + ) + )] + ItemSprayCanBrown = 845176977i32, + #[strum(serialize = "ItemKitLargeExtendableRadiator")] + #[strum( + props(name = "Kit (Large Extendable Radiator)", desc = "", value = "847430620") + )] + ItemKitLargeExtendableRadiator = 847430620i32, + #[strum(serialize = "StructureInteriorDoorPadded")] + #[strum( + props( + name = "Interior Door Padded", + desc = "0.Operate\n1.Logic", + value = "847461335" + ) + )] + StructureInteriorDoorPadded = 847461335i32, + #[strum(serialize = "ItemKitRecycler")] + #[strum(props(name = "Kit (Recycler)", desc = "", value = "849148192"))] + ItemKitRecycler = 849148192i32, + #[strum(serialize = "StructureCompositeCladdingAngledCornerLong")] + #[strum( + props( + name = "Composite Cladding (Long Angled Corner)", + desc = "", + value = "850558385" + ) + )] + StructureCompositeCladdingAngledCornerLong = 850558385i32, + #[strum(serialize = "ItemPlantEndothermic_Genepool1")] + #[strum( + props( + name = "Winterspawn (Alpha variant)", + desc = "Agrizero's Winterspawn atmospheric bio-processor is a recent addition to their catalog of genespliced environmental decorations. Using ambient heat to split Water into Volatiles and Oxygen, the Winterspawn cools its surroundings, when supplied with sufficient Nitrogen. The alpha variant has a peak cooling and electrolysis capacity of 90Watts and is most efficient operating in air temperatures of 0 to 40 Degrees Celsius.", + value = "851290561" + ) + )] + ItemPlantEndothermicGenepool1 = 851290561i32, + #[strum(serialize = "CircuitboardDoorControl")] + #[strum( + props( + name = "Door Control", + desc = "A basic tool of Stationeer base construction, this circuit board provides a way to open and close a Composite Door, Blast Door or Glass Door remotely, when connected to a Console. This system can be further linked to Motion Sensor to create automatic doors.", + value = "855694771" + ) + )] + CircuitboardDoorControl = 855694771i32, + #[strum(serialize = "ItemCrowbar")] + #[strum( + props( + name = "Crowbar", + desc = "Recurso's entry-level crowbar is useful in a variety of everyday Stationeer settings, from opening Area Power Controls and unpowered Airlocks, to splatting pan-dimensional headcrabs, should the need arise.", + value = "856108234" + ) + )] + ItemCrowbar = 856108234i32, + #[strum(serialize = "ItemChocolateCerealBar")] + #[strum(props(name = "Chocolate Cereal Bar", desc = "", value = "860793245"))] + ItemChocolateCerealBar = 860793245i32, + #[strum(serialize = "Rover_MkI_build_states")] + #[strum(props(name = "Rover MKI", desc = "", value = "861674123"))] + RoverMkIBuildStates = 861674123i32, + #[strum(serialize = "AppliancePlantGeneticStabilizer")] + #[strum( + props( + name = "Plant Genetic Stabilizer", + desc = "The Genetic Stabilizer can be used to manipulate gene stability on a specific Plants or Seeds. It has two modes Stabilize and Destabilize.\nStabilize: Increases all genes stability by 50%.\nDestabilize: Decreases all gene stability by 10% other than a chosen gene which will received decreased stability by 50%.\n ", + value = "871432335" + ) + )] + AppliancePlantGeneticStabilizer = 871432335i32, + #[strum(serialize = "ItemRoadFlare")] + #[strum( + props( + name = "Road Flare", + desc = "Designed to burn anywhere in the Solar System, the EZC magnesium fusee supplies its own oxygen to fuel combustion, and dispel the eternal night of space.", + value = "871811564" + ) + )] + ItemRoadFlare = 871811564i32, + #[strum(serialize = "CartridgeGuide")] + #[strum(props(name = "Guide", desc = "", value = "872720793"))] + CartridgeGuide = 872720793i32, + #[strum(serialize = "StructureLogicSorter")] + #[strum( + props( + name = "Logic Sorter", + desc = "Contains an Internal Memory which is assessed to check whether something should be sorted. When an item is in the Import Slot, the stack is checked and if result is true the thing is moved to the Export 2 slot, otherwise it is moved to the Export slot. The Mode is used in how the stack is assessed, by default the mode is ALL, so every instruction in the stack would need to return true.", + value = "873418029" + ) + )] + StructureLogicSorter = 873418029i32, + #[strum(serialize = "StructureLogicRocketDownlink")] + #[strum(props(name = "Logic Rocket Downlink", desc = "", value = "876108549"))] + StructureLogicRocketDownlink = 876108549i32, + #[strum(serialize = "StructureSign1x1")] + #[strum(props(name = "Sign 1x1", desc = "", value = "879058460"))] + StructureSign1X1 = 879058460i32, + #[strum(serialize = "ItemKitLocker")] + #[strum(props(name = "Kit (Locker)", desc = "", value = "882301399"))] + ItemKitLocker = 882301399i32, + #[strum(serialize = "StructureCompositeFloorGratingOpenRotated")] + #[strum( + props( + name = "Composite Floor Grating Open Rotated", + desc = "", + value = "882307910" + ) + )] + StructureCompositeFloorGratingOpenRotated = 882307910i32, + #[strum(serialize = "StructureWaterPurifier")] + #[strum( + props( + name = "Water Purifier", + desc = "Cleans Polluted Water and outputs Water. The purification process requires Charcoal which can be added to the machine via the import bin. The procesing throughput can be improved by increasing the gas pressure of the input pipe relative to the gas pressure of the output pipe.", + value = "887383294" + ) + )] + StructureWaterPurifier = 887383294i32, + #[strum(serialize = "ItemIgniter")] + #[strum( + props( + name = "Kit (Igniter)", + desc = "This kit creates an Kit (Igniter) unit.", + value = "890106742" + ) + )] + ItemIgniter = 890106742i32, + #[strum(serialize = "ItemFern")] + #[strum( + props( + name = "Fern", + desc = "There was a time, when Stationeers had to make Fenoxitone Powder using the Reagent Processor. Recent advances in technology allow you to use equivalent quantities of fern directly in recipes.", + value = "892110467" + ) + )] + ItemFern = 892110467i32, + #[strum(serialize = "ItemBreadLoaf")] + #[strum(props(name = "Bread Loaf", desc = "", value = "893514943"))] + ItemBreadLoaf = 893514943i32, + #[strum(serialize = "StructureCableJunction5")] + #[strum(props(name = "Cable (5-Way Junction)", desc = "", value = "894390004"))] + StructureCableJunction5 = 894390004i32, + #[strum(serialize = "ItemInsulation")] + #[strum( + props( + name = "Insulation", + desc = "Mysterious in the extreme, the function of this item is lost to the ages.", + value = "897176943" + ) + )] + ItemInsulation = 897176943i32, + #[strum(serialize = "StructureWallFlatCornerRound")] + #[strum(props(name = "Wall (Flat Corner Round)", desc = "", value = "898708250"))] + StructureWallFlatCornerRound = 898708250i32, + #[strum(serialize = "ItemHardMiningBackPack")] + #[strum(props(name = "Hard Mining Backpack", desc = "", value = "900366130"))] + ItemHardMiningBackPack = 900366130i32, + #[strum(serialize = "ItemDirtCanister")] + #[strum( + props( + name = "Dirt Canister", + desc = "A container the will fill with Dirt when using a Mining Drill when placed inside a Mining Belt. You can then use this Dirt Canister with the Terrain Manipulator to adjust the terrain to suit your needs.", + value = "902565329" + ) + )] + ItemDirtCanister = 902565329i32, + #[strum(serialize = "StructureSign2x1")] + #[strum(props(name = "Sign 2x1", desc = "", value = "908320837"))] + StructureSign2X1 = 908320837i32, + #[strum(serialize = "CircuitboardAirlockControl")] + #[strum( + props( + name = "Airlock", + desc = "Rumored to have been first sketched on a Norsec toilet wall by a disgruntled engineer, the Exgress airlock control circuit board’s versatility and ease of fabrication has made it the Stationeers control system of choice for Airlock cycling protocols. \n\nTo enter setup mode, insert the board into a Console along with a data disk. In this mode, you can see all data-accessible objects currently connected to the Console. Doors, lights, gas sensors and slave consoles can be selected (highlighted green), and will be controlled once the data disk is removed.", + value = "912176135" + ) + )] + CircuitboardAirlockControl = 912176135i32, + #[strum(serialize = "Landingpad_BlankPiece")] + #[strum(props(name = "Landingpad", desc = "", value = "912453390"))] + LandingpadBlankPiece = 912453390i32, + #[strum(serialize = "ItemKitPipeRadiator")] + #[strum(props(name = "Kit (Pipe Radiator)", desc = "", value = "920411066"))] + ItemKitPipeRadiator = 920411066i32, + #[strum(serialize = "StructureLogicMinMax")] + #[strum( + props(name = "Logic Min/Max", desc = "0.Greater\n1.Less", value = "929022276") + )] + StructureLogicMinMax = 929022276i32, + #[strum(serialize = "StructureSolarPanel45Reinforced")] + #[strum( + props( + name = "Solar Panel (Heavy Angled)", + desc = "This solar panel is resistant to storm damage.", + value = "930865127" + ) + )] + StructureSolarPanel45Reinforced = 930865127i32, + #[strum(serialize = "StructurePoweredVent")] + #[strum( + props( + name = "Powered Vent", + desc = "Great for moving large quantities of air into a pipe network. Its primary purpose is for the creation of multi-grid airlocks. It can effeciently pull a vacuum on a small to medium sized room.", + value = "938836756" + ) + )] + StructurePoweredVent = 938836756i32, + #[strum(serialize = "ItemPureIceHydrogen")] + #[strum( + props( + name = "Pure Ice Hydrogen", + desc = "A frozen chunk of pure Hydrogen", + value = "944530361" + ) + )] + ItemPureIceHydrogen = 944530361i32, + #[strum(serialize = "StructureHeatExchangeLiquidtoGas")] + #[strum( + props( + name = "Heat Exchanger - Liquid + Gas", + desc = "The original specs for the N Series Flow-P heat exchanger were rumored to have been scrawled on the back of a burger receipt by a bored Sinotai designer riding up the Brazilian space elevator, but that hasn't stopped it becoming one of the most widely-copied heat exchanger designs in the Solar System.\nThe 'N Flow-P' has four connections, allowing you to pass separate liquid and gas networks into the unit, which then works to equalize temperature across the two separate networks.\nAs the N Flow-P is a passive system, it equalizes pressure across the entire of each individual network, unless connected to devices like a Volume Pump or a Liquid Back Volume Regulator.", + value = "944685608" + ) + )] + StructureHeatExchangeLiquidtoGas = 944685608i32, + #[strum(serialize = "StructureCompositeCladdingAngledCornerInnerLongL")] + #[strum( + props( + name = "Composite Cladding (Angled Corner Inner Long L)", + desc = "", + value = "947705066" + ) + )] + StructureCompositeCladdingAngledCornerInnerLongL = 947705066i32, + #[strum(serialize = "StructurePictureFrameThickMountLandscapeLarge")] + #[strum( + props( + name = "Picture Frame Thick Landscape Large", + desc = "", + value = "950004659" + ) + )] + StructurePictureFrameThickMountLandscapeLarge = 950004659i32, + #[strum(serialize = "StructureTankSmallAir")] + #[strum(props(name = "Small Tank (Air)", desc = "", value = "955744474"))] + StructureTankSmallAir = 955744474i32, + #[strum(serialize = "StructureHarvie")] + #[strum( + props( + name = "Harvie", + desc = "Use above a Hydroponics Tray or Hydroponics Device to manage the planting and harvest of your crops. It contains a button that will allow you to activate it's modes, or connect it to a logic system to do this for you. The modes indicate current growth status of the plant below. Import is used for planting, and harvested plants are sent to export.", + value = "958056199" + ) + )] + StructureHarvie = 958056199i32, + #[strum(serialize = "StructureFridgeBig")] + #[strum( + props( + name = "Fridge (Large)", + desc = "The Xigo Koolaid fridge is a self-cooling storage device with 15 slots that preserves food when powered and turned on. While many users have complained about the placement of the power switch, its place in the pantheon of off-world whiteware is unquestioned.\n \nWith its own permanent internal atmosphere, the Koolaid fridge slows the decay of food by maintaining an optimal internal temperature. Its power usage varies on the external temperature against which it must balance its internal temperature. As such, it must shed heat to operate, so the Koolaid fridge DOES NOT work in a vacuum.\n \nAlso, don't leave the door open, as it will equalize with the current world temperature. And maybe start to beep.\n\nFor more information about food preservation, visit the food decay section of the Stationpedia.", + value = "958476921" + ) + )] + StructureFridgeBig = 958476921i32, + #[strum(serialize = "ItemKitAirlock")] + #[strum(props(name = "Kit (Airlock)", desc = "", value = "964043875"))] + ItemKitAirlock = 964043875i32, + #[strum(serialize = "EntityRoosterBlack")] + #[strum( + props( + name = "Entity Rooster Black", + desc = "This is a rooster. It is black. There is dignity in this.", + value = "966959649" + ) + )] + EntityRoosterBlack = 966959649i32, + #[strum(serialize = "ItemKitSorter")] + #[strum(props(name = "Kit (Sorter)", desc = "", value = "969522478"))] + ItemKitSorter = 969522478i32, + #[strum(serialize = "ItemEmergencyCrowbar")] + #[strum(props(name = "Emergency Crowbar", desc = "", value = "976699731"))] + ItemEmergencyCrowbar = 976699731i32, + #[strum(serialize = "Landingpad_DiagonalPiece01")] + #[strum( + props( + name = "Landingpad Diagonal", + desc = "Extends the size of the landing pad area. A basic trader shuttle requires a 3x3 clear landing area.", + value = "977899131" + ) + )] + LandingpadDiagonalPiece01 = 977899131i32, + #[strum(serialize = "ReagentColorBlue")] + #[strum(props(name = "Color Dye (Blue)", desc = "", value = "980054869"))] + ReagentColorBlue = 980054869i32, + #[strum(serialize = "StructureCableCorner3")] + #[strum( + props( + name = "Cable (3-Way Corner)", + desc = "Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of Stationeer life - so essential, the ODA designated it an official 'tool' during the 3rd Decannual Stationeer Solar Conference.\nNormal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy).", + value = "980469101" + ) + )] + StructureCableCorner3 = 980469101i32, + #[strum(serialize = "ItemNVG")] + #[strum(props(name = "Night Vision Goggles", desc = "", value = "982514123"))] + ItemNvg = 982514123i32, + #[strum(serialize = "StructurePlinth")] + #[strum(props(name = "Plinth", desc = "", value = "989835703"))] + StructurePlinth = 989835703i32, + #[strum(serialize = "ItemSprayCanYellow")] + #[strum( + props( + name = "Spray Paint (Yellow)", + desc = "A caricature of light itself, yellow lacks the self-confidence of red, or the swagger of purple. It's less fun than orange, but less emotionally limp than khaki. It's hard to know when yellow is appropriate, but it persists as a primary color regardless. Suggesting that yellow gonna yellow, no matter what anyone thinks.", + value = "995468116" + ) + )] + ItemSprayCanYellow = 995468116i32, + #[strum(serialize = "StructureRocketCelestialTracker")] + #[strum( + props( + name = "Rocket Celestial Tracker", + desc = "The Celestial Tracker can be placed in Rockets and when turned on will provide data that can be used to orientate devices such as the Telescope. The Horizontal and Vertical output is localized to the orientation of the tracker. You can calibrate your alignment by comparing the result for the primary body with the output from the Daylight Sensor. Full functionality will only be available in orbit, but you can configure using the primary body. For aligning with the telescope, have the face plate facing up and the cables facing in the same direction as for the telescope and the output values will be aligned.", + value = "997453927" + ) + )] + StructureRocketCelestialTracker = 997453927i32, + #[strum(serialize = "ItemHighVolumeGasCanisterEmpty")] + #[strum(props(name = "High Volume Gas Canister", desc = "", value = "998653377"))] + ItemHighVolumeGasCanisterEmpty = 998653377i32, + #[strum(serialize = "ItemKitLogicTransmitter")] + #[strum(props(name = "Kit (Logic Transmitter)", desc = "", value = "1005397063"))] + ItemKitLogicTransmitter = 1005397063i32, + #[strum(serialize = "StructureIgniter")] + #[strum( + props( + name = "Igniter", + desc = "It gets the party started. Especially if that party is an explosive gas mixture.", + value = "1005491513" + ) + )] + StructureIgniter = 1005491513i32, + #[strum(serialize = "SeedBag_Potato")] + #[strum( + props( + name = "Potato Seeds", + desc = "Grow a Potato.", + value = "1005571172" + ) + )] + SeedBagPotato = 1005571172i32, + #[strum(serialize = "ItemDataDisk")] + #[strum(props(name = "Data Disk", desc = "", value = "1005843700"))] + ItemDataDisk = 1005843700i32, + #[strum(serialize = "ItemBatteryChargerSmall")] + #[strum(props(name = "Battery Charger Small", desc = "", value = "1008295833"))] + ItemBatteryChargerSmall = 1008295833i32, + #[strum(serialize = "EntityChickenWhite")] + #[strum( + props( + name = "Entity Chicken White", + desc = "It's a chicken, as white as moondust. It will eat soybeans, corn, and wheat, and lay eggs. Some will be fertilized, producing further chickens. Some will not.", + value = "1010807532" + ) + )] + EntityChickenWhite = 1010807532i32, + #[strum(serialize = "ItemKitStacker")] + #[strum(props(name = "Kit (Stacker)", desc = "", value = "1013244511"))] + ItemKitStacker = 1013244511i32, + #[strum(serialize = "StructureTankSmall")] + #[strum(props(name = "Small Tank", desc = "", value = "1013514688"))] + StructureTankSmall = 1013514688i32, + #[strum(serialize = "ItemEmptyCan")] + #[strum( + props( + name = "Empty Can", + desc = "Used for making soups when combined with food in the Basic Packaging Machine or Advanced Packaging Machine. Fairly high in nutrition, canned food does not decay.", + value = "1013818348" + ) + )] + ItemEmptyCan = 1013818348i32, + #[strum(serialize = "ItemKitTankInsulated")] + #[strum(props(name = "Kit (Tank Insulated)", desc = "", value = "1021053608"))] + ItemKitTankInsulated = 1021053608i32, + #[strum(serialize = "ItemKitChute")] + #[strum(props(name = "Kit (Basic Chutes)", desc = "", value = "1025254665"))] + ItemKitChute = 1025254665i32, + #[strum(serialize = "StructureFuselageTypeA1")] + #[strum(props(name = "Fuselage (Type A1)", desc = "", value = "1033024712"))] + StructureFuselageTypeA1 = 1033024712i32, + #[strum(serialize = "StructureCableAnalysizer")] + #[strum(props(name = "Cable Analyzer", desc = "", value = "1036015121"))] + StructureCableAnalysizer = 1036015121i32, + #[strum(serialize = "StructureCableJunctionH6")] + #[strum( + props(name = "Heavy Cable (6-Way Junction)", desc = "", value = "1036780772") + )] + StructureCableJunctionH6 = 1036780772i32, + #[strum(serialize = "ItemGasFilterVolatilesM")] + #[strum(props(name = "Medium Filter (Volatiles)", desc = "", value = "1037507240"))] + ItemGasFilterVolatilesM = 1037507240i32, + #[strum(serialize = "ItemKitPortablesConnector")] + #[strum(props(name = "Kit (Portables Connector)", desc = "", value = "1041148999"))] + ItemKitPortablesConnector = 1041148999i32, + #[strum(serialize = "StructureFloorDrain")] + #[strum( + props( + name = "Passive Liquid Inlet", + desc = "A passive liquid floor inlet that quickly removes liquids in one direction from the world into the connected pipe network. It will equalise gasses with the world atmosphere also.", + value = "1048813293" + ) + )] + StructureFloorDrain = 1048813293i32, + #[strum(serialize = "StructureWallGeometryStreight")] + #[strum(props(name = "Wall (Geometry Straight)", desc = "", value = "1049735537"))] + StructureWallGeometryStreight = 1049735537i32, + #[strum(serialize = "StructureTransformerSmallReversed")] + #[strum( + props( + name = "Transformer Reversed (Small)", + desc = "Transformers control the maximum power that will flow down a cable subnetwork, to prevent overloading electrical systems. Output on small transformers can be set from 0 to 5000W.\nNote that transformers operate as data isolators, preventing data flowing into any network beyond it.", + value = "1054059374" + ) + )] + StructureTransformerSmallReversed = 1054059374i32, + #[strum(serialize = "ItemMiningDrill")] + #[strum( + props( + name = "Mining Drill", + desc = "The handheld 'Topo' tri-cone rotary mining drill was made for one thing: quick digging. Modeled on a classic Recurso zero-g design, it functions equally well in vacuum and atmosphere, with cemented carbide bits to increase resilience and bearing life, and reduce spalling. As Jenk Murtons once said, 'The Topo don't stopo.'", + value = "1055173191" + ) + )] + ItemMiningDrill = 1055173191i32, + #[strum(serialize = "ItemConstantanIngot")] + #[strum(props(name = "Ingot (Constantan)", desc = "", value = "1058547521"))] + ItemConstantanIngot = 1058547521i32, + #[strum(serialize = "StructureInsulatedPipeCrossJunction6")] + #[strum( + props( + name = "Insulated Pipe (6-Way Junction)", + desc = "Insulated pipes greatly reduce heat loss from gases stored in them.", + value = "1061164284" + ) + )] + StructureInsulatedPipeCrossJunction6 = 1061164284i32, + #[strum(serialize = "Landingpad_CenterPiece01")] + #[strum( + props( + name = "Landingpad Center", + desc = "The target point where the trader shuttle will land. Requires a clear view of the sky.", + value = "1070143159" + ) + )] + LandingpadCenterPiece01 = 1070143159i32, + #[strum(serialize = "StructureHorizontalAutoMiner")] + #[strum( + props( + name = "OGRE", + desc = "The Recurso OGRE (Orthogonal Ground Rotating Excavator) is a base structure with attached mining vehicle, which will mine a horizontal shaft up to X meters long. When full, the mining vehicle will return to the base to empty itself, before returning to dig. If it encounters empty space, it will also return to base and await instruction. The unit will return if deactivated.\n \nThe OGRE can be connected to a chute system, and is controllable by a logic network. Note that the OGRE outputs more ore than a conventional Mining Drill over the same area, due to more efficient processing.\n\nMODES\nIdle - 0\nMining - 1\nReturning - 2\nDepostingOre - 3\nFinished - 4\n", + value = "1070427573" + ) + )] + StructureHorizontalAutoMiner = 1070427573i32, + #[strum(serialize = "ItemDynamicAirCon")] + #[strum( + props(name = "Kit (Portable Air Conditioner)", desc = "", value = "1072914031") + )] + ItemDynamicAirCon = 1072914031i32, + #[strum(serialize = "ItemMarineHelmet")] + #[strum(props(name = "Marine Helmet", desc = "", value = "1073631646"))] + ItemMarineHelmet = 1073631646i32, + #[strum(serialize = "StructureDaylightSensor")] + #[strum( + props( + name = "Daylight Sensor", + desc = "Daylight sensors provide data on whether the current region of your base is in sunlight, and report the exact solar angle. Note that the orientation of the sensor alters the reported solar angle, while Logic systems can be used to offset it.", + value = "1076425094" + ) + )] + StructureDaylightSensor = 1076425094i32, + #[strum(serialize = "StructureCompositeCladdingCylindricalPanel")] + #[strum( + props( + name = "Composite Cladding (Cylindrical Panel)", + desc = "", + value = "1077151132" + ) + )] + StructureCompositeCladdingCylindricalPanel = 1077151132i32, + #[strum(serialize = "ItemRocketMiningDrillHeadMineral")] + #[strum( + props(name = "Mining-Drill Head (Mineral)", desc = "", value = "1083675581") + )] + ItemRocketMiningDrillHeadMineral = 1083675581i32, + #[strum(serialize = "ItemKitSuitStorage")] + #[strum(props(name = "Kit (Suit Storage)", desc = "", value = "1088892825"))] + ItemKitSuitStorage = 1088892825i32, + #[strum(serialize = "StructurePictureFrameThinMountPortraitLarge")] + #[strum( + props( + name = "Picture Frame Thin Portrait Large", + desc = "", + value = "1094895077" + ) + )] + StructurePictureFrameThinMountPortraitLarge = 1094895077i32, + #[strum(serialize = "StructureLiquidTankBig")] + #[strum(props(name = "Liquid Tank Big", desc = "", value = "1098900430"))] + StructureLiquidTankBig = 1098900430i32, + #[strum(serialize = "Landingpad_CrossPiece")] + #[strum( + props( + name = "Landingpad Cross", + desc = "Extends the size of the landing pad area. A basic trader shuttle requires a 3x3 clear landing area.", + value = "1101296153" + ) + )] + LandingpadCrossPiece = 1101296153i32, + #[strum(serialize = "CartridgePlantAnalyser")] + #[strum(props(name = "Cartridge Plant Analyser", desc = "", value = "1101328282"))] + CartridgePlantAnalyser = 1101328282i32, + #[strum(serialize = "ItemSiliconOre")] + #[strum( + props( + name = "Ore (Silicon)", + desc = "Silicon is a chemical element with the symbol \"Si\" and is one of the most useful elements to Stationeers. Readily available throughout the universe, silicon is used in a range of alloys, glass, plastics and various electronic components a Stationeer may need to complete their mission.", + value = "1103972403" + ) + )] + ItemSiliconOre = 1103972403i32, + #[strum(serialize = "ItemWallLight")] + #[strum( + props( + name = "Kit (Lights)", + desc = "This kit creates any one of ten Kit (Lights) variants.", + value = "1108423476" + ) + )] + ItemWallLight = 1108423476i32, + #[strum(serialize = "StructureCableJunction4")] + #[strum( + props( + name = "Cable (4-Way Junction)", + desc = "Carrying power and data alike, cable coil has come to symbolize the innovation, independence and flexibility of Stationeer life - so much so, the ODA designated it an official 'tool' during the 3rd Decannual Stationeer Solar Conference.\nNormal coil has a maximum wattage of 5kW. For higher-current applications, use Cable Coil (Heavy).", + value = "1112047202" + ) + )] + StructureCableJunction4 = 1112047202i32, + #[strum(serialize = "ItemPillHeal")] + #[strum( + props( + name = "Pill (Medical)", + desc = "Three centuries of pharmaceutical technology compressed into one small, easy to ingest pill: the Heal Pill, aka the Proton Pill, aka Mr Happy contains active enzymes, therapeutic proteins, modified microbial strains, and mammalian cell line analogues in a single-dose boost of high purity, efficacy, and potency that potentiates a swift parasympathetic immune response.", + value = "1118069417" + ) + )] + ItemPillHeal = 1118069417i32, + #[strum(serialize = "SeedBag_Cocoa")] + #[strum(props(name = "Cocoa Seeds", desc = "", value = "1139887531"))] + SeedBagCocoa = 1139887531i32, + #[strum(serialize = "StructureMediumRocketLiquidFuelTank")] + #[strum(props(name = "Liquid Capsule Tank Medium", desc = "", value = "1143639539"))] + StructureMediumRocketLiquidFuelTank = 1143639539i32, + #[strum(serialize = "StructureCargoStorageMedium")] + #[strum(props(name = "Cargo Storage (Medium)", desc = "", value = "1151864003"))] + StructureCargoStorageMedium = 1151864003i32, + #[strum(serialize = "WeaponRifleEnergy")] + #[strum(props(name = "Energy Rifle", desc = "0.Stun\n1.Kill", value = "1154745374"))] + WeaponRifleEnergy = 1154745374i32, + #[strum(serialize = "StructureSDBSilo")] + #[strum( + props( + name = "SDB Silo", + desc = "The majestic silo holds large quantities of almost anything. While it is doing that, it cannot be deconstructed. Note also, that any food you put into a silo is likely to decay extremely rapidly. The silo can hold up to 600 stacks.", + value = "1155865682" + ) + )] + StructureSdbSilo = 1155865682i32, + #[strum(serialize = "Flag_ODA_4m")] + #[strum(props(name = "Flag (ODA 4m)", desc = "", value = "1159126354"))] + FlagOda4M = 1159126354i32, + #[strum(serialize = "ItemCannedPowderedEggs")] + #[strum( + props( + name = "Canned Powdered Eggs", + desc = "Made in an Advanced Packaging Machine or Basic Packaging Machine, using Powdered Eggs and an Empty Can, canned powdered eggs are an exciting, dynamic food that's fairly high in nutrition, and does not decay.", + value = "1161510063" + ) + )] + ItemCannedPowderedEggs = 1161510063i32, + #[strum(serialize = "ItemKitFurniture")] + #[strum(props(name = "Kit (Furniture)", desc = "", value = "1162905029"))] + ItemKitFurniture = 1162905029i32, + #[strum(serialize = "StructureGasGenerator")] + #[strum(props(name = "Gas Fuel Generator", desc = "", value = "1165997963"))] + StructureGasGenerator = 1165997963i32, + #[strum(serialize = "StructureChair")] + #[strum( + props( + name = "Chair", + desc = "One of the universe's many chairs, optimized for bipeds with somewhere between zero and two upper limbs.", + value = "1167659360" + ) + )] + StructureChair = 1167659360i32, + #[strum(serialize = "StructureWallPaddedArchLightFittingTop")] + #[strum( + props( + name = "Wall (Padded Arch Light Fitting Top)", + desc = "", + value = "1171987947" + ) + )] + StructureWallPaddedArchLightFittingTop = 1171987947i32, + #[strum(serialize = "StructureShelf")] + #[strum(props(name = "Shelf", desc = "", value = "1172114950"))] + StructureShelf = 1172114950i32, + #[strum(serialize = "ApplianceDeskLampRight")] + #[strum(props(name = "Appliance Desk Lamp Right", desc = "", value = "1174360780"))] + ApplianceDeskLampRight = 1174360780i32, + #[strum(serialize = "ItemKitRegulator")] + #[strum(props(name = "Kit (Pressure Regulator)", desc = "", value = "1181371795"))] + ItemKitRegulator = 1181371795i32, + #[strum(serialize = "ItemKitCompositeFloorGrating")] + #[strum(props(name = "Kit (Floor Grating)", desc = "", value = "1182412869"))] + ItemKitCompositeFloorGrating = 1182412869i32, + #[strum(serialize = "StructureWallArchPlating")] + #[strum(props(name = "Wall (Arch Plating)", desc = "", value = "1182510648"))] + StructureWallArchPlating = 1182510648i32, + #[strum(serialize = "StructureWallPaddedCornerThin")] + #[strum(props(name = "Wall (Padded Corner Thin)", desc = "", value = "1183203913"))] + StructureWallPaddedCornerThin = 1183203913i32, + #[strum(serialize = "StructurePowerTransmitterReceiver")] + #[strum( + props( + name = "Microwave Power Receiver", + desc = "The Norsec Wireless Power Transmitter is an uni-directional, A-to-B, far field microwave electrical transmission system.The rotatable base transmitter delivers a narrow, non-lethal microwave beam to a dedicated base receiver.\nThe transmitter must be aligned to the base station in order to transmit any power. The brightness of the transmitter's collimator arc provides an indication of transmission intensity. Note that there is an attrition over longer ranges, so the unit requires more power over greater distances to deliver the same output.Connects to Logic Transmitter", + value = "1195820278" + ) + )] + StructurePowerTransmitterReceiver = 1195820278i32, + #[strum(serialize = "ItemPipeMeter")] + #[strum( + props( + name = "Kit (Pipe Meter)", + desc = "This kit creates a Pipe Meter.", + value = "1207939683" + ) + )] + ItemPipeMeter = 1207939683i32, + #[strum(serialize = "StructurePictureFrameThinPortraitLarge")] + #[strum( + props( + name = "Picture Frame Thin Portrait Large", + desc = "", + value = "1212777087" + ) + )] + StructurePictureFrameThinPortraitLarge = 1212777087i32, + #[strum(serialize = "StructureSleeperLeft")] + #[strum( + props( + name = "Sleeper Left", + desc = "A horizontal variant of the sleeper. Will keep players hydrated and fed while they are logged out - as long as a breathable atmosphere is provided.", + value = "1213495833" + ) + )] + StructureSleeperLeft = 1213495833i32, + #[strum(serialize = "ItemIce")] + #[strum( + props( + name = "Ice (Water)", + desc = "Water ice can be found on most planets in the Solar System, though not all worlds visited by Stationeers possess this resource. Highly sensitive to temperature, ice will begin to melt as soon as it is mined, unless kept in the Mining Belt. When melting, ice produces a mixture of Steam and Nitrogen gas.", + value = "1217489948" + ) + )] + ItemIce = 1217489948i32, + #[strum(serialize = "StructureLogicSwitch")] + #[strum(props(name = "Lever", desc = "", value = "1220484876"))] + StructureLogicSwitch = 1220484876i32, + #[strum(serialize = "StructureLiquidUmbilicalFemaleSide")] + #[strum( + props(name = "Umbilical Socket Angle (Liquid)", desc = "", value = "1220870319") + )] + StructureLiquidUmbilicalFemaleSide = 1220870319i32, + #[strum(serialize = "ItemKitAtmospherics")] + #[strum(props(name = "Kit (Atmospherics)", desc = "", value = "1222286371"))] + ItemKitAtmospherics = 1222286371i32, + #[strum(serialize = "ItemChemLightYellow")] + #[strum( + props( + name = "Chem Light (Yellow)", + desc = "Dispel the darkness with this yellow glowstick.", + value = "1224819963" + ) + )] + ItemChemLightYellow = 1224819963i32, + #[strum(serialize = "ItemIronFrames")] + #[strum(props(name = "Iron Frames", desc = "", value = "1225836666"))] + ItemIronFrames = 1225836666i32, + #[strum(serialize = "CompositeRollCover")] + #[strum( + props( + name = "Composite Roll Cover", + desc = "0.Operate\n1.Logic", + value = "1228794916" + ) + )] + CompositeRollCover = 1228794916i32, + #[strum(serialize = "StructureCompositeWall")] + #[strum( + props( + name = "Composite Wall (Type 1)", + desc = "Air-tight and resistant to extreme temperatures, composite walls favor form over function, coming in a range of slightly different, functionally identical varieties.", + value = "1237302061" + ) + )] + StructureCompositeWall = 1237302061i32, + #[strum(serialize = "StructureCombustionCentrifuge")] + #[strum( + props( + name = "Combustion Centrifuge", + desc = "The Combustion Centrifuge is a gas powered version of the Centrifuge. If a Recycler or unbalanced Furnace outputs reagent mixture rather than the desired ingots, a centrifuge allows you to reclaim the raw ore.\n It also refines Dirty Ore produced from the Deep Miner and Dirty Ore produced from the Rocket Miner. A combustible fuel mix should be supplied to the gas input, and waste gasses should be vented from the output. \n The machine's RPMs must be controlled via the throttle and combustion limiter levers. If the Combustion Centrifuge gains, or loses, RPMs too fast it will experience stress, and eventually grind to a halt. Higher RPMs directly result in faster processing speeds. \n The throttle lever controls the amount of fuel being pulled into the machine, increasing the temperature inside the engine, and leading to an increase in RPM. The limiter lever influences the speed of the combustion, and how much uncombusted gas is in the exhaust. \n Ejecting ore from the Combustion Centrifuge while it is at high RPMs will result in additional stress build up. If turned off while not stressed, the machine will automatically start to brake, and reduce RPMs in a controlled manner.\n\t ", + value = "1238905683" + ) + )] + StructureCombustionCentrifuge = 1238905683i32, + #[strum(serialize = "ItemVolatiles")] + #[strum( + props( + name = "Ice (Volatiles)", + desc = "An extremely reactive ice with numerous hydrocarbons trapped inside. For simplicity's sake, these are often displayed as H2 by devices like the Atmos Analyzer.\n \nVolatiles combust in a 2:1 ratio with Oxygen, creating Carbon Dioxide and pollutants. However when catalysed via devices such as the H2 Combustor in the presence of Oxygen, they produce\n Steam and heat with a modicum of Carbon Dioxide and Pollutant due to the autoignition of the volatiles in the chamber. Along with Oxygen, volatiles gas is also the major component of fuel for such devices as the Welding Torch.\n", + value = "1253102035" + ) + )] + ItemVolatiles = 1253102035i32, + #[strum(serialize = "HandgunMagazine")] + #[strum(props(name = "Handgun Magazine", desc = "", value = "1254383185"))] + HandgunMagazine = 1254383185i32, + #[strum(serialize = "ItemGasFilterVolatilesL")] + #[strum(props(name = "Heavy Filter (Volatiles)", desc = "", value = "1255156286"))] + ItemGasFilterVolatilesL = 1255156286i32, + #[strum(serialize = "ItemMiningDrillPneumatic")] + #[strum( + props( + name = "Pneumatic Mining Drill", + desc = "0.Default\n1.Flatten", + value = "1258187304" + ) + )] + ItemMiningDrillPneumatic = 1258187304i32, + #[strum(serialize = "StructureSmallTableDinnerSingle")] + #[strum( + props(name = "Small (Table Dinner Single)", desc = "", value = "1260651529") + )] + StructureSmallTableDinnerSingle = 1260651529i32, + #[strum(serialize = "ApplianceReagentProcessor")] + #[strum( + props( + name = "Reagent Processor", + desc = "Sitting somewhere between a high powered juicer and an alchemist's alembic, the Xigo reagent processor turns certain raw materials and food items into cooking and crafting ingredients. Indispensible in any space kitchen, just bolt it to the bench, and you're ready to go.", + value = "1260918085" + ) + )] + ApplianceReagentProcessor = 1260918085i32, + #[strum(serialize = "StructurePressurePlateMedium")] + #[strum(props(name = "Trigger Plate (Medium)", desc = "", value = "1269458680"))] + StructurePressurePlateMedium = 1269458680i32, + #[strum(serialize = "ItemPumpkin")] + #[strum( + props( + name = "Pumpkin", + desc = "Pumpkins are a perennial plant, with both a long growth time, and a long time between harvests. Its low requirement for darkness allows for accelerated growing if provided with extra light.", + value = "1277828144" + ) + )] + ItemPumpkin = 1277828144i32, + #[strum(serialize = "ItemPumpkinSoup")] + #[strum( + props( + name = "Pumpkin Soup", + desc = "Made using Cooked Pumpkin and an Empty Can in a Basic Packaging Machine or Advanced Packaging Machine. Fairly high in nutrition, canned food does not decay", + value = "1277979876" + ) + )] + ItemPumpkinSoup = 1277979876i32, + #[strum(serialize = "StructureTankBigInsulated")] + #[strum(props(name = "Tank Big (Insulated)", desc = "", value = "1280378227"))] + StructureTankBigInsulated = 1280378227i32, + #[strum(serialize = "StructureWallArchCornerTriangle")] + #[strum( + props(name = "Wall (Arch Corner Triangle)", desc = "", value = "1281911841") + )] + StructureWallArchCornerTriangle = 1281911841i32, + #[strum(serialize = "StructureTurbineGenerator")] + #[strum(props(name = "Turbine Generator", desc = "", value = "1282191063"))] + StructureTurbineGenerator = 1282191063i32, + #[strum(serialize = "StructurePipeIgniter")] + #[strum( + props( + name = "Pipe Igniter", + desc = "Ignites the atmosphere inside the attached pipe network.", + value = "1286441942" + ) + )] + StructurePipeIgniter = 1286441942i32, + #[strum(serialize = "StructureWallIron")] + #[strum(props(name = "Iron Wall (Type 1)", desc = "", value = "1287324802"))] + StructureWallIron = 1287324802i32, + #[strum(serialize = "ItemSprayGun")] + #[strum( + props( + name = "Spray Gun", + desc = "Use with Spray cans in the Spray Can to paint structures, cables and pipes. Much more efficient and faster than doing it with individual spray cans.", + value = "1289723966" + ) + )] + ItemSprayGun = 1289723966i32, + #[strum(serialize = "ItemKitSolidGenerator")] + #[strum(props(name = "Kit (Solid Generator)", desc = "", value = "1293995736"))] + ItemKitSolidGenerator = 1293995736i32, + #[strum(serialize = "StructureAccessBridge")] + #[strum( + props( + name = "Access Bridge", + desc = "Extendable bridge that spans three grids", + value = "1298920475" + ) + )] + StructureAccessBridge = 1298920475i32, + #[strum(serialize = "StructurePipeOrgan")] + #[strum( + props( + name = "Pipe Organ", + desc = "The pipe organ can be attached to one end of a Kit (Pipe Valve). The length of the pipe after the pipe organ changes the pitch of the note it will play when the valve is opened. Use Logic to open and close the valves to create some custom tunes for your base or an audible warning.", + value = "1305252611" + ) + )] + StructurePipeOrgan = 1305252611i32, + #[strum(serialize = "StructureElectronicsPrinter")] + #[strum( + props( + name = "Electronics Printer", + desc = "The electronic printer will create any electronic part you need. From circuit boards and electronic devices to solar panels. The choice is yours. Upgrade the device using a Electronic Printer Mod for additional recipes and faster processing speeds.", + value = "1307165496" + ) + )] + StructureElectronicsPrinter = 1307165496i32, + #[strum(serialize = "StructureFuselageTypeA4")] + #[strum(props(name = "Fuselage (Type A4)", desc = "", value = "1308115015"))] + StructureFuselageTypeA4 = 1308115015i32, + #[strum(serialize = "StructureSmallDirectHeatExchangeGastoGas")] + #[strum( + props( + name = "Small Direct Heat Exchanger - Gas + Gas", + desc = "Direct Heat Exchangers equalize the temperature of the two input networks.", + value = "1310303582" + ) + )] + StructureSmallDirectHeatExchangeGastoGas = 1310303582i32, + #[strum(serialize = "StructureTurboVolumePump")] + #[strum( + props( + name = "Turbo Volume Pump (Gas)", + desc = "Shifts 10 times more gas than a basic Volume Pump, with a mode that can be set to flow in either direction.", + value = "1310794736" + ) + )] + StructureTurboVolumePump = 1310794736i32, + #[strum(serialize = "ItemChemLightWhite")] + #[strum( + props( + name = "Chem Light (White)", + desc = "Snap the glowstick to activate a pale radiance that keeps the darkness at bay.", + value = "1312166823" + ) + )] + ItemChemLightWhite = 1312166823i32, + #[strum(serialize = "ItemMilk")] + #[strum( + props( + name = "Milk", + desc = "Full disclosure, it's not actually 'milk', but an Agrizero-invented synthesis of 5ml Soy Oil and 5g Fern, delicately blended in the Chemistry Station. Surprisingly filling, it can be used as an ingredient to cook other food in the Microwave or Automated Oven. Think, Muffin.", + value = "1327248310" + ) + )] + ItemMilk = 1327248310i32, + #[strum(serialize = "StructureInsulatedPipeCrossJunction3")] + #[strum( + props( + name = "Insulated Pipe (3-Way Junction)", + desc = "Insulated pipes greatly reduce heat loss from gases stored in them.", + value = "1328210035" + ) + )] + StructureInsulatedPipeCrossJunction3 = 1328210035i32, + #[strum(serialize = "StructureShortCornerLocker")] + #[strum(props(name = "Short Corner Locker", desc = "", value = "1330754486"))] + StructureShortCornerLocker = 1330754486i32, + #[strum(serialize = "StructureTankConnectorLiquid")] + #[strum( + props( + name = "Liquid Tank Connector", + desc = "These basic mounting devices allow you to attach a Portable Liquid Tank to a liquid pipe network.", + value = "1331802518" + ) + )] + StructureTankConnectorLiquid = 1331802518i32, + #[strum(serialize = "ItemSprayCanPink")] + #[strum( + props( + name = "Spray Paint (Pink)", + desc = "With the invention of enduring chemical dyes, the 20th century bestowed associations with innocence and tenderness upon this pale tint of red. Yet classically, it was the color of seduction and eroticism. Things change.", + value = "1344257263" + ) + )] + ItemSprayCanPink = 1344257263i32, + #[strum(serialize = "CircuitboardGraphDisplay")] + #[strum(props(name = "Graph Display", desc = "", value = "1344368806"))] + CircuitboardGraphDisplay = 1344368806i32, + #[strum(serialize = "ItemWreckageStructureWeatherStation006")] + #[strum( + props( + name = "Wreckage Structure Weather Station", + desc = "", + value = "1344576960" + ) + )] + ItemWreckageStructureWeatherStation006 = 1344576960i32, + #[strum(serialize = "ItemCookedCorn")] + #[strum( + props( + name = "Cooked Corn", + desc = "A high-nutrient cooked food, which can be canned.", + value = "1344773148" + ) + )] + ItemCookedCorn = 1344773148i32, + #[strum(serialize = "ItemCookedSoybean")] + #[strum( + props( + name = "Cooked Soybean", + desc = "A high-nutrient cooked food, which can be canned.", + value = "1353449022" + ) + )] + ItemCookedSoybean = 1353449022i32, + #[strum(serialize = "StructureChuteCorner")] + #[strum( + props( + name = "Chute (Corner)", + desc = "Chutes act as pipes for items. Use them to connect various import/export equipment together such as the Vending Machine and printers like the Autolathe.\nThe aim for any Stationeer is to make off-world survival less of a struggle for themselves, and those who will follow in their footsteps.\nChute corners are fundamental components of chute networks, which allow the transport of items between machines with import/export slots, such as the Furnace and other automatable structures.", + value = "1360330136" + ) + )] + StructureChuteCorner = 1360330136i32, + #[strum(serialize = "DynamicGasCanisterOxygen")] + #[strum( + props( + name = "Portable Gas Tank (Oxygen)", + desc = "Portable tanks store gas. If you need to refill a tank, bolt it to a Kit (Tank Connector) using a Wrench, then connect it to a pipe network. Try to avoid pushing it above 10 MPa, or you'll be picking tank shards out of your face. You can refill a Canister (Oxygen) by attaching it to the tank's striped section. Or you could vent it into a sealed room to create an atmosphere. Or even paint it pink, call it Steve and fill that sad space in your heart.", + value = "1360925836" + ) + )] + DynamicGasCanisterOxygen = 1360925836i32, + #[strum(serialize = "StructurePassiveVentInsulated")] + #[strum(props(name = "Insulated Passive Vent", desc = "", value = "1363077139"))] + StructurePassiveVentInsulated = 1363077139i32, + #[strum(serialize = "ApplianceChemistryStation")] + #[strum(props(name = "Chemistry Station", desc = "", value = "1365789392"))] + ApplianceChemistryStation = 1365789392i32, + #[strum(serialize = "ItemPipeIgniter")] + #[strum(props(name = "Kit (Pipe Igniter)", desc = "", value = "1366030599"))] + ItemPipeIgniter = 1366030599i32, + #[strum(serialize = "ItemFries")] + #[strum(props(name = "French Fries", desc = "", value = "1371786091"))] + ItemFries = 1371786091i32, + #[strum(serialize = "StructureSleeperVerticalDroid")] + #[strum( + props( + name = "Droid Sleeper Vertical", + desc = "The Droid Sleeper will recharge robot batteries and equiped suit batteries if present. This sleeper variant is only safe for robots. Entering as a non robot character will cause you to take damage.", + value = "1382098999" + ) + )] + StructureSleeperVerticalDroid = 1382098999i32, + #[strum(serialize = "ItemArcWelder")] + #[strum(props(name = "Arc Welder", desc = "", value = "1385062886"))] + ItemArcWelder = 1385062886i32, + #[strum(serialize = "ItemSoyOil")] + #[strum(props(name = "Soy Oil", desc = "", value = "1387403148"))] + ItemSoyOil = 1387403148i32, + #[strum(serialize = "ItemKitRocketAvionics")] + #[strum(props(name = "Kit (Avionics)", desc = "", value = "1396305045"))] + ItemKitRocketAvionics = 1396305045i32, + #[strum(serialize = "ItemMarineBodyArmor")] + #[strum(props(name = "Marine Armor", desc = "", value = "1399098998"))] + ItemMarineBodyArmor = 1399098998i32, + #[strum(serialize = "StructureStairs4x2")] + #[strum(props(name = "Stairs", desc = "", value = "1405018945"))] + StructureStairs4X2 = 1405018945i32, + #[strum(serialize = "ItemKitBattery")] + #[strum(props(name = "Kit (Battery)", desc = "", value = "1406656973"))] + ItemKitBattery = 1406656973i32, + #[strum(serialize = "StructureLargeDirectHeatExchangeGastoLiquid")] + #[strum( + props( + name = "Large Direct Heat Exchanger - Gas + Liquid", + desc = "Direct Heat Exchangers equalize the temperature of the two input networks.", + value = "1412338038" + ) + )] + StructureLargeDirectHeatExchangeGastoLiquid = 1412338038i32, + #[strum(serialize = "AccessCardBrown")] + #[strum(props(name = "Access Card (Brown)", desc = "", value = "1412428165"))] + AccessCardBrown = 1412428165i32, + #[strum(serialize = "StructureCapsuleTankLiquid")] + #[strum(props(name = "Liquid Capsule Tank Small", desc = "", value = "1415396263"))] + StructureCapsuleTankLiquid = 1415396263i32, + #[strum(serialize = "StructureLogicBatchWriter")] + #[strum(props(name = "Batch Writer", desc = "", value = "1415443359"))] + StructureLogicBatchWriter = 1415443359i32, + #[strum(serialize = "StructureCondensationChamber")] + #[strum( + props( + name = "Condensation Chamber", + desc = "A device for safely condensing gasses into liquids. Liquids and Gasses will both exist safely inside the device. The Chamber will pressurise using its in-built pressure regulator to the target set by the setting wheel.\n The secondary gas input on the left is a heat-exchanger input and allows for heat exchange between the secondary input pipe and the internal atmosphere of the Condensation Chamber.\n Paired with Evaporation Chamber Stationeers can exploit the phase change properties of gases to build a DIY air conditioner.", + value = "1420719315" + ) + )] + StructureCondensationChamber = 1420719315i32, + #[strum(serialize = "SeedBag_Pumpkin")] + #[strum( + props( + name = "Pumpkin Seeds", + desc = "Grow a Pumpkin.", + value = "1423199840" + ) + )] + SeedBagPumpkin = 1423199840i32, + #[strum(serialize = "ItemPureIceLiquidNitrous")] + #[strum( + props( + name = "Pure Ice Liquid Nitrous", + desc = "A frozen chunk of pure Liquid Nitrous Oxide", + value = "1428477399" + ) + )] + ItemPureIceLiquidNitrous = 1428477399i32, + #[strum(serialize = "StructureFrame")] + #[strum( + props( + name = "Steel Frame", + desc = "More durable than the Iron Frame, steel frames also have several variations for more complex constructions, such as the Steel Frame (Corner) and Steel Frame (Corner Cut). Like iron frames, they are placed then completed by welding Steel Sheets to the open framework.", + value = "1432512808" + ) + )] + StructureFrame = 1432512808i32, + #[strum(serialize = "StructureWaterBottleFillerBottom")] + #[strum(props(name = "Water Bottle Filler Bottom", desc = "", value = "1433754995"))] + StructureWaterBottleFillerBottom = 1433754995i32, + #[strum(serialize = "StructureLightRoundSmall")] + #[strum( + props( + name = "Light Round (Small)", + desc = "Description coming.", + value = "1436121888" + ) + )] + StructureLightRoundSmall = 1436121888i32, + #[strum(serialize = "ItemRocketMiningDrillHeadHighSpeedMineral")] + #[strum( + props( + name = "Mining-Drill Head (High Speed Mineral)", + desc = "", + value = "1440678625" + ) + )] + ItemRocketMiningDrillHeadHighSpeedMineral = 1440678625i32, + #[strum(serialize = "ItemMKIICrowbar")] + #[strum( + props( + name = "Mk II Crowbar", + desc = "Recurso's entry-level crowbar is useful in a variety of everyday Stationeer settings, from opening Area Power Controls and unpowered Airlocks, to splatting pan-dimensional headcrabs, should the need arise. The MK II is more resistant to temperature and pressure.", + value = "1440775434" + ) + )] + ItemMkiiCrowbar = 1440775434i32, + #[strum(serialize = "StructureHydroponicsStation")] + #[strum(props(name = "Hydroponics Station", desc = "", value = "1441767298"))] + StructureHydroponicsStation = 1441767298i32, + #[strum(serialize = "StructureCryoTubeHorizontal")] + #[strum( + props( + name = "Cryo Tube Horizontal", + desc = "The horizontal variant of the cryo tube. Will heal players and organs as well as revive dead players when provided with an atmosphere of Nitrogen below -150C.", + value = "1443059329" + ) + )] + StructureCryoTubeHorizontal = 1443059329i32, + #[strum(serialize = "StructureInsulatedInLineTankLiquid1x2")] + #[strum( + props(name = "Insulated In-Line Tank Liquid", desc = "", value = "1452100517") + )] + StructureInsulatedInLineTankLiquid1X2 = 1452100517i32, + #[strum(serialize = "ItemKitPassiveLargeRadiatorLiquid")] + #[strum( + props(name = "Kit (Medium Radiator Liquid)", desc = "", value = "1453961898") + )] + ItemKitPassiveLargeRadiatorLiquid = 1453961898i32, + #[strum(serialize = "ItemKitReinforcedWindows")] + #[strum(props(name = "Kit (Reinforced Windows)", desc = "", value = "1459985302"))] + ItemKitReinforcedWindows = 1459985302i32, + #[strum(serialize = "ItemWreckageStructureWeatherStation002")] + #[strum( + props( + name = "Wreckage Structure Weather Station", + desc = "", + value = "1464424921" + ) + )] + ItemWreckageStructureWeatherStation002 = 1464424921i32, + #[strum(serialize = "StructureHydroponicsTray")] + #[strum( + props( + name = "Hydroponics Tray", + desc = "The Agrizero hydroponics tray is the ideal vessel for growing a range of plantlife. It must be supplied with water using a pipe network, and sufficient light to generate photosynthesis. \nIt can be automated using the Harvie.", + value = "1464854517" + ) + )] + StructureHydroponicsTray = 1464854517i32, + #[strum(serialize = "ItemMkIIToolbelt")] + #[strum( + props( + name = "Tool Belt MK II", + desc = "A large, ten-slot tool belt with two extra generic slots for carrying whatever takes your fancy.", + value = "1467558064" + ) + )] + ItemMkIiToolbelt = 1467558064i32, + #[strum(serialize = "StructureOverheadShortLocker")] + #[strum(props(name = "Overhead Locker", desc = "", value = "1468249454"))] + StructureOverheadShortLocker = 1468249454i32, + #[strum(serialize = "ItemMiningBeltMKII")] + #[strum( + props( + name = "Mining Belt MK II", + desc = "A larger and more capacious mining belt, the Mk II is similar to the Mining Belt, but has 13 slots instead of the basic 8, to increase the length of your mining trips. It also has space for two tools. ", + value = "1470787934" + ) + )] + ItemMiningBeltMkii = 1470787934i32, + #[strum(serialize = "StructureTorpedoRack")] + #[strum(props(name = "Torpedo Rack", desc = "", value = "1473807953"))] + StructureTorpedoRack = 1473807953i32, + #[strum(serialize = "StructureWallIron02")] + #[strum(props(name = "Iron Wall (Type 2)", desc = "", value = "1485834215"))] + StructureWallIron02 = 1485834215i32, + #[strum(serialize = "StructureWallLargePanel")] + #[strum(props(name = "Wall (Large Panel)", desc = "", value = "1492930217"))] + StructureWallLargePanel = 1492930217i32, + #[strum(serialize = "ItemKitLogicCircuit")] + #[strum(props(name = "Kit (IC Housing)", desc = "", value = "1512322581"))] + ItemKitLogicCircuit = 1512322581i32, + #[strum(serialize = "ItemSprayCanRed")] + #[strum( + props( + name = "Spray Paint (Red)", + desc = "The king of colors, red is perhaps the defining tone of the universe. Linked to blood, royalty, fire and damnation, it is the chromatic expression of power.", + value = "1514393921" + ) + )] + ItemSprayCanRed = 1514393921i32, + #[strum(serialize = "StructureLightRound")] + #[strum( + props(name = "Light Round", desc = "Description coming.", value = "1514476632") + )] + StructureLightRound = 1514476632i32, + #[strum(serialize = "Fertilizer")] + #[strum( + props( + name = "Fertilizer", + desc = "Fertilizer alters plant growth processes, and is created by the basic composter and the Advanced Composter using organic matter.\nFertilizer's affects depend on its ingredients:\n\n- Food increases PLANT YIELD up to two times\n- Decayed Food increases plant GROWTH SPEED up to two times\n- Biomass increases the NUMBER OF GROWTH CYCLES the fertilizer lasts for\n\nThe effect of these ingredients depends on their respective proportions in the composter when processing is activated. ", + value = "1517856652" + ) + )] + Fertilizer = 1517856652i32, + #[strum(serialize = "StructurePowerUmbilicalMale")] + #[strum( + props( + name = "Umbilical (Power)", + desc = "0.Left\n1.Center\n2.Right", + value = "1529453938" + ) + )] + StructurePowerUmbilicalMale = 1529453938i32, + #[strum(serialize = "ItemRocketMiningDrillHeadDurable")] + #[strum( + props(name = "Mining-Drill Head (Durable)", desc = "", value = "1530764483") + )] + ItemRocketMiningDrillHeadDurable = 1530764483i32, + #[strum(serialize = "DecayedFood")] + #[strum( + props( + name = "Decayed Food", + desc = "When your food decays, it turns into this. ODA scientists have attempted to determine the exact constituents of this substance, but it remains evasive and mysterious. Suffice to say, eating it is a bad idea. Research has determined, however, that The exact speed of decay varies individually by:\n\n- TEMPERATURE - Refrigeration will slow decay, but many foods will be damaged by exposure to extreme low pressure, as well as extreme heat. The optimum temperature is 0 kelvin (-272 C).\n\n- FOOD TYPE - Each food type has its own decay properties. Tomato Soup lasts a lot longer than a Tomato, for instance.\n\n- PRESSURE - Food decays faster when the pressure drops below 1 atmosphere (101kPa). Decay happens exponentially more quickly as the atmosphere approaches a perfect vacuum. There is no effect from higher pressures. \n\n- ATMOSPHERE - Different gases can slow and accelerate the decay process. The process will take account of respective gas ratios in mixed atmospheres in calculating the decay modifier. The following rates apply across all foods:\n\n> Oxygen x 1.3\n> Nitrogen x 0.6\n> Carbon Dioxide x 0.8\n> Volatiles x 1\n> Pollutant x 3\n> Nitrous Oxide x 1.5\n> Steam x 2\n> Vacuum (see PRESSURE above)\n\n", + value = "1531087544" + ) + )] + DecayedFood = 1531087544i32, + #[strum(serialize = "LogicStepSequencer8")] + #[strum( + props( + name = "Logic Step Sequencer", + desc = "The ODA does not approve of soundtracks or other distractions.\nAs such, Stationeers have had to create their own musical accompaniment to the demanding labor of building and maintaining off-world infrastructure.\nCentral to this pastime is the step sequencer, which allows Stationeers to sequence short musical patterns or loops. \n\nDIY MUSIC - GETTING STARTED\n\n1: Connect 8 Device Step Units to your step sequencer via the data port on the left hand side.\n\n2: Label each step unit, then assign step units 1 through 8 on the step sequencer using the screwdriver.\n\n3: Select the output speaker (eg Passive Speaker) where the sequencer will play the sounds. This needs to be connected to the logic network on the right hand side of the sequencer.\n\n4: Place a Stop Watch and use a Logic Reader and Logic Writer to write the time to the time variable on the sequencer.\n\n5: Set the BPM on the sequencer using a Dial and a Logic Writer to write to the sequencer's BPM variable. A higher bpm will play the sequence faster. \n\n6: Insert a sound cartridge of your choosing and select which variant of sound you wish to play by pushing the arrow buttons located above and below the sound cartridge slot.\n\n7: Choose the pitch of the sounds to play by setting the dial on each of your 8 step units to the desired note. With drums, each note is a different drum sounds. You can trial your sounds by pushing the activate button on each step unit (with the sequencer inactive).\n\n8: Get freaky with the Low frequency oscillator.\n\n9: Finally, activate the sequencer, Vibeoneer.", + value = "1531272458" + ) + )] + LogicStepSequencer8 = 1531272458i32, + #[strum(serialize = "ItemKitDynamicGasTankAdvanced")] + #[strum( + props(name = "Kit (Portable Gas Tank Mk II)", desc = "", value = "1533501495") + )] + ItemKitDynamicGasTankAdvanced = 1533501495i32, + #[strum(serialize = "ItemWireCutters")] + #[strum( + props( + name = "Wire Cutters", + desc = "Wirecutters allow you to deconstruct various structures, as well as cross-lay cables when held in your non-active hand, and defuse explosives as needed. Wirecutters are stored in the Tool Belt, along with other essential tools.", + value = "1535854074" + ) + )] + ItemWireCutters = 1535854074i32, + #[strum(serialize = "StructureLadderEnd")] + #[strum(props(name = "Ladder End", desc = "", value = "1541734993"))] + StructureLadderEnd = 1541734993i32, + #[strum(serialize = "ItemGrenade")] + #[strum( + props( + name = "Hand Grenade", + desc = "Invented by the Romans, who threw Greek Fire at their enemies in ceramic jars, the word 'grenade' is derived from the Old French word for 'pomegranate', as many modern grenades resemble this round, many-seeded fruit. Also like many grenades before it, this one goes boom and breaks stuff.", + value = "1544275894" + ) + )] + ItemGrenade = 1544275894i32, + #[strum(serialize = "StructureCableJunction5Burnt")] + #[strum( + props(name = "Burnt Cable (5-Way Junction)", desc = "", value = "1545286256") + )] + StructureCableJunction5Burnt = 1545286256i32, + #[strum(serialize = "StructurePlatformLadderOpen")] + #[strum(props(name = "Ladder Platform", desc = "", value = "1559586682"))] + StructurePlatformLadderOpen = 1559586682i32, + #[strum(serialize = "StructureTraderWaypoint")] + #[strum(props(name = "Trader Waypoint", desc = "", value = "1570931620"))] + StructureTraderWaypoint = 1570931620i32, + #[strum(serialize = "ItemKitLiquidUmbilical")] + #[strum(props(name = "Kit (Liquid Umbilical)", desc = "", value = "1571996765"))] + ItemKitLiquidUmbilical = 1571996765i32, + #[strum(serialize = "StructureCompositeWall03")] + #[strum(props(name = "Composite Wall (Type 3)", desc = "", value = "1574321230"))] + StructureCompositeWall03 = 1574321230i32, + #[strum(serialize = "ItemKitRespawnPointWallMounted")] + #[strum(props(name = "Kit (Respawn)", desc = "", value = "1574688481"))] + ItemKitRespawnPointWallMounted = 1574688481i32, + #[strum(serialize = "ItemHastelloyIngot")] + #[strum(props(name = "Ingot (Hastelloy)", desc = "", value = "1579842814"))] + ItemHastelloyIngot = 1579842814i32, + #[strum(serialize = "StructurePipeOneWayValve")] + #[strum( + props( + name = "One Way Valve (Gas)", + desc = "The one way valve moves gas in one direction only: from input side to output side. It only permits flow if the input pressure is higher than output pressure.\n", + value = "1580412404" + ) + )] + StructurePipeOneWayValve = 1580412404i32, + #[strum(serialize = "StructureStackerReverse")] + #[strum( + props( + name = "Stacker", + desc = "A stacker is an important part of any automated chute network. The Xigo ProKompile can be set manually or via logic, to make sure items passing through the stacker are maximized for your storage needs. The reversed stacker has power and data on the opposite side.\nThe ProKompile can stack a wide variety of things such as ingots, as well as splitting stacks into appropriate sizes as needed.", + value = "1585641623" + ) + )] + StructureStackerReverse = 1585641623i32, + #[strum(serialize = "ItemKitEvaporationChamber")] + #[strum(props(name = "Kit (Phase Change Device)", desc = "", value = "1587787610"))] + ItemKitEvaporationChamber = 1587787610i32, + #[strum(serialize = "ItemGlassSheets")] + #[strum( + props( + name = "Glass Sheets", + desc = "A fundamental construction component, glass sheets are created from Silicon. Fabricated on the Autolathe, they are used to make {THING:StructureSolarPanel;Solar Panels}, and many other structures.", + value = "1588896491" + ) + )] + ItemGlassSheets = 1588896491i32, + #[strum(serialize = "StructureWallPaddedArch")] + #[strum(props(name = "Wall (Padded Arch)", desc = "", value = "1590330637"))] + StructureWallPaddedArch = 1590330637i32, + #[strum(serialize = "StructureLightRoundAngled")] + #[strum( + props( + name = "Light Round (Angled)", + desc = "Description coming.", + value = "1592905386" + ) + )] + StructureLightRoundAngled = 1592905386i32, + #[strum(serialize = "StructureWallGeometryT")] + #[strum(props(name = "Wall (Geometry T)", desc = "", value = "1602758612"))] + StructureWallGeometryT = 1602758612i32, + #[strum(serialize = "ItemKitElectricUmbilical")] + #[strum(props(name = "Kit (Power Umbilical)", desc = "", value = "1603046970"))] + ItemKitElectricUmbilical = 1603046970i32, + #[strum(serialize = "Lander")] + #[strum(props(name = "Lander", desc = "", value = "1605130615"))] + Lander = 1605130615i32, + #[strum(serialize = "CartridgeNetworkAnalyser")] + #[strum( + props( + name = "Network Analyzer", + desc = "A minor masterpiece of micro-electronic engineering, the network analyzer displays the current, voltage and wattage of a cable network, as well as any devices connected to it. Based on a widely-copied Sinotai design, it's used in conjunction with the OreCore Handheld Tablet.", + value = "1606989119" + ) + )] + CartridgeNetworkAnalyser = 1606989119i32, + #[strum(serialize = "CircuitboardAirControl")] + #[strum( + props( + name = "Air Control", + desc = "When added to a Console, air control circuit boards allow you to program an Active Vent. As with small dogs and 83% of people, air control circuits have only three modes: Pressure, Draft and Offline. Pressure mode maintains a 100kPa atmosphere, switching the active vent between inward and outward flow until target pressure is achieved. Draft mode allows you to pair active vents to circulate air. Offline mode deactivates the vent. ", + value = "1618019559" + ) + )] + CircuitboardAirControl = 1618019559i32, + #[strum(serialize = "StructureUprightWindTurbine")] + #[strum( + props( + name = "Upright Wind Turbine", + desc = "Norsec's basic wind turbine is an easily fabricated, rapidly deployed design that is strong enough to withstand the worst that environments can throw at it. \nWhile the wind turbine is optimized to produce power even on low atmosphere worlds (up to 200W), it performs best in denser environments. Output varies with wind speed, and during storms, may increase dramatically (up to 800W), so be careful to design your power networks with that in mind.", + value = "1622183451" + ) + )] + StructureUprightWindTurbine = 1622183451i32, + #[strum(serialize = "StructureFairingTypeA1")] + #[strum(props(name = "Fairing (Type A1)", desc = "", value = "1622567418"))] + StructureFairingTypeA1 = 1622567418i32, + #[strum(serialize = "ItemKitWallArch")] + #[strum(props(name = "Kit (Arched Wall)", desc = "", value = "1625214531"))] + ItemKitWallArch = 1625214531i32, + #[strum(serialize = "StructurePipeLiquidCrossJunction3")] + #[strum( + props( + name = "Liquid Pipe (3-Way Junction)", + desc = "You can upgrade this pipe to an using an Kit (Insulated Liquid Pipe) and a Wrench.", + value = "1628087508" + ) + )] + StructurePipeLiquidCrossJunction3 = 1628087508i32, + #[strum(serialize = "StructureGasTankStorage")] + #[strum( + props( + name = "Gas Tank Storage", + desc = "When connected to a pipe network, the tank storage unit allows you to refill a Canister, as well as read various atmospheric data from the Gas Canister.", + value = "1632165346" + ) + )] + StructureGasTankStorage = 1632165346i32, + #[strum(serialize = "CircuitboardHashDisplay")] + #[strum(props(name = "Hash Display", desc = "", value = "1633074601"))] + CircuitboardHashDisplay = 1633074601i32, + #[strum(serialize = "CircuitboardAdvAirlockControl")] + #[strum(props(name = "Advanced Airlock", desc = "", value = "1633663176"))] + CircuitboardAdvAirlockControl = 1633663176i32, + #[strum(serialize = "ItemGasFilterCarbonDioxide")] + #[strum( + props( + name = "Filter (Carbon Dioxide)", + desc = "Given humanity's obsession with exhaling Carbon Dioxide, all Stationeers are issued two basic Sinotai Carbon Dioxide Gas Filter as part of their standard deployment kit (SDK). These filters allow passage of Carbon Dioxide into the suit's waste Canister, but are also critical components of the Portable Air Scrubber and the Filtration. The Medium Filter (Carbon Dioxide) and Heavy Filter (Carbon Dioxide) are also available.", + value = "1635000764" + ) + )] + ItemGasFilterCarbonDioxide = 1635000764i32, + #[strum(serialize = "StructureWallFlat")] + #[strum(props(name = "Wall (Flat)", desc = "", value = "1635864154"))] + StructureWallFlat = 1635864154i32, + #[strum(serialize = "StructureChairBoothMiddle")] + #[strum(props(name = "Chair (Booth Middle)", desc = "", value = "1640720378"))] + StructureChairBoothMiddle = 1640720378i32, + #[strum(serialize = "StructureWallArchArrow")] + #[strum(props(name = "Wall (Arch Arrow)", desc = "", value = "1649708822"))] + StructureWallArchArrow = 1649708822i32, + #[strum(serialize = "StructureInsulatedPipeLiquidCrossJunction5")] + #[strum( + props( + name = "Insulated Liquid Pipe (5-Way Junction)", + desc = "Liquid piping with very low temperature loss or gain.", + value = "1654694384" + ) + )] + StructureInsulatedPipeLiquidCrossJunction5 = 1654694384i32, + #[strum(serialize = "StructureLogicMath")] + #[strum( + props( + name = "Logic Math", + desc = "0.Add\n1.Subtract\n2.Multiply\n3.Divide\n4.Mod\n5.Atan2\n6.Pow\n7.Log", + value = "1657691323" + ) + )] + StructureLogicMath = 1657691323i32, + #[strum(serialize = "ItemKitFridgeSmall")] + #[strum(props(name = "Kit (Fridge Small)", desc = "", value = "1661226524"))] + ItemKitFridgeSmall = 1661226524i32, + #[strum(serialize = "ItemScanner")] + #[strum( + props( + name = "Handheld Scanner", + desc = "A mysterious piece of technology, rumored to have Zrillian origins.", + value = "1661270830" + ) + )] + ItemScanner = 1661270830i32, + #[strum(serialize = "ItemEmergencyToolBelt")] + #[strum(props(name = "Emergency Tool Belt", desc = "", value = "1661941301"))] + ItemEmergencyToolBelt = 1661941301i32, + #[strum(serialize = "StructureEmergencyButton")] + #[strum( + props( + name = "Important Button", + desc = "Description coming.", + value = "1668452680" + ) + )] + StructureEmergencyButton = 1668452680i32, + #[strum(serialize = "ItemKitAutoMinerSmall")] + #[strum(props(name = "Kit (Autominer Small)", desc = "", value = "1668815415"))] + ItemKitAutoMinerSmall = 1668815415i32, + #[strum(serialize = "StructureChairBacklessSingle")] + #[strum(props(name = "Chair (Backless Single)", desc = "", value = "1672275150"))] + StructureChairBacklessSingle = 1672275150i32, + #[strum(serialize = "ItemPureIceLiquidNitrogen")] + #[strum( + props( + name = "Pure Ice Liquid Nitrogen", + desc = "A frozen chunk of pure Liquid Nitrogen", + value = "1674576569" + ) + )] + ItemPureIceLiquidNitrogen = 1674576569i32, + #[strum(serialize = "ItemEvaSuit")] + #[strum( + props( + name = "Eva Suit", + desc = "The EVA suit is the basic suit Stationeers need to survive in the inhospitable environment of space. For more information on EVA suits, consult the EVA suit guide.", + value = "1677018918" + ) + )] + ItemEvaSuit = 1677018918i32, + #[strum(serialize = "StructurePictureFrameThinPortraitSmall")] + #[strum( + props( + name = "Picture Frame Thin Portrait Small", + desc = "", + value = "1684488658" + ) + )] + StructurePictureFrameThinPortraitSmall = 1684488658i32, + #[strum(serialize = "StructureLiquidDrain")] + #[strum( + props( + name = "Active Liquid Outlet", + desc = "When connected to power and activated, it pumps liquid from a liquid network into the world.", + value = "1687692899" + ) + )] + StructureLiquidDrain = 1687692899i32, + #[strum(serialize = "StructureLiquidTankStorage")] + #[strum( + props( + name = "Liquid Tank Storage", + desc = "When connected to a liquid pipe network, the tank storage unit allows you to refill a Liquid Canister, as well as read various atmospheric data from the Gas Canister. It will not accept gas canisters.", + value = "1691898022" + ) + )] + StructureLiquidTankStorage = 1691898022i32, + #[strum(serialize = "StructurePipeRadiator")] + #[strum( + props( + name = "Pipe Convection Radiator", + desc = "A simple heat exchanger, pipe radiators can be placed on pipes to shed or gain heat, depending on the temperature of the surrounding atmosphere. If the atmosphere is hotter, heat will be added the gas within the pipe network, and visa versa if colder. In a vacuum, heat will be radiated. \nThe speed of heat gain or loss will depend on the gas in question. Adding multiple radiators will speed up heat transfer.", + value = "1696603168" + ) + )] + StructurePipeRadiator = 1696603168i32, + #[strum(serialize = "StructureSolarPanelFlatReinforced")] + #[strum( + props( + name = "Solar Panel (Heavy Flat)", + desc = "This solar panel is resistant to storm damage.", + value = "1697196770" + ) + )] + StructureSolarPanelFlatReinforced = 1697196770i32, + #[strum(serialize = "ToolPrinterMod")] + #[strum( + props( + name = "Tool Printer Mod", + desc = "Apply to an Tool Manufactory with a Welding Torch or Arc Welder to upgrade for increased processing speed and more recipe options.", + value = "1700018136" + ) + )] + ToolPrinterMod = 1700018136i32, + #[strum(serialize = "StructureCableJunctionH5Burnt")] + #[strum( + props( + name = "Burnt Heavy Cable (5-Way Junction)", + desc = "", + value = "1701593300" + ) + )] + StructureCableJunctionH5Burnt = 1701593300i32, + #[strum(serialize = "ItemKitFlagODA")] + #[strum(props(name = "Kit (ODA Flag)", desc = "", value = "1701764190"))] + ItemKitFlagOda = 1701764190i32, + #[strum(serialize = "StructureWallSmallPanelsTwoTone")] + #[strum( + props(name = "Wall (Small Panels Two Tone)", desc = "", value = "1709994581") + )] + StructureWallSmallPanelsTwoTone = 1709994581i32, + #[strum(serialize = "ItemFlowerYellow")] + #[strum(props(name = "Flower (Yellow)", desc = "", value = "1712822019"))] + ItemFlowerYellow = 1712822019i32, + #[strum(serialize = "StructureInsulatedPipeLiquidCorner")] + #[strum( + props( + name = "Insulated Liquid Pipe (Corner)", + desc = "Liquid piping with very low temperature loss or gain.", + value = "1713710802" + ) + )] + StructureInsulatedPipeLiquidCorner = 1713710802i32, + #[strum(serialize = "ItemCookedCondensedMilk")] + #[strum( + props( + name = "Condensed Milk", + desc = "A high-nutrient cooked food, which can be canned.", + value = "1715917521" + ) + )] + ItemCookedCondensedMilk = 1715917521i32, + #[strum(serialize = "ItemGasSensor")] + #[strum(props(name = "Kit (Gas Sensor)", desc = "", value = "1717593480"))] + ItemGasSensor = 1717593480i32, + #[strum(serialize = "ItemAdvancedTablet")] + #[strum( + props( + name = "Advanced Tablet", + desc = "The advanced Xigo Padi 2 tablet is an improved version of the basic Handheld Tablet, boasting two cartridge slots. The Padi 2 accepts Atmos Analyzer, Tracker, Medical Analyzer, Ore Scanner, eReader, and various other cartridges.\n\t \n\t With a Integrated Circuit (IC10) in the Programmable Chip, you can access variable slots on the carrying human using the device numbers (d0, d1, etc...), so long as the item can be access via logic, such as the Hardsuit.Connects to Logic Transmitter", + value = "1722785341" + ) + )] + ItemAdvancedTablet = 1722785341i32, + #[strum(serialize = "ItemCoalOre")] + #[strum( + props( + name = "Ore (Coal)", + desc = "Humanity wouldn't have got to space without humble, combustible coal. Burn it in a , smelt it in the Furnace to create alloys, or use it in the Reagent Processor to make Spray Paint (Black).", + value = "1724793494" + ) + )] + ItemCoalOre = 1724793494i32, + #[strum(serialize = "EntityChick")] + #[strum( + props( + name = "Entity Chick", + desc = "Once a chick is hatched, it gets hungry. It will eat soybeans, corn, and wheat, and lay eggs. Some will be fertilized, producing further chickens. Some will not.", + value = "1730165908" + ) + )] + EntityChick = 1730165908i32, + #[strum(serialize = "StructureLiquidUmbilicalFemale")] + #[strum(props(name = "Umbilical Socket (Liquid)", desc = "", value = "1734723642"))] + StructureLiquidUmbilicalFemale = 1734723642i32, + #[strum(serialize = "StructureAirlockGate")] + #[strum( + props( + name = "Small Hangar Door", + desc = "1 x 1 modular door piece for building hangar doors.", + value = "1736080881" + ) + )] + StructureAirlockGate = 1736080881i32, + #[strum(serialize = "CartridgeOreScannerColor")] + #[strum( + props( + name = "Ore Scanner (Color)", + desc = "When inserted into a Handheld Tablet the scanner will display minerals hidden underground in different colors on the tablet.", + value = "1738236580" + ) + )] + CartridgeOreScannerColor = 1738236580i32, + #[strum(serialize = "StructureBench4")] + #[strum(props(name = "Bench (Workbench Style)", desc = "", value = "1750375230"))] + StructureBench4 = 1750375230i32, + #[strum(serialize = "StructureCompositeCladdingSphericalCorner")] + #[strum( + props( + name = "Composite Cladding (Spherical Corner)", + desc = "", + value = "1751355139" + ) + )] + StructureCompositeCladdingSphericalCorner = 1751355139i32, + #[strum(serialize = "ItemKitRocketScanner")] + #[strum(props(name = "Kit (Rocket Scanner)", desc = "", value = "1753647154"))] + ItemKitRocketScanner = 1753647154i32, + #[strum(serialize = "ItemAreaPowerControl")] + #[strum( + props( + name = "Kit (Power Controller)", + desc = "This kit places a Area Power Control (APC) on any support structure. The APC kit has two options, selecting which direction you would like the APC power to flow.", + value = "1757673317" + ) + )] + ItemAreaPowerControl = 1757673317i32, + #[strum(serialize = "ItemIronOre")] + #[strum( + props( + name = "Ore (Iron)", + desc = "Abundant throughout the Solar System, iron is the ore most commonly used by Stationeers constructing offworld bases. It can be smelted into both Ingot (Iron)s and Ingot (Steel)s.", + value = "1758427767" + ) + )] + ItemIronOre = 1758427767i32, + #[strum(serialize = "DeviceStepUnit")] + #[strum( + props( + name = "Device Step Unit", + desc = "0.C-2\n1.C#-2\n2.D-2\n3.D#-2\n4.E-2\n5.F-2\n6.F#-2\n7.G-2\n8.G#-2\n9.A-2\n10.A#-2\n11.B-2\n12.C-1\n13.C#-1\n14.D-1\n15.D#-1\n16.E-1\n17.F-1\n18.F#-1\n19.G-1\n20.G#-1\n21.A-1\n22.A#-1\n23.B-1\n24.C0\n25.C#0\n26.D0\n27.D#0\n28.E0\n29.F0\n30.F#0\n31.G0\n32.G#0\n33.A0\n34.A#0\n35.B0\n36.C1\n37.C#1\n38.D1\n39.D#1\n40.E1\n41.F1\n42.F#1\n43.G1\n44.G#1\n45.A1\n46.A#1\n47.B1\n48.C2\n49.C#2\n50.D2\n51.D#2\n52.E2\n53.F2\n54.F#2\n55.G2\n56.G#2\n57.A2\n58.A#2\n59.B2\n60.C3\n61.C#3\n62.D3\n63.D#3\n64.E3\n65.F3\n66.F#3\n67.G3\n68.G#3\n69.A3\n70.A#3\n71.B3\n72.C4\n73.C#4\n74.D4\n75.D#4\n76.E4\n77.F4\n78.F#4\n79.G4\n80.G#4\n81.A4\n82.A#4\n83.B4\n84.C5\n85.C#5\n86.D5\n87.D#5\n88.E5\n89.F5\n90.F#5\n91.G5 \n92.G#5\n93.A5\n94.A#5\n95.B5\n96.C6\n97.C#6\n98.D6\n99.D#6\n100.E6\n101.F6\n102.F#6\n103.G6\n104.G#6\n105.A6\n106.A#6\n107.B6\n108.C7\n109.C#7\n110.D7\n111.D#7\n112.E7\n113.F7\n114.F#7\n115.G7\n116.G#7\n117.A7\n118.A#7\n119.B7\n120.C8\n121.C#8\n122.D8\n123.D#8\n124.E8\n125.F8\n126.F#8\n127.G8", + value = "1762696475" + ) + )] + DeviceStepUnit = 1762696475i32, + #[strum(serialize = "StructureWallPaddedThinNoBorderCorner")] + #[strum( + props( + name = "Wall (Padded Thin No Border Corner)", + desc = "", + value = "1769527556" + ) + )] + StructureWallPaddedThinNoBorderCorner = 1769527556i32, + #[strum(serialize = "ItemKitWindowShutter")] + #[strum(props(name = "Kit (Window Shutter)", desc = "", value = "1779979754"))] + ItemKitWindowShutter = 1779979754i32, + #[strum(serialize = "StructureRocketManufactory")] + #[strum(props(name = "Rocket Manufactory", desc = "", value = "1781051034"))] + StructureRocketManufactory = 1781051034i32, + #[strum(serialize = "SeedBag_Soybean")] + #[strum( + props( + name = "Soybean Seeds", + desc = "Grow some Soybean.", + value = "1783004244" + ) + )] + SeedBagSoybean = 1783004244i32, + #[strum(serialize = "ItemEmergencyEvaSuit")] + #[strum(props(name = "Emergency Eva Suit", desc = "", value = "1791306431"))] + ItemEmergencyEvaSuit = 1791306431i32, + #[strum(serialize = "StructureWallArchCornerRound")] + #[strum(props(name = "Wall (Arch Corner Round)", desc = "", value = "1794588890"))] + StructureWallArchCornerRound = 1794588890i32, + #[strum(serialize = "ItemCoffeeMug")] + #[strum(props(name = "Coffee Mug", desc = "", value = "1800622698"))] + ItemCoffeeMug = 1800622698i32, + #[strum(serialize = "StructureAngledBench")] + #[strum(props(name = "Bench (Angled)", desc = "", value = "1811979158"))] + StructureAngledBench = 1811979158i32, + #[strum(serialize = "StructurePassiveLiquidDrain")] + #[strum( + props( + name = "Passive Liquid Drain", + desc = "Moves liquids from a pipe network to the world atmosphere.", + value = "1812364811" + ) + )] + StructurePassiveLiquidDrain = 1812364811i32, + #[strum(serialize = "ItemKitLandingPadAtmos")] + #[strum( + props(name = "Kit (Landing Pad Atmospherics)", desc = "", value = "1817007843") + )] + ItemKitLandingPadAtmos = 1817007843i32, + #[strum(serialize = "ItemRTGSurvival")] + #[strum( + props( + name = "Kit (RTG)", + desc = "This kit creates a Kit (RTG).", + value = "1817645803" + ) + )] + ItemRtgSurvival = 1817645803i32, + #[strum(serialize = "StructureInsulatedInLineTankGas1x1")] + #[strum( + props(name = "Insulated In-Line Tank Small Gas", desc = "", value = "1818267386") + )] + StructureInsulatedInLineTankGas1X1 = 1818267386i32, + #[strum(serialize = "ItemPlantThermogenic_Genepool2")] + #[strum( + props( + name = "Hades Flower (Beta strain)", + desc = "The Agrizero's-created Hades Flower is the result of as dubious experiment to combine the allure of tropical plants with the comfort and homeliness of a heat pump. The plant breathes a 1:3 mix of Volatiles and Oxygen, and exhales heated Pollutant. The beta strain is notably more efficient than the earlier, more experimental alpha variant.", + value = "1819167057" + ) + )] + ItemPlantThermogenicGenepool2 = 1819167057i32, + #[strum(serialize = "StructureLogicSelect")] + #[strum( + props( + name = "Logic Select", + desc = "0.Equals\n1.Greater\n2.Less\n3.NotEquals", + value = "1822736084" + ) + )] + StructureLogicSelect = 1822736084i32, + #[strum(serialize = "ItemGasFilterNitrousOxideM")] + #[strum( + props(name = "Medium Filter (Nitrous Oxide)", desc = "", value = "1824284061") + )] + ItemGasFilterNitrousOxideM = 1824284061i32, + #[strum(serialize = "StructureSmallDirectHeatExchangeLiquidtoGas")] + #[strum( + props( + name = "Small Direct Heat Exchanger - Liquid + Gas ", + desc = "Direct Heat Exchangers equalize the temperature of the two input networks.", + value = "1825212016" + ) + )] + StructureSmallDirectHeatExchangeLiquidtoGas = 1825212016i32, + #[strum(serialize = "ItemKitRoverFrame")] + #[strum(props(name = "Kit (Rover Frame)", desc = "", value = "1827215803"))] + ItemKitRoverFrame = 1827215803i32, + #[strum(serialize = "ItemNickelOre")] + #[strum( + props( + name = "Ore (Nickel)", + desc = "Nickel is a chemical element with the symbol \"Ni\" and is a rare metal commonly used as a plating to prevent corrosion. Sought after by many Stationeers, Nickel is also commonly used to create several alloys.", + value = "1830218956" + ) + )] + ItemNickelOre = 1830218956i32, + #[strum(serialize = "StructurePictureFrameThinMountPortraitSmall")] + #[strum( + props( + name = "Picture Frame Thin Portrait Small", + desc = "", + value = "1835796040" + ) + )] + StructurePictureFrameThinMountPortraitSmall = 1835796040i32, + #[strum(serialize = "H2Combustor")] + #[strum( + props( + name = "H2 Combustor", + desc = "Adapted slightly from its original Recurso design, the Volatiles Combustor does exactly what its name suggests - it burns a mixture of volatiles and Oxygen to create water. Extremely useful in hot or arid environments, users need to be aware that the combustor outputs considerable waste heat. The device is also less than perfectly efficient, resulting in the autoignition of volatiles in the chamber, and the production of waste gases which must be dealt with.", + value = "1840108251" + ) + )] + H2Combustor = 1840108251i32, + #[strum(serialize = "Flag_ODA_10m")] + #[strum(props(name = "Flag (ODA 10m)", desc = "", value = "1845441951"))] + FlagOda10M = 1845441951i32, + #[strum(serialize = "StructureLightLongAngled")] + #[strum(props(name = "Wall Light (Long Angled)", desc = "", value = "1847265835"))] + StructureLightLongAngled = 1847265835i32, + #[strum(serialize = "StructurePipeLiquidCrossJunction")] + #[strum( + props( + name = "Liquid Pipe (Cross Junction)", + desc = "You can upgrade this pipe to an Insulated Liquid Pipe (Cross Junction) using an Kit (Insulated Liquid Pipe) and a Wrench.", + value = "1848735691" + ) + )] + StructurePipeLiquidCrossJunction = 1848735691i32, + #[strum(serialize = "ItemCookedPumpkin")] + #[strum( + props( + name = "Cooked Pumpkin", + desc = "A high-nutrient cooked food, which can be canned.", + value = "1849281546" + ) + )] + ItemCookedPumpkin = 1849281546i32, + #[strum(serialize = "StructureLiquidValve")] + #[strum(props(name = "Liquid Valve", desc = "", value = "1849974453"))] + StructureLiquidValve = 1849974453i32, + #[strum(serialize = "ApplianceTabletDock")] + #[strum(props(name = "Tablet Dock", desc = "", value = "1853941363"))] + ApplianceTabletDock = 1853941363i32, + #[strum(serialize = "StructureCableJunction6HBurnt")] + #[strum( + props(name = "Burnt Cable (6-Way Junction)", desc = "", value = "1854404029") + )] + StructureCableJunction6HBurnt = 1854404029i32, + #[strum(serialize = "ItemMKIIWrench")] + #[strum( + props( + name = "Mk II Wrench", + desc = "One of humanity's enduring contributions to the cosmos, the wrench represents the essence of our species. A simple, effective and spiritually barren tool, use it to build and deconstruct a variety of structures The MK II is more resistant to temperature and pressure.", + value = "1862001680" + ) + )] + ItemMkiiWrench = 1862001680i32, + #[strum(serialize = "ItemAdhesiveInsulation")] + #[strum(props(name = "Adhesive Insulation", desc = "", value = "1871048978"))] + ItemAdhesiveInsulation = 1871048978i32, + #[strum(serialize = "ItemGasFilterCarbonDioxideL")] + #[strum( + props(name = "Heavy Filter (Carbon Dioxide)", desc = "", value = "1876847024") + )] + ItemGasFilterCarbonDioxideL = 1876847024i32, + #[strum(serialize = "ItemWallHeater")] + #[strum( + props( + name = "Kit (Wall Heater)", + desc = "This kit creates a Kit (Wall Heater).", + value = "1880134612" + ) + )] + ItemWallHeater = 1880134612i32, + #[strum(serialize = "StructureNitrolyzer")] + #[strum( + props( + name = "Nitrolyzer", + desc = "This device is used to create Nitrous Oxide from Oxygen, Nitrogen, and a large amount of energy. The process does not completely transform all the available gas at once, so the output is a mix of all three gasses, which may need further processing. More NOS will be created, if the gas inside the machine is close to a 1/1 ratio of Oxygen to Nitrogen. The second gas input line in optional, and not required if the gas is pre mixed.", + value = "1898243702" + ) + )] + StructureNitrolyzer = 1898243702i32, + #[strum(serialize = "StructureLargeSatelliteDish")] + #[strum( + props( + name = "Large Satellite Dish", + desc = "This large communications unit can be used to communicate with nearby trade vessels.\n\n When connected to a Computer containing a Communications Motherboard motherboard, a Landingpad Center, and a Vending Machine, this allows Stationeers to contact traders. Adjust its horizontal and vertical attributes either directly or through logic.", + value = "1913391845" + ) + )] + StructureLargeSatelliteDish = 1913391845i32, + #[strum(serialize = "ItemGasFilterPollutants")] + #[strum( + props( + name = "Filter (Pollutant)", + desc = "Filters are used to capture various gases, such as waste emissions from a Furnace or Arc Furnace. Adding Sinotai-designed Pollutant filters to a Kit (Portable Scrubber) allows you to isolate this gas, then add it to a pipe network and employ its excellent coolant properties in a Wall Cooler. Try not to inhale.", + value = "1915566057" + ) + )] + ItemGasFilterPollutants = 1915566057i32, + #[strum(serialize = "ItemSprayCanKhaki")] + #[strum( + props( + name = "Spray Paint (Khaki)", + desc = "Not so much a single color, as a category of boredom, khaki is the pigmentation equivalent of a mild depressive episode.", + value = "1918456047" + ) + )] + ItemSprayCanKhaki = 1918456047i32, + #[strum(serialize = "ItemKitPumpedLiquidEngine")] + #[strum(props(name = "Kit (Pumped Liquid Engine)", desc = "", value = "1921918951"))] + ItemKitPumpedLiquidEngine = 1921918951i32, + #[strum(serialize = "StructurePowerUmbilicalFemaleSide")] + #[strum( + props(name = "Umbilical Socket Angle (Power)", desc = "", value = "1922506192") + )] + StructurePowerUmbilicalFemaleSide = 1922506192i32, + #[strum(serialize = "ItemSoybean")] + #[strum( + props( + name = "Soybean", + desc = " Soybeans grow at a moderate rate, but require atmospheric Nitrogen to grow. Its main use is to create Soy Oil", + value = "1924673028" + ) + )] + ItemSoybean = 1924673028i32, + #[strum(serialize = "StructureInsulatedPipeLiquidCrossJunction")] + #[strum( + props( + name = "Insulated Liquid Pipe (3-Way Junction)", + desc = "Liquid piping with very low temperature loss or gain.", + value = "1926651727" + ) + )] + StructureInsulatedPipeLiquidCrossJunction = 1926651727i32, + #[strum(serialize = "ItemWreckageTurbineGenerator3")] + #[strum(props(name = "Wreckage Turbine Generator", desc = "", value = "1927790321"))] + ItemWreckageTurbineGenerator3 = 1927790321i32, + #[strum(serialize = "StructurePassthroughHeatExchangerGasToLiquid")] + #[strum( + props( + name = "CounterFlow Heat Exchanger - Gas + Liquid", + desc = "Exchange heat from one pipe network to another. By drawing down the pressure of the outputs with a pump or regulator and regulating input pressures, the temperatures of two counterflowing networks can be effectively exchanged.\n Balancing the throughput of both inputs is key to creating a good exhange of temperatures.", + value = "1928991265" + ) + )] + StructurePassthroughHeatExchangerGasToLiquid = 1928991265i32, + #[strum(serialize = "ItemPotato")] + #[strum( + props( + name = "Potato", + desc = " Potatoes are a simple, fast growing crop that can keep Stationeers alive in emergencies.", + value = "1929046963" + ) + )] + ItemPotato = 1929046963i32, + #[strum(serialize = "StructureCableCornerHBurnt")] + #[strum(props(name = "Burnt Cable (Corner)", desc = "", value = "1931412811"))] + StructureCableCornerHBurnt = 1931412811i32, + #[strum(serialize = "KitSDBSilo")] + #[strum( + props( + name = "Kit (SDB Silo)", + desc = "This kit creates a SDB Silo.", + value = "1932952652" + ) + )] + KitSdbSilo = 1932952652i32, + #[strum(serialize = "ItemKitPipeUtility")] + #[strum(props(name = "Kit (Pipe Utility Gas)", desc = "", value = "1934508338"))] + ItemKitPipeUtility = 1934508338i32, + #[strum(serialize = "ItemKitInteriorDoors")] + #[strum(props(name = "Kit (Interior Doors)", desc = "", value = "1935945891"))] + ItemKitInteriorDoors = 1935945891i32, + #[strum(serialize = "StructureCryoTube")] + #[strum( + props( + name = "CryoTube", + desc = "The exact operation of the Longsleep cryotube remains a commercial secret, with Norsec merely licensing the design. Able to regenerate organ damage when supplied with power and an atmosphere, the Longsleep is a minor miracle of modern medical technology.", + value = "1938254586" + ) + )] + StructureCryoTube = 1938254586i32, + #[strum(serialize = "StructureReinforcedWallPaddedWindow")] + #[strum( + props( + name = "Reinforced Window (Padded)", + desc = "Enjoy vistas of even the most savage, alien landscapes with these heavy duty window frames, which are resistant to pressure differentials up to 1MPa.", + value = "1939061729" + ) + )] + StructureReinforcedWallPaddedWindow = 1939061729i32, + #[strum(serialize = "DynamicCrate")] + #[strum( + props( + name = "Dynamic Crate", + desc = "The humble dynamic crate has become a symbol of Stationeer invention and independence. With twelve slots and handles at either end for ease of carriage, it's both standard issue and critical kit for cadets and Commanders alike.", + value = "1941079206" + ) + )] + DynamicCrate = 1941079206i32, + #[strum(serialize = "StructureLogicGate")] + #[strum( + props( + name = "Logic Gate", + desc = "A logic device that performs a logical operation on one or more binary inputs that produces a single binary output. An input greater than zero is considered true for operations.", + value = "1942143074" + ) + )] + StructureLogicGate = 1942143074i32, + #[strum(serialize = "StructureDiode")] + #[strum(props(name = "LED", desc = "", value = "1944485013"))] + StructureDiode = 1944485013i32, + #[strum(serialize = "StructureChairBacklessDouble")] + #[strum(props(name = "Chair (Backless Double)", desc = "", value = "1944858936"))] + StructureChairBacklessDouble = 1944858936i32, + #[strum(serialize = "StructureBatteryCharger")] + #[strum( + props( + name = "Battery Cell Charger", + desc = "The 5-slot Xigo battery charger fits the Battery Cell (Small), Battery Cell (Large) and Battery Cell (Nuclear), providing up to 500W to any connected cell. Note: the older design means this device has minor power draw (10W) even when not charging.", + value = "1945930022" + ) + )] + StructureBatteryCharger = 1945930022i32, + #[strum(serialize = "StructureFurnace")] + #[strum( + props( + name = "Furnace", + desc = "The Zhurong furnace employs a high-temperature gas mixture of Oxygen and Volatiles to smelt ingots and a range of alloys as raw materials for fabricators.\nA basic gas mixture can be achieved by adding Ice (Oxite) and Ice (Volatiles) in a 1:2 ratio directly to the furnace, but more complex alloys will require careful management of a dedicated gas mixing network. Exact ingredient ratios must be observed. Likewise, smelting ores at insufficient temperatures will produce reagents, which must be recycled.\nIf liquids are present in the furnace, they will gather there until the furnace is connected to a liquid pipe network.", + value = "1947944864" + ) + )] + StructureFurnace = 1947944864i32, + #[strum(serialize = "ItemLightSword")] + #[strum( + props( + name = "Light Sword", + desc = "A charming, if useless, pseudo-weapon. (Creative only.)", + value = "1949076595" + ) + )] + ItemLightSword = 1949076595i32, + #[strum(serialize = "ItemKitLiquidRegulator")] + #[strum(props(name = "Kit (Liquid Regulator)", desc = "", value = "1951126161"))] + ItemKitLiquidRegulator = 1951126161i32, + #[strum(serialize = "StructureCompositeCladdingRoundedCorner")] + #[strum( + props( + name = "Composite Cladding (Rounded Corner)", + desc = "", + value = "1951525046" + ) + )] + StructureCompositeCladdingRoundedCorner = 1951525046i32, + #[strum(serialize = "ItemGasFilterPollutantsL")] + #[strum(props(name = "Heavy Filter (Pollutants)", desc = "", value = "1959564765"))] + ItemGasFilterPollutantsL = 1959564765i32, + #[strum(serialize = "ItemKitSmallSatelliteDish")] + #[strum(props(name = "Kit (Small Satellite Dish)", desc = "", value = "1960952220"))] + ItemKitSmallSatelliteDish = 1960952220i32, + #[strum(serialize = "StructureSolarPanelFlat")] + #[strum( + props( + name = "Solar Panel (Flat)", + desc = "Sinotai basic solar panels generate power from sunlight. They lie flat to the ground, and their efficiency is reduced during storms and when damaged. You can repair these using some trusty Duct Tape.", + value = "1968102968" + ) + )] + StructureSolarPanelFlat = 1968102968i32, + #[strum(serialize = "StructureDrinkingFountain")] + #[strum( + props( + name = "", + desc = "", + value = "1968371847" + ) + )] + StructureDrinkingFountain = 1968371847i32, + #[strum(serialize = "ItemJetpackBasic")] + #[strum( + props( + name = "Jetpack Basic", + desc = "The basic CHAC jetpack isn't 'technically' a jetpack, it's a gas thruster. It can be powered by any gas, so long as the internal pressure of the canister is higher than the ambient external pressure. If the external pressure is greater, the spacepack will not function.\nIndispensable for building, mining and general movement, it has ten storage slots and lets Stationeers fly at 3m/s, compared to the more powerful Hardsuit Jetpack. Adjusting the thrust value alters your rate of acceleration, while activating the stabilizer causes the spacepack to hover when a given height is reached.\nUSE: 'J' to activate; 'space' to fly up; 'left ctrl' to descend; and 'WASD' to move.", + value = "1969189000" + ) + )] + ItemJetpackBasic = 1969189000i32, + #[strum(serialize = "ItemKitEngineMedium")] + #[strum(props(name = "Kit (Engine Medium)", desc = "", value = "1969312177"))] + ItemKitEngineMedium = 1969312177i32, + #[strum(serialize = "StructureWallGeometryCorner")] + #[strum(props(name = "Wall (Geometry Corner)", desc = "", value = "1979212240"))] + StructureWallGeometryCorner = 1979212240i32, + #[strum(serialize = "StructureInteriorDoorPaddedThin")] + #[strum( + props( + name = "Interior Door Padded Thin", + desc = "0.Operate\n1.Logic", + value = "1981698201" + ) + )] + StructureInteriorDoorPaddedThin = 1981698201i32, + #[strum(serialize = "StructureWaterBottleFillerPoweredBottom")] + #[strum(props(name = "Waterbottle Filler", desc = "", value = "1986658780"))] + StructureWaterBottleFillerPoweredBottom = 1986658780i32, + #[strum(serialize = "StructureLiquidTankSmall")] + #[strum(props(name = "Liquid Tank Small", desc = "", value = "1988118157"))] + StructureLiquidTankSmall = 1988118157i32, + #[strum(serialize = "ItemKitComputer")] + #[strum(props(name = "Kit (Computer)", desc = "", value = "1990225489"))] + ItemKitComputer = 1990225489i32, + #[strum(serialize = "StructureWeatherStation")] + #[strum( + props( + name = "Weather Station", + desc = "0.NoStorm\n1.StormIncoming\n2.InStorm", + value = "1997212478" + ) + )] + StructureWeatherStation = 1997212478i32, + #[strum(serialize = "ItemKitLogicInputOutput")] + #[strum(props(name = "Kit (Logic I/O)", desc = "", value = "1997293610"))] + ItemKitLogicInputOutput = 1997293610i32, + #[strum(serialize = "StructureCompositeCladdingPanel")] + #[strum(props(name = "Composite Cladding (Panel)", desc = "", value = "1997436771"))] + StructureCompositeCladdingPanel = 1997436771i32, + #[strum(serialize = "StructureElevatorShaftIndustrial")] + #[strum(props(name = "Elevator Shaft", desc = "", value = "1998354978"))] + StructureElevatorShaftIndustrial = 1998354978i32, + #[strum(serialize = "ReagentColorRed")] + #[strum(props(name = "Color Dye (Red)", desc = "", value = "1998377961"))] + ReagentColorRed = 1998377961i32, + #[strum(serialize = "Flag_ODA_6m")] + #[strum(props(name = "Flag (ODA 6m)", desc = "", value = "1998634960"))] + FlagOda6M = 1998634960i32, + #[strum(serialize = "StructureAreaPowerControl")] + #[strum( + props( + name = "Area Power Control", + desc = "An Area Power Control (APC) has three main functions: \nIts primary purpose is to regulate power flow, ensuring uninterrupted performance from devices and machinery, especially those with a fluctuating draw. \nAPCs also create sub-networks, as no devices on the far side of an APC are visible on the main network.\nLastly, an APC charges batteries, which can provide backup power to the sub-network in the case of an outage. Note that an APC requires a battery to stabilize power draw. It also has two variants, each allowing power to flow in one direction only.", + value = "1999523701" + ) + )] + StructureAreaPowerControl = 1999523701i32, + #[strum(serialize = "ItemGasFilterWaterL")] + #[strum(props(name = "Heavy Filter (Water)", desc = "", value = "2004969680"))] + ItemGasFilterWaterL = 2004969680i32, + #[strum(serialize = "ItemDrill")] + #[strum( + props( + name = "Hand Drill", + desc = "The ExMin Off-whirled Hand Drill has been a companion to Stationeers for decades. Essential for assembling and deconstructing various items and structures, regardless of gravity, pressure or temperature.", + value = "2009673399" + ) + )] + ItemDrill = 2009673399i32, + #[strum(serialize = "ItemFlagSmall")] + #[strum(props(name = "Kit (Small Flag)", desc = "", value = "2011191088"))] + ItemFlagSmall = 2011191088i32, + #[strum(serialize = "ItemCookedRice")] + #[strum( + props( + name = "Cooked Rice", + desc = "A high-nutrient cooked food, which can be canned.", + value = "2013539020" + ) + )] + ItemCookedRice = 2013539020i32, + #[strum(serialize = "StructureRocketScanner")] + #[strum(props(name = "Rocket Scanner", desc = "", value = "2014252591"))] + StructureRocketScanner = 2014252591i32, + #[strum(serialize = "ItemKitPoweredVent")] + #[strum(props(name = "Kit (Powered Vent)", desc = "", value = "2015439334"))] + ItemKitPoweredVent = 2015439334i32, + #[strum(serialize = "CircuitboardSolarControl")] + #[strum( + props( + name = "Solar Control", + desc = "Adding a solar control board to a Console lets you manually control the horizontal and vertical angles of any connected Solar Panel.", + value = "2020180320" + ) + )] + CircuitboardSolarControl = 2020180320i32, + #[strum(serialize = "StructurePipeRadiatorFlatLiquid")] + #[strum( + props( + name = "Pipe Radiator Liquid", + desc = "A liquid pipe mounted radiator optimized for radiating heat in vacuums.", + value = "2024754523" + ) + )] + StructurePipeRadiatorFlatLiquid = 2024754523i32, + #[strum(serialize = "StructureWallPaddingLightFitting")] + #[strum( + props(name = "Wall (Padding Light Fitting)", desc = "", value = "2024882687") + )] + StructureWallPaddingLightFitting = 2024882687i32, + #[strum(serialize = "StructureReinforcedCompositeWindow")] + #[strum( + props( + name = "Reinforced Window (Composite)", + desc = "Enjoy vistas of even the most savage, alien landscapes with these heavy duty window frames, which are resistant to pressure differentials up to 1MPa.", + value = "2027713511" + ) + )] + StructureReinforcedCompositeWindow = 2027713511i32, + #[strum(serialize = "ItemKitRocketLiquidFuelTank")] + #[strum( + props(name = "Kit (Rocket Liquid Fuel Tank)", desc = "", value = "2032027950") + )] + ItemKitRocketLiquidFuelTank = 2032027950i32, + #[strum(serialize = "StructureEngineMountTypeA1")] + #[strum(props(name = "Engine Mount (Type A1)", desc = "", value = "2035781224"))] + StructureEngineMountTypeA1 = 2035781224i32, + #[strum(serialize = "ItemLiquidDrain")] + #[strum(props(name = "Kit (Liquid Drain)", desc = "", value = "2036225202"))] + ItemLiquidDrain = 2036225202i32, + #[strum(serialize = "ItemLiquidTankStorage")] + #[strum( + props( + name = "Kit (Liquid Canister Storage)", + desc = "This kit produces a Kit (Liquid Canister Storage) for refilling a Liquid Canister.", + value = "2037427578" + ) + )] + ItemLiquidTankStorage = 2037427578i32, + #[strum(serialize = "StructurePipeCrossJunction3")] + #[strum( + props( + name = "Pipe (3-Way Junction)", + desc = "You can upgrade this pipe to an Insulated Pipe (3-Way Junction) using an Kit (Insulated Pipe) and a Wrench.", + value = "2038427184" + ) + )] + StructurePipeCrossJunction3 = 2038427184i32, + #[strum(serialize = "ItemPeaceLily")] + #[strum( + props( + name = "Peace Lily", + desc = "A fetching lily with greater resistance to cold temperatures.", + value = "2042955224" + ) + )] + ItemPeaceLily = 2042955224i32, + #[strum(serialize = "PortableSolarPanel")] + #[strum(props(name = "Portable Solar Panel", desc = "", value = "2043318949"))] + PortableSolarPanel = 2043318949i32, + #[strum(serialize = "ItemMushroom")] + #[strum( + props( + name = "Mushroom", + desc = "A tasty food item. Unlike normal plants, it consumes Oxygen and outputs Carbon Dioxide. Mushrooms will only mature at a moderate rate in darkness, and prolonged light will kill it.", + value = "2044798572" + ) + )] + ItemMushroom = 2044798572i32, + #[strum(serialize = "StructureStairwellNoDoors")] + #[strum(props(name = "Stairwell (No Doors)", desc = "", value = "2049879875"))] + StructureStairwellNoDoors = 2049879875i32, + #[strum(serialize = "StructureWindowShutter")] + #[strum( + props( + name = "Window Shutter", + desc = "For those special, private moments, a window that can be closed to prying eyes. \n \nWhen closed, has the heat transfer characteristics of a basic wall. Requires power, and can be connected to logic systems.", + value = "2056377335" + ) + )] + StructureWindowShutter = 2056377335i32, + #[strum(serialize = "ItemKitHydroponicStation")] + #[strum(props(name = "Kit (Hydroponic Station)", desc = "", value = "2057179799"))] + ItemKitHydroponicStation = 2057179799i32, + #[strum(serialize = "ItemCableCoilHeavy")] + #[strum( + props( + name = "Cable Coil (Heavy)", + desc = "Use heavy cable coil for power systems with large draws. Unlike , which can only safely conduct 5kW, heavy cables can transmit up to 100kW.", + value = "2060134443" + ) + )] + ItemCableCoilHeavy = 2060134443i32, + #[strum(serialize = "StructureElevatorLevelIndustrial")] + #[strum(props(name = "Elevator Level", desc = "", value = "2060648791"))] + StructureElevatorLevelIndustrial = 2060648791i32, + #[strum(serialize = "StructurePassiveLargeRadiatorGas")] + #[strum( + props( + name = "Medium Convection Radiator", + desc = "Has been replaced by Medium Convection Radiator.", + value = "2066977095" + ) + )] + StructurePassiveLargeRadiatorGas = 2066977095i32, + #[strum(serialize = "ItemKitInsulatedLiquidPipe")] + #[strum( + props(name = "Kit (Insulated Liquid Pipe)", desc = "", value = "2067655311") + )] + ItemKitInsulatedLiquidPipe = 2067655311i32, + #[strum(serialize = "StructureLiquidPipeRadiator")] + #[strum( + props( + name = "Liquid Pipe Convection Radiator", + desc = "A simple heat exchanger, pipe radiators can be placed on pipes to shed or gain heat, depending on the temperature of the surrounding atmosphere. If the atmosphere is hotter, heat will be added to the liquid within the pipe network, and visa versa if colder. In a vacuum, heat will be radiated. \nThe speed of heat gain or loss will depend on the liquid in question. Adding multiple radiators will speed up heat transfer.", + value = "2072805863" + ) + )] + StructureLiquidPipeRadiator = 2072805863i32, + #[strum(serialize = "StructureLogicHashGen")] + #[strum(props(name = "Logic Hash Generator", desc = "", value = "2077593121"))] + StructureLogicHashGen = 2077593121i32, + #[strum(serialize = "AccessCardWhite")] + #[strum(props(name = "Access Card (White)", desc = "", value = "2079959157"))] + AccessCardWhite = 2079959157i32, + #[strum(serialize = "StructureCableStraightHBurnt")] + #[strum(props(name = "Burnt Cable (Straight)", desc = "", value = "2085762089"))] + StructureCableStraightHBurnt = 2085762089i32, + #[strum(serialize = "StructureWallPaddedWindow")] + #[strum(props(name = "Wall (Padded Window)", desc = "", value = "2087628940"))] + StructureWallPaddedWindow = 2087628940i32, + #[strum(serialize = "StructureLogicMirror")] + #[strum(props(name = "Logic Mirror", desc = "", value = "2096189278"))] + StructureLogicMirror = 2096189278i32, + #[strum(serialize = "StructureWallFlatCornerTriangle")] + #[strum( + props(name = "Wall (Flat Corner Triangle)", desc = "", value = "2097419366") + )] + StructureWallFlatCornerTriangle = 2097419366i32, + #[strum(serialize = "StructureBackLiquidPressureRegulator")] + #[strum( + props( + name = "Liquid Back Volume Regulator", + desc = "Regulates the volume ratio of liquid in the input Liquid pipe. This is expressed as percentage where 100 is totally full and 0 is empty.", + value = "2099900163" + ) + )] + StructureBackLiquidPressureRegulator = 2099900163i32, + #[strum(serialize = "StructureTankSmallFuel")] + #[strum(props(name = "Small Tank (Fuel)", desc = "", value = "2102454415"))] + StructureTankSmallFuel = 2102454415i32, + #[strum(serialize = "ItemEmergencyWireCutters")] + #[strum(props(name = "Emergency Wire Cutters", desc = "", value = "2102803952"))] + ItemEmergencyWireCutters = 2102803952i32, + #[strum(serialize = "StructureGasMixer")] + #[strum( + props( + name = "Gas Mixer", + desc = "Indispensable for producing precise atmospheric ratios, this gas mixer blends two gases in proportions ranging anywhere from 0-100%.", + value = "2104106366" + ) + )] + StructureGasMixer = 2104106366i32, + #[strum(serialize = "StructureCompositeFloorGratingOpen")] + #[strum( + props(name = "Composite Floor Grating Open", desc = "", value = "2109695912") + )] + StructureCompositeFloorGratingOpen = 2109695912i32, + #[strum(serialize = "ItemRocketMiningDrillHead")] + #[strum( + props( + name = "Mining-Drill Head (Basic)", + desc = "Replaceable drill head for Rocket Miner", + value = "2109945337" + ) + )] + ItemRocketMiningDrillHead = 2109945337i32, + #[strum(serialize = "ItemSugar")] + #[strum(props(name = "Sugar", desc = "", value = "2111910840"))] + ItemSugar = 2111910840i32, + #[strum(serialize = "DynamicMKIILiquidCanisterEmpty")] + #[strum( + props( + name = "Portable Liquid Tank Mk II", + desc = "An empty, insulated liquid Gas Canister.", + value = "2130739600" + ) + )] + DynamicMkiiLiquidCanisterEmpty = 2130739600i32, + #[strum(serialize = "ItemSpaceOre")] + #[strum( + props( + name = "Dirty Ore", + desc = "Ore mined from asteroids via the Rocket Miner which then must be processed in the Centrifuge, or Combustion Centrifuge to produce smeltable ores.", + value = "2131916219" + ) + )] + ItemSpaceOre = 2131916219i32, + #[strum(serialize = "ItemKitStandardChute")] + #[strum(props(name = "Kit (Powered Chutes)", desc = "", value = "2133035682"))] + ItemKitStandardChute = 2133035682i32, + #[strum(serialize = "StructureInsulatedPipeStraight")] + #[strum( + props( + name = "Insulated Pipe (Straight)", + desc = "Insulated pipes greatly reduce heat loss from gases stored in them.", + value = "2134172356" + ) + )] + StructureInsulatedPipeStraight = 2134172356i32, + #[strum(serialize = "ItemLeadIngot")] + #[strum(props(name = "Ingot (Lead)", desc = "", value = "2134647745"))] + ItemLeadIngot = 2134647745i32, + #[strum(serialize = "ItemGasCanisterNitrogen")] + #[strum(props(name = "Canister (Nitrogen)", desc = "", value = "2145068424"))] + ItemGasCanisterNitrogen = 2145068424i32, +} +impl TryFrom for StationpediaPrefab { + type Error = super::ParseError; + fn try_from( + value: f64, + ) -> Result>::Error> { + use strum::IntoEnumIterator; + if let Some(enm) = StationpediaPrefab::iter() + .find(|enm| (f64::from(*enm as i32) - value).abs() < f64::EPSILON) + { + Ok(enm) + } else { + Err(super::ParseError { + enm: value.to_string(), + }) + } + } +} diff --git a/stationeers_data/src/enums/script_enums.rs b/stationeers_data/src/enums/script_enums.rs new file mode 100644 index 0000000..1be73d5 --- /dev/null +++ b/stationeers_data/src/enums/script_enums.rs @@ -0,0 +1,2091 @@ +use serde_derive::{Deserialize, Serialize}; +use strum::{AsRefStr, Display, EnumIter, EnumProperty, EnumString, FromRepr}; +#[derive( + Debug, + Display, + Clone, + Copy, + PartialEq, + Eq, + PartialOrd, + Ord, + Hash, + EnumString, + AsRefStr, + EnumProperty, + EnumIter, + FromRepr, + Serialize, + Deserialize +)] +#[strum(use_phf)] +#[repr(u8)] +pub enum LogicBatchMethod { + #[strum(serialize = "Average")] + #[strum(props(docs = "", value = "0"))] + Average = 0u8, + #[strum(serialize = "Sum")] + #[strum(props(docs = "", value = "1"))] + Sum = 1u8, + #[strum(serialize = "Minimum")] + #[strum(props(docs = "", value = "2"))] + Minimum = 2u8, + #[strum(serialize = "Maximum")] + #[strum(props(docs = "", value = "3"))] + Maximum = 3u8, +} +impl TryFrom for LogicBatchMethod { + type Error = super::ParseError; + fn try_from(value: f64) -> Result>::Error> { + use strum::IntoEnumIterator; + if let Some(enm) = LogicBatchMethod::iter() + .find(|enm| (f64::from(*enm as u8) - value).abs() < f64::EPSILON) + { + Ok(enm) + } else { + Err(super::ParseError { + enm: value.to_string(), + }) + } + } +} +#[derive( + Debug, + Display, + Clone, + Copy, + PartialEq, + Eq, + PartialOrd, + Ord, + Hash, + EnumString, + AsRefStr, + EnumProperty, + EnumIter, + FromRepr, + Serialize, + Deserialize +)] +#[strum(use_phf)] +#[repr(u8)] +pub enum LogicReagentMode { + #[strum(serialize = "Contents")] + #[strum(props(docs = "", value = "0"))] + Contents = 0u8, + #[strum(serialize = "Required")] + #[strum(props(docs = "", value = "1"))] + Required = 1u8, + #[strum(serialize = "Recipe")] + #[strum(props(docs = "", value = "2"))] + Recipe = 2u8, + #[strum(serialize = "TotalContents")] + #[strum(props(docs = "", value = "3"))] + TotalContents = 3u8, +} +impl TryFrom for LogicReagentMode { + type Error = super::ParseError; + fn try_from(value: f64) -> Result>::Error> { + use strum::IntoEnumIterator; + if let Some(enm) = LogicReagentMode::iter() + .find(|enm| (f64::from(*enm as u8) - value).abs() < f64::EPSILON) + { + Ok(enm) + } else { + Err(super::ParseError { + enm: value.to_string(), + }) + } + } +} +#[derive( + Default, + Debug, + Display, + Clone, + Copy, + PartialEq, + Eq, + PartialOrd, + Ord, + Hash, + EnumString, + AsRefStr, + EnumProperty, + EnumIter, + FromRepr, + Serialize, + Deserialize +)] +#[strum(use_phf)] +#[repr(u8)] +pub enum LogicSlotType { + #[strum(serialize = "None")] + #[strum(props(docs = "No description", value = "0"))] + #[default] + None = 0u8, + #[strum(serialize = "Occupied")] + #[strum( + props(docs = "returns 0 when slot is not occupied, 1 when it is", value = "1") + )] + Occupied = 1u8, + #[strum(serialize = "OccupantHash")] + #[strum( + props( + docs = "returns the has of the current occupant, the unique identifier of the thing", + value = "2" + ) + )] + OccupantHash = 2u8, + #[strum(serialize = "Quantity")] + #[strum( + props( + docs = "returns the current quantity, such as stack size, of the item in the slot", + value = "3" + ) + )] + Quantity = 3u8, + #[strum(serialize = "Damage")] + #[strum( + props(docs = "returns the damage state of the item in the slot", value = "4") + )] + Damage = 4u8, + #[strum(serialize = "Efficiency")] + #[strum( + props( + docs = "returns the growth efficiency of the plant in the slot", + value = "5" + ) + )] + Efficiency = 5u8, + #[strum(serialize = "Health")] + #[strum(props(docs = "returns the health of the plant in the slot", value = "6"))] + Health = 6u8, + #[strum(serialize = "Growth")] + #[strum( + props( + docs = "returns the current growth state of the plant in the slot", + value = "7" + ) + )] + Growth = 7u8, + #[strum(serialize = "Pressure")] + #[strum( + props( + docs = "returns pressure of the slot occupants internal atmosphere", + value = "8" + ) + )] + Pressure = 8u8, + #[strum(serialize = "Temperature")] + #[strum( + props( + docs = "returns temperature of the slot occupants internal atmosphere", + value = "9" + ) + )] + Temperature = 9u8, + #[strum(serialize = "Charge")] + #[strum( + props( + docs = "returns current energy charge the slot occupant is holding", + value = "10" + ) + )] + Charge = 10u8, + #[strum(serialize = "ChargeRatio")] + #[strum( + props( + docs = "returns current energy charge the slot occupant is holding as a ratio between 0 and 1 of its maximum", + value = "11" + ) + )] + ChargeRatio = 11u8, + #[strum(serialize = "Class")] + #[strum( + props(docs = "returns integer representing the class of object", value = "12") + )] + Class = 12u8, + #[strum(serialize = "PressureWaste")] + #[strum( + props( + docs = "returns pressure in the waste tank of the jetpack in this slot", + value = "13" + ) + )] + PressureWaste = 13u8, + #[strum(serialize = "PressureAir")] + #[strum( + props( + docs = "returns pressure in the air tank of the jetpack in this slot", + value = "14" + ) + )] + PressureAir = 14u8, + #[strum(serialize = "MaxQuantity")] + #[strum( + props(docs = "returns the max stack size of the item in the slot", value = "15") + )] + MaxQuantity = 15u8, + #[strum(serialize = "Mature")] + #[strum( + props( + docs = "returns 1 if the plant in this slot is mature, 0 when it isn't", + value = "16" + ) + )] + Mature = 16u8, + #[strum(serialize = "PrefabHash")] + #[strum(props(docs = "returns the hash of the structure in the slot", value = "17"))] + PrefabHash = 17u8, + #[strum(serialize = "Seeding")] + #[strum( + props( + docs = "Whether a plant is seeding (ready to harvest seeds from). Returns 1 if seeding or 0 if not.", + value = "18" + ) + )] + Seeding = 18u8, + #[strum(serialize = "LineNumber")] + #[strum( + props( + docs = "The line number of current execution for an integrated circuit running on this device. While this number can be written, use with caution", + value = "19" + ) + )] + LineNumber = 19u8, + #[strum(serialize = "Volume")] + #[strum(props(docs = "No description available", value = "20"))] + Volume = 20u8, + #[strum(serialize = "Open")] + #[strum(props(docs = "No description available", value = "21"))] + Open = 21u8, + #[strum(serialize = "On")] + #[strum(props(docs = "No description available", value = "22"))] + On = 22u8, + #[strum(serialize = "Lock")] + #[strum(props(docs = "No description available", value = "23"))] + Lock = 23u8, + #[strum(serialize = "SortingClass")] + #[strum(props(docs = "No description available", value = "24"))] + SortingClass = 24u8, + #[strum(serialize = "FilterType")] + #[strum(props(docs = "No description available", value = "25"))] + FilterType = 25u8, + #[strum(serialize = "ReferenceId")] + #[strum(props(docs = "Unique Reference Identifier for this object", value = "26"))] + ReferenceId = 26u8, +} +impl TryFrom for LogicSlotType { + type Error = super::ParseError; + fn try_from(value: f64) -> Result>::Error> { + use strum::IntoEnumIterator; + if let Some(enm) = LogicSlotType::iter() + .find(|enm| (f64::from(*enm as u8) - value).abs() < f64::EPSILON) + { + Ok(enm) + } else { + Err(super::ParseError { + enm: value.to_string(), + }) + } + } +} +#[derive( + Default, + Debug, + Display, + Clone, + Copy, + PartialEq, + Eq, + PartialOrd, + Ord, + Hash, + EnumString, + AsRefStr, + EnumProperty, + EnumIter, + FromRepr, + Serialize, + Deserialize +)] +#[strum(use_phf)] +#[repr(u16)] +pub enum LogicType { + #[strum(serialize = "None")] + #[strum(props(deprecated = "true", docs = "No description", value = "0"))] + #[default] + None = 0u16, + #[strum(serialize = "Power")] + #[strum( + props( + docs = "Can be read to return if the device is correctly powered or not, set via the power system, return 1 if powered and 0 if not", + value = "1" + ) + )] + Power = 1u16, + #[strum(serialize = "Open")] + #[strum(props(docs = "1 if device is open, otherwise 0", value = "2"))] + Open = 2u16, + #[strum(serialize = "Mode")] + #[strum( + props( + docs = "Integer for mode state, different devices will have different mode states available to them", + value = "3" + ) + )] + Mode = 3u16, + #[strum(serialize = "Error")] + #[strum(props(docs = "1 if device is in error state, otherwise 0", value = "4"))] + Error = 4u16, + #[strum(serialize = "Pressure")] + #[strum(props(docs = "The current pressure reading of the device", value = "5"))] + Pressure = 5u16, + #[strum(serialize = "Temperature")] + #[strum(props(docs = "The current temperature reading of the device", value = "6"))] + Temperature = 6u16, + #[strum(serialize = "PressureExternal")] + #[strum(props(docs = "Setting for external pressure safety, in KPa", value = "7"))] + PressureExternal = 7u16, + #[strum(serialize = "PressureInternal")] + #[strum(props(docs = "Setting for internal pressure safety, in KPa", value = "8"))] + PressureInternal = 8u16, + #[strum(serialize = "Activate")] + #[strum( + props( + docs = "1 if device is activated (usually means running), otherwise 0", + value = "9" + ) + )] + Activate = 9u16, + #[strum(serialize = "Lock")] + #[strum( + props( + docs = "1 if device is locked, otherwise 0, can be set in most devices and prevents the user from access the values", + value = "10" + ) + )] + Lock = 10u16, + #[strum(serialize = "Charge")] + #[strum(props(docs = "The current charge the device has", value = "11"))] + Charge = 11u16, + #[strum(serialize = "Setting")] + #[strum( + props( + docs = "A variable setting that can be read or written, depending on the device", + value = "12" + ) + )] + Setting = 12u16, + #[strum(serialize = "Reagents")] + #[strum( + props(docs = "Total number of reagents recorded by the device", value = "13") + )] + Reagents = 13u16, + #[strum(serialize = "RatioOxygen")] + #[strum(props(docs = "The ratio of oxygen in device atmosphere", value = "14"))] + RatioOxygen = 14u16, + #[strum(serialize = "RatioCarbonDioxide")] + #[strum( + props( + docs = "The ratio of Carbon Dioxide in device atmosphere", + value = "15" + ) + )] + RatioCarbonDioxide = 15u16, + #[strum(serialize = "RatioNitrogen")] + #[strum(props(docs = "The ratio of nitrogen in device atmosphere", value = "16"))] + RatioNitrogen = 16u16, + #[strum(serialize = "RatioPollutant")] + #[strum(props(docs = "The ratio of pollutant in device atmosphere", value = "17"))] + RatioPollutant = 17u16, + #[strum(serialize = "RatioVolatiles")] + #[strum(props(docs = "The ratio of volatiles in device atmosphere", value = "18"))] + RatioVolatiles = 18u16, + #[strum(serialize = "RatioWater")] + #[strum(props(docs = "The ratio of water in device atmosphere", value = "19"))] + RatioWater = 19u16, + #[strum(serialize = "Horizontal")] + #[strum(props(docs = "Horizontal setting of the device", value = "20"))] + Horizontal = 20u16, + #[strum(serialize = "Vertical")] + #[strum(props(docs = "Vertical setting of the device", value = "21"))] + Vertical = 21u16, + #[strum(serialize = "SolarAngle")] + #[strum(props(docs = "Solar angle of the device", value = "22"))] + SolarAngle = 22u16, + #[strum(serialize = "Maximum")] + #[strum(props(docs = "Maximum setting of the device", value = "23"))] + Maximum = 23u16, + #[strum(serialize = "Ratio")] + #[strum( + props( + docs = "Context specific value depending on device, 0 to 1 based ratio", + value = "24" + ) + )] + Ratio = 24u16, + #[strum(serialize = "PowerPotential")] + #[strum( + props( + docs = "How much energy the device or network potentially provides", + value = "25" + ) + )] + PowerPotential = 25u16, + #[strum(serialize = "PowerActual")] + #[strum( + props( + docs = "How much energy the device or network is actually using", + value = "26" + ) + )] + PowerActual = 26u16, + #[strum(serialize = "Quantity")] + #[strum(props(docs = "Total quantity on the device", value = "27"))] + Quantity = 27u16, + #[strum(serialize = "On")] + #[strum( + props( + docs = "The current state of the device, 0 for off, 1 for on", + value = "28" + ) + )] + On = 28u16, + #[strum(serialize = "ImportQuantity")] + #[strum( + props( + deprecated = "true", + docs = "Total quantity of items imported by the device", + value = "29" + ) + )] + ImportQuantity = 29u16, + #[strum(serialize = "ImportSlotOccupant")] + #[strum(props(deprecated = "true", docs = "DEPRECATED", value = "30"))] + ImportSlotOccupant = 30u16, + #[strum(serialize = "ExportQuantity")] + #[strum( + props( + deprecated = "true", + docs = "Total quantity of items exported by the device", + value = "31" + ) + )] + ExportQuantity = 31u16, + #[strum(serialize = "ExportSlotOccupant")] + #[strum(props(deprecated = "true", docs = "DEPRECATED", value = "32"))] + ExportSlotOccupant = 32u16, + #[strum(serialize = "RequiredPower")] + #[strum( + props( + docs = "Idle operating power quantity, does not necessarily include extra demand power", + value = "33" + ) + )] + RequiredPower = 33u16, + #[strum(serialize = "HorizontalRatio")] + #[strum(props(docs = "Radio of horizontal setting for device", value = "34"))] + HorizontalRatio = 34u16, + #[strum(serialize = "VerticalRatio")] + #[strum(props(docs = "Radio of vertical setting for device", value = "35"))] + VerticalRatio = 35u16, + #[strum(serialize = "PowerRequired")] + #[strum( + props(docs = "Power requested from the device and/or network", value = "36") + )] + PowerRequired = 36u16, + #[strum(serialize = "Idle")] + #[strum( + props( + docs = "Returns 1 if the device is currently idle, otherwise 0", + value = "37" + ) + )] + Idle = 37u16, + #[strum(serialize = "Color")] + #[strum( + props( + docs = "\n Whether driven by concerns for clarity, safety or simple aesthetics, Stationeers have access to a small rainbow of colors for their constructions. These are the color setting for devices, represented as an integer.\n\n0: Blue\n1: Grey\n2: Green\n3: Orange\n4: Red\n5: Yellow\n6: White\n7: Black\n8: Brown\n9: Khaki\n10: Pink\n11: Purple\n\n It is an unwavering universal law that anything higher than 11 will be purple. The ODA is powerless to change this. Similarly, anything lower than 0 will be Blue.\n ", + value = "38" + ) + )] + Color = 38u16, + #[strum(serialize = "ElevatorSpeed")] + #[strum(props(docs = "Current speed of the elevator", value = "39"))] + ElevatorSpeed = 39u16, + #[strum(serialize = "ElevatorLevel")] + #[strum(props(docs = "Level the elevator is currently at", value = "40"))] + ElevatorLevel = 40u16, + #[strum(serialize = "RecipeHash")] + #[strum( + props( + docs = "Current hash of the recipe the device is set to produce", + value = "41" + ) + )] + RecipeHash = 41u16, + #[strum(serialize = "ExportSlotHash")] + #[strum(props(deprecated = "true", docs = "DEPRECATED", value = "42"))] + ExportSlotHash = 42u16, + #[strum(serialize = "ImportSlotHash")] + #[strum(props(deprecated = "true", docs = "DEPRECATED", value = "43"))] + ImportSlotHash = 43u16, + #[strum(serialize = "PlantHealth1")] + #[strum(props(deprecated = "true", docs = "DEPRECATED", value = "44"))] + PlantHealth1 = 44u16, + #[strum(serialize = "PlantHealth2")] + #[strum(props(deprecated = "true", docs = "DEPRECATED", value = "45"))] + PlantHealth2 = 45u16, + #[strum(serialize = "PlantHealth3")] + #[strum(props(deprecated = "true", docs = "DEPRECATED", value = "46"))] + PlantHealth3 = 46u16, + #[strum(serialize = "PlantHealth4")] + #[strum(props(deprecated = "true", docs = "DEPRECATED", value = "47"))] + PlantHealth4 = 47u16, + #[strum(serialize = "PlantGrowth1")] + #[strum(props(deprecated = "true", docs = "DEPRECATED", value = "48"))] + PlantGrowth1 = 48u16, + #[strum(serialize = "PlantGrowth2")] + #[strum(props(deprecated = "true", docs = "DEPRECATED", value = "49"))] + PlantGrowth2 = 49u16, + #[strum(serialize = "PlantGrowth3")] + #[strum(props(deprecated = "true", docs = "DEPRECATED", value = "50"))] + PlantGrowth3 = 50u16, + #[strum(serialize = "PlantGrowth4")] + #[strum(props(deprecated = "true", docs = "DEPRECATED", value = "51"))] + PlantGrowth4 = 51u16, + #[strum(serialize = "PlantEfficiency1")] + #[strum(props(deprecated = "true", docs = "DEPRECATED", value = "52"))] + PlantEfficiency1 = 52u16, + #[strum(serialize = "PlantEfficiency2")] + #[strum(props(deprecated = "true", docs = "DEPRECATED", value = "53"))] + PlantEfficiency2 = 53u16, + #[strum(serialize = "PlantEfficiency3")] + #[strum(props(deprecated = "true", docs = "DEPRECATED", value = "54"))] + PlantEfficiency3 = 54u16, + #[strum(serialize = "PlantEfficiency4")] + #[strum(props(deprecated = "true", docs = "DEPRECATED", value = "55"))] + PlantEfficiency4 = 55u16, + #[strum(serialize = "PlantHash1")] + #[strum(props(deprecated = "true", docs = "DEPRECATED", value = "56"))] + PlantHash1 = 56u16, + #[strum(serialize = "PlantHash2")] + #[strum(props(deprecated = "true", docs = "DEPRECATED", value = "57"))] + PlantHash2 = 57u16, + #[strum(serialize = "PlantHash3")] + #[strum(props(deprecated = "true", docs = "DEPRECATED", value = "58"))] + PlantHash3 = 58u16, + #[strum(serialize = "PlantHash4")] + #[strum(props(deprecated = "true", docs = "DEPRECATED", value = "59"))] + PlantHash4 = 59u16, + #[strum(serialize = "RequestHash")] + #[strum( + props( + docs = "When set to the unique identifier, requests an item of the provided type from the device", + value = "60" + ) + )] + RequestHash = 60u16, + #[strum(serialize = "CompletionRatio")] + #[strum( + props( + docs = "How complete the current production is for this device, between 0 and 1", + value = "61" + ) + )] + CompletionRatio = 61u16, + #[strum(serialize = "ClearMemory")] + #[strum( + props( + docs = "When set to 1, clears the counter memory (e.g. ExportCount). Will set itself back to 0 when actioned", + value = "62" + ) + )] + ClearMemory = 62u16, + #[strum(serialize = "ExportCount")] + #[strum( + props(docs = "How many items exported since last ClearMemory", value = "63") + )] + ExportCount = 63u16, + #[strum(serialize = "ImportCount")] + #[strum( + props(docs = "How many items imported since last ClearMemory", value = "64") + )] + ImportCount = 64u16, + #[strum(serialize = "PowerGeneration")] + #[strum(props(docs = "Returns how much power is being generated", value = "65"))] + PowerGeneration = 65u16, + #[strum(serialize = "TotalMoles")] + #[strum(props(docs = "Returns the total moles of the device", value = "66"))] + TotalMoles = 66u16, + #[strum(serialize = "Volume")] + #[strum(props(docs = "Returns the device atmosphere volume", value = "67"))] + Volume = 67u16, + #[strum(serialize = "Plant")] + #[strum( + props( + docs = "Performs the planting action for any plant based machinery", + value = "68" + ) + )] + Plant = 68u16, + #[strum(serialize = "Harvest")] + #[strum( + props( + docs = "Performs the harvesting action for any plant based machinery", + value = "69" + ) + )] + Harvest = 69u16, + #[strum(serialize = "Output")] + #[strum( + props( + docs = "The output operation for a sort handling device, such as a stacker or sorter, when in logic mode the device will only action one repetition when set zero or above and then back to -1 and await further instructions", + value = "70" + ) + )] + Output = 70u16, + #[strum(serialize = "PressureSetting")] + #[strum( + props( + docs = "The current setting for the internal pressure of the object (e.g. the Hardsuit Air release), in KPa", + value = "71" + ) + )] + PressureSetting = 71u16, + #[strum(serialize = "TemperatureSetting")] + #[strum( + props( + docs = "The current setting for the internal temperature of the object (e.g. the Hardsuit A/C)", + value = "72" + ) + )] + TemperatureSetting = 72u16, + #[strum(serialize = "TemperatureExternal")] + #[strum( + props( + docs = "The temperature of the outside of the device, usually the world atmosphere surrounding it", + value = "73" + ) + )] + TemperatureExternal = 73u16, + #[strum(serialize = "Filtration")] + #[strum( + props( + docs = "The current state of the filtration system, for example Filtration = 1 for a Hardsuit sets filtration to On", + value = "74" + ) + )] + Filtration = 74u16, + #[strum(serialize = "AirRelease")] + #[strum( + props( + docs = "The current state of the air release system, for example AirRelease = 1 for a Hardsuit sets Air Release to On", + value = "75" + ) + )] + AirRelease = 75u16, + #[strum(serialize = "PositionX")] + #[strum( + props( + docs = "The current position in X dimension in world coordinates", + value = "76" + ) + )] + PositionX = 76u16, + #[strum(serialize = "PositionY")] + #[strum( + props( + docs = "The current position in Y dimension in world coordinates", + value = "77" + ) + )] + PositionY = 77u16, + #[strum(serialize = "PositionZ")] + #[strum( + props( + docs = "The current position in Z dimension in world coordinates", + value = "78" + ) + )] + PositionZ = 78u16, + #[strum(serialize = "VelocityMagnitude")] + #[strum(props(docs = "The current magnitude of the velocity vector", value = "79"))] + VelocityMagnitude = 79u16, + #[strum(serialize = "VelocityRelativeX")] + #[strum( + props( + docs = "The current velocity X relative to the forward vector of this", + value = "80" + ) + )] + VelocityRelativeX = 80u16, + #[strum(serialize = "VelocityRelativeY")] + #[strum( + props( + docs = "The current velocity Y relative to the forward vector of this", + value = "81" + ) + )] + VelocityRelativeY = 81u16, + #[strum(serialize = "VelocityRelativeZ")] + #[strum( + props( + docs = "The current velocity Z relative to the forward vector of this", + value = "82" + ) + )] + VelocityRelativeZ = 82u16, + #[strum(serialize = "RatioNitrousOxide")] + #[strum( + props( + docs = "The ratio of Nitrous Oxide in device atmosphere", + value = "83" + ) + )] + RatioNitrousOxide = 83u16, + #[strum(serialize = "PrefabHash")] + #[strum(props(docs = "The hash of the structure", value = "84"))] + PrefabHash = 84u16, + #[strum(serialize = "ForceWrite")] + #[strum(props(docs = "Forces Logic Writer devices to rewrite value", value = "85"))] + ForceWrite = 85u16, + #[strum(serialize = "SignalStrength")] + #[strum( + props(docs = "Returns the degree offset of the strongest contact", value = "86") + )] + SignalStrength = 86u16, + #[strum(serialize = "SignalID")] + #[strum( + props( + docs = "Returns the contact ID of the strongest signal from this Satellite", + value = "87" + ) + )] + SignalId = 87u16, + #[strum(serialize = "TargetX")] + #[strum( + props( + docs = "The target position in X dimension in world coordinates", + value = "88" + ) + )] + TargetX = 88u16, + #[strum(serialize = "TargetY")] + #[strum( + props( + docs = "The target position in Y dimension in world coordinates", + value = "89" + ) + )] + TargetY = 89u16, + #[strum(serialize = "TargetZ")] + #[strum( + props( + docs = "The target position in Z dimension in world coordinates", + value = "90" + ) + )] + TargetZ = 90u16, + #[strum(serialize = "SettingInput")] + #[strum(props(docs = "", value = "91"))] + SettingInput = 91u16, + #[strum(serialize = "SettingOutput")] + #[strum(props(docs = "", value = "92"))] + SettingOutput = 92u16, + #[strum(serialize = "CurrentResearchPodType")] + #[strum(props(docs = "", value = "93"))] + CurrentResearchPodType = 93u16, + #[strum(serialize = "ManualResearchRequiredPod")] + #[strum( + props( + docs = "Sets the pod type to search for a certain pod when breaking down a pods.", + value = "94" + ) + )] + ManualResearchRequiredPod = 94u16, + #[strum(serialize = "MineablesInVicinity")] + #[strum( + props( + docs = "Returns the amount of potential mineables within an extended area around AIMEe.", + value = "95" + ) + )] + MineablesInVicinity = 95u16, + #[strum(serialize = "MineablesInQueue")] + #[strum( + props( + docs = "Returns the amount of mineables AIMEe has queued up to mine.", + value = "96" + ) + )] + MineablesInQueue = 96u16, + #[strum(serialize = "NextWeatherEventTime")] + #[strum( + props( + docs = "Returns in seconds when the next weather event is inbound.", + value = "97" + ) + )] + NextWeatherEventTime = 97u16, + #[strum(serialize = "Combustion")] + #[strum( + props( + docs = "The assess atmosphere is on fire. Returns 1 if atmosphere is on fire, 0 if not.", + value = "98" + ) + )] + Combustion = 98u16, + #[strum(serialize = "Fuel")] + #[strum( + props( + docs = "Gets the cost of fuel to return the rocket to your current world.", + value = "99" + ) + )] + Fuel = 99u16, + #[strum(serialize = "ReturnFuelCost")] + #[strum( + props( + docs = "Gets the fuel remaining in your rocket's fuel tank.", + value = "100" + ) + )] + ReturnFuelCost = 100u16, + #[strum(serialize = "CollectableGoods")] + #[strum( + props( + docs = "Gets the cost of fuel to return the rocket to your current world.", + value = "101" + ) + )] + CollectableGoods = 101u16, + #[strum(serialize = "Time")] + #[strum(props(docs = "Time", value = "102"))] + Time = 102u16, + #[strum(serialize = "Bpm")] + #[strum(props(docs = "Bpm", value = "103"))] + Bpm = 103u16, + #[strum(serialize = "EnvironmentEfficiency")] + #[strum( + props( + docs = "The Environment Efficiency reported by the machine, as a float between 0 and 1", + value = "104" + ) + )] + EnvironmentEfficiency = 104u16, + #[strum(serialize = "WorkingGasEfficiency")] + #[strum( + props( + docs = "The Working Gas Efficiency reported by the machine, as a float between 0 and 1", + value = "105" + ) + )] + WorkingGasEfficiency = 105u16, + #[strum(serialize = "PressureInput")] + #[strum( + props( + docs = "The current pressure reading of the device's Input Network", + value = "106" + ) + )] + PressureInput = 106u16, + #[strum(serialize = "TemperatureInput")] + #[strum( + props( + docs = "The current temperature reading of the device's Input Network", + value = "107" + ) + )] + TemperatureInput = 107u16, + #[strum(serialize = "RatioOxygenInput")] + #[strum( + props(docs = "The ratio of oxygen in device's input network", value = "108") + )] + RatioOxygenInput = 108u16, + #[strum(serialize = "RatioCarbonDioxideInput")] + #[strum( + props( + docs = "The ratio of Carbon Dioxide in device's input network", + value = "109" + ) + )] + RatioCarbonDioxideInput = 109u16, + #[strum(serialize = "RatioNitrogenInput")] + #[strum( + props(docs = "The ratio of nitrogen in device's input network", value = "110") + )] + RatioNitrogenInput = 110u16, + #[strum(serialize = "RatioPollutantInput")] + #[strum( + props(docs = "The ratio of pollutant in device's input network", value = "111") + )] + RatioPollutantInput = 111u16, + #[strum(serialize = "RatioVolatilesInput")] + #[strum( + props(docs = "The ratio of volatiles in device's input network", value = "112") + )] + RatioVolatilesInput = 112u16, + #[strum(serialize = "RatioWaterInput")] + #[strum(props(docs = "The ratio of water in device's input network", value = "113"))] + RatioWaterInput = 113u16, + #[strum(serialize = "RatioNitrousOxideInput")] + #[strum( + props( + docs = "The ratio of Nitrous Oxide in device's input network", + value = "114" + ) + )] + RatioNitrousOxideInput = 114u16, + #[strum(serialize = "TotalMolesInput")] + #[strum( + props( + docs = "Returns the total moles of the device's Input Network", + value = "115" + ) + )] + TotalMolesInput = 115u16, + #[strum(serialize = "PressureInput2")] + #[strum( + props( + docs = "The current pressure reading of the device's Input2 Network", + value = "116" + ) + )] + PressureInput2 = 116u16, + #[strum(serialize = "TemperatureInput2")] + #[strum( + props( + docs = "The current temperature reading of the device's Input2 Network", + value = "117" + ) + )] + TemperatureInput2 = 117u16, + #[strum(serialize = "RatioOxygenInput2")] + #[strum( + props(docs = "The ratio of oxygen in device's Input2 network", value = "118") + )] + RatioOxygenInput2 = 118u16, + #[strum(serialize = "RatioCarbonDioxideInput2")] + #[strum( + props( + docs = "The ratio of Carbon Dioxide in device's Input2 network", + value = "119" + ) + )] + RatioCarbonDioxideInput2 = 119u16, + #[strum(serialize = "RatioNitrogenInput2")] + #[strum( + props(docs = "The ratio of nitrogen in device's Input2 network", value = "120") + )] + RatioNitrogenInput2 = 120u16, + #[strum(serialize = "RatioPollutantInput2")] + #[strum( + props(docs = "The ratio of pollutant in device's Input2 network", value = "121") + )] + RatioPollutantInput2 = 121u16, + #[strum(serialize = "RatioVolatilesInput2")] + #[strum( + props(docs = "The ratio of volatiles in device's Input2 network", value = "122") + )] + RatioVolatilesInput2 = 122u16, + #[strum(serialize = "RatioWaterInput2")] + #[strum( + props(docs = "The ratio of water in device's Input2 network", value = "123") + )] + RatioWaterInput2 = 123u16, + #[strum(serialize = "RatioNitrousOxideInput2")] + #[strum( + props( + docs = "The ratio of Nitrous Oxide in device's Input2 network", + value = "124" + ) + )] + RatioNitrousOxideInput2 = 124u16, + #[strum(serialize = "TotalMolesInput2")] + #[strum( + props( + docs = "Returns the total moles of the device's Input2 Network", + value = "125" + ) + )] + TotalMolesInput2 = 125u16, + #[strum(serialize = "PressureOutput")] + #[strum( + props( + docs = "The current pressure reading of the device's Output Network", + value = "126" + ) + )] + PressureOutput = 126u16, + #[strum(serialize = "TemperatureOutput")] + #[strum( + props( + docs = "The current temperature reading of the device's Output Network", + value = "127" + ) + )] + TemperatureOutput = 127u16, + #[strum(serialize = "RatioOxygenOutput")] + #[strum( + props(docs = "The ratio of oxygen in device's Output network", value = "128") + )] + RatioOxygenOutput = 128u16, + #[strum(serialize = "RatioCarbonDioxideOutput")] + #[strum( + props( + docs = "The ratio of Carbon Dioxide in device's Output network", + value = "129" + ) + )] + RatioCarbonDioxideOutput = 129u16, + #[strum(serialize = "RatioNitrogenOutput")] + #[strum( + props(docs = "The ratio of nitrogen in device's Output network", value = "130") + )] + RatioNitrogenOutput = 130u16, + #[strum(serialize = "RatioPollutantOutput")] + #[strum( + props(docs = "The ratio of pollutant in device's Output network", value = "131") + )] + RatioPollutantOutput = 131u16, + #[strum(serialize = "RatioVolatilesOutput")] + #[strum( + props(docs = "The ratio of volatiles in device's Output network", value = "132") + )] + RatioVolatilesOutput = 132u16, + #[strum(serialize = "RatioWaterOutput")] + #[strum( + props(docs = "The ratio of water in device's Output network", value = "133") + )] + RatioWaterOutput = 133u16, + #[strum(serialize = "RatioNitrousOxideOutput")] + #[strum( + props( + docs = "The ratio of Nitrous Oxide in device's Output network", + value = "134" + ) + )] + RatioNitrousOxideOutput = 134u16, + #[strum(serialize = "TotalMolesOutput")] + #[strum( + props( + docs = "Returns the total moles of the device's Output Network", + value = "135" + ) + )] + TotalMolesOutput = 135u16, + #[strum(serialize = "PressureOutput2")] + #[strum( + props( + docs = "The current pressure reading of the device's Output2 Network", + value = "136" + ) + )] + PressureOutput2 = 136u16, + #[strum(serialize = "TemperatureOutput2")] + #[strum( + props( + docs = "The current temperature reading of the device's Output2 Network", + value = "137" + ) + )] + TemperatureOutput2 = 137u16, + #[strum(serialize = "RatioOxygenOutput2")] + #[strum( + props(docs = "The ratio of oxygen in device's Output2 network", value = "138") + )] + RatioOxygenOutput2 = 138u16, + #[strum(serialize = "RatioCarbonDioxideOutput2")] + #[strum( + props( + docs = "The ratio of Carbon Dioxide in device's Output2 network", + value = "139" + ) + )] + RatioCarbonDioxideOutput2 = 139u16, + #[strum(serialize = "RatioNitrogenOutput2")] + #[strum( + props(docs = "The ratio of nitrogen in device's Output2 network", value = "140") + )] + RatioNitrogenOutput2 = 140u16, + #[strum(serialize = "RatioPollutantOutput2")] + #[strum( + props(docs = "The ratio of pollutant in device's Output2 network", value = "141") + )] + RatioPollutantOutput2 = 141u16, + #[strum(serialize = "RatioVolatilesOutput2")] + #[strum( + props(docs = "The ratio of volatiles in device's Output2 network", value = "142") + )] + RatioVolatilesOutput2 = 142u16, + #[strum(serialize = "RatioWaterOutput2")] + #[strum( + props(docs = "The ratio of water in device's Output2 network", value = "143") + )] + RatioWaterOutput2 = 143u16, + #[strum(serialize = "RatioNitrousOxideOutput2")] + #[strum( + props( + docs = "The ratio of Nitrous Oxide in device's Output2 network", + value = "144" + ) + )] + RatioNitrousOxideOutput2 = 144u16, + #[strum(serialize = "TotalMolesOutput2")] + #[strum( + props( + docs = "Returns the total moles of the device's Output2 Network", + value = "145" + ) + )] + TotalMolesOutput2 = 145u16, + #[strum(serialize = "CombustionInput")] + #[strum( + props( + docs = "The assess atmosphere is on fire. Returns 1 if device's input network is on fire, 0 if not.", + value = "146" + ) + )] + CombustionInput = 146u16, + #[strum(serialize = "CombustionInput2")] + #[strum( + props( + docs = "The assess atmosphere is on fire. Returns 1 if device's Input2 network is on fire, 0 if not.", + value = "147" + ) + )] + CombustionInput2 = 147u16, + #[strum(serialize = "CombustionOutput")] + #[strum( + props( + docs = "The assess atmosphere is on fire. Returns 1 if device's Output network is on fire, 0 if not.", + value = "148" + ) + )] + CombustionOutput = 148u16, + #[strum(serialize = "CombustionOutput2")] + #[strum( + props( + docs = "The assess atmosphere is on fire. Returns 1 if device's Output2 network is on fire, 0 if not.", + value = "149" + ) + )] + CombustionOutput2 = 149u16, + #[strum(serialize = "OperationalTemperatureEfficiency")] + #[strum( + props( + docs = "How the input pipe's temperature effects the machines efficiency", + value = "150" + ) + )] + OperationalTemperatureEfficiency = 150u16, + #[strum(serialize = "TemperatureDifferentialEfficiency")] + #[strum( + props( + docs = "How the difference between the input pipe and waste pipe temperatures effect the machines efficiency", + value = "151" + ) + )] + TemperatureDifferentialEfficiency = 151u16, + #[strum(serialize = "PressureEfficiency")] + #[strum( + props( + docs = "How the pressure of the input pipe and waste pipe effect the machines efficiency", + value = "152" + ) + )] + PressureEfficiency = 152u16, + #[strum(serialize = "CombustionLimiter")] + #[strum( + props( + docs = "Retards the rate of combustion inside the machine (range: 0-100), with 0 being the slowest rate of combustion and 100 being the fastest", + value = "153" + ) + )] + CombustionLimiter = 153u16, + #[strum(serialize = "Throttle")] + #[strum( + props( + docs = "Increases the rate at which the machine works (range: 0-100)", + value = "154" + ) + )] + Throttle = 154u16, + #[strum(serialize = "Rpm")] + #[strum( + props( + docs = "The number of revolutions per minute that the device's spinning mechanism is doing", + value = "155" + ) + )] + Rpm = 155u16, + #[strum(serialize = "Stress")] + #[strum( + props( + docs = "Machines get stressed when working hard. When Stress reaches 100 the machine will automatically shut down", + value = "156" + ) + )] + Stress = 156u16, + #[strum(serialize = "InterrogationProgress")] + #[strum( + props( + docs = "Progress of this sattellite dish's interrogation of its current target, as a ratio from 0-1", + value = "157" + ) + )] + InterrogationProgress = 157u16, + #[strum(serialize = "TargetPadIndex")] + #[strum( + props( + docs = "The index of the trader landing pad on this devices data network that it will try to call a trader in to land", + value = "158" + ) + )] + TargetPadIndex = 158u16, + #[strum(serialize = "SizeX")] + #[strum( + props( + docs = "Size on the X (right) axis of the object in largeGrids (a largeGrid is 2meters)", + value = "160" + ) + )] + SizeX = 160u16, + #[strum(serialize = "SizeY")] + #[strum( + props( + docs = "Size on the Y(Up) axis of the object in largeGrids (a largeGrid is 2meters)", + value = "161" + ) + )] + SizeY = 161u16, + #[strum(serialize = "SizeZ")] + #[strum( + props( + docs = "Size on the Z(Forward) axis of the object in largeGrids (a largeGrid is 2meters)", + value = "162" + ) + )] + SizeZ = 162u16, + #[strum(serialize = "MinimumWattsToContact")] + #[strum( + props( + docs = "Minimum required amount of watts from the dish hitting the target trader contact to start interrogating the contact", + value = "163" + ) + )] + MinimumWattsToContact = 163u16, + #[strum(serialize = "WattsReachingContact")] + #[strum( + props( + docs = "The amount of watts actually hitting the contact. This is effected by the power of the dish and how far off-axis the dish is from the contact vector", + value = "164" + ) + )] + WattsReachingContact = 164u16, + #[strum(serialize = "Channel0")] + #[strum( + props( + docs = "Channel on a cable network which should be considered volatile", + value = "165" + ) + )] + Channel0 = 165u16, + #[strum(serialize = "Channel1")] + #[strum( + props( + docs = "Channel on a cable network which should be considered volatile", + value = "166" + ) + )] + Channel1 = 166u16, + #[strum(serialize = "Channel2")] + #[strum( + props( + docs = "Channel on a cable network which should be considered volatile", + value = "167" + ) + )] + Channel2 = 167u16, + #[strum(serialize = "Channel3")] + #[strum( + props( + docs = "Channel on a cable network which should be considered volatile", + value = "168" + ) + )] + Channel3 = 168u16, + #[strum(serialize = "Channel4")] + #[strum( + props( + docs = "Channel on a cable network which should be considered volatile", + value = "169" + ) + )] + Channel4 = 169u16, + #[strum(serialize = "Channel5")] + #[strum( + props( + docs = "Channel on a cable network which should be considered volatile", + value = "170" + ) + )] + Channel5 = 170u16, + #[strum(serialize = "Channel6")] + #[strum( + props( + docs = "Channel on a cable network which should be considered volatile", + value = "171" + ) + )] + Channel6 = 171u16, + #[strum(serialize = "Channel7")] + #[strum( + props( + docs = "Channel on a cable network which should be considered volatile", + value = "172" + ) + )] + Channel7 = 172u16, + #[strum(serialize = "LineNumber")] + #[strum( + props( + docs = "The line number of current execution for an integrated circuit running on this device. While this number can be written, use with caution", + value = "173" + ) + )] + LineNumber = 173u16, + #[strum(serialize = "Flush")] + #[strum( + props( + docs = "Set to 1 to activate the flush function on the device", + value = "174" + ) + )] + Flush = 174u16, + #[strum(serialize = "SoundAlert")] + #[strum(props(docs = "Plays a sound alert on the devices speaker", value = "175"))] + SoundAlert = 175u16, + #[strum(serialize = "SolarIrradiance")] + #[strum(props(docs = "", value = "176"))] + SolarIrradiance = 176u16, + #[strum(serialize = "RatioLiquidNitrogen")] + #[strum( + props( + docs = "The ratio of Liquid Nitrogen in device atmosphere", + value = "177" + ) + )] + RatioLiquidNitrogen = 177u16, + #[strum(serialize = "RatioLiquidNitrogenInput")] + #[strum( + props( + docs = "The ratio of Liquid Nitrogen in device's input network", + value = "178" + ) + )] + RatioLiquidNitrogenInput = 178u16, + #[strum(serialize = "RatioLiquidNitrogenInput2")] + #[strum( + props( + docs = "The ratio of Liquid Nitrogen in device's Input2 network", + value = "179" + ) + )] + RatioLiquidNitrogenInput2 = 179u16, + #[strum(serialize = "RatioLiquidNitrogenOutput")] + #[strum( + props( + docs = "The ratio of Liquid Nitrogen in device's Output network", + value = "180" + ) + )] + RatioLiquidNitrogenOutput = 180u16, + #[strum(serialize = "RatioLiquidNitrogenOutput2")] + #[strum( + props( + docs = "The ratio of Liquid Nitrogen in device's Output2 network", + value = "181" + ) + )] + RatioLiquidNitrogenOutput2 = 181u16, + #[strum(serialize = "VolumeOfLiquid")] + #[strum( + props( + docs = "The total volume of all liquids in Liters in the atmosphere", + value = "182" + ) + )] + VolumeOfLiquid = 182u16, + #[strum(serialize = "RatioLiquidOxygen")] + #[strum( + props( + docs = "The ratio of Liquid Oxygen in device's Atmosphere", + value = "183" + ) + )] + RatioLiquidOxygen = 183u16, + #[strum(serialize = "RatioLiquidOxygenInput")] + #[strum( + props( + docs = "The ratio of Liquid Oxygen in device's Input Atmosphere", + value = "184" + ) + )] + RatioLiquidOxygenInput = 184u16, + #[strum(serialize = "RatioLiquidOxygenInput2")] + #[strum( + props( + docs = "The ratio of Liquid Oxygen in device's Input2 Atmosphere", + value = "185" + ) + )] + RatioLiquidOxygenInput2 = 185u16, + #[strum(serialize = "RatioLiquidOxygenOutput")] + #[strum( + props( + docs = "The ratio of Liquid Oxygen in device's device's Output Atmosphere", + value = "186" + ) + )] + RatioLiquidOxygenOutput = 186u16, + #[strum(serialize = "RatioLiquidOxygenOutput2")] + #[strum( + props( + docs = "The ratio of Liquid Oxygen in device's Output2 Atmopshere", + value = "187" + ) + )] + RatioLiquidOxygenOutput2 = 187u16, + #[strum(serialize = "RatioLiquidVolatiles")] + #[strum( + props( + docs = "The ratio of Liquid Volatiles in device's Atmosphere", + value = "188" + ) + )] + RatioLiquidVolatiles = 188u16, + #[strum(serialize = "RatioLiquidVolatilesInput")] + #[strum( + props( + docs = "The ratio of Liquid Volatiles in device's Input Atmosphere", + value = "189" + ) + )] + RatioLiquidVolatilesInput = 189u16, + #[strum(serialize = "RatioLiquidVolatilesInput2")] + #[strum( + props( + docs = "The ratio of Liquid Volatiles in device's Input2 Atmosphere", + value = "190" + ) + )] + RatioLiquidVolatilesInput2 = 190u16, + #[strum(serialize = "RatioLiquidVolatilesOutput")] + #[strum( + props( + docs = "The ratio of Liquid Volatiles in device's device's Output Atmosphere", + value = "191" + ) + )] + RatioLiquidVolatilesOutput = 191u16, + #[strum(serialize = "RatioLiquidVolatilesOutput2")] + #[strum( + props( + docs = "The ratio of Liquid Volatiles in device's Output2 Atmopshere", + value = "192" + ) + )] + RatioLiquidVolatilesOutput2 = 192u16, + #[strum(serialize = "RatioSteam")] + #[strum( + props( + docs = "The ratio of Steam in device's Atmosphere", + value = "193" + ) + )] + RatioSteam = 193u16, + #[strum(serialize = "RatioSteamInput")] + #[strum( + props( + docs = "The ratio of Steam in device's Input Atmosphere", + value = "194" + ) + )] + RatioSteamInput = 194u16, + #[strum(serialize = "RatioSteamInput2")] + #[strum( + props( + docs = "The ratio of Steam in device's Input2 Atmosphere", + value = "195" + ) + )] + RatioSteamInput2 = 195u16, + #[strum(serialize = "RatioSteamOutput")] + #[strum( + props( + docs = "The ratio of Steam in device's device's Output Atmosphere", + value = "196" + ) + )] + RatioSteamOutput = 196u16, + #[strum(serialize = "RatioSteamOutput2")] + #[strum( + props( + docs = "The ratio of Steam in device's Output2 Atmopshere", + value = "197" + ) + )] + RatioSteamOutput2 = 197u16, + #[strum(serialize = "ContactTypeId")] + #[strum(props(docs = "The type id of the contact.", value = "198"))] + ContactTypeId = 198u16, + #[strum(serialize = "RatioLiquidCarbonDioxide")] + #[strum( + props( + docs = "The ratio of Liquid Carbon Dioxide in device's Atmosphere", + value = "199" + ) + )] + RatioLiquidCarbonDioxide = 199u16, + #[strum(serialize = "RatioLiquidCarbonDioxideInput")] + #[strum( + props( + docs = "The ratio of Liquid Carbon Dioxide in device's Input Atmosphere", + value = "200" + ) + )] + RatioLiquidCarbonDioxideInput = 200u16, + #[strum(serialize = "RatioLiquidCarbonDioxideInput2")] + #[strum( + props( + docs = "The ratio of Liquid Carbon Dioxide in device's Input2 Atmosphere", + value = "201" + ) + )] + RatioLiquidCarbonDioxideInput2 = 201u16, + #[strum(serialize = "RatioLiquidCarbonDioxideOutput")] + #[strum( + props( + docs = "The ratio of Liquid Carbon Dioxide in device's device's Output Atmosphere", + value = "202" + ) + )] + RatioLiquidCarbonDioxideOutput = 202u16, + #[strum(serialize = "RatioLiquidCarbonDioxideOutput2")] + #[strum( + props( + docs = "The ratio of Liquid Carbon Dioxide in device's Output2 Atmopshere", + value = "203" + ) + )] + RatioLiquidCarbonDioxideOutput2 = 203u16, + #[strum(serialize = "RatioLiquidPollutant")] + #[strum( + props( + docs = "The ratio of Liquid Pollutant in device's Atmosphere", + value = "204" + ) + )] + RatioLiquidPollutant = 204u16, + #[strum(serialize = "RatioLiquidPollutantInput")] + #[strum( + props( + docs = "The ratio of Liquid Pollutant in device's Input Atmosphere", + value = "205" + ) + )] + RatioLiquidPollutantInput = 205u16, + #[strum(serialize = "RatioLiquidPollutantInput2")] + #[strum( + props( + docs = "The ratio of Liquid Pollutant in device's Input2 Atmosphere", + value = "206" + ) + )] + RatioLiquidPollutantInput2 = 206u16, + #[strum(serialize = "RatioLiquidPollutantOutput")] + #[strum( + props( + docs = "The ratio of Liquid Pollutant in device's device's Output Atmosphere", + value = "207" + ) + )] + RatioLiquidPollutantOutput = 207u16, + #[strum(serialize = "RatioLiquidPollutantOutput2")] + #[strum( + props( + docs = "The ratio of Liquid Pollutant in device's Output2 Atmopshere", + value = "208" + ) + )] + RatioLiquidPollutantOutput2 = 208u16, + #[strum(serialize = "RatioLiquidNitrousOxide")] + #[strum( + props( + docs = "The ratio of Liquid Nitrous Oxide in device's Atmosphere", + value = "209" + ) + )] + RatioLiquidNitrousOxide = 209u16, + #[strum(serialize = "RatioLiquidNitrousOxideInput")] + #[strum( + props( + docs = "The ratio of Liquid Nitrous Oxide in device's Input Atmosphere", + value = "210" + ) + )] + RatioLiquidNitrousOxideInput = 210u16, + #[strum(serialize = "RatioLiquidNitrousOxideInput2")] + #[strum( + props( + docs = "The ratio of Liquid Nitrous Oxide in device's Input2 Atmosphere", + value = "211" + ) + )] + RatioLiquidNitrousOxideInput2 = 211u16, + #[strum(serialize = "RatioLiquidNitrousOxideOutput")] + #[strum( + props( + docs = "The ratio of Liquid Nitrous Oxide in device's device's Output Atmosphere", + value = "212" + ) + )] + RatioLiquidNitrousOxideOutput = 212u16, + #[strum(serialize = "RatioLiquidNitrousOxideOutput2")] + #[strum( + props( + docs = "The ratio of Liquid Nitrous Oxide in device's Output2 Atmopshere", + value = "213" + ) + )] + RatioLiquidNitrousOxideOutput2 = 213u16, + #[strum(serialize = "Progress")] + #[strum( + props( + docs = "Progress of the rocket to the next node on the map expressed as a value between 0-1.", + value = "214" + ) + )] + Progress = 214u16, + #[strum(serialize = "DestinationCode")] + #[strum( + props( + docs = "The Space Map Address of the rockets target Space Map Location", + value = "215" + ) + )] + DestinationCode = 215u16, + #[strum(serialize = "Acceleration")] + #[strum( + props( + docs = "Change in velocity. Rockets that are deccelerating when landing will show this as negative value.", + value = "216" + ) + )] + Acceleration = 216u16, + #[strum(serialize = "ReferenceId")] + #[strum(props(docs = "Unique Reference Identifier for this object", value = "217"))] + ReferenceId = 217u16, + #[strum(serialize = "AutoShutOff")] + #[strum( + props( + docs = "Turns off all devices in the rocket upon reaching destination", + value = "218" + ) + )] + AutoShutOff = 218u16, + #[strum(serialize = "Mass")] + #[strum( + props( + docs = "The total Mass of the rocket in kilograms including fuel and cargo. The more massive the rocket the more fuel will be required to move to a new location in space.", + value = "219" + ) + )] + Mass = 219u16, + #[strum(serialize = "DryMass")] + #[strum( + props( + docs = "The Mass in kilograms of the rocket excluding fuel. The more massive the rocket the more fuel will be required to move to a new location in space.", + value = "220" + ) + )] + DryMass = 220u16, + #[strum(serialize = "Thrust")] + #[strum( + props( + docs = "Total current thrust of all rocket engines on the rocket in Newtons.", + value = "221" + ) + )] + Thrust = 221u16, + #[strum(serialize = "Weight")] + #[strum( + props( + docs = "Weight of Rocket in Newtons (Including fuel and cargo). Weight is effected by local body gravity.", + value = "222" + ) + )] + Weight = 222u16, + #[strum(serialize = "ThrustToWeight")] + #[strum( + props( + docs = "Ratio of thrust to weight of rocket. Weight is effected by local body gravity. A rocket with a low thrust to weight will expend more fuel during launch and landing.", + value = "223" + ) + )] + ThrustToWeight = 223u16, + #[strum(serialize = "TimeToDestination")] + #[strum( + props( + docs = "Estimated time in seconds until rocket arrives at target destination.", + value = "224" + ) + )] + TimeToDestination = 224u16, + #[strum(serialize = "BurnTimeRemaining")] + #[strum( + props( + docs = "Estimated time in seconds until fuel is depleted. Calculated based on current fuel usage.", + value = "225" + ) + )] + BurnTimeRemaining = 225u16, + #[strum(serialize = "AutoLand")] + #[strum( + props( + docs = "Engages the automatic landing algorithm. The rocket will automatically throttle and turn on and off its engines to achieve a smooth landing.", + value = "226" + ) + )] + AutoLand = 226u16, + #[strum(serialize = "ForwardX")] + #[strum( + props( + docs = "The direction the entity is facing expressed as a normalized vector", + value = "227" + ) + )] + ForwardX = 227u16, + #[strum(serialize = "ForwardY")] + #[strum( + props( + docs = "The direction the entity is facing expressed as a normalized vector", + value = "228" + ) + )] + ForwardY = 228u16, + #[strum(serialize = "ForwardZ")] + #[strum( + props( + docs = "The direction the entity is facing expressed as a normalized vector", + value = "229" + ) + )] + ForwardZ = 229u16, + #[strum(serialize = "Orientation")] + #[strum( + props( + docs = "The orientation of the entity in degrees in a plane relative towards the north origin", + value = "230" + ) + )] + Orientation = 230u16, + #[strum(serialize = "VelocityX")] + #[strum( + props(docs = "The world velocity of the entity in the X axis", value = "231") + )] + VelocityX = 231u16, + #[strum(serialize = "VelocityY")] + #[strum( + props(docs = "The world velocity of the entity in the Y axis", value = "232") + )] + VelocityY = 232u16, + #[strum(serialize = "VelocityZ")] + #[strum( + props(docs = "The world velocity of the entity in the Z axis", value = "233") + )] + VelocityZ = 233u16, + #[strum(serialize = "PassedMoles")] + #[strum( + props( + docs = "The number of moles that passed through this device on the previous simulation tick", + value = "234" + ) + )] + PassedMoles = 234u16, + #[strum(serialize = "ExhaustVelocity")] + #[strum(props(docs = "The velocity of the exhaust gas in m/s", value = "235"))] + ExhaustVelocity = 235u16, + #[strum(serialize = "FlightControlRule")] + #[strum( + props( + docs = "Flight control rule of rocket. None = 0, No AutoPilot. Normal = 1, Target Decent Apex of 60m. Alternate = 2, Velocity to High - Full throttle. Alternate2 = 3, Target an appropriate decent velocity as velocity is too low. FinalApproach = 4, Descend towards launch mount in a controlled manner.", + value = "236" + ) + )] + FlightControlRule = 236u16, + #[strum(serialize = "ReEntryAltitude")] + #[strum( + props( + docs = "The altitude that the rocket will begin its decent to the pad. Must be between 25km and 120km", + value = "237" + ) + )] + ReEntryAltitude = 237u16, + #[strum(serialize = "Apex")] + #[strum( + props( + docs = "The lowest altitude that the rocket will reach before it starts travelling upwards again.", + value = "238" + ) + )] + Apex = 238u16, + #[strum(serialize = "EntityState")] + #[strum( + props( + docs = "The current entity state, such as whether it is dead, unconscious or alive, expressed as a state integer.", + value = "239" + ) + )] + EntityState = 239u16, + #[strum(serialize = "DrillCondition")] + #[strum( + props( + docs = "The current condition of the drill head in this devices drill slot. Expressed as a ratio between 0 and 1.", + value = "240" + ) + )] + DrillCondition = 240u16, + #[strum(serialize = "Index")] + #[strum(props(docs = "The current index for the device.", value = "241"))] + Index = 241u16, + #[strum(serialize = "CelestialHash")] + #[strum( + props(docs = "The current hash of the targeted celestial object.", value = "242") + )] + CelestialHash = 242u16, + #[strum(serialize = "AlignmentError")] + #[strum( + props( + docs = "The angular discrepancy between the telescope's current orientation and the target. Indicates how 'off target' the telescope is. Returns NaN when no target.", + value = "243" + ) + )] + AlignmentError = 243u16, + #[strum(serialize = "DistanceAu")] + #[strum( + props( + docs = "The current distance to the celestial object, measured in astronomical units.", + value = "244" + ) + )] + DistanceAu = 244u16, + #[strum(serialize = "OrbitPeriod")] + #[strum( + props( + docs = "The time it takes for an object to complete one full orbit around another object, measured in days. Indicates the duration of the orbital cycle.", + value = "245" + ) + )] + OrbitPeriod = 245u16, + #[strum(serialize = "Inclination")] + #[strum( + props( + docs = "The tilt of an orbit's plane relative to the equatorial plane, measured in degrees. Defines the orbital plane's angle.", + value = "246" + ) + )] + Inclination = 246u16, + #[strum(serialize = "Eccentricity")] + #[strum( + props( + docs = "A measure of how elliptical (oval) an orbit is. Ranges from 0 (a perfect circle) to 1 (a parabolic trajectory).", + value = "247" + ) + )] + Eccentricity = 247u16, + #[strum(serialize = "SemiMajorAxis")] + #[strum( + props( + docs = "The longest radius of an elliptical orbit in astronomical units, measuring half the major axis. Determines the size of the orbit.", + value = "248" + ) + )] + SemiMajorAxis = 248u16, + #[strum(serialize = "DistanceKm")] + #[strum( + props( + docs = "The current distance to the celestial object, measured in kilometers.", + value = "249" + ) + )] + DistanceKm = 249u16, + #[strum(serialize = "CelestialParentHash")] + #[strum( + props( + docs = "The hash for the name of the parent the celestial is orbiting, 0 if there is no parent celestial.", + value = "250" + ) + )] + CelestialParentHash = 250u16, + #[strum(serialize = "TrueAnomaly")] + #[strum( + props( + docs = "An angular parameter that defines the position of a body moving along a Keplerian orbit. It is the angle between the direction of periapsis and the current position of the body, as seen from the main focus of the ellipse (the point around which the object orbits).", + value = "251" + ) + )] + TrueAnomaly = 251u16, + #[strum(serialize = "RatioHydrogen")] + #[strum( + props( + docs = "The ratio of Hydrogen in device's Atmopshere", + value = "252" + ) + )] + RatioHydrogen = 252u16, + #[strum(serialize = "RatioLiquidHydrogen")] + #[strum( + props( + docs = "The ratio of Liquid Hydrogen in device's Atmopshere", + value = "253" + ) + )] + RatioLiquidHydrogen = 253u16, + #[strum(serialize = "RatioPollutedWater")] + #[strum( + props(docs = "The ratio of polluted water in device atmosphere", value = "254") + )] + RatioPollutedWater = 254u16, + #[strum(serialize = "Discover")] + #[strum( + props( + docs = "Progress status of Discovery scan at the rocket's target Space Map Location. Returns a clamped normalised value. If Discovery scan is not available returns -1.", + value = "255" + ) + )] + Discover = 255u16, + #[strum(serialize = "Chart")] + #[strum( + props( + docs = "Progress status of Chart scan at the rocket's target Space Map Location. Returns a clamped normalised value. If Chart scan is not available returns -1.", + value = "256" + ) + )] + Chart = 256u16, + #[strum(serialize = "Survey")] + #[strum( + props( + docs = "Progress status of Survey scan at the rocket's target Space Map Location. Returns a normalised value where 100% surveyed is equal to 1. If Survey scan is not available returns -1.", + value = "257" + ) + )] + Survey = 257u16, + #[strum(serialize = "NavPoints")] + #[strum( + props( + docs = "The number of NavPoints at the rocket's target Space Map Location.", + value = "258" + ) + )] + NavPoints = 258u16, + #[strum(serialize = "ChartedNavPoints")] + #[strum( + props( + docs = "The number of charted NavPoints at the rocket's target Space Map Location.", + value = "259" + ) + )] + ChartedNavPoints = 259u16, + #[strum(serialize = "Sites")] + #[strum( + props( + docs = "The number of Sites that have been discovered at the rockets target Space Map location.", + value = "260" + ) + )] + Sites = 260u16, + #[strum(serialize = "CurrentCode")] + #[strum( + props( + docs = "The Space Map Address of the rockets current Space Map Location", + value = "261" + ) + )] + CurrentCode = 261u16, + #[strum(serialize = "Density")] + #[strum( + props( + docs = "The density of the rocket's target site's mine-able deposit.", + value = "262" + ) + )] + Density = 262u16, + #[strum(serialize = "Richness")] + #[strum( + props( + docs = "The richness of the rocket's target site's mine-able deposit.", + value = "263" + ) + )] + Richness = 263u16, + #[strum(serialize = "Size")] + #[strum( + props( + docs = "The size of the rocket's target site's mine-able deposit.", + value = "264" + ) + )] + Size = 264u16, + #[strum(serialize = "TotalQuantity")] + #[strum( + props( + docs = "The estimated total quantity of resources available to mine at the rocket's target Space Map Site.", + value = "265" + ) + )] + TotalQuantity = 265u16, + #[strum(serialize = "MinedQuantity")] + #[strum( + props( + docs = "The total number of resources that have been mined at the rocket's target Space Map Site.", + value = "266" + ) + )] + MinedQuantity = 266u16, + #[strum(serialize = "BestContactFilter")] + #[strum( + props( + docs = "Filters the satellite's auto selection of targets to a single reference ID.", + value = "267" + ) + )] + BestContactFilter = 267u16, + #[strum(serialize = "NameHash")] + #[strum( + props( + docs = "Provides the hash value for the name of the object as a 32 bit integer.", + value = "268" + ) + )] + NameHash = 268u16, +} +impl TryFrom for LogicType { + type Error = super::ParseError; + fn try_from(value: f64) -> Result>::Error> { + use strum::IntoEnumIterator; + if let Some(enm) = LogicType::iter() + .find(|enm| (f64::from(*enm as u16) - value).abs() < f64::EPSILON) + { + Ok(enm) + } else { + Err(super::ParseError { + enm: value.to_string(), + }) + } + } +} diff --git a/stationeers_data/src/lib.rs b/stationeers_data/src/lib.rs new file mode 100644 index 0000000..a140cca --- /dev/null +++ b/stationeers_data/src/lib.rs @@ -0,0 +1,108 @@ +use std::collections::BTreeMap; + +pub mod templates; +pub mod enums { + use serde_derive::{Deserialize, Serialize}; + use std::fmt::Display; + use strum::{AsRefStr, EnumIter, EnumString}; + + pub mod basic_enums; + pub mod script_enums; + pub mod prefabs; + + #[derive(Debug)] + pub struct ParseError { + pub enm: String, + } + + impl Display for ParseError { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "Unknown enum '{}'", self.enm) + } + } + + impl std::error::Error for ParseError {} + + #[derive( + Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize, EnumString, + )] + pub enum MemoryAccess { + Read, + Write, + ReadWrite, + } + + #[derive( + Debug, + Default, + Clone, + Copy, + PartialEq, + PartialOrd, + Eq, + Ord, + Hash, + Serialize, + Deserialize, + EnumIter, + AsRefStr, + EnumString, + )] + pub enum ConnectionType { + Pipe, + Power, + Data, + Chute, + Elevator, + PipeLiquid, + LandingPad, + LaunchPad, + PowerAndData, + #[serde(other)] + #[default] + None, + } + + #[derive( + Debug, + Default, + Clone, + Copy, + PartialEq, + PartialOrd, + Eq, + Ord, + Hash, + Serialize, + Deserialize, + EnumIter, + AsRefStr, + EnumString, + )] + pub enum ConnectionRole { + Input, + Input2, + Output, + Output2, + Waste, + #[serde(other)] + #[default] + None, + } +} + +#[must_use] +pub fn build_prefab_database() -> Option> { + #[cfg(feature = "prefab_database")] + let _map = Some(database::build_prefab_database()); + #[cfg(not(feature = "prefab_database"))] + let _map = None; + + _map +} + +#[cfg(feature = "prefab_database")] +pub mod database { + mod prefab_map; + pub use prefab_map::build_prefab_database; +} diff --git a/stationeers_data/src/templates.rs b/stationeers_data/src/templates.rs new file mode 100644 index 0000000..bf560db --- /dev/null +++ b/stationeers_data/src/templates.rs @@ -0,0 +1,237 @@ +use std::collections::BTreeMap; + +use crate::enums::{ + basic_enums::{Class as SlotClass, GasType, SortingClass}, + script_enums::{LogicSlotType, LogicType}, + ConnectionRole, ConnectionType, MemoryAccess, +}; +use serde_derive::{Deserialize, Serialize}; + +#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] +#[serde(untagged)] +pub enum ObjectTemplate { + Structure(StructureTemplate), + StructureSlots(StructureSlotsTemplate), + StructureLogic(StructureLogicTemplate), + StructureLogicDevice(StructureLogicDeviceTemplate), + StructureLogicDeviceMemory(StructureLogicDeviceMemoryTemplate), + Item(ItemTemplate), + ItemSlots(ItemSlotsTemplate), + ItemLogic(ItemLogicTemplate), + ItemLogicMemory(ItemLogicMemoryTemplate), +} + +#[allow(dead_code)] +impl ObjectTemplate { + pub fn prefab(&self) -> &PrefabInfo { + use ObjectTemplate::*; + match self { + Structure(s) => &s.prefab, + StructureSlots(s) => &s.prefab, + StructureLogic(s) => &s.prefab, + StructureLogicDevice(s) => &s.prefab, + StructureLogicDeviceMemory(s) => &s.prefab, + Item(i) => &i.prefab, + ItemSlots(i) => &i.prefab, + ItemLogic(i) => &i.prefab, + ItemLogicMemory(i) => &i.prefab, + } + } +} + +impl From for ObjectTemplate { + fn from(value: StructureTemplate) -> Self { + Self::Structure(value) + } +} + +impl From for ObjectTemplate { + fn from(value: StructureSlotsTemplate) -> Self { + Self::StructureSlots(value) + } +} + +impl From for ObjectTemplate { + fn from(value: StructureLogicTemplate) -> Self { + Self::StructureLogic(value) + } +} + +impl From for ObjectTemplate { + fn from(value: StructureLogicDeviceTemplate) -> Self { + Self::StructureLogicDevice(value) + } +} + +impl From for ObjectTemplate { + fn from(value: StructureLogicDeviceMemoryTemplate) -> Self { + Self::StructureLogicDeviceMemory(value) + } +} + +impl From for ObjectTemplate { + fn from(value: ItemTemplate) -> Self { + Self::Item(value) + } +} + +impl From for ObjectTemplate { + fn from(value: ItemSlotsTemplate) -> Self { + Self::ItemSlots(value) + } +} + +impl From for ObjectTemplate { + fn from(value: ItemLogicTemplate) -> Self { + Self::ItemLogic(value) + } +} + +impl From for ObjectTemplate { + fn from(value: ItemLogicMemoryTemplate) -> Self { + Self::ItemLogicMemory(value) + } +} + +#[derive(Clone, Debug, PartialEq, PartialOrd, Eq, Ord, Hash, Serialize, Deserialize)] +pub struct PrefabInfo { + pub prefab_name: String, + pub prefab_hash: i32, + pub desc: String, + pub name: String, +} +#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] +pub struct SlotInfo { + pub name: String, + pub typ: SlotClass, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] +pub struct LogicInfo { + pub logic_slot_types: BTreeMap>, + pub logic_types: BTreeMap, + pub modes: Option>, + pub transmission_receiver: bool, + pub wireless_logic: bool, + pub circuit_holder: bool, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] +pub struct ItemInfo { + pub consumable: bool, + pub filter_type: Option, + pub ingredient: bool, + pub max_quantity: u32, + pub reagents: Option>, + pub slot_class: SlotClass, + pub sorting_class: SortingClass, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd, Eq, Ord, Hash, Serialize, Deserialize)] +pub struct ConnectionInfo { + pub typ: ConnectionType, + pub role: ConnectionRole, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] +pub struct DeviceInfo { + pub connection_list: Vec, + pub device_pins_length: Option, + pub has_activate_state: bool, + pub has_atmosphere: bool, + pub has_color_state: bool, + pub has_lock_state: bool, + pub has_mode_state: bool, + pub has_on_off_state: bool, + pub has_open_state: bool, + pub has_reagents: bool, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd, Eq, Ord, Hash, Serialize, Deserialize)] +pub struct StructureInfo { + pub small_grid: bool, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd, Eq, Ord, Hash, Serialize, Deserialize)] +pub struct Instruction { + pub description: String, + pub typ: String, + pub value: i64, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] +pub struct MemoryInfo { + pub instructions: Option>, + pub memory_access: MemoryAccess, + pub memory_size: u32, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] +pub struct StructureTemplate { + pub prefab: PrefabInfo, + pub structure: StructureInfo, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] +pub struct StructureSlotsTemplate { + pub prefab: PrefabInfo, + pub structure: StructureInfo, + pub slots: Vec, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] +pub struct StructureLogicTemplate { + pub prefab: PrefabInfo, + pub structure: StructureInfo, + pub logic: LogicInfo, + pub slots: Vec, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] +pub struct StructureLogicDeviceTemplate { + pub prefab: PrefabInfo, + pub structure: StructureInfo, + pub logic: LogicInfo, + pub slots: Vec, + pub device: DeviceInfo, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] +pub struct StructureLogicDeviceMemoryTemplate { + pub prefab: PrefabInfo, + pub structure: StructureInfo, + pub logic: LogicInfo, + pub slots: Vec, + pub device: DeviceInfo, + pub memory: MemoryInfo, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] +pub struct ItemTemplate { + pub prefab: PrefabInfo, + pub item: ItemInfo, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] +pub struct ItemSlotsTemplate { + pub prefab: PrefabInfo, + pub item: ItemInfo, + pub slots: Vec, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] +pub struct ItemLogicTemplate { + pub prefab: PrefabInfo, + pub item: ItemInfo, + pub logic: LogicInfo, + pub slots: Vec, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] +pub struct ItemLogicMemoryTemplate { + pub prefab: PrefabInfo, + pub item: ItemInfo, + pub logic: LogicInfo, + pub slots: Vec, + pub memory: MemoryInfo, +} diff --git a/xtask/Cargo.toml b/xtask/Cargo.toml index 1ce6807..205ecaf 100644 --- a/xtask/Cargo.toml +++ b/xtask/Cargo.toml @@ -4,6 +4,7 @@ version.workspace = true edition.workspace = true [dependencies] +stationeers_data = { path = "../stationeers_data" } clap = { version = "4.5.4", features = ["derive", "env"] } color-eyre = "0.6.3" convert_case = "0.6.0" @@ -11,15 +12,21 @@ indexmap = { version = "2.2.6", features = ["serde"] } # onig = "6.4.0" phf_codegen = "0.11.2" regex = "1.10.4" -serde = "1.0.200" -serde_derive = "1.0.200" +serde = "1.0.202" +serde_derive = "1.0.202" serde_ignored = "0.1.10" -serde_json = "1.0.116" +serde_json = "1.0.117" serde_path_to_error = "0.1.16" serde_with = "3.8.1" textwrap = { version = "0.16.1", default-features = false } -thiserror = "1.0.58" +thiserror = "1.0.61" onig = { git = "https://github.com/rust-onig/rust-onig", revision = "fa90c0e97e90a056af89f183b23cd417b59ee6a2" } tracing = "0.1.40" - +quote = "1.0.36" +prettyplease = "0.2.20" +syn = "2.0.64" +proc-macro2 = "1.0.82" +num-integer = "0.1.46" +num = "0.4.3" +uneval = "0.2.4" diff --git a/xtask/src/generate.rs b/xtask/src/generate.rs index a571fd1..a7ece17 100644 --- a/xtask/src/generate.rs +++ b/xtask/src/generate.rs @@ -1,6 +1,7 @@ use color_eyre::eyre; +use quote::ToTokens; -use std::{collections::BTreeMap, process::Command}; +use std::collections::BTreeMap; use crate::{enums::Enums, stationpedia::Stationpedia}; @@ -12,6 +13,7 @@ mod utils; pub fn generate( stationpedia_path: &std::path::Path, workspace: &std::path::Path, + modules: &[&str], ) -> color_eyre::Result<()> { let mut pedia: Stationpedia = parse_json(&mut serde_json::Deserializer::from_reader( std::io::BufReader::new(std::fs::File::open( @@ -37,21 +39,41 @@ pub fn generate( std::io::BufReader::new(std::fs::File::open(stationpedia_path.join("Enums.json"))?), ))?; - database::generate_database(&pedia, &enums, workspace)?; - let enums_files = enums::generate_enums(&pedia, &enums, workspace)?; - let inst_files = instructions::generate_instructions(&pedia, workspace)?; + let mut generated_files = Vec::new(); + if modules.contains(&"enums") { + if modules.len() > 1 { + eprintln!( + "generating enums alone, recompile the xtask and run again with other modules." + ) + } else { + eprintln!("generating enums..."); + } - let generated_files = [enums_files.as_slice(), inst_files.as_slice()].concat(); + let enums_files = enums::generate_enums(&pedia, &enums, workspace)?; + eprintln!("Formatting generated files..."); + for file in &enums_files { + prepend_generated_comment_and_format(file)?; + } + return Ok(()); + } + + if modules.contains(&"database") { + eprintln!("generating database..."); + + let database_files = database::generate_database(&pedia, &enums, workspace)?; + generated_files.extend(database_files); + } + + if modules.contains(&"instructions") { + eprintln!("generating instructions..."); + let inst_files = instructions::generate_instructions(&pedia, workspace)?; + generated_files.extend(inst_files); + } eprintln!("Formatting generated files..."); for file in &generated_files { - prepend_generated_comment(file)?; + prepend_generated_comment_and_format(file)?; } - let mut cmd = Command::new("cargo"); - cmd.current_dir(workspace); - cmd.arg("fmt").arg("--"); - cmd.args(&generated_files); - cmd.status()?; Ok(()) } @@ -71,29 +93,34 @@ pub fn parse_json<'a, T: serde::Deserialize<'a>>( }) } -fn prepend_generated_comment(file_path: &std::path::Path) -> color_eyre::Result<()> { +fn format_rust(content: impl ToTokens) -> color_eyre::Result { + let content = syn::parse2(content.to_token_stream())?; + Ok(prettyplease::unparse(&content)) +} + +fn prepend_generated_comment_and_format(file_path: &std::path::Path) -> color_eyre::Result<()> { use std::io::Write; let tmp_path = file_path.with_extension("rs.tmp"); { let mut tmp = std::fs::File::create(&tmp_path)?; - let mut src = std::fs::File::open(file_path)?; - write!( - &mut tmp, - "// ================================================= \n\ - // !! <-----> DO NOT MODIFY <-----> !! \n\ - // \n\ - // This module was automatically generated by an - // xtask \n\ - // \n\ - // run `cargo xtask generate` from the workspace \n\ - // to regenerate \n\ - // \n\ - // ================================================= \n\ - \n\ - \n\ - " - )?; - std::io::copy(&mut src, &mut tmp)?; + let src = syn::parse_file(&std::fs::read_to_string(file_path)?)?; + + let formated = format_rust(quote::quote! { + // ================================================= + // !! <-----> DO NOT MODIFY <-----> !! + // + // This module was automatically generated by an + // xtask + // + // run `cargo xtask generate` from the workspace + // to regenerate + // + // ================================================= + + #src + })?; + + write!(&mut tmp, "{formated}")?; } std::fs::remove_file(file_path)?; std::fs::rename(&tmp_path, file_path)?; diff --git a/xtask/src/generate/database.rs b/xtask/src/generate/database.rs index 709bfde..a658e48 100644 --- a/xtask/src/generate/database.rs +++ b/xtask/src/generate/database.rs @@ -1,5 +1,10 @@ -use std::{collections::BTreeMap, io::Write}; +use std::{ + collections::BTreeMap, + io::{BufWriter, Write}, + path::PathBuf, +}; +use quote::quote; use serde_derive::{Deserialize, Serialize}; use crate::{ @@ -7,11 +12,18 @@ use crate::{ stationpedia::{self, Page, Stationpedia}, }; +use stationeers_data::templates::{ + ConnectionInfo, DeviceInfo, Instruction, ItemInfo, ItemLogicMemoryTemplate, ItemLogicTemplate, + ItemSlotsTemplate, ItemTemplate, LogicInfo, MemoryInfo, ObjectTemplate, PrefabInfo, SlotInfo, + StructureInfo, StructureLogicDeviceMemoryTemplate, StructureLogicDeviceTemplate, + StructureLogicTemplate, StructureSlotsTemplate, StructureTemplate, +}; + pub fn generate_database( stationpedia: &stationpedia::Stationpedia, enums: &enums::Enums, workspace: &std::path::Path, -) -> color_eyre::Result<()> { +) -> color_eyre::Result> { let templates = generate_templates(stationpedia)?; eprintln!("Writing prefab database ..."); @@ -104,6 +116,58 @@ pub fn generate_database( let mut database_file = std::io::BufWriter::new(std::fs::File::create(database_path)?); serde_json::to_writer(&mut database_file, &db)?; database_file.flush()?; + + let prefab_map_path = workspace + .join("stationeers_data") + .join("src") + .join("database") + .join("prefab_map.rs"); + let mut prefab_map_file = std::io::BufWriter::new(std::fs::File::create(&prefab_map_path)?); + write_prefab_map(&mut prefab_map_file, &db.prefabs)?; + + Ok(vec![prefab_map_path]) +} + +fn write_prefab_map( + writer: &mut BufWriter, + prefabs: &BTreeMap, +) -> color_eyre::Result<()> { + write!( + writer, + "{}", + quote! { + use crate::enums::script_enums::*; + use crate::enums::basic_enums::*; + use crate::enums::{MemoryAccess, ConnectionType, ConnectionRole}; + use crate::templates::*; + } + )?; + let entries = prefabs + .values() + .map(|prefab| { + let hash = prefab.prefab().prefab_hash; + let obj = syn::parse_str::(&uneval::to_string(prefab)?)?; + let entry = quote! { + ( + #hash, + #obj.into(), + ) + }; + Ok(entry) + }) + .collect::, color_eyre::Report>>()?; + write!( + writer, + "{}", + quote! { + pub fn build_prefab_database() -> std::collections::BTreeMap { + #[allow(clippy::unreadable_literal)] + std::collections::BTreeMap::from([ + #(#entries),* + ]) + } + }, + )?; Ok(()) } @@ -360,7 +424,10 @@ fn slot_inserts_to_info(slots: &[stationpedia::SlotInsert]) -> Vec { tmp.iter() .map(|slot| SlotInfo { name: slot.slot_name.clone(), - typ: slot.slot_type.clone(), + typ: slot + .slot_type + .parse() + .unwrap_or_else(|err| panic!("faild to parse slot class: {err}")), }) .collect() } @@ -386,73 +453,45 @@ pub struct ObjectDatabase { pub logicable_items: Vec, } -#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[serde(untagged)] -pub enum ObjectTemplate { - Structure(StructureTemplate), - StructureSlots(StructureSlotsTemplate), - StructureLogic(StructureLogicTemplate), - StructureLogicDevice(StructureLogicDeviceTemplate), - StructureLogicDeviceMemory(StructureLogicDeviceMemoryTemplate), - Item(ItemTemplate), - ItemSlots(ItemSlotsTemplate), - ItemLogic(ItemLogicTemplate), - ItemLogicMemory(ItemLogicMemoryTemplate), -} - -impl ObjectTemplate { - fn prefab(&self) -> &PrefabInfo { - use ObjectTemplate::*; - match self { - Structure(s) => &s.prefab, - StructureSlots(s) => &s.prefab, - StructureLogic(s) => &s.prefab, - StructureLogicDevice(s) => &s.prefab, - StructureLogicDeviceMemory(s) => &s.prefab, - Item(i) => &i.prefab, - ItemSlots(i) => &i.prefab, - ItemLogic(i) => &i.prefab, - ItemLogicMemory(i) => &i.prefab, - } - } -} - -#[derive(Clone, Debug, PartialEq, PartialOrd, Eq, Ord, Hash, Serialize, Deserialize)] -#[serde(deny_unknown_fields)] -#[serde(rename_all = "camelCase")] -pub struct PrefabInfo { - pub prefab_name: String, - pub prefab_hash: i32, - pub desc: String, - pub name: String, -} - -#[derive(Clone, Debug, PartialEq, PartialOrd, Eq, Ord, Hash, Serialize, Deserialize)] -#[serde(deny_unknown_fields)] -#[serde(rename_all = "camelCase")] -pub struct SlotInfo { - pub name: String, - pub typ: String, -} - -#[derive(Clone, Debug, PartialEq, PartialOrd, Eq, Ord, Hash, Serialize, Deserialize)] -#[serde(deny_unknown_fields)] -#[serde(rename_all = "camelCase")] -pub struct LogicInfo { - pub logic_slot_types: BTreeMap, - pub logic_types: stationpedia::LogicTypes, - #[serde(skip_serializing_if = "Option::is_none")] - pub modes: Option>, - pub transmission_receiver: bool, - pub wireless_logic: bool, - pub circuit_holder: bool, -} - impl From<&stationpedia::LogicInfo> for LogicInfo { fn from(value: &stationpedia::LogicInfo) -> Self { LogicInfo { - logic_slot_types: value.logic_slot_types.clone(), - logic_types: value.logic_types.clone(), + logic_slot_types: value + .logic_slot_types + .iter() + .map(|(index, slt_map)| { + ( + *index, + slt_map + .slot_types + .iter() + .map(|(key, val)| { + ( + key.parse().unwrap_or_else(|err| { + panic!("failed to parse logic slot type: {err}") + }), + val.parse().unwrap_or_else(|err| { + panic!("failed to parse memory access: {err}") + }), + ) + }) + .collect(), + ) + }) + .collect(), + logic_types: value + .logic_types + .types + .iter() + .map(|(key, val)| { + ( + key.parse() + .unwrap_or_else(|err| panic!("failed to parse logic type: {err}")), + val.parse() + .unwrap_or_else(|err| panic!("failed to parse memory access: {err}")), + ) + }) + .collect(), modes: None, transmission_receiver: false, wireless_logic: false, @@ -461,63 +500,32 @@ impl From<&stationpedia::LogicInfo> for LogicInfo { } } -#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[serde(deny_unknown_fields)] -#[serde(rename_all = "camelCase")] -pub struct ItemInfo { - pub consumable: bool, - #[serde(skip_serializing_if = "Option::is_none")] - pub filter_type: Option, - pub ingredient: bool, - pub max_quantity: u32, - #[serde(skip_serializing_if = "Option::is_none")] - pub reagents: Option>, - pub slot_class: String, - pub sorting_class: String, -} - impl From<&stationpedia::Item> for ItemInfo { fn from(item: &stationpedia::Item) -> Self { ItemInfo { consumable: item.consumable.unwrap_or(false), - filter_type: item.filter_type.clone(), + filter_type: item.filter_type.as_ref().map(|typ| { + typ.parse() + .unwrap_or_else(|err| panic!("failed to parse filter type: {err}")) + }), ingredient: item.ingredient.unwrap_or(false), max_quantity: item.max_quantity.unwrap_or(1.0) as u32, reagents: item .reagents .as_ref() .map(|map| map.iter().map(|(key, val)| (key.clone(), *val)).collect()), - slot_class: item.slot_class.clone(), - sorting_class: item.sorting_class.clone(), + slot_class: item + .slot_class + .parse() + .unwrap_or_else(|err| panic!("failed to parse slot class: {err}")), + sorting_class: item + .sorting_class + .parse() + .unwrap_or_else(|err| panic!("failed to parse sorting class: {err}")), } } } -#[derive(Clone, Debug, PartialEq, PartialOrd, Eq, Ord, Hash, Serialize, Deserialize)] -#[serde(deny_unknown_fields)] -#[serde(rename_all = "camelCase")] -pub struct ConnectionInfo { - pub typ: String, - pub role: String, -} - -#[derive(Clone, Debug, PartialEq, PartialOrd, Eq, Ord, Hash, Serialize, Deserialize)] -#[serde(deny_unknown_fields)] -#[serde(rename_all = "camelCase")] -pub struct DeviceInfo { - pub connection_list: Vec, - #[serde(skip_serializing_if = "Option::is_none")] - pub device_pins_length: Option, - pub has_activate_state: bool, - pub has_atmosphere: bool, - pub has_color_state: bool, - pub has_lock_state: bool, - pub has_mode_state: bool, - pub has_on_off_state: bool, - pub has_open_state: bool, - pub has_reagents: bool, -} - impl From<&stationpedia::Device> for DeviceInfo { fn from(value: &stationpedia::Device) -> Self { DeviceInfo { @@ -525,8 +533,12 @@ impl From<&stationpedia::Device> for DeviceInfo { .connection_list .iter() .map(|(typ, role)| ConnectionInfo { - typ: typ.to_string(), - role: role.to_string(), + typ: typ + .parse() + .unwrap_or_else(|err| panic!("failed to parse connection type: {err}")), + role: role + .parse() + .unwrap_or_else(|err| panic!("failed to parse connection role: {err}")), }) .collect(), device_pins_length: value.devices_length, @@ -542,13 +554,6 @@ impl From<&stationpedia::Device> for DeviceInfo { } } -#[derive(Clone, Debug, PartialEq, PartialOrd, Eq, Ord, Hash, Serialize, Deserialize)] -#[serde(deny_unknown_fields)] -#[serde(rename_all = "camelCase")] -pub struct StructureInfo { - pub small_grid: bool, -} - impl From<&stationpedia::Structure> for StructureInfo { fn from(value: &stationpedia::Structure) -> Self { StructureInfo { @@ -556,14 +561,6 @@ impl From<&stationpedia::Structure> for StructureInfo { } } } -#[derive(Clone, Debug, PartialEq, PartialOrd, Eq, Ord, Hash, Serialize, Deserialize)] -#[serde(deny_unknown_fields)] -#[serde(rename_all = "camelCase")] -pub struct Instruction { - pub description: String, - pub typ: String, - pub value: i64, -} impl From<&stationpedia::Instruction> for Instruction { fn from(value: &stationpedia::Instruction) -> Self { @@ -575,16 +572,6 @@ impl From<&stationpedia::Instruction> for Instruction { } } -#[derive(Clone, Debug, PartialEq, PartialOrd, Eq, Ord, Hash, Serialize, Deserialize)] -#[serde(deny_unknown_fields)] -#[serde(rename_all = "camelCase")] -pub struct MemoryInfo { - #[serde(skip_serializing_if = "Option::is_none")] - pub instructions: Option>, - pub memory_access: String, - pub memory_size: i64, -} - impl From<&stationpedia::Memory> for MemoryInfo { fn from(value: &stationpedia::Memory) -> Self { MemoryInfo { @@ -594,96 +581,11 @@ impl From<&stationpedia::Memory> for MemoryInfo { .map(|(key, value)| (key.clone(), value.into())) .collect() }), - memory_access: value.memory_access.clone(), + memory_access: value + .memory_access + .parse() + .unwrap_or_else(|err| panic!("failed to parse memory access: {err}")), memory_size: value.memory_size, } } } - -#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[serde(deny_unknown_fields)] -#[serde(rename_all = "camelCase")] -pub struct StructureTemplate { - pub prefab: PrefabInfo, - pub structure: StructureInfo, -} - -#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[serde(deny_unknown_fields)] -#[serde(rename_all = "camelCase")] -pub struct StructureSlotsTemplate { - pub prefab: PrefabInfo, - pub structure: StructureInfo, - pub slots: Vec, -} - -#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[serde(deny_unknown_fields)] -#[serde(rename_all = "camelCase")] -pub struct StructureLogicTemplate { - pub prefab: PrefabInfo, - pub structure: StructureInfo, - pub logic: LogicInfo, - pub slots: Vec, -} - -#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[serde(deny_unknown_fields)] -#[serde(rename_all = "camelCase")] -pub struct StructureLogicDeviceTemplate { - pub prefab: PrefabInfo, - pub structure: StructureInfo, - pub logic: LogicInfo, - pub slots: Vec, - pub device: DeviceInfo, -} - -#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[serde(deny_unknown_fields)] -#[serde(rename_all = "camelCase")] -pub struct StructureLogicDeviceMemoryTemplate { - pub prefab: PrefabInfo, - pub structure: StructureInfo, - pub logic: LogicInfo, - pub slots: Vec, - pub device: DeviceInfo, - pub memory: MemoryInfo, -} - -#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[serde(deny_unknown_fields)] -#[serde(rename_all = "camelCase")] -pub struct ItemTemplate { - pub prefab: PrefabInfo, - pub item: ItemInfo, -} - -#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[serde(deny_unknown_fields)] -#[serde(rename_all = "camelCase")] -pub struct ItemSlotsTemplate { - pub prefab: PrefabInfo, - pub item: ItemInfo, - pub slots: Vec, -} - -#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[serde(deny_unknown_fields)] -#[serde(rename_all = "camelCase")] -pub struct ItemLogicTemplate { - pub prefab: PrefabInfo, - pub item: ItemInfo, - pub logic: LogicInfo, - pub slots: Vec, -} - -#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] -#[serde(deny_unknown_fields)] -#[serde(rename_all = "camelCase")] -pub struct ItemLogicMemoryTemplate { - pub prefab: PrefabInfo, - pub item: ItemInfo, - pub logic: LogicInfo, - pub slots: Vec, - pub memory: MemoryInfo, -} diff --git a/xtask/src/generate/enums.rs b/xtask/src/generate/enums.rs index fe83464..7f38d6f 100644 --- a/xtask/src/generate/enums.rs +++ b/xtask/src/generate/enums.rs @@ -6,17 +6,17 @@ use std::{ path::PathBuf, str::FromStr, }; + +use proc_macro2::{Ident, Span, TokenStream}; +use quote::quote; + pub fn generate_enums( stationpedia: &crate::stationpedia::Stationpedia, enums: &crate::enums::Enums, workspace: &std::path::Path, ) -> color_eyre::Result> { println!("Writing Enum Listings ..."); - let enums_path = workspace - .join("ic10emu") - .join("src") - .join("vm") - .join("enums"); + let enums_path = workspace.join("stationeers_data").join("src").join("enums"); if !enums_path.exists() { std::fs::create_dir(&enums_path)?; } @@ -81,172 +81,136 @@ pub fn generate_enums( ]) } +#[allow(clippy::type_complexity)] fn write_enum_aggragate_mod( writer: &mut BufWriter, enums: &BTreeMap, ) -> color_eyre::Result<()> { - let variant_lines = enums - .iter() - .map(|(name, listing)| { - let name = if name.is_empty() || name == "_unnamed" { - "Unnamed" - } else { - name - }; - format!( - " {}({}),", - name.to_case(Case::Pascal), - listing.enum_name.to_case(Case::Pascal) - ) - }) - .collect::>() - .join("\n"); - let value_arms = enums - .keys() - .map(|name| { - let variant_name = (if name.is_empty() || name == "_unnamed" { - "Unnamed" - } else { - name - }) - .to_case(Case::Pascal); - format!(" Self::{variant_name}(enm) => *enm as u32,",) - }) - .collect::>() - .join("\n"); - - let get_str_arms = enums - .keys() - .map(|name| { - let variant_name = (if name.is_empty() || name == "_unnamed" { - "Unnamed" - } else { - name - }) - .to_case(Case::Pascal); - format!(" Self::{variant_name}(enm) => enm.get_str(prop),",) - }) - .collect::>() - .join("\n"); - let iter_chain = enums + let ( + (variant_lines, value_arms), + ( + (get_str_arms, iter_chain), + (from_str_arms_iter, display_arms) + ) + ): ( + (Vec<_>, Vec<_>), + ((Vec<_>, Vec<_>), (Vec<_>, Vec<_>)), + ) = enums .iter() .enumerate() .map(|(index, (name, listing))| { - let variant_name = (if name.is_empty() || name == "_unnamed" { + let variant_name: TokenStream = if name.is_empty() || name == "_unnamed" { "Unnamed" } else { name - }) - .to_case(Case::Pascal); - let enum_name = listing.enum_name.to_case(Case::Pascal); - if index == 0 { - format!("{enum_name}::iter().map(Self::{variant_name})") - } else { - format!(".chain({enum_name}::iter().map(Self::{variant_name}))") } - }) - .collect::>() - .join("\n"); - write!( - writer, - "pub enum BasicEnum {{\n\ - {variant_lines} - }}\n\ - impl BasicEnum {{\n \ - pub fn get_value(&self) -> u32 {{\n \ - match self {{\n \ - {value_arms}\n \ - }}\n \ - }}\n\ - pub fn get_str(&self, prop: &str) -> Option<&'static str> {{\n \ - match self {{\n \ - {get_str_arms}\n \ - }}\n \ - }}\n\ - pub fn iter() -> impl std::iter::Iterator {{\n \ - use strum::IntoEnumIterator;\n \ - {iter_chain}\n \ - }} - }}\n\ - " - )?; - let arms = enums - .iter() - .flat_map(|(name, listing)| { - let variant_name = (if name.is_empty() || name == "_unnamed" { - "Unnamed" - } else { - name - }) - .to_case(Case::Pascal); - let name = if name == "_unnamed" { - "".to_string() - } else { - name.clone() - }; - let enum_name = listing.enum_name.to_case(Case::Pascal); - listing.values.keys().map(move |variant| { - let sep = if name.is_empty() { "" } else { "." }; - let pat = format!("{name}{sep}{variant}").to_lowercase(); - let variant = variant.to_case(Case::Pascal); - format!("\"{pat}\" => Ok(Self::{variant_name}({enum_name}::{variant})),") - }) - }) - .collect::>() - .join("\n "); - write!( - writer, - "\ - impl std::str::FromStr for BasicEnum {{\n \ - type Err = crate::errors::ParseError;\n \ - fn from_str(s: &str) -> Result {{\n \ - let end = s.len();\n \ - match s.to_lowercase().as_str() {{\n \ - {arms}\n \ - _ => Err(crate::errors::ParseError{{ line: 0, start: 0, end, msg: format!(\"Unknown enum '{{}}'\", s) }})\n \ - }}\n \ - }}\n\ - }}\ - " - )?; - let display_arms = enums - .keys() - .map(|name| { - let variant_name = (if name.is_empty() || name == "_unnamed" { - "Unnamed" - } else { - name - }) - .to_case(Case::Pascal); - let name = if name == "_unnamed" { - "".to_string() - } else { - name.clone() - }; - let sep = if name.is_empty() || name == "_unnamed" { + .to_case(Case::Pascal) + .parse() + .unwrap(); + let fromstr_variant_name = variant_name.clone(); + let enum_name: TokenStream = listing.enum_name.to_case(Case::Pascal).parse().unwrap(); + let display_sep = if name.is_empty() || name == "_unnamed" { "" } else { "." }; - let pat = format!("{name}{sep}{{}}"); - format!(" Self::{variant_name}(enm) => write!(f, \"{pat}\", enm),",) + let display_pat = format!("{name}{display_sep}{{}}"); + let name: TokenStream = if name == "_unnamed" { + "".to_string() + } else { + name.clone() + } + .parse() + .unwrap(); + ( + ( + quote! { + #variant_name(#enum_name), + }, + quote! { + Self::#variant_name(enm) => *enm as u32, + }, + ), + ( + ( + quote! { + Self::#variant_name(enm) => enm.get_str(prop), + }, + if index == 0 { + quote! { + #enum_name::iter().map(Self::#variant_name) + } + } else { + quote! { + .chain(#enum_name::iter().map(Self::#variant_name)) + } + }, + ), + ( + listing.values.keys().map(move |variant| { + let sep = if name.is_empty() { "" } else { "." }; + let fromstr_pat = format!("{name}{sep}{variant}").to_lowercase(); + let variant: TokenStream = variant.to_case(Case::Pascal).parse().unwrap(); + quote! { + #fromstr_pat => Ok(Self::#fromstr_variant_name(#enum_name::#variant)), + } + }), + quote! { + Self::#variant_name(enm) => write!(f, #display_pat, enm), + }, + ), + ), + ) }) - .collect::>() - .join("\n "); - write!( - writer, - "\ - impl std::fmt::Display for BasicEnum {{\n \ - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {{\n \ - match self {{\n \ - {display_arms}\n \ - }}\n \ - }}\n\ - }}\ - " - )?; + .unzip(); + + let from_str_arms = from_str_arms_iter.into_iter().flatten().collect::>(); + + let tokens = quote! { + pub enum BasicEnum { + #(#variant_lines)* + } + + impl BasicEnum { + pub fn get_value(&self) -> u32 { + match self { + #(#value_arms)* + } + } + pub fn get_str(&self, prop: &str) -> Option<&'static str> { + match self { + #(#get_str_arms)* + } + } + pub fn iter() -> impl std::iter::Iterator { + use strum::IntoEnumIterator; + #(#iter_chain)* + } + } + + impl std::str::FromStr for BasicEnum { + type Err = super::ParseError; + fn from_str(s: &str) -> Result { + match s.to_lowercase().as_str() { + #(#from_str_arms)* + _ => Err(super::ParseError { enm: s.to_string() }) + } + } + } + + impl std::fmt::Display for BasicEnum { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + #(#display_arms)* + } + } + } + + }; + write!(writer, "{tokens}",)?; Ok(()) } + pub fn write_enum_listing( writer: &mut BufWriter, enm: &crate::enums::EnumListing, @@ -357,10 +321,13 @@ fn write_repr_enum_use_header( ) -> color_eyre::Result<()> { write!( writer, - "use serde_derive::{{Deserialize, Serialize}};\n\ - use strum::{{\n \ - AsRefStr, Display, EnumIter, EnumProperty, EnumString, FromRepr,\n\ - }};\n" + "{}", + quote! { + use serde_derive::{{Deserialize, Serialize}}; + use strum::{ + AsRefStr, Display, EnumIter, EnumProperty, EnumString, FromRepr, + }; + } )?; Ok(()) } @@ -369,14 +336,15 @@ fn write_repr_basic_use_header( writer: &mut BufWriter, script_enums: &[&crate::enums::EnumListing], ) -> color_eyre::Result<()> { + let enums = script_enums + .iter() + .map(|enm| Ident::new(&enm.enum_name.to_case(Case::Pascal), Span::call_site())) + .collect::>(); + write!( writer, - "use crate::vm::enums::script_enums::{{ {} }};", - script_enums - .iter() - .map(|enm| enm.enum_name.to_case(Case::Pascal)) - .collect::>() - .join(", ") + "{}", + quote! {use super::script_enums::{ #(#enums),*};}, )?; Ok(()) } @@ -388,60 +356,104 @@ fn write_repr_enum<'a, T: std::io::Write, I, P>( use_phf: bool, ) -> color_eyre::Result<()> where - P: Display + FromStr + Ord + 'a, + P: Display + FromStr + num::integer::Integer + num::cast::AsPrimitive + 'a, I: IntoIterator)>, { - let additional_strum = if use_phf { "#[strum(use_phf)]\n" } else { "" }; - let repr = std::any::type_name::

(); + let additional_strum = if use_phf { + quote! {#[strum(use_phf)]} + } else { + TokenStream::new() + }; + let repr = Ident::new(std::any::type_name::

(), Span::call_site()); let mut sorted: Vec<_> = variants.into_iter().collect::>(); sorted.sort_by_key(|(_, variant)| &variant.value); - let default_derive = if sorted + let mut derives = [ + "Debug", + "Display", + "Clone", + "Copy", + "PartialEq", + "Eq", + "PartialOrd", + "Ord", + "Hash", + "EnumString", + "AsRefStr", + "EnumProperty", + "EnumIter", + "FromRepr", + "Serialize", + "Deserialize", + ] + .into_iter() + .map(|d| Ident::new(d, Span::call_site())) + .collect::>(); + if sorted .iter() .any(|(name, _)| name == "None" || name == "Default") { - "Default, " - } else { - "" - }; + derives.insert(0, Ident::new("Default", Span::call_site())); + } + + let variants = sorted + .iter() + .map(|(name, variant)| { + let variant_name = Ident::new( + &name.replace('.', "").to_case(Case::Pascal), + Span::call_site(), + ); + let mut props = Vec::new(); + if variant.deprecated { + props.push(quote! {deprecated = "true"}); + } + for (prop_name, prop_val) in &variant.props { + let prop_name = Ident::new(prop_name, Span::call_site()); + let val_string = prop_val.to_string(); + props.push(quote! { #prop_name = #val_string }); + } + let val: TokenStream = format!("{}{repr}", variant.value).parse().unwrap(); + let val_string = variant.value.as_().to_string(); + props.push(quote! {value = #val_string }); + let default = if variant_name == "None" || variant_name == "Default" { + quote! {#[default]} + } else { + TokenStream::new() + }; + quote! { + #[strum(serialize = #name)] + #[strum(props(#(#props),*))] + #default + #variant_name = #val, + } + }) + .collect::>(); + let name = Ident::new(name, Span::call_site()); + write!( writer, - "#[derive(Debug, {default_derive}Display, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, EnumString, AsRefStr, EnumProperty, EnumIter, FromRepr, Serialize, Deserialize)]\n\ - {additional_strum}\ - #[repr({repr})]\n\ - pub enum {name} {{\n" + "{}", + quote! { + #[derive(#(#derives),*)] + #additional_strum + #[repr(#repr)] + pub enum #name { + #(#variants)* + } + + impl TryFrom for #name { + type Error = super::ParseError; + fn try_from(value: f64) -> Result>::Error> { + use strum::IntoEnumIterator; + if let Some(enm) = #name::iter().find(|enm| (f64::from(*enm as #repr) - value).abs() < f64::EPSILON ) { + Ok(enm) + } else { + Err(super::ParseError { + enm: value.to_string() + }) + } + } + } + } )?; - for (name, variant) in sorted { - let variant_name = name.replace('.', "").to_case(Case::Pascal); - let serialize = vec![name.clone()]; - let serialize_str = serialize - .into_iter() - .map(|s| format!("serialize = \"{s}\"")) - .collect::>() - .join(", "); - let mut props = Vec::new(); - if variant.deprecated { - props.push("deprecated = \"true\"".to_owned()); - } - for (prop_name, prop_val) in &variant.props { - props.push(format!("{prop_name} = r#\"{prop_val}\"#")); - } - let val = &variant.value; - props.push(format!("value = \"{val}\"")); - let props_str = if !props.is_empty() { - format!(", props( {} )", props.join(", ")) - } else { - "".to_owned() - }; - let default = if variant_name == "None" || variant_name == "Default" { - "#[default]" - } else { - "" - }; - writeln!( - writer, - " #[strum({serialize_str}{props_str})]{default} {variant_name} = {val}{repr}," - )?; - } - writeln!(writer, "}}")?; Ok(()) } diff --git a/xtask/src/generate/instructions.rs b/xtask/src/generate/instructions.rs index 419d896..fea2579 100644 --- a/xtask/src/generate/instructions.rs +++ b/xtask/src/generate/instructions.rs @@ -1,4 +1,6 @@ use convert_case::{Case, Casing}; +use proc_macro2::{Ident, Span}; +use quote::quote; use std::{collections::BTreeMap, path::PathBuf}; use crate::{generate::utils, stationpedia}; @@ -47,82 +49,93 @@ fn write_instructions_enum( write!( writer, - "use serde_derive::{{Deserialize, Serialize}};\n\ - use strum::{{\n \ - Display, EnumIter, EnumProperty, EnumString, FromRepr,\n\ - }};\n - use crate::vm::object::traits::Programmable;\n\ - " + "{}", + quote::quote! { + use serde_derive::{Deserialize, Serialize}; + use strum::{ + Display, EnumIter, EnumProperty, EnumString, FromRepr, + }; + use crate::vm::object::traits::Programmable; + } )?; + let inst_variants = instructions + .iter() + .map(|(name, info)| { + let example = &info.example; + let desc = &info.desc; + let op_count = count_operands(&info.example).to_string(); + let props = + quote::quote! { props( example = #example, desc = #desc, operands = #op_count ) }; + let name = Ident::new(&name.to_case(Case::Pascal), Span::call_site()); + quote::quote! { + #[strum(#props)] #name, + } + }) + .collect::>(); + write!( writer, - "#[derive(Debug, Display, PartialEq, Eq, PartialOrd, Ord, Clone, Copy, Serialize, Deserialize)]\n\ - #[derive(EnumIter, EnumString, EnumProperty, FromRepr)]\n\ - #[strum(use_phf, serialize_all = \"lowercase\")]\n\ - #[serde(rename_all = \"lowercase\")]\n\ - pub enum InstructionOp {{\n\ - " + "{}", + quote::quote! {#[derive(Debug, Display, PartialEq, Eq, PartialOrd, Ord, Clone, Copy, Serialize, Deserialize)] + #[derive(EnumIter, EnumString, EnumProperty, FromRepr)] + #[strum(use_phf, serialize_all = "lowercase")] + #[serde(rename_all = "lowercase")] + pub enum InstructionOp { + Nop, + #(#inst_variants)* + + } + } )?; - writeln!(writer, " Nop,")?; - for (name, info) in &instructions { - let props_str = format!( - "props( example = \"{}\", desc = \"{}\", operands = \"{}\" )", - &info.example, - &info.desc, - count_operands(&info.example) - ); - writeln!( - writer, - " #[strum({props_str})] {},", - name.to_case(Case::Pascal) - )?; - } - writeln!(writer, "}}")?; + + let exec_arms = instructions + .iter() + .map(|(name, info)| { + let num_operands = count_operands(&info.example); + let operands = (0..num_operands) + .map(|i| quote! {&operands[#i]}) + .collect::>(); + + let trait_name = Ident::new(&name.to_case(Case::Pascal), Span::call_site()); + let fn_name = Ident::new(&format!("execute_{name}"), Span::call_site()); + quote! { + Self::#trait_name => ic.#fn_name(#(#operands),*), + } + }) + .collect::>(); write!( writer, - "impl InstructionOp {{\n \ - pub fn num_operands(&self) -> usize {{\n \ - self.get_str(\"operands\").expect(\"instruction without operand property\").parse::().expect(\"invalid instruction operand property\")\n \ - }}\n\ - \n \ - pub fn execute(\n \ - &self,\n \ - ic: &mut T,\n \ - operands: &[crate::vm::instructions::operands::Operand],\n \ - ) -> Result<(), crate::errors::ICError>\n \ - where\n \ - T: Programmable,\n\ - {{\n \ - let num_operands = self.num_operands();\n \ - if operands.len() != num_operands {{\n \ - return Err(crate::errors::ICError::mismatch_operands(operands.len(), num_operands as u32));\n \ - }}\n \ - match self {{\n \ - Self::Nop => Ok(()),\n \ - " - )?; + "{}", + quote! { + impl InstructionOp { + pub fn num_operands(&self) -> usize { + self.get_str("operands") + .expect("instruction without operand property") + .parse::() + .expect("invalid instruction operand property") + } - for (name, info) in instructions { - let num_operands = count_operands(&info.example); - let operands = (0..num_operands) - .map(|i| format!("&operands[{}]", i)) - .collect::>() - .join(", "); - let trait_name = name.to_case(Case::Pascal); - writeln!( - writer, - " Self::{trait_name} => ic.execute_{name}({operands}),", - )?; - } - - write!( - writer, - " }}\ - }}\n\ - }} - " + pub fn execute( + &self, + ic: &mut T, + operands: &[crate::vm::instructions::operands::Operand], + ) -> Result<(), crate::errors::ICError> + where + T: Programmable, + { + let num_operands = self.num_operands(); + if operands.len() != num_operands { + return Err(crate::errors::ICError::mismatch_operands(operands.len(), num_operands as u32)); + } + match self { + Self::Nop => Ok(()), + #(#exec_arms)* + } + } + } + } )?; Ok(()) @@ -134,7 +147,8 @@ fn write_instruction_trait( ) -> color_eyre::Result<()> { let (name, info) = instruction; let op_name = name.to_case(Case::Pascal); - let trait_name = format!("{op_name}Instruction"); + let trait_name = Ident::new(&format!("{op_name}Instruction"), Span::call_site()); + let op_ident = Ident::new(&op_name, Span::call_site()); let operands = operand_names(&info.example) .iter() .map(|name| { @@ -142,13 +156,13 @@ fn write_instruction_trait( if n == "str" { n = "string"; } - format!( - "{}: &crate::vm::instructions::operands::Operand", - n.to_case(Case::Snake) - ) + let n = Ident::new(&n.to_case(Case::Snake), Span::call_site()); + quote! { + #n: &crate::vm::instructions::operands::Operand + } }) - .collect::>() - .join(", "); + .collect::>(); + let operands_inner = operand_names(&info.example) .iter() .map(|name| { @@ -156,13 +170,13 @@ fn write_instruction_trait( if n == "str" { n = "string"; } - format!( - "{}: &crate::vm::instructions::operands::InstOperand", - n.to_case(Case::Snake) - ) + let n = Ident::new(&n.to_case(Case::Snake), Span::call_site()); + quote! { + #n: &crate::vm::instructions::operands::InstOperand + } }) - .collect::>() - .join(", "); + .collect::>(); + let operand_call = operand_names(&info.example) .iter() .enumerate() @@ -171,24 +185,27 @@ fn write_instruction_trait( if n == "str" { n = "string"; } - format!( - "&crate::vm::instructions::operands::InstOperand::new({}, InstructionOp::{op_name}, {index})", - n.to_case(Case::Snake) - ) + let n = Ident::new(&n.to_case(Case::Snake), Span::call_site()); + quote!{ + &crate::vm::instructions::operands::InstOperand::new(#n, InstructionOp::#op_ident, #index) + } }) - .collect::>() - .join(", "); + .collect::>(); let example = utils::strip_color(&info.example); + let fn_name = Ident::new(&format!("execute_{name}"), Span::call_site()); write!( writer, - "pub trait {trait_name}: IntegratedCircuit {{\n \ - /// {example} \n \ - fn execute_{name}(&mut self, {operands}) -> Result<(), crate::errors::ICError> {{\n \ - {trait_name}::execute_inner(self, {operand_call})\n \ - }}\n \ - /// {example} \n \ - fn execute_inner(&mut self, {operands_inner}) -> Result<(), crate::errors::ICError>;\n\ - }}" + "{}", + quote! { + pub trait #trait_name: IntegratedCircuit { + #[doc = #example] + fn #fn_name(&mut self, #(#operands),*) -> Result<(), crate::errors::ICError> { + #trait_name::execute_inner(self, #(#operand_call),*) + } + #[doc = #example] + fn execute_inner(&mut self, #(#operands_inner),*) -> Result<(), crate::errors::ICError>; + } + } )?; Ok(()) } @@ -208,10 +225,11 @@ fn operand_names(example: &str) -> Vec { fn write_instruction_trait_use(writer: &mut T) -> color_eyre::Result<()> { write!( writer, - "\ - use crate::vm::object::traits::IntegratedCircuit;\n\ - use crate::vm::instructions::enums::InstructionOp;\n\ - " + "{}", + quote! { + use crate::vm::object::traits::IntegratedCircuit; + use crate::vm::instructions::enums::InstructionOp; + } )?; Ok(()) } @@ -222,15 +240,20 @@ fn write_instruction_super_trait( ) -> color_eyre::Result<()> { let traits = instructions .keys() - .map(|name| format!("{}Instruction", name.to_case(Case::Pascal))) - .collect::>() - .join(" + "); + .map(|name| { + Ident::new( + &format!("{}Instruction", name.to_case(Case::Pascal)), + Span::call_site(), + ) + }) + .collect::>(); write!( writer, - "\ - pub trait ICInstructable: {traits} {{}}\n\ - impl ICInstructable for T where T: {traits} {{}} - " + "{}", + quote! { + pub trait ICInstructable: #(#traits +)* {} + impl ICInstructable for T where T: #(#traits )+* {} + } )?; Ok(()) } diff --git a/xtask/src/main.rs b/xtask/src/main.rs index 812b5f8..b5bdd6a 100644 --- a/xtask/src/main.rs +++ b/xtask/src/main.rs @@ -24,6 +24,17 @@ struct Args { const PACKAGES: &[&str] = &["ic10lsp_wasm", "ic10emu_wasm"]; const VALID_VERSION_TYPE: &[&str] = &["patch", "minor", "major"]; +const VALID_GENERATE_TYPE: &[&str] = &["enums", "instructions", "database"]; +const DEFAULT_GENERATE: &[&str] = &["enums"]; +fn parse_generate_modules(s: &str) -> Result { + if !VALID_GENERATE_TYPE.contains(&s) { + let valid_str = VALID_GENERATE_TYPE.join(", "); + return Err(format!( + "{s} is not a valid generate module. One of: {valid_str}" + )); + } + Ok(s.to_string()) +} #[derive(Debug, Subcommand)] enum Task { @@ -54,6 +65,8 @@ enum Task { /// update changelog Changelog {}, Generate { + #[arg(long, short = 'm', value_delimiter = ',', default_values = DEFAULT_GENERATE, value_parser = parse_generate_modules)] + modules: Vec, #[arg()] /// Path to Stationeers installation. Used to locate "Stationpedia.json" and "Enums.json" /// generated by https://github.com/Ryex/StationeersStationpediaExtractor @@ -166,7 +179,7 @@ fn main() -> color_eyre::Result<()> { .status() .map_err(|e| Error::Command(format!("{}", cmd.get_program().to_string_lossy()), e))?; } - Task::Generate { path } => { + Task::Generate { modules, path } => { let path = match path { Some(path) => { let mut path = std::path::PathBuf::from(path); @@ -214,7 +227,11 @@ fn main() -> color_eyre::Result<()> { && path.join("Stationpedia.json").exists() && path.join("Enums.json").exists() { - generate::generate(&path, &workspace)?; + generate::generate( + &path, + &workspace, + &modules.iter().map(String::as_str).collect::>(), + )?; } else { return Err(Error::BadStationeersPath(path).into()); } diff --git a/xtask/src/stationpedia.rs b/xtask/src/stationpedia.rs index a3e0757..30371cd 100644 --- a/xtask/src/stationpedia.rs +++ b/xtask/src/stationpedia.rs @@ -214,7 +214,7 @@ pub struct Memory { #[serde(rename = "MemoryAccess")] pub memory_access: String, #[serde(rename = "MemorySize")] - pub memory_size: i64, + pub memory_size: u32, #[serde(rename = "MemorySizeReadable")] pub memory_size_readable: String, } @@ -308,7 +308,7 @@ pub struct Device { #[serde(rename = "ConnectionList")] pub connection_list: Vec<(String, String)>, #[serde(rename = "DevicesLength")] - pub devices_length: Option, + pub devices_length: Option, #[serde(rename = "HasActivateState")] pub has_activate_state: bool, #[serde(rename = "HasAtmosphere")]