diff --git a/Cargo.lock b/Cargo.lock index 68eb93a..ad5c605 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -156,9 +156,31 @@ dependencies = [ [[package]] name = "base64" -version = "0.21.7" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bindgen" +version = "0.64.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4243e6031260db77ede97ad86c27e501d646a27ab57b59a574f725d98ab1fb4" +dependencies = [ + "bitflags 1.3.2", + "cexpr", + "clang-sys", + "lazy_static", + "lazycell", + "log", + "peeking_take_while", + "proc-macro2", + "quote", + "regex", + "rustc-hash", + "shlex", + "syn 1.0.109", + "which", +] [[package]] name = "bitflags" @@ -166,6 +188,12 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +[[package]] +name = "bitflags" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" + [[package]] name = "bumpalo" version = "3.15.4" @@ -204,6 +232,15 @@ version = "1.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5" +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + [[package]] name = "cfg-if" version = "1.0.0" @@ -223,6 +260,17 @@ dependencies = [ "windows-targets 0.52.4", ] +[[package]] +name = "clang-sys" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67523a3b4be3ce1989d607a828d036249522dd9c1c8de7f4dd2dae43a37369d1" +dependencies = [ + "glob", + "libc", + "libloading", +] + [[package]] name = "clap" version = "4.5.4" @@ -263,6 +311,33 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" +[[package]] +name = "color-eyre" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55146f5e46f237f7423d74111267d4597b59b0dad0ffaf7303bce9945d843ad5" +dependencies = [ + "backtrace", + "color-spantrace", + "eyre", + "indenter", + "once_cell", + "owo-colors", + "tracing-error", +] + +[[package]] +name = "color-spantrace" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd6be1b2a7e382e2b98b43b2adcca6bb0e465af0bdd38123873ae61eb17a72c2" +dependencies = [ + "once_cell", + "owo-colors", + "tracing-core", + "tracing-error", +] + [[package]] name = "colorchoice" version = "1.0.0" @@ -370,6 +445,26 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +[[package]] +name = "errno" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "eyre" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec" +dependencies = [ + "indenter", + "once_cell", +] + [[package]] name = "fnv" version = "1.0.7" @@ -493,6 +588,12 @@ version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + [[package]] name = "hashbrown" version = "0.12.3" @@ -529,6 +630,15 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +[[package]] +name = "home" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +dependencies = [ + "windows-sys 0.52.0", +] + [[package]] name = "httparse" version = "1.8.0" @@ -649,6 +759,12 @@ dependencies = [ "unicode-normalization", ] +[[package]] +name = "indenter" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" + [[package]] name = "indexmap" version = "1.9.3" @@ -695,12 +811,40 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + [[package]] name = "libc" version = "0.2.153" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +[[package]] +name = "libloading" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" +dependencies = [ + "cfg-if", + "windows-targets 0.52.4", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" + [[package]] name = "lock_api" version = "0.4.11" @@ -723,7 +867,7 @@ version = "0.94.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c66bfd44a06ae10647fe3f8214762e9369fd4248df1350924b4ef9e770a85ea1" dependencies = [ - "bitflags", + "bitflags 1.3.2", "serde", "serde_json", "serde_repr", @@ -746,12 +890,27 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8dd856d451cc0da70e2ef2ce95a18e39a93b7558bedf10201ad28503f918568" +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + [[package]] name = "memchr" version = "2.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + [[package]] name = "miniz_oxide" version = "0.7.2" @@ -772,6 +931,26 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + [[package]] name = "num-conv" version = "0.1.0" @@ -821,6 +1000,39 @@ version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +[[package]] +name = "onig" +version = "6.4.0" +source = "git+https://github.com/rust-onig/rust-onig#fa90c0e97e90a056af89f183b23cd417b59ee6a2" +dependencies = [ + "bitflags 1.3.2", + "libc", + "once_cell", + "onig_sys", +] + +[[package]] +name = "onig_sys" +version = "69.8.1" +source = "git+https://github.com/rust-onig/rust-onig#fa90c0e97e90a056af89f183b23cd417b59ee6a2" +dependencies = [ + "bindgen", + "cc", + "pkg-config", +] + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "owo-colors" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f" + [[package]] name = "parking_lot" version = "0.12.1" @@ -850,6 +1062,12 @@ version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" +[[package]] +name = "peeking_take_while" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" + [[package]] name = "percent-encoding" version = "2.3.1" @@ -984,6 +1202,12 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "pkg-config" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" + [[package]] name = "powerfmt" version = "0.2.0" @@ -1056,7 +1280,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" dependencies = [ - "bitflags", + "bitflags 1.3.2", ] [[package]] @@ -1067,8 +1291,17 @@ checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" dependencies = [ "aho-corasick", "memchr", - "regex-automata", - "regex-syntax", + "regex-automata 0.4.6", + "regex-syntax 0.8.3", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", ] [[package]] @@ -1079,9 +1312,15 @@ checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" dependencies = [ "aho-corasick", "memchr", - "regex-syntax", + "regex-syntax 0.8.3", ] +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + [[package]] name = "regex-syntax" version = "0.8.3" @@ -1094,6 +1333,25 @@ version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustix" +version = "0.38.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +dependencies = [ + "bitflags 2.5.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.52.0", +] + [[package]] name = "rustversion" version = "1.0.14" @@ -1114,9 +1372,9 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "serde" -version = "1.0.197" +version = "1.0.200" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" +checksum = "ddc6f9cc94d67c0e21aaf7eda3a010fd3af78ebf6e096aa6e2e13c79749cce4f" dependencies = [ "serde_derive", ] @@ -1145,9 +1403,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.197" +version = "1.0.200" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" +checksum = "856f046b9400cee3c8c94ed572ecdb752444c24528c035cd35882aad6f492bcb" dependencies = [ "proc-macro2", "quote", @@ -1166,16 +1424,35 @@ dependencies = [ ] [[package]] -name = "serde_json" -version = "1.0.115" +name = "serde_ignored" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12dc5c46daa8e9fdf4f5e71b6cf9a53f2487da0e86e55808e2d35539666497dd" +checksum = "a8e319a36d1b52126a0d608f24e93b2d81297091818cd70625fcf50a15d84ddf" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_json" +version = "1.0.116" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e17db7126d17feb94eb3fad46bf1a96b034e8aacbc2e775fe81505f8b0b2813" dependencies = [ "itoa", "ryu", "serde", ] +[[package]] +name = "serde_path_to_error" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" +dependencies = [ + "itoa", + "serde", +] + [[package]] name = "serde_repr" version = "0.1.18" @@ -1189,9 +1466,9 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.7.0" +version = "3.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee80b0e361bbf88fd2f6e242ccd19cfda072cb0faa6ae694ecee08199938569a" +checksum = "0ad483d2ab0149d5a5ebcd9972a3852711e0153d863bf5a5d0391d28883c4a20" dependencies = [ "base64", "chrono", @@ -1207,9 +1484,9 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.7.0" +version = "3.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6561dc161a9224638a31d876ccdfefbc1df91d3f3a8342eddb35f055d48c7655" +checksum = "65569b702f41443e8bc8bbb1c5779bd0450bbe723b56198980e80ec45780bce2" dependencies = [ "darling", "proc-macro2", @@ -1217,6 +1494,21 @@ dependencies = [ "syn 2.0.57", ] +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "signal-hook-registry" version = "1.4.1" @@ -1314,6 +1606,12 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "textwrap" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" + [[package]] name = "thiserror" version = "1.0.58" @@ -1334,6 +1632,16 @@ dependencies = [ "syn 2.0.57", ] +[[package]] +name = "thread_local" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +dependencies = [ + "cfg-if", + "once_cell", +] + [[package]] name = "time" version = "0.3.34" @@ -1517,6 +1825,46 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" dependencies = [ "once_cell", + "valuable", +] + +[[package]] +name = "tracing-error" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d686ec1c0f384b1277f097b2f279a2ecc11afe8c133c1aabf036a27cb4cd206e" +dependencies = [ + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", ] [[package]] @@ -1629,6 +1977,12 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" @@ -1725,6 +2079,40 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "which" +version = "4.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" +dependencies = [ + "either", + "home", + "once_cell", + "rustix", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + [[package]] name = "windows-core" version = "0.52.0" @@ -1871,5 +2259,20 @@ name = "xtask" version = "0.2.3" dependencies = [ "clap", + "color-eyre", + "convert_case", + "indexmap 2.2.6", + "onig", + "phf_codegen", + "regex", + "serde", + "serde_derive", + "serde_ignored", + "serde_json", + "serde_path_to_error", + "serde_with", + "textwrap", "thiserror", + "tracing", + "tracing-subscriber", ] diff --git a/Cargo.toml b/Cargo.toml index 7c969c9..fdc3b4c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,3 +12,7 @@ opt-level = "s" lto = true [profile.dev] opt-level = 1 + + +[patch.crates-io] +onig_sys = { git = "https://github.com/rust-onig/rust-onig", revision = "fa90c0e97e90a056af89f183b23cd417b59ee6a2" } diff --git a/data/database.json b/data/database.json new file mode 100644 index 0000000..58d919a --- /dev/null +++ b/data/database.json @@ -0,0 +1 @@ +{"prefabs":{"AccessCardBlack":{"prefab":{"prefabName":"AccessCardBlack","prefabHash":-1330388999,"desc":"","name":"Access Card (Black)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"AccessCard","sortingClass":"Default"}},"AccessCardBlue":{"prefab":{"prefabName":"AccessCardBlue","prefabHash":-1411327657,"desc":"","name":"Access Card (Blue)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"AccessCard","sortingClass":"Default"}},"AccessCardBrown":{"prefab":{"prefabName":"AccessCardBrown","prefabHash":1412428165,"desc":"","name":"Access Card (Brown)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"AccessCard","sortingClass":"Default"}},"AccessCardGray":{"prefab":{"prefabName":"AccessCardGray","prefabHash":-1339479035,"desc":"","name":"Access Card (Gray)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"AccessCard","sortingClass":"Default"}},"AccessCardGreen":{"prefab":{"prefabName":"AccessCardGreen","prefabHash":-374567952,"desc":"","name":"Access Card (Green)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"AccessCard","sortingClass":"Default"}},"AccessCardKhaki":{"prefab":{"prefabName":"AccessCardKhaki","prefabHash":337035771,"desc":"","name":"Access Card (Khaki)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"AccessCard","sortingClass":"Default"}},"AccessCardOrange":{"prefab":{"prefabName":"AccessCardOrange","prefabHash":-332896929,"desc":"","name":"Access Card (Orange)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"AccessCard","sortingClass":"Default"}},"AccessCardPink":{"prefab":{"prefabName":"AccessCardPink","prefabHash":431317557,"desc":"","name":"Access Card (Pink)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"AccessCard","sortingClass":"Default"}},"AccessCardPurple":{"prefab":{"prefabName":"AccessCardPurple","prefabHash":459843265,"desc":"","name":"Access Card (Purple)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"AccessCard","sortingClass":"Default"}},"AccessCardRed":{"prefab":{"prefabName":"AccessCardRed","prefabHash":-1713748313,"desc":"","name":"Access Card (Red)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"AccessCard","sortingClass":"Default"}},"AccessCardWhite":{"prefab":{"prefabName":"AccessCardWhite","prefabHash":2079959157,"desc":"","name":"Access Card (White)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"AccessCard","sortingClass":"Default"}},"AccessCardYellow":{"prefab":{"prefabName":"AccessCardYellow","prefabHash":568932536,"desc":"","name":"Access Card (Yellow)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"AccessCard","sortingClass":"Default"}},"ApplianceChemistryStation":{"prefab":{"prefabName":"ApplianceChemistryStation","prefabHash":1365789392,"desc":"","name":"Chemistry Station"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"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.0,"slotClass":"Appliance","sortingClass":"Appliances"}},"ApplianceDeskLampRight":{"prefab":{"prefabName":"ApplianceDeskLampRight","prefabHash":1174360780,"desc":"","name":"Appliance Desk Lamp Right"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"slotClass":"Cartridge","sortingClass":"Default"}},"CartridgeConfiguration":{"prefab":{"prefabName":"CartridgeConfiguration","prefabHash":-932136011,"desc":"","name":"Configuration"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"Cartridge","sortingClass":"Default"}},"CartridgeElectronicReader":{"prefab":{"prefabName":"CartridgeElectronicReader","prefabHash":-1462180176,"desc":"","name":"eReader"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"Cartridge","sortingClass":"Default"}},"CartridgeGPS":{"prefab":{"prefabName":"CartridgeGPS","prefabHash":-1957063345,"desc":"","name":"GPS"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"Cartridge","sortingClass":"Default"}},"CartridgeGuide":{"prefab":{"prefabName":"CartridgeGuide","prefabHash":872720793,"desc":"","name":"Guide"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"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.0,"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.0,"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.0,"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.0,"slotClass":"Cartridge","sortingClass":"Default"}},"CartridgePlantAnalyser":{"prefab":{"prefabName":"CartridgePlantAnalyser","prefabHash":1101328282,"desc":"","name":"Cartridge Plant Analyser"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"Cartridge","sortingClass":"Default"}},"CartridgeTracker":{"prefab":{"prefabName":"CartridgeTracker","prefabHash":81488783,"desc":"","name":"Tracker"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"Cartridge","sortingClass":"Default"}},"CircuitboardAdvAirlockControl":{"prefab":{"prefabName":"CircuitboardAdvAirlockControl","prefabHash":1633663176,"desc":"","name":"Advanced Airlock"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"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.0,"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.0,"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.0,"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.0,"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.0,"slotClass":"Circuitboard","sortingClass":"Default"}},"CircuitboardGraphDisplay":{"prefab":{"prefabName":"CircuitboardGraphDisplay","prefabHash":1344368806,"desc":"","name":"Graph Display"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"Circuitboard","sortingClass":"Default"}},"CircuitboardHashDisplay":{"prefab":{"prefabName":"CircuitboardHashDisplay","prefabHash":1633074601,"desc":"","name":"Hash Display"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"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.0,"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.0,"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.0,"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.0,"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","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.0,"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.0,"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","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":[["Data","Input"],["Power","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","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":[["Data","Input"],["Power","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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"slotClass":"None","sortingClass":"Default"}},"ElevatorCarrage":{"prefab":{"prefabName":"ElevatorCarrage","prefabHash":-110788403,"desc":"","name":"Elevator"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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","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","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"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","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":[["Data","None"],["Pipe","Input"],["Pipe","Output"],["Power","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.0,"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.0,"slotClass":"Magazine","sortingClass":"Default"}},"HumanSkull":{"prefab":{"prefabName":"HumanSkull","prefabHash":-857713709,"desc":"","name":"Human Skull"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Default"}},"ImGuiCircuitboardAirlockControl":{"prefab":{"prefabName":"ImGuiCircuitboardAirlockControl","prefabHash":-73796547,"desc":"","name":"Airlock (Experimental)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"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.0,"slotClass":"None","sortingClass":"Kits"}},"ItemAdhesiveInsulation":{"prefab":{"prefabName":"ItemAdhesiveInsulation","prefabHash":1871048978,"desc":"","name":"Adhesive Insulation"},"item":{"consumable":false,"ingredient":false,"maxQuantity":20.0,"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.0,"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.0,"slotClass":"Plant","sortingClass":"Default"}},"ItemAmmoBox":{"prefab":{"prefabName":"ItemAmmoBox","prefabHash":-9559091,"desc":"","name":"Ammo Box"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"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.0,"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.0,"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.0,"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.0,"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.0,"slotClass":"None","sortingClass":"Resources"}},"ItemAuthoringTool":{"prefab":{"prefabName":"ItemAuthoringTool","prefabHash":789015045,"desc":"","name":"Authoring Tool"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"Tool","sortingClass":"Tools"}},"ItemAuthoringToolRocketNetwork":{"prefab":{"prefabName":"ItemAuthoringToolRocketNetwork","prefabHash":-1731627004,"desc":"","name":""},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"Tool","sortingClass":"Tools"}},"ItemBasketBall":{"prefab":{"prefabName":"ItemBasketBall","prefabHash":-1262580790,"desc":"","name":"Basket Ball"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"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.0,"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.0,"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.0,"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.0,"slotClass":"None","sortingClass":"Kits"}},"ItemBatteryChargerSmall":{"prefab":{"prefabName":"ItemBatteryChargerSmall","prefabHash":1008295833,"desc":"","name":"Battery Charger Small"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Default"}},"ItemBeacon":{"prefab":{"prefabName":"ItemBeacon","prefabHash":-869869491,"desc":"","name":"Tracking Beacon"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"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.0,"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.0,"slotClass":"None","sortingClass":"Food"}},"ItemCableAnalyser":{"prefab":{"prefabName":"ItemCableAnalyser","prefabHash":-1792787349,"desc":"","name":"Kit (Cable Analyzer)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"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.0,"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.0,"slotClass":"Tool","sortingClass":"Resources"}},"ItemCableFuse":{"prefab":{"prefabName":"ItemCableFuse","prefabHash":195442047,"desc":"","name":"Kit (Cable Fuses)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"slotClass":"None","sortingClass":"Default"}},"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.0,"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.0,"reagents":{"Cobalt":1.0},"slotClass":"Ore","sortingClass":"Ores"}},"ItemCoffeeMug":{"prefab":{"prefabName":"ItemCoffeeMug","prefabHash":1800622698,"desc":"","name":"Coffee Mug"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Default"}},"ItemConstantanIngot":{"prefab":{"prefabName":"ItemConstantanIngot","prefabHash":1058547521,"desc":"","name":"Ingot (Constantan)"},"item":{"consumable":true,"ingredient":true,"maxQuantity":500.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"slotClass":"None","sortingClass":"Food"}},"ItemCreditCard":{"prefab":{"prefabName":"ItemCreditCard","prefabHash":-1756772618,"desc":"","name":"Credit Card"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"CreditCard","sortingClass":"Tools"}},"ItemCropHay":{"prefab":{"prefabName":"ItemCropHay","prefabHash":215486157,"desc":"","name":"Hay"},"item":{"consumable":false,"ingredient":false,"maxQuantity":100.0,"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.0,"slotClass":"Tool","sortingClass":"Tools"}},"ItemDataDisk":{"prefab":{"prefabName":"ItemDataDisk","prefabHash":1005843700,"desc":"","name":"Data Disk"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"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.0,"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.0,"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.0,"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.0,"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.0,"slotClass":"Tool","sortingClass":"Tools"}},"ItemDynamicAirCon":{"prefab":{"prefabName":"ItemDynamicAirCon","prefabHash":1072914031,"desc":"","name":"Kit (Portable Air Conditioner)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemDynamicScrubber":{"prefab":{"prefabName":"ItemDynamicScrubber","prefabHash":-971920158,"desc":"","name":"Kit (Portable Scrubber)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"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.0,"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.0,"slotClass":"None","sortingClass":"Resources"}},"ItemElectrumIngot":{"prefab":{"prefabName":"ItemElectrumIngot","prefabHash":502280180,"desc":"","name":"Ingot (Electrum)"},"item":{"consumable":true,"ingredient":true,"maxQuantity":500.0,"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.0,"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.0,"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.0,"slotClass":"Tool","sortingClass":"Tools"}},"ItemEmergencyDrill":{"prefab":{"prefabName":"ItemEmergencyDrill","prefabHash":-2052458905,"desc":"","name":"Emergency Drill"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"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.0,"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.0,"slotClass":"Tool","sortingClass":"Tools"}},"ItemEmergencyScrewdriver":{"prefab":{"prefabName":"ItemEmergencyScrewdriver","prefabHash":266099983,"desc":"","name":"Emergency Screwdriver"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"Tool","sortingClass":"Tools"}},"ItemEmergencySpaceHelmet":{"prefab":{"prefabName":"ItemEmergencySpaceHelmet","prefabHash":205916793,"desc":"","name":"Emergency Space Helmet"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"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.0,"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.0,"slotClass":"Tool","sortingClass":"Tools"}},"ItemEmergencyWrench":{"prefab":{"prefabName":"ItemEmergencyWrench","prefabHash":162553030,"desc":"","name":"Emergency Wrench"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"slotClass":"Plant","sortingClass":"Resources"}},"ItemFlagSmall":{"prefab":{"prefabName":"ItemFlagSmall","prefabHash":2011191088,"desc":"","name":"Kit (Small Flag)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemFlashingLight":{"prefab":{"prefabName":"ItemFlashingLight","prefabHash":-2107840748,"desc":"","name":"Kit (Flashing Light)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"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.0,"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.0,"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.0,"slotClass":"Plant","sortingClass":"Resources"}},"ItemFlowerGreen":{"prefab":{"prefabName":"ItemFlowerGreen","prefabHash":-1513337058,"desc":"","name":"Flower (Green)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":100.0,"slotClass":"Plant","sortingClass":"Resources"}},"ItemFlowerOrange":{"prefab":{"prefabName":"ItemFlowerOrange","prefabHash":-1411986716,"desc":"","name":"Flower (Orange)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":100.0,"slotClass":"Plant","sortingClass":"Resources"}},"ItemFlowerRed":{"prefab":{"prefabName":"ItemFlowerRed","prefabHash":-81376085,"desc":"","name":"Flower (Red)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":100.0,"slotClass":"Plant","sortingClass":"Resources"}},"ItemFlowerYellow":{"prefab":{"prefabName":"ItemFlowerYellow","prefabHash":1712822019,"desc":"","name":"Flower (Yellow)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":100.0,"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.0,"slotClass":"None","sortingClass":"Food"}},"ItemFries":{"prefab":{"prefabName":"ItemFries","prefabHash":1371786091,"desc":"","name":"French Fries"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Food"}},"ItemGasCanisterCarbonDioxide":{"prefab":{"prefabName":"ItemGasCanisterCarbonDioxide","prefabHash":-767685874,"desc":"","name":"Canister (CO2)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"GasCanister","sortingClass":"Atmospherics"}},"ItemGasCanisterEmpty":{"prefab":{"prefabName":"ItemGasCanisterEmpty","prefabHash":42280099,"desc":"","name":"Canister"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"GasCanister","sortingClass":"Atmospherics"}},"ItemGasCanisterFuel":{"prefab":{"prefabName":"ItemGasCanisterFuel","prefabHash":-1014695176,"desc":"","name":"Canister (Fuel)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"GasCanister","sortingClass":"Atmospherics"}},"ItemGasCanisterNitrogen":{"prefab":{"prefabName":"ItemGasCanisterNitrogen","prefabHash":2145068424,"desc":"","name":"Canister (Nitrogen)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"GasCanister","sortingClass":"Atmospherics"}},"ItemGasCanisterNitrousOxide":{"prefab":{"prefabName":"ItemGasCanisterNitrousOxide","prefabHash":-1712153401,"desc":"","name":"Gas Canister (Sleeping)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"GasCanister","sortingClass":"Atmospherics"}},"ItemGasCanisterOxygen":{"prefab":{"prefabName":"ItemGasCanisterOxygen","prefabHash":-1152261938,"desc":"","name":"Canister (Oxygen)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"GasCanister","sortingClass":"Atmospherics"}},"ItemGasCanisterPollutants":{"prefab":{"prefabName":"ItemGasCanisterPollutants","prefabHash":-1552586384,"desc":"","name":"Canister (Pollutants)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"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.0,"slotClass":"GasCanister","sortingClass":"Atmospherics"}},"ItemGasCanisterVolatiles":{"prefab":{"prefabName":"ItemGasCanisterVolatiles","prefabHash":-472094806,"desc":"","name":"Canister (Volatiles)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"GasCanister","sortingClass":"Atmospherics"}},"ItemGasCanisterWater":{"prefab":{"prefabName":"ItemGasCanisterWater","prefabHash":-1854861891,"desc":"","name":"Liquid Canister (Water)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"slotClass":"GasFilter","sortingClass":"Resources"}},"ItemGasFilterNitrogenL":{"prefab":{"prefabName":"ItemGasFilterNitrogenL","prefabHash":-1387439451,"desc":"","name":"Heavy Filter (Nitrogen)"},"item":{"consumable":false,"filterType":"Nitrogen","ingredient":false,"maxQuantity":100.0,"slotClass":"GasFilter","sortingClass":"Resources"}},"ItemGasFilterNitrogenM":{"prefab":{"prefabName":"ItemGasFilterNitrogenM","prefabHash":-632657357,"desc":"","name":"Medium Filter (Nitrogen)"},"item":{"consumable":false,"filterType":"Nitrogen","ingredient":false,"maxQuantity":100.0,"slotClass":"GasFilter","sortingClass":"Resources"}},"ItemGasFilterNitrousOxide":{"prefab":{"prefabName":"ItemGasFilterNitrousOxide","prefabHash":-1247674305,"desc":"","name":"Filter (Nitrous Oxide)"},"item":{"consumable":false,"filterType":"NitrousOxide","ingredient":false,"maxQuantity":100.0,"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.0,"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.0,"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.0,"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.0,"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.0,"slotClass":"GasFilter","sortingClass":"Resources"}},"ItemGasFilterOxygenL":{"prefab":{"prefabName":"ItemGasFilterOxygenL","prefabHash":-1217998945,"desc":"","name":"Heavy Filter (Oxygen)"},"item":{"consumable":false,"filterType":"Oxygen","ingredient":false,"maxQuantity":100.0,"slotClass":"GasFilter","sortingClass":"Resources"}},"ItemGasFilterOxygenM":{"prefab":{"prefabName":"ItemGasFilterOxygenM","prefabHash":-1067319543,"desc":"","name":"Medium Filter (Oxygen)"},"item":{"consumable":false,"filterType":"Oxygen","ingredient":false,"maxQuantity":100.0,"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.0,"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.0,"slotClass":"GasFilter","sortingClass":"Resources"}},"ItemGasFilterPollutantsL":{"prefab":{"prefabName":"ItemGasFilterPollutantsL","prefabHash":1959564765,"desc":"","name":"Heavy Filter (Pollutants)"},"item":{"consumable":false,"filterType":"Pollutant","ingredient":false,"maxQuantity":100.0,"slotClass":"GasFilter","sortingClass":"Resources"}},"ItemGasFilterPollutantsM":{"prefab":{"prefabName":"ItemGasFilterPollutantsM","prefabHash":63677771,"desc":"","name":"Medium Filter (Pollutants)"},"item":{"consumable":false,"filterType":"Pollutant","ingredient":false,"maxQuantity":100.0,"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.0,"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.0,"slotClass":"GasFilter","sortingClass":"Resources"}},"ItemGasFilterVolatilesL":{"prefab":{"prefabName":"ItemGasFilterVolatilesL","prefabHash":1255156286,"desc":"","name":"Heavy Filter (Volatiles)"},"item":{"consumable":false,"filterType":"Volatiles","ingredient":false,"maxQuantity":100.0,"slotClass":"GasFilter","sortingClass":"Resources"}},"ItemGasFilterVolatilesM":{"prefab":{"prefabName":"ItemGasFilterVolatilesM","prefabHash":1037507240,"desc":"","name":"Medium Filter (Volatiles)"},"item":{"consumable":false,"filterType":"Volatiles","ingredient":false,"maxQuantity":100.0,"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.0,"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.0,"slotClass":"GasFilter","sortingClass":"Resources"}},"ItemGasFilterWaterL":{"prefab":{"prefabName":"ItemGasFilterWaterL","prefabHash":2004969680,"desc":"","name":"Heavy Filter (Water)"},"item":{"consumable":false,"filterType":"Steam","ingredient":false,"maxQuantity":100.0,"slotClass":"GasFilter","sortingClass":"Resources"}},"ItemGasFilterWaterM":{"prefab":{"prefabName":"ItemGasFilterWaterM","prefabHash":8804422,"desc":"","name":"Medium Filter (Water)"},"item":{"consumable":false,"filterType":"Steam","ingredient":false,"maxQuantity":100.0,"slotClass":"GasFilter","sortingClass":"Resources"}},"ItemGasSensor":{"prefab":{"prefabName":"ItemGasSensor","prefabHash":1717593480,"desc":"","name":"Kit (Gas Sensor)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"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.0,"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.0,"slotClass":"None","sortingClass":"Resources"}},"ItemGlasses":{"prefab":{"prefabName":"ItemGlasses","prefabHash":-1068925231,"desc":"","name":"Glasses"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"slotClass":"Helmet","sortingClass":"Clothing"}},"ItemHighVolumeGasCanisterEmpty":{"prefab":{"prefabName":"ItemHighVolumeGasCanisterEmpty","prefabHash":998653377,"desc":"","name":"High Volume Gas Canister"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"GasCanister","sortingClass":"Atmospherics"}},"ItemHorticultureBelt":{"prefab":{"prefabName":"ItemHorticultureBelt","prefabHash":-1117581553,"desc":"","name":"Horticulture Belt"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"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.0,"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.0,"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.0,"slotClass":"None","sortingClass":"Kits"}},"ItemInconelIngot":{"prefab":{"prefabName":"ItemInconelIngot","prefabHash":-787796599,"desc":"","name":"Ingot (Inconel)"},"item":{"consumable":true,"ingredient":true,"maxQuantity":500.0,"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.0,"slotClass":"None","sortingClass":"Resources"}},"ItemIntegratedCircuit10":{"prefab":{"prefabName":"ItemIntegratedCircuit10","prefabHash":-744098481,"desc":"","name":"Integrated Circuit (IC10)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitAccessBridge":{"prefab":{"prefabName":"ItemKitAccessBridge","prefabHash":513258369,"desc":"","name":"Kit (Access Bridge)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitAdvancedComposter":{"prefab":{"prefabName":"ItemKitAdvancedComposter","prefabHash":-1431998347,"desc":"","name":"Kit (Advanced Composter)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitAdvancedFurnace":{"prefab":{"prefabName":"ItemKitAdvancedFurnace","prefabHash":-616758353,"desc":"","name":"Kit (Advanced Furnace)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitAdvancedPackagingMachine":{"prefab":{"prefabName":"ItemKitAdvancedPackagingMachine","prefabHash":-598545233,"desc":"","name":"Kit (Advanced Packaging Machine)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitAirlock":{"prefab":{"prefabName":"ItemKitAirlock","prefabHash":964043875,"desc":"","name":"Kit (Airlock)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitAirlockGate":{"prefab":{"prefabName":"ItemKitAirlockGate","prefabHash":682546947,"desc":"","name":"Kit (Hangar Door)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitArcFurnace":{"prefab":{"prefabName":"ItemKitArcFurnace","prefabHash":-98995857,"desc":"","name":"Kit (Arc Furnace)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitAtmospherics":{"prefab":{"prefabName":"ItemKitAtmospherics","prefabHash":1222286371,"desc":"","name":"Kit (Atmospherics)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitAutoMinerSmall":{"prefab":{"prefabName":"ItemKitAutoMinerSmall","prefabHash":1668815415,"desc":"","name":"Kit (Autominer Small)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitAutolathe":{"prefab":{"prefabName":"ItemKitAutolathe","prefabHash":-1753893214,"desc":"","name":"Kit (Autolathe)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitAutomatedOven":{"prefab":{"prefabName":"ItemKitAutomatedOven","prefabHash":-1931958659,"desc":"","name":"Kit (Automated Oven)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitBasket":{"prefab":{"prefabName":"ItemKitBasket","prefabHash":148305004,"desc":"","name":"Kit (Basket)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitBattery":{"prefab":{"prefabName":"ItemKitBattery","prefabHash":1406656973,"desc":"","name":"Kit (Battery)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitBatteryLarge":{"prefab":{"prefabName":"ItemKitBatteryLarge","prefabHash":-21225041,"desc":"","name":"Kit (Battery Large)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitBeacon":{"prefab":{"prefabName":"ItemKitBeacon","prefabHash":249073136,"desc":"","name":"Kit (Beacon)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitBeds":{"prefab":{"prefabName":"ItemKitBeds","prefabHash":-1241256797,"desc":"","name":"Kit (Beds)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitBlastDoor":{"prefab":{"prefabName":"ItemKitBlastDoor","prefabHash":-1755116240,"desc":"","name":"Kit (Blast Door)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitCentrifuge":{"prefab":{"prefabName":"ItemKitCentrifuge","prefabHash":578182956,"desc":"","name":"Kit (Centrifuge)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitChairs":{"prefab":{"prefabName":"ItemKitChairs","prefabHash":-1394008073,"desc":"","name":"Kit (Chairs)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitChute":{"prefab":{"prefabName":"ItemKitChute","prefabHash":1025254665,"desc":"","name":"Kit (Basic Chutes)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitChuteUmbilical":{"prefab":{"prefabName":"ItemKitChuteUmbilical","prefabHash":-876560854,"desc":"","name":"Kit (Chute Umbilical)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitCompositeCladding":{"prefab":{"prefabName":"ItemKitCompositeCladding","prefabHash":-1470820996,"desc":"","name":"Kit (Cladding)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitCompositeFloorGrating":{"prefab":{"prefabName":"ItemKitCompositeFloorGrating","prefabHash":1182412869,"desc":"","name":"Kit (Floor Grating)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitComputer":{"prefab":{"prefabName":"ItemKitComputer","prefabHash":1990225489,"desc":"","name":"Kit (Computer)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitConsole":{"prefab":{"prefabName":"ItemKitConsole","prefabHash":-1241851179,"desc":"","name":"Kit (Consoles)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitCrate":{"prefab":{"prefabName":"ItemKitCrate","prefabHash":429365598,"desc":"","name":"Kit (Crate)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitCrateMkII":{"prefab":{"prefabName":"ItemKitCrateMkII","prefabHash":-1585956426,"desc":"","name":"Kit (Crate Mk II)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitCrateMount":{"prefab":{"prefabName":"ItemKitCrateMount","prefabHash":-551612946,"desc":"","name":"Kit (Container Mount)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitCryoTube":{"prefab":{"prefabName":"ItemKitCryoTube","prefabHash":-545234195,"desc":"","name":"Kit (Cryo Tube)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitDeepMiner":{"prefab":{"prefabName":"ItemKitDeepMiner","prefabHash":-1935075707,"desc":"","name":"Kit (Deep Miner)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitDockingPort":{"prefab":{"prefabName":"ItemKitDockingPort","prefabHash":77421200,"desc":"","name":"Kit (Docking Port)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitDoor":{"prefab":{"prefabName":"ItemKitDoor","prefabHash":168615924,"desc":"","name":"Kit (Door)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitDrinkingFountain":{"prefab":{"prefabName":"ItemKitDrinkingFountain","prefabHash":-1743663875,"desc":"","name":"Kit (Drinking Fountain)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitDynamicCanister":{"prefab":{"prefabName":"ItemKitDynamicCanister","prefabHash":-1061945368,"desc":"","name":"Kit (Portable Gas Tank)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"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.0,"slotClass":"None","sortingClass":"Default"}},"ItemKitDynamicGenerator":{"prefab":{"prefabName":"ItemKitDynamicGenerator","prefabHash":-732720413,"desc":"","name":"Kit (Portable Generator)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitDynamicHydroponics":{"prefab":{"prefabName":"ItemKitDynamicHydroponics","prefabHash":-1861154222,"desc":"","name":"Kit (Portable Hydroponics)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitDynamicLiquidCanister":{"prefab":{"prefabName":"ItemKitDynamicLiquidCanister","prefabHash":375541286,"desc":"","name":"Kit (Portable Liquid Tank)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"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.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitElectricUmbilical":{"prefab":{"prefabName":"ItemKitElectricUmbilical","prefabHash":1603046970,"desc":"","name":"Kit (Power Umbilical)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitElectronicsPrinter":{"prefab":{"prefabName":"ItemKitElectronicsPrinter","prefabHash":-1181922382,"desc":"","name":"Kit (Electronics Printer)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitElevator":{"prefab":{"prefabName":"ItemKitElevator","prefabHash":-945806652,"desc":"","name":"Kit (Elevator)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitEngineLarge":{"prefab":{"prefabName":"ItemKitEngineLarge","prefabHash":755302726,"desc":"","name":"Kit (Engine Large)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitEngineMedium":{"prefab":{"prefabName":"ItemKitEngineMedium","prefabHash":1969312177,"desc":"","name":"Kit (Engine Medium)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitEngineSmall":{"prefab":{"prefabName":"ItemKitEngineSmall","prefabHash":19645163,"desc":"","name":"Kit (Engine Small)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitEvaporationChamber":{"prefab":{"prefabName":"ItemKitEvaporationChamber","prefabHash":1587787610,"desc":"","name":"Kit (Phase Change Device)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitFlagODA":{"prefab":{"prefabName":"ItemKitFlagODA","prefabHash":1701764190,"desc":"","name":"Kit (ODA Flag)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Default"}},"ItemKitFridgeBig":{"prefab":{"prefabName":"ItemKitFridgeBig","prefabHash":-1168199498,"desc":"","name":"Kit (Fridge Large)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitFridgeSmall":{"prefab":{"prefabName":"ItemKitFridgeSmall","prefabHash":1661226524,"desc":"","name":"Kit (Fridge Small)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitFurnace":{"prefab":{"prefabName":"ItemKitFurnace","prefabHash":-806743925,"desc":"","name":"Kit (Furnace)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitFurniture":{"prefab":{"prefabName":"ItemKitFurniture","prefabHash":1162905029,"desc":"","name":"Kit (Furniture)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitFuselage":{"prefab":{"prefabName":"ItemKitFuselage","prefabHash":-366262681,"desc":"","name":"Kit (Fuselage)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitGasGenerator":{"prefab":{"prefabName":"ItemKitGasGenerator","prefabHash":377745425,"desc":"","name":"Kit (Gas Fuel Generator)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitGasUmbilical":{"prefab":{"prefabName":"ItemKitGasUmbilical","prefabHash":-1867280568,"desc":"","name":"Kit (Gas Umbilical)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitGovernedGasRocketEngine":{"prefab":{"prefabName":"ItemKitGovernedGasRocketEngine","prefabHash":206848766,"desc":"","name":"Kit (Pumped Gas Rocket Engine)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitGroundTelescope":{"prefab":{"prefabName":"ItemKitGroundTelescope","prefabHash":-2140672772,"desc":"","name":"Kit (Telescope)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitGrowLight":{"prefab":{"prefabName":"ItemKitGrowLight","prefabHash":341030083,"desc":"","name":"Kit (Grow Light)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitHarvie":{"prefab":{"prefabName":"ItemKitHarvie","prefabHash":-1022693454,"desc":"","name":"Kit (Harvie)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitHeatExchanger":{"prefab":{"prefabName":"ItemKitHeatExchanger","prefabHash":-1710540039,"desc":"","name":"Kit Heat Exchanger"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitHorizontalAutoMiner":{"prefab":{"prefabName":"ItemKitHorizontalAutoMiner","prefabHash":844391171,"desc":"","name":"Kit (OGRE)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitHydraulicPipeBender":{"prefab":{"prefabName":"ItemKitHydraulicPipeBender","prefabHash":-2098556089,"desc":"","name":"Kit (Hydraulic Pipe Bender)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitHydroponicAutomated":{"prefab":{"prefabName":"ItemKitHydroponicAutomated","prefabHash":-927931558,"desc":"","name":"Kit (Automated Hydroponics)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitHydroponicStation":{"prefab":{"prefabName":"ItemKitHydroponicStation","prefabHash":2057179799,"desc":"","name":"Kit (Hydroponic Station)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitIceCrusher":{"prefab":{"prefabName":"ItemKitIceCrusher","prefabHash":288111533,"desc":"","name":"Kit (Ice Crusher)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitInsulatedLiquidPipe":{"prefab":{"prefabName":"ItemKitInsulatedLiquidPipe","prefabHash":2067655311,"desc":"","name":"Kit (Insulated Liquid Pipe)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":20.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitInsulatedPipe":{"prefab":{"prefabName":"ItemKitInsulatedPipe","prefabHash":452636699,"desc":"","name":"Kit (Insulated Pipe)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":20.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitInsulatedPipeUtility":{"prefab":{"prefabName":"ItemKitInsulatedPipeUtility","prefabHash":-27284803,"desc":"","name":"Kit (Insulated Pipe Utility Gas)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitInsulatedPipeUtilityLiquid":{"prefab":{"prefabName":"ItemKitInsulatedPipeUtilityLiquid","prefabHash":-1831558953,"desc":"","name":"Kit (Insulated Pipe Utility Liquid)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitInteriorDoors":{"prefab":{"prefabName":"ItemKitInteriorDoors","prefabHash":1935945891,"desc":"","name":"Kit (Interior Doors)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitLadder":{"prefab":{"prefabName":"ItemKitLadder","prefabHash":489494578,"desc":"","name":"Kit (Ladder)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitLandingPadAtmos":{"prefab":{"prefabName":"ItemKitLandingPadAtmos","prefabHash":1817007843,"desc":"","name":"Kit (Landing Pad Atmospherics)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitLandingPadBasic":{"prefab":{"prefabName":"ItemKitLandingPadBasic","prefabHash":293581318,"desc":"","name":"Kit (Landing Pad Basic)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitLandingPadWaypoint":{"prefab":{"prefabName":"ItemKitLandingPadWaypoint","prefabHash":-1267511065,"desc":"","name":"Kit (Landing Pad Runway)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitLargeDirectHeatExchanger":{"prefab":{"prefabName":"ItemKitLargeDirectHeatExchanger","prefabHash":450164077,"desc":"","name":"Kit (Large Direct Heat Exchanger)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitLargeExtendableRadiator":{"prefab":{"prefabName":"ItemKitLargeExtendableRadiator","prefabHash":847430620,"desc":"","name":"Kit (Large Extendable Radiator)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitLargeSatelliteDish":{"prefab":{"prefabName":"ItemKitLargeSatelliteDish","prefabHash":-2039971217,"desc":"","name":"Kit (Large Satellite Dish)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitLaunchMount":{"prefab":{"prefabName":"ItemKitLaunchMount","prefabHash":-1854167549,"desc":"","name":"Kit (Launch Mount)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitLaunchTower":{"prefab":{"prefabName":"ItemKitLaunchTower","prefabHash":-174523552,"desc":"","name":"Kit (Rocket Launch Tower)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitLiquidRegulator":{"prefab":{"prefabName":"ItemKitLiquidRegulator","prefabHash":1951126161,"desc":"","name":"Kit (Liquid Regulator)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitLiquidTank":{"prefab":{"prefabName":"ItemKitLiquidTank","prefabHash":-799849305,"desc":"","name":"Kit (Liquid Tank)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitLiquidTankInsulated":{"prefab":{"prefabName":"ItemKitLiquidTankInsulated","prefabHash":617773453,"desc":"","name":"Kit (Insulated Liquid Tank)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitLiquidTurboVolumePump":{"prefab":{"prefabName":"ItemKitLiquidTurboVolumePump","prefabHash":-1805020897,"desc":"","name":"Kit (Turbo Volume Pump - Liquid)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitLiquidUmbilical":{"prefab":{"prefabName":"ItemKitLiquidUmbilical","prefabHash":1571996765,"desc":"","name":"Kit (Liquid Umbilical)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitLocker":{"prefab":{"prefabName":"ItemKitLocker","prefabHash":882301399,"desc":"","name":"Kit (Locker)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitLogicCircuit":{"prefab":{"prefabName":"ItemKitLogicCircuit","prefabHash":1512322581,"desc":"","name":"Kit (IC Housing)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitLogicInputOutput":{"prefab":{"prefabName":"ItemKitLogicInputOutput","prefabHash":1997293610,"desc":"","name":"Kit (Logic I/O)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitLogicMemory":{"prefab":{"prefabName":"ItemKitLogicMemory","prefabHash":-2098214189,"desc":"","name":"Kit (Logic Memory)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitLogicProcessor":{"prefab":{"prefabName":"ItemKitLogicProcessor","prefabHash":220644373,"desc":"","name":"Kit (Logic Processor)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitLogicSwitch":{"prefab":{"prefabName":"ItemKitLogicSwitch","prefabHash":124499454,"desc":"","name":"Kit (Logic Switch)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitLogicTransmitter":{"prefab":{"prefabName":"ItemKitLogicTransmitter","prefabHash":1005397063,"desc":"","name":"Kit (Logic Transmitter)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitMotherShipCore":{"prefab":{"prefabName":"ItemKitMotherShipCore","prefabHash":-344968335,"desc":"","name":"Kit (Mothership)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitMusicMachines":{"prefab":{"prefabName":"ItemKitMusicMachines","prefabHash":-2038889137,"desc":"","name":"Kit (Music Machines)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitPassiveLargeRadiatorGas":{"prefab":{"prefabName":"ItemKitPassiveLargeRadiatorGas","prefabHash":-1752768283,"desc":"","name":"Kit (Medium Radiator)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Default"}},"ItemKitPassiveLargeRadiatorLiquid":{"prefab":{"prefabName":"ItemKitPassiveLargeRadiatorLiquid","prefabHash":1453961898,"desc":"","name":"Kit (Medium Radiator Liquid)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitPassthroughHeatExchanger":{"prefab":{"prefabName":"ItemKitPassthroughHeatExchanger","prefabHash":636112787,"desc":"","name":"Kit (CounterFlow Heat Exchanger)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitPictureFrame":{"prefab":{"prefabName":"ItemKitPictureFrame","prefabHash":-2062364768,"desc":"","name":"Kit Picture Frame"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitPipe":{"prefab":{"prefabName":"ItemKitPipe","prefabHash":-1619793705,"desc":"","name":"Kit (Pipe)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":20.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitPipeLiquid":{"prefab":{"prefabName":"ItemKitPipeLiquid","prefabHash":-1166461357,"desc":"","name":"Kit (Liquid Pipe)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":20.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitPipeOrgan":{"prefab":{"prefabName":"ItemKitPipeOrgan","prefabHash":-827125300,"desc":"","name":"Kit (Pipe Organ)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitPipeRadiator":{"prefab":{"prefabName":"ItemKitPipeRadiator","prefabHash":920411066,"desc":"","name":"Kit (Pipe Radiator)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Default"}},"ItemKitPipeRadiatorLiquid":{"prefab":{"prefabName":"ItemKitPipeRadiatorLiquid","prefabHash":-1697302609,"desc":"","name":"Kit (Pipe Radiator Liquid)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Default"}},"ItemKitPipeUtility":{"prefab":{"prefabName":"ItemKitPipeUtility","prefabHash":1934508338,"desc":"","name":"Kit (Pipe Utility Gas)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitPipeUtilityLiquid":{"prefab":{"prefabName":"ItemKitPipeUtilityLiquid","prefabHash":595478589,"desc":"","name":"Kit (Pipe Utility Liquid)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitPlanter":{"prefab":{"prefabName":"ItemKitPlanter","prefabHash":119096484,"desc":"","name":"Kit (Planter)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitPortablesConnector":{"prefab":{"prefabName":"ItemKitPortablesConnector","prefabHash":1041148999,"desc":"","name":"Kit (Portables Connector)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitPowerTransmitter":{"prefab":{"prefabName":"ItemKitPowerTransmitter","prefabHash":291368213,"desc":"","name":"Kit (Power Transmitter)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitPowerTransmitterOmni":{"prefab":{"prefabName":"ItemKitPowerTransmitterOmni","prefabHash":-831211676,"desc":"","name":"Kit (Power Transmitter Omni)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitPoweredVent":{"prefab":{"prefabName":"ItemKitPoweredVent","prefabHash":2015439334,"desc":"","name":"Kit (Powered Vent)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitPressureFedGasEngine":{"prefab":{"prefabName":"ItemKitPressureFedGasEngine","prefabHash":-121514007,"desc":"","name":"Kit (Pressure Fed Gas Engine)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitPressureFedLiquidEngine":{"prefab":{"prefabName":"ItemKitPressureFedLiquidEngine","prefabHash":-99091572,"desc":"","name":"Kit (Pressure Fed Liquid Engine)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitPressurePlate":{"prefab":{"prefabName":"ItemKitPressurePlate","prefabHash":123504691,"desc":"","name":"Kit (Trigger Plate)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitPumpedLiquidEngine":{"prefab":{"prefabName":"ItemKitPumpedLiquidEngine","prefabHash":1921918951,"desc":"","name":"Kit (Pumped Liquid Engine)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitRailing":{"prefab":{"prefabName":"ItemKitRailing","prefabHash":750176282,"desc":"","name":"Kit (Railing)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitRecycler":{"prefab":{"prefabName":"ItemKitRecycler","prefabHash":849148192,"desc":"","name":"Kit (Recycler)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitRegulator":{"prefab":{"prefabName":"ItemKitRegulator","prefabHash":1181371795,"desc":"","name":"Kit (Pressure Regulator)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitReinforcedWindows":{"prefab":{"prefabName":"ItemKitReinforcedWindows","prefabHash":1459985302,"desc":"","name":"Kit (Reinforced Windows)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitResearchMachine":{"prefab":{"prefabName":"ItemKitResearchMachine","prefabHash":724776762,"desc":"","name":"Kit Research Machine"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Default"}},"ItemKitRespawnPointWallMounted":{"prefab":{"prefabName":"ItemKitRespawnPointWallMounted","prefabHash":1574688481,"desc":"","name":"Kit (Respawn)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitRocketAvionics":{"prefab":{"prefabName":"ItemKitRocketAvionics","prefabHash":1396305045,"desc":"","name":"Kit (Avionics)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitRocketBattery":{"prefab":{"prefabName":"ItemKitRocketBattery","prefabHash":-314072139,"desc":"","name":"Kit (Rocket Battery)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitRocketCargoStorage":{"prefab":{"prefabName":"ItemKitRocketCargoStorage","prefabHash":479850239,"desc":"","name":"Kit (Rocket Cargo Storage)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitRocketCelestialTracker":{"prefab":{"prefabName":"ItemKitRocketCelestialTracker","prefabHash":-303008602,"desc":"","name":"Kit (Rocket Celestial Tracker)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitRocketCircuitHousing":{"prefab":{"prefabName":"ItemKitRocketCircuitHousing","prefabHash":721251202,"desc":"","name":"Kit (Rocket Circuit Housing)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitRocketDatalink":{"prefab":{"prefabName":"ItemKitRocketDatalink","prefabHash":-1256996603,"desc":"","name":"Kit (Rocket Datalink)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitRocketGasFuelTank":{"prefab":{"prefabName":"ItemKitRocketGasFuelTank","prefabHash":-1629347579,"desc":"","name":"Kit (Rocket Gas Fuel Tank)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitRocketLiquidFuelTank":{"prefab":{"prefabName":"ItemKitRocketLiquidFuelTank","prefabHash":2032027950,"desc":"","name":"Kit (Rocket Liquid Fuel Tank)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitRocketManufactory":{"prefab":{"prefabName":"ItemKitRocketManufactory","prefabHash":-636127860,"desc":"","name":"Kit (Rocket Manufactory)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitRocketMiner":{"prefab":{"prefabName":"ItemKitRocketMiner","prefabHash":-867969909,"desc":"","name":"Kit (Rocket Miner)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitRocketScanner":{"prefab":{"prefabName":"ItemKitRocketScanner","prefabHash":1753647154,"desc":"","name":"Kit (Rocket Scanner)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitRocketTransformerSmall":{"prefab":{"prefabName":"ItemKitRocketTransformerSmall","prefabHash":-932335800,"desc":"","name":"Kit (Transformer Small (Rocket))"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitRoverFrame":{"prefab":{"prefabName":"ItemKitRoverFrame","prefabHash":1827215803,"desc":"","name":"Kit (Rover Frame)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitRoverMKI":{"prefab":{"prefabName":"ItemKitRoverMKI","prefabHash":197243872,"desc":"","name":"Kit (Rover Mk I)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitSDBHopper":{"prefab":{"prefabName":"ItemKitSDBHopper","prefabHash":323957548,"desc":"","name":"Kit (SDB Hopper)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitSatelliteDish":{"prefab":{"prefabName":"ItemKitSatelliteDish","prefabHash":178422810,"desc":"","name":"Kit (Medium Satellite Dish)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitSecurityPrinter":{"prefab":{"prefabName":"ItemKitSecurityPrinter","prefabHash":578078533,"desc":"","name":"Kit (Security Printer)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitSensor":{"prefab":{"prefabName":"ItemKitSensor","prefabHash":-1776897113,"desc":"","name":"Kit (Sensors)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitShower":{"prefab":{"prefabName":"ItemKitShower","prefabHash":735858725,"desc":"","name":"Kit (Shower)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitSign":{"prefab":{"prefabName":"ItemKitSign","prefabHash":529996327,"desc":"","name":"Kit (Sign)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitSleeper":{"prefab":{"prefabName":"ItemKitSleeper","prefabHash":326752036,"desc":"","name":"Kit (Sleeper)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitSmallDirectHeatExchanger":{"prefab":{"prefabName":"ItemKitSmallDirectHeatExchanger","prefabHash":-1332682164,"desc":"","name":"Kit (Small Direct Heat Exchanger)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Default"}},"ItemKitSmallSatelliteDish":{"prefab":{"prefabName":"ItemKitSmallSatelliteDish","prefabHash":1960952220,"desc":"","name":"Kit (Small Satellite Dish)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitSolarPanel":{"prefab":{"prefabName":"ItemKitSolarPanel","prefabHash":-1924492105,"desc":"","name":"Kit (Solar Panel)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitSolarPanelBasic":{"prefab":{"prefabName":"ItemKitSolarPanelBasic","prefabHash":844961456,"desc":"","name":"Kit (Solar Panel Basic)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Default"}},"ItemKitSolarPanelBasicReinforced":{"prefab":{"prefabName":"ItemKitSolarPanelBasicReinforced","prefabHash":-528695432,"desc":"","name":"Kit (Solar Panel Basic Heavy)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Default"}},"ItemKitSolarPanelReinforced":{"prefab":{"prefabName":"ItemKitSolarPanelReinforced","prefabHash":-364868685,"desc":"","name":"Kit (Solar Panel Heavy)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitSolidGenerator":{"prefab":{"prefabName":"ItemKitSolidGenerator","prefabHash":1293995736,"desc":"","name":"Kit (Solid Generator)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitSorter":{"prefab":{"prefabName":"ItemKitSorter","prefabHash":969522478,"desc":"","name":"Kit (Sorter)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitSpeaker":{"prefab":{"prefabName":"ItemKitSpeaker","prefabHash":-126038526,"desc":"","name":"Kit (Speaker)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitStacker":{"prefab":{"prefabName":"ItemKitStacker","prefabHash":1013244511,"desc":"","name":"Kit (Stacker)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitStairs":{"prefab":{"prefabName":"ItemKitStairs","prefabHash":170878959,"desc":"","name":"Kit (Stairs)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitStairwell":{"prefab":{"prefabName":"ItemKitStairwell","prefabHash":-1868555784,"desc":"","name":"Kit (Stairwell)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitStandardChute":{"prefab":{"prefabName":"ItemKitStandardChute","prefabHash":2133035682,"desc":"","name":"Kit (Powered Chutes)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitStirlingEngine":{"prefab":{"prefabName":"ItemKitStirlingEngine","prefabHash":-1821571150,"desc":"","name":"Kit (Stirling Engine)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitSuitStorage":{"prefab":{"prefabName":"ItemKitSuitStorage","prefabHash":1088892825,"desc":"","name":"Kit (Suit Storage)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitTables":{"prefab":{"prefabName":"ItemKitTables","prefabHash":-1361598922,"desc":"","name":"Kit (Tables)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitTank":{"prefab":{"prefabName":"ItemKitTank","prefabHash":771439840,"desc":"","name":"Kit (Tank)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitTankInsulated":{"prefab":{"prefabName":"ItemKitTankInsulated","prefabHash":1021053608,"desc":"","name":"Kit (Tank Insulated)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Default"}},"ItemKitToolManufactory":{"prefab":{"prefabName":"ItemKitToolManufactory","prefabHash":529137748,"desc":"","name":"Kit (Tool Manufactory)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitTransformer":{"prefab":{"prefabName":"ItemKitTransformer","prefabHash":-453039435,"desc":"","name":"Kit (Transformer Large)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitTransformerSmall":{"prefab":{"prefabName":"ItemKitTransformerSmall","prefabHash":665194284,"desc":"","name":"Kit (Transformer Small)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitTurbineGenerator":{"prefab":{"prefabName":"ItemKitTurbineGenerator","prefabHash":-1590715731,"desc":"","name":"Kit (Turbine Generator)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitTurboVolumePump":{"prefab":{"prefabName":"ItemKitTurboVolumePump","prefabHash":-1248429712,"desc":"","name":"Kit (Turbo Volume Pump - Gas)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Default"}},"ItemKitUprightWindTurbine":{"prefab":{"prefabName":"ItemKitUprightWindTurbine","prefabHash":-1798044015,"desc":"","name":"Kit (Upright Wind Turbine)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Default"}},"ItemKitVendingMachine":{"prefab":{"prefabName":"ItemKitVendingMachine","prefabHash":-2038384332,"desc":"","name":"Kit (Vending Machine)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitVendingMachineRefrigerated":{"prefab":{"prefabName":"ItemKitVendingMachineRefrigerated","prefabHash":-1867508561,"desc":"","name":"Kit (Vending Machine Refrigerated)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitWall":{"prefab":{"prefabName":"ItemKitWall","prefabHash":-1826855889,"desc":"","name":"Kit (Wall)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":30.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitWallArch":{"prefab":{"prefabName":"ItemKitWallArch","prefabHash":1625214531,"desc":"","name":"Kit (Arched Wall)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":30.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitWallFlat":{"prefab":{"prefabName":"ItemKitWallFlat","prefabHash":-846838195,"desc":"","name":"Kit (Flat Wall)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":30.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitWallGeometry":{"prefab":{"prefabName":"ItemKitWallGeometry","prefabHash":-784733231,"desc":"","name":"Kit (Geometric Wall)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":30.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitWallIron":{"prefab":{"prefabName":"ItemKitWallIron","prefabHash":-524546923,"desc":"","name":"Kit (Iron Wall)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":30.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitWallPadded":{"prefab":{"prefabName":"ItemKitWallPadded","prefabHash":-821868990,"desc":"","name":"Kit (Padded Wall)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":30.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitWaterBottleFiller":{"prefab":{"prefabName":"ItemKitWaterBottleFiller","prefabHash":159886536,"desc":"","name":"Kit (Water Bottle Filler)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitWaterPurifier":{"prefab":{"prefabName":"ItemKitWaterPurifier","prefabHash":611181283,"desc":"","name":"Kit (Water Purifier)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitWeatherStation":{"prefab":{"prefabName":"ItemKitWeatherStation","prefabHash":337505889,"desc":"","name":"Kit (Weather Station)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Default"}},"ItemKitWindTurbine":{"prefab":{"prefabName":"ItemKitWindTurbine","prefabHash":-868916503,"desc":"","name":"Kit (Wind Turbine)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Kits"}},"ItemKitWindowShutter":{"prefab":{"prefabName":"ItemKitWindowShutter","prefabHash":1779979754,"desc":"","name":"Kit (Window Shutter)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"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.0,"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.0,"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.0,"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.0,"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.0,"slotClass":"None","sortingClass":"Default"}},"ItemLiquidCanisterEmpty":{"prefab":{"prefabName":"ItemLiquidCanisterEmpty","prefabHash":-185207387,"desc":"","name":"Liquid Canister"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"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.0,"slotClass":"LiquidCanister","sortingClass":"Atmospherics"}},"ItemLiquidDrain":{"prefab":{"prefabName":"ItemLiquidDrain","prefabHash":2036225202,"desc":"","name":"Kit (Liquid Drain)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemLiquidPipeAnalyzer":{"prefab":{"prefabName":"ItemLiquidPipeAnalyzer","prefabHash":226055671,"desc":"","name":"Kit (Liquid Pipe Analyzer)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"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.0,"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.0,"slotClass":"None","sortingClass":"Default"}},"ItemLiquidPipeVolumePump":{"prefab":{"prefabName":"ItemLiquidPipeVolumePump","prefabHash":-2106280569,"desc":"","name":"Kit (Liquid Volume Pump)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"slotClass":"Tool","sortingClass":"Tools"}},"ItemMarineBodyArmor":{"prefab":{"prefabName":"ItemMarineBodyArmor","prefabHash":1399098998,"desc":"","name":"Marine Armor"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"slotClass":"None","sortingClass":"Kits"}},"ItemPassiveVentInsulated":{"prefab":{"prefabName":"ItemPassiveVentInsulated","prefabHash":-1397583760,"desc":"","name":"Kit (Insulated Passive Vent)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"slotClass":"None","sortingClass":"Default"}},"ItemPipeIgniter":{"prefab":{"prefabName":"ItemPipeIgniter","prefabHash":1366030599,"desc":"","name":"Kit (Pipe Igniter)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"slotClass":"None","sortingClass":"Kits"}},"ItemPlantEndothermic_Creative":{"prefab":{"prefabName":"ItemPlantEndothermic_Creative","prefabHash":-1159179557,"desc":"","name":"Endothermic Plant Creative"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"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.0,"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.0,"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.0,"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.0,"slotClass":"Plant","sortingClass":"Default"}},"ItemPlantThermogenic_Creative":{"prefab":{"prefabName":"ItemPlantThermogenic_Creative","prefabHash":-1208890208,"desc":"","name":"Thermogenic Plant Creative"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"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.0,"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.0,"slotClass":"Plant","sortingClass":"Resources"}},"ItemPlasticSheets":{"prefab":{"prefabName":"ItemPlasticSheets","prefabHash":662053345,"desc":"","name":"Plastic Sheets"},"item":{"consumable":false,"ingredient":false,"maxQuantity":50.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"slotClass":"Ore","sortingClass":"Ores"}},"ItemRemoteDetonator":{"prefab":{"prefabName":"ItemRemoteDetonator","prefabHash":678483886,"desc":"","name":"Remote Detonator"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"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"}]},"ItemResearchCapsule":{"prefab":{"prefabName":"ItemResearchCapsule","prefabHash":819096942,"desc":"","name":"Research Capsule Blue"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Default"}},"ItemResearchCapsuleGreen":{"prefab":{"prefabName":"ItemResearchCapsuleGreen","prefabHash":-1352732550,"desc":"","name":"Research Capsule Green"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Default"}},"ItemResearchCapsuleRed":{"prefab":{"prefabName":"ItemResearchCapsuleRed","prefabHash":954947943,"desc":"","name":"Research Capsule Red"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Default"}},"ItemResearchCapsuleYellow":{"prefab":{"prefabName":"ItemResearchCapsuleYellow","prefabHash":750952701,"desc":"","name":"Research Capsule Yellow"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"None","sortingClass":"Default"}},"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.0,"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.0,"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.0,"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.0,"slotClass":"DrillHead","sortingClass":"Default"}},"ItemRocketMiningDrillHeadDurable":{"prefab":{"prefabName":"ItemRocketMiningDrillHeadDurable","prefabHash":1530764483,"desc":"","name":"Mining-Drill Head (Durable)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":100.0,"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.0,"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.0,"slotClass":"DrillHead","sortingClass":"Default"}},"ItemRocketMiningDrillHeadIce":{"prefab":{"prefabName":"ItemRocketMiningDrillHeadIce","prefabHash":-380904592,"desc":"","name":"Mining-Drill Head (Ice)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":100.0,"slotClass":"DrillHead","sortingClass":"Default"}},"ItemRocketMiningDrillHeadLongTerm":{"prefab":{"prefabName":"ItemRocketMiningDrillHeadLongTerm","prefabHash":-684020753,"desc":"","name":"Mining-Drill Head (Long Term)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":100.0,"slotClass":"DrillHead","sortingClass":"Default"}},"ItemRocketMiningDrillHeadMineral":{"prefab":{"prefabName":"ItemRocketMiningDrillHeadMineral","prefabHash":1083675581,"desc":"","name":"Mining-Drill Head (Mineral)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":100.0,"slotClass":"DrillHead","sortingClass":"Default"}},"ItemRocketScanningHead":{"prefab":{"prefabName":"ItemRocketScanningHead","prefabHash":-1198702771,"desc":"","name":"Rocket Scanner Head"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"slotClass":"SensorProcessingUnit","sortingClass":"Default"}},"ItemSiliconIngot":{"prefab":{"prefabName":"ItemSiliconIngot","prefabHash":-290196476,"desc":"","name":"Ingot (Silicon)"},"item":{"consumable":true,"ingredient":true,"maxQuantity":500.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"slotClass":"SoundCartridge","sortingClass":"Default"}},"ItemSoundCartridgeDrums":{"prefab":{"prefabName":"ItemSoundCartridgeDrums","prefabHash":-1901500508,"desc":"","name":"Sound Cartridge Drums"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"SoundCartridge","sortingClass":"Default"}},"ItemSoundCartridgeLeads":{"prefab":{"prefabName":"ItemSoundCartridgeLeads","prefabHash":-1174735962,"desc":"","name":"Sound Cartridge Leads"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"SoundCartridge","sortingClass":"Default"}},"ItemSoundCartridgeSynth":{"prefab":{"prefabName":"ItemSoundCartridgeSynth","prefabHash":-1971419310,"desc":"","name":"Sound Cartridge Synth"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"SoundCartridge","sortingClass":"Default"}},"ItemSoyOil":{"prefab":{"prefabName":"ItemSoyOil","prefabHash":1387403148,"desc":"","name":"Soy Oil"},"item":{"consumable":true,"ingredient":true,"maxQuantity":100.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"slotClass":"None","sortingClass":"Resources"}},"ItemStelliteIngot":{"prefab":{"prefabName":"ItemStelliteIngot","prefabHash":-1897868623,"desc":"","name":"Ingot (Stellite)"},"item":{"consumable":true,"ingredient":true,"maxQuantity":500.0,"reagents":{"Stellite":1.0},"slotClass":"Ingot","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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"slotClass":"None","sortingClass":"Kits"}},"ItemWaspaloyIngot":{"prefab":{"prefabName":"ItemWaspaloyIngot","prefabHash":156348098,"desc":"","name":"Ingot (Waspaloy)"},"item":{"consumable":true,"ingredient":true,"maxQuantity":500.0,"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.5,"slotClass":"LiquidBottle","sortingClass":"Default"}},"ItemWaterPipeDigitalValve":{"prefab":{"prefabName":"ItemWaterPipeDigitalValve","prefabHash":309693520,"desc":"","name":"Kit (Liquid Digital Valve)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemWaterPipeMeter":{"prefab":{"prefabName":"ItemWaterPipeMeter","prefabHash":-90898877,"desc":"","name":"Kit (Liquid Pipe Meter)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemWaterWallCooler":{"prefab":{"prefabName":"ItemWaterWallCooler","prefabHash":-1721846327,"desc":"","name":"Kit (Liquid Wall Cooler)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":5.0,"slotClass":"None","sortingClass":"Kits"}},"ItemWearLamp":{"prefab":{"prefabName":"ItemWearLamp","prefabHash":-598730959,"desc":"","name":"Headlamp"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"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.0,"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.0,"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.0,"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.0,"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.0,"slotClass":"Wreckage","sortingClass":"Default"}},"ItemWreckageAirConditioner2":{"prefab":{"prefabName":"ItemWreckageAirConditioner2","prefabHash":169888054,"desc":"","name":"Wreckage Air Conditioner"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"Wreckage","sortingClass":"Default"}},"ItemWreckageHydroponicsTray1":{"prefab":{"prefabName":"ItemWreckageHydroponicsTray1","prefabHash":-310178617,"desc":"","name":"Wreckage Hydroponics Tray"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"Wreckage","sortingClass":"Default"}},"ItemWreckageLargeExtendableRadiator01":{"prefab":{"prefabName":"ItemWreckageLargeExtendableRadiator01","prefabHash":-997763,"desc":"","name":"Wreckage Large Extendable Radiator"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"Wreckage","sortingClass":"Default"}},"ItemWreckageStructureRTG1":{"prefab":{"prefabName":"ItemWreckageStructureRTG1","prefabHash":391453348,"desc":"","name":"Wreckage Structure RTG"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"Wreckage","sortingClass":"Default"}},"ItemWreckageStructureWeatherStation001":{"prefab":{"prefabName":"ItemWreckageStructureWeatherStation001","prefabHash":-834664349,"desc":"","name":"Wreckage Structure Weather Station"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"Wreckage","sortingClass":"Default"}},"ItemWreckageStructureWeatherStation002":{"prefab":{"prefabName":"ItemWreckageStructureWeatherStation002","prefabHash":1464424921,"desc":"","name":"Wreckage Structure Weather Station"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"Wreckage","sortingClass":"Default"}},"ItemWreckageStructureWeatherStation003":{"prefab":{"prefabName":"ItemWreckageStructureWeatherStation003","prefabHash":542009679,"desc":"","name":"Wreckage Structure Weather Station"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"Wreckage","sortingClass":"Default"}},"ItemWreckageStructureWeatherStation004":{"prefab":{"prefabName":"ItemWreckageStructureWeatherStation004","prefabHash":-1104478996,"desc":"","name":"Wreckage Structure Weather Station"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"Wreckage","sortingClass":"Default"}},"ItemWreckageStructureWeatherStation005":{"prefab":{"prefabName":"ItemWreckageStructureWeatherStation005","prefabHash":-919745414,"desc":"","name":"Wreckage Structure Weather Station"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"Wreckage","sortingClass":"Default"}},"ItemWreckageStructureWeatherStation006":{"prefab":{"prefabName":"ItemWreckageStructureWeatherStation006","prefabHash":1344576960,"desc":"","name":"Wreckage Structure Weather Station"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"Wreckage","sortingClass":"Default"}},"ItemWreckageStructureWeatherStation007":{"prefab":{"prefabName":"ItemWreckageStructureWeatherStation007","prefabHash":656649558,"desc":"","name":"Wreckage Structure Weather Station"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"Wreckage","sortingClass":"Default"}},"ItemWreckageStructureWeatherStation008":{"prefab":{"prefabName":"ItemWreckageStructureWeatherStation008","prefabHash":-1214467897,"desc":"","name":"Wreckage Structure Weather Station"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"Wreckage","sortingClass":"Default"}},"ItemWreckageTurbineGenerator1":{"prefab":{"prefabName":"ItemWreckageTurbineGenerator1","prefabHash":-1662394403,"desc":"","name":"Wreckage Turbine Generator"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"Wreckage","sortingClass":"Default"}},"ItemWreckageTurbineGenerator2":{"prefab":{"prefabName":"ItemWreckageTurbineGenerator2","prefabHash":98602599,"desc":"","name":"Wreckage Turbine Generator"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"Wreckage","sortingClass":"Default"}},"ItemWreckageTurbineGenerator3":{"prefab":{"prefabName":"ItemWreckageTurbineGenerator3","prefabHash":1927790321,"desc":"","name":"Wreckage Turbine Generator"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"Wreckage","sortingClass":"Default"}},"ItemWreckageWallCooler1":{"prefab":{"prefabName":"ItemWreckageWallCooler1","prefabHash":-1682930158,"desc":"","name":"Wreckage Wall Cooler"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"slotClass":"Wreckage","sortingClass":"Default"}},"ItemWreckageWallCooler2":{"prefab":{"prefabName":"ItemWreckageWallCooler2","prefabHash":45733800,"desc":"","name":"Wreckage Wall Cooler"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"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.0,"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.0,"slotClass":"None","sortingClass":"Kits"}},"KitStructureCombustionCentrifuge":{"prefab":{"prefabName":"KitStructureCombustionCentrifuge","prefabHash":231903234,"desc":"","name":"Kit (Combustion Centrifuge)"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"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.0,"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","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":[["Data","None"],["Power","None"],["LandingPad","Input"],["LandingPad","Input"],["LandingPad","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","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":[["LandingPad","Input"],["LandingPad","Input"],["LandingPad","Input"],["Data","None"],["Pipe","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","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":[["LandingPad","Input"],["LandingPad","Input"],["LandingPad","Input"],["Data","None"],["Pipe","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","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":[["LandingPad","Input"],["LandingPad","Input"],["LandingPad","Input"],["Data","None"],["PipeLiquid","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","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":[["LandingPad","Input"],["LandingPad","Input"],["LandingPad","Input"],["Data","None"],["PipeLiquid","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":{"On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["LandingPad","Input"],["LandingPad","Input"],["LandingPad","Input"],["Data","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","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":[["Data","Input"],["Data","Input"],["Power","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.0,"slotClass":"None","sortingClass":"Default"}},"MonsterEgg":{"prefab":{"prefabName":"MonsterEgg","prefabHash":-1667675295,"desc":"","name":""},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"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.0,"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.0,"slotClass":"Motherboard","sortingClass":"Default"}},"MotherboardMissionControl":{"prefab":{"prefabName":"MotherboardMissionControl","prefabHash":-127121474,"desc":"","name":""},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"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.0,"slotClass":"Motherboard","sortingClass":"Default"}},"MotherboardRockets":{"prefab":{"prefabName":"MotherboardRockets","prefabHash":-806986392,"desc":"","name":"Rocket Control Motherboard"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"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.0,"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.0,"slotClass":"None","sortingClass":"Default"}},"NpcChick":{"prefab":{"prefabName":"NpcChick","prefabHash":155856647,"desc":"","name":"Chick"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"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.0,"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":{"PrefabHash":"ReadWrite","ReferenceId":"ReadWrite","SoundAlert":"ReadWrite","Volume":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Data","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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"slotClass":"Magazine","sortingClass":"Default"}},"SeedBag_Corn":{"prefab":{"prefabName":"SeedBag_Corn","prefabHash":-1290755415,"desc":"Grow a Corn.","name":"Corn Seeds"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"slotClass":"Plant","sortingClass":"Food"}},"SeedBag_Switchgrass":{"prefab":{"prefabName":"SeedBag_Switchgrass","prefabHash":488360169,"desc":"","name":"Switchgrass Seed"},"item":{"consumable":false,"ingredient":false,"maxQuantity":10.0,"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.0,"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.0,"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.0,"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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Time":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Data","Input"],["Power","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","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Data","None"],["Power","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","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":[["PowerAndData","None"],["Pipe","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","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":[["Chute","Output"],["Data","None"],["PipeLiquid","Input"],["Power","None"],["Chute","Input"],["Chute","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","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":[["Chute","Input"],["Chute","Output"],["Data","None"],["Power","None"],["Pipe","Input"],["Pipe","Output"],["PipeLiquid","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","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":[["Chute","Input"],["Chute","Output"],["Data","None"],["Power","None"]],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":true,"hasReagents":true}},"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","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","RatioNitrogenInput":"Read","RatioNitrogenOutput":"Read","RatioNitrogenOutput2":"Read","RatioNitrousOxideInput":"Read","RatioNitrousOxideOutput":"Read","RatioNitrousOxideOutput2":"Read","RatioOxygenInput":"Read","RatioOxygenOutput":"Read","RatioOxygenOutput2":"Read","RatioPollutantInput":"Read","RatioPollutantOutput":"Read","RatioPollutantOutput2":"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":[["Data","None"],["Pipe","Input"],["Pipe","Output"],["Pipe","Waste"],["Power","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","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":[["Data","None"],["Power","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","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":[["Data","None"],["Power","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":{"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","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":[["Chute","Input"],["Chute","Output"],["Data","None"],["Power","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","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":[["PowerAndData","Input"],["Power","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","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":[["PowerAndData","Input"],["Power","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","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":[["Chute","Input"],["Chute","Output"],["Data","None"],["Power","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","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":[["Chute","Input"],["Chute","Output"],["Data","None"],["Power","None"]],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":true,"hasReagents":true}},"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","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":[["Chute","Input"],["Chute","Output"],["Data","None"],["Power","None"]],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":true,"hasReagents":true}},"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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PipeLiquid","Input"],["PipeLiquid","Output"],["PowerAndData","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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Pipe","Input"],["Pipe","Output"],["PowerAndData","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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Data","None"],["Power","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","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":[["Data","None"],["Power","Input"],["Power","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","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":[["Data","None"],["Power","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","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":[["Power","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","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":[["Data","None"],["Power","Input"],["Power","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","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":[["Power","Input"],["Power","Output"],["PowerAndData","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","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":[["Power","Input"],["Power","Output"],["PowerAndData","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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Data","None"],["Power","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","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":[["Data","None"],["Power","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","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":[["Data","None"],["Power","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","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":[["Data","None"],["Power","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","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":[["Data","None"],["Power","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","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":[["Data","None"],["Power","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","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":[["Data","None"],["Power","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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Bed","typ":"Entity"}],"device":{"connectionList":[["Power","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":{"PowerActual":"Read","PowerPotential":"Read","PowerRequired":"Read","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Data","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":{"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":{"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":{"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":{"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","On":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read"},"modes":{"0":"Mode0","1":"Mode1"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PowerAndData","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","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":[["Data","None"],["Pipe","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","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":[["Data","None"],["PipeLiquid","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","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":[["PowerAndData","None"],["Chute","Output"],["Chute","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","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":[["PowerAndData","None"],["Chute","Output"],["Chute","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","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":[["Chute","Input"],["Chute","Output"],["Data","None"],["Power","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":{"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":{"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":{"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":{"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":{"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":{"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":{"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":{"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":{"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","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":[["Chute","Output"],["PowerAndData","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","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":[["Chute","Input"],["Chute","Output"],["Chute","Output2"],["PowerAndData","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","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":[["Chute","Input"],["Chute","Output"],["Chute","Output2"],["PowerAndData","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","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":[["Chute","Input"],["Chute","Output"],["PowerAndData","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","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":[["Chute","Input"],["Chute","Output"],["PowerAndData","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","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Import","typ":"None"}],"device":{"connectionList":[["Chute","Output"],["Data","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","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Export","typ":"None"}],"device":{"connectionList":[["Chute","Input"],["Data","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":{"PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Transport Slot","typ":"None"}],"device":{"connectionList":[["Chute","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":{"PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Transport Slot","typ":"None"}],"device":{"connectionList":[["Chute","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","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":[["Chute","Input"],["PowerAndData","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","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":[["Data","Input"],["Power","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","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","Pressure":"Read","PressureInput":"Read","PressureOutput":"Read","RatioCarbonDioxide":"Read","RatioCarbonDioxideInput":"Read","RatioCarbonDioxideOutput":"Read","RatioHydrogen":"Read","RatioLiquidCarbonDioxide":"Read","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"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","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":[["Chute","Input"],["Chute","Output"],["Data","None"],["Power","None"],["Pipe","Input"],["Pipe","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","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":[["Data","None"],["Power","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","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":[["Data","None"],["Power","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","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":[["Pipe","Input2"],["Pipe","Input"],["PipeLiquid","Output"],["Data","None"],["Power","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","On":"ReadWrite","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PipeLiquid","Output"],["Pipe","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","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":[["PowerAndData","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","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":[["Data","None"],["Power","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","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":[["PowerAndData","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","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":[["PowerAndData","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","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":[["PowerAndData","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","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":[["PowerAndData","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","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":[["Data","None"],["Power","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","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","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":[["Data","None"],["Pipe","None"],["Power","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","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":[["Data","None"],["Pipe","Input"],["Power","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","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":[["Data","None"],["Pipe","Input"],["Power","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","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":[["PowerAndData","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","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":[["Chute","Output"],["Data","None"],["Power","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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Pipe","Output"],["Pipe","Input"],["PowerAndData","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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PowerAndData","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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PowerAndData","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","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Power","None"],["Data","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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PipeLiquid","Input"],["PowerAndData","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","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","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"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","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":[["Data","None"],["PipeLiquid","Input"],["Pipe","Output"],["Power","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","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":[["Chute","Input"],["Chute","Output"],["Data","None"],["Power","None"]],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":true,"hasReagents":true}},"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","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Elevator","None"],["Elevator","None"],["Data","None"],["Power","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","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Elevator","None"],["Elevator","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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Elevator","None"],["Elevator","None"],["Data","None"],["Power","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","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Elevator","None"],["Elevator","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","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Data","None"],["Power","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","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":[["Pipe","Input2"],["Pipe","Output"],["PipeLiquid","Input"],["Data","None"],["Power","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","On":"ReadWrite","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Pipe","Output"],["PipeLiquid","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","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","PressureInput":"Read","PressureOutput":"Read","PressureOutput2":"Read","Ratio":"Read","RatioCarbonDioxideInput":"Read","RatioCarbonDioxideOutput":"Read","RatioCarbonDioxideOutput2":"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","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":[["Data","None"],["Pipe","Input"],["Pipe","Output"],["Pipe","Waste"],["Power","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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PowerAndData","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":{"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","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":[["Data","None"],["Power","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","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":[["Pipe","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","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":[["Chute","Input"],["Chute","Output"],["Pipe","Input"],["Pipe","Output"],["PipeLiquid","Output2"],["Data","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","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":[["Data","None"],["Pipe","Input"],["Pipe","Output"],["Power","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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Pipe","Output"],["Pipe","Input2"],["Pipe","Input"],["PowerAndData","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","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":[["Data","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":{"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":[["Data","None"],["Pipe","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","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Pipe","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","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Pipe","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","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":[["Pipe","Input"],["PowerAndData","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","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":[["Data","None"],["Power","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","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":[["Pipe","Input"],["PowerAndData","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","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":[["Data","None"],["Power","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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Data","None"],["Power","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","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":[["Chute","Input"],["Chute","Output"],["PowerAndData","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","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Pipe","Input"],["Pipe","Output"],["PipeLiquid","Input"],["PipeLiquid","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","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Pipe","Input"],["Pipe","Input"],["Pipe","Output"],["Pipe","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","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PipeLiquid","Input"],["PipeLiquid","Input"],["PipeLiquid","Output"],["PipeLiquid","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","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":[["Chute","Input"],["Chute","Output"],["Data","None"],["Power","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","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":[["Chute","Input"],["Chute","Output"],["Data","None"],["Power","None"]],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":true,"hasReagents":true}},"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","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":[["Data","None"],["Power","None"],["PipeLiquid","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","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":[["PipeLiquid","None"],["PipeLiquid","None"],["Data","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","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":[["Data","None"],["Power","None"],["Chute","Input"],["Pipe","Output"],["PipeLiquid","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":{"On":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PowerAndData","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","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","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","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","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","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":[["PowerAndData","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","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Pipe","Input"],["Pipe","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","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PipeLiquid","Input"],["Pipe","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","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PipeLiquid","Input"],["PipeLiquid","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","Open":"ReadWrite","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Data","None"],["PipeLiquid","Input"],["PipeLiquid","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","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":[["Data","None"],["Power","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","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":[["Data","None"],["Power","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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PowerAndData","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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PowerAndData","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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PowerAndData","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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PowerAndData","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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PowerAndData","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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PowerAndData","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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PipeLiquid","None"],["Data","Input"],["Power","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","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":[["PowerAndData","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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Data","None"],["Power","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","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PipeLiquid","Input"],["PipeLiquid","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":{"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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PipeLiquid","Input"],["PipeLiquid","Output"],["PowerAndData","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","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":[["Data","None"],["PipeLiquid","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","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":[["Data","None"],["PipeLiquid","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","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":[["Data","None"],["PipeLiquid","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","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":[["Data","None"],["PipeLiquid","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":{"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":[["Data","None"],["PipeLiquid","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","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":[["Data","None"],["Power","None"],["PipeLiquid","Input"],["PipeLiquid","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","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PipeLiquid","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","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PipeLiquid","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","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":[["PipeLiquid","Input"],["PowerAndData","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","On":"ReadWrite","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PipeLiquid","None"],["PipeLiquid","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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PipeLiquid","Output"],["PipeLiquid","Input"],["PowerAndData","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","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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Data","Input"],["Data","Output"],["Power","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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Data","Input"],["Data","Output"],["Power","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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Data","Input"],["Data","Output"],["Power","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","PrefabHash":"Read","ReferenceId":"Read","Setting":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Data","None"],["Data","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","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":[["Data","Input"],["Data","Input"],["Data","Output"],["Power","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","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Data","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","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":[["Data","Input"],["Data","Input"],["Data","Output"],["Power","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":{"PrefabHash":"Read","ReferenceId":"Read","Setting":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Data","None"],["Data","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","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":[["Data","Input"],["Data","Input"],["Data","Output"],["Power","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","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":[["Data","Input"],["Data","Output"],["Power","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":{"PrefabHash":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Data","None"],["Data","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","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":[["Data","Input"],["Data","Input"],["Data","Output"],["Power","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":[["Data","Input"],["Data","Output"],["Power","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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Data","Input"],["Data","Output"],["Power","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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Data","Input"],["Data","Output"],["Power","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":{"Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PowerAndData","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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Data","Input"],["Power","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","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":[["Data","Input"],["Data","Input"],["Data","Output"],["Power","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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Data","Input"],["Data","Output"],["Power","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","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":[["Chute","Output2"],["Chute","Input"],["Chute","Output"],["PowerAndData","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","Open":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read","Setting":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Data","None"],["Data","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","Open":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read","Setting":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Data","None"],["Data","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":[["Data","Input"],["Data","Input"],["Data","Input"],["Power","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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Data","Input"],["Data","Output"],["Power","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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Data","Input"],["Data","Output"],["Power","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","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","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Pipe","Input"],["Pipe","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","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PipeLiquid","Input"],["PipeLiquid","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","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":[["Data","None"],["Power","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","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Pipe","Input"],["Pipe","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","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PipeLiquid","Input"],["PipeLiquid","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","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":[["Data","Output"],["Pipe","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","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":[["Data","Output"],["PipeLiquid","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","On":"ReadWrite","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PowerAndData","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","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","RatioLiquidHydrogen":"Read","RatioLiquidNitrogen":"Read","RatioLiquidNitrousOxide":"Read","RatioLiquidOxygen":"Read","RatioLiquidPollutant":"Read","RatioLiquidVolatiles":"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","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":[["Data","None"],["Pipe","Input"],["Pipe","Input2"],["Pipe","Output"],["Power","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","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PowerAndData","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","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","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","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Pipe","Input"],["Pipe","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","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PipeLiquid","Input"],["PipeLiquid","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":{"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","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Pipe","Input"],["Pipe","Input2"],["Pipe","Output"],["Pipe","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","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Pipe","Input"],["PipeLiquid","Input2"],["Pipe","Output"],["PipeLiquid","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","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PipeLiquid","Input"],["PipeLiquid","Input2"],["PipeLiquid","Output"],["PipeLiquid","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","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":[["PowerAndData","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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Data","None"],["Power","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","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PowerAndData","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":{"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":{"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","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Pipe","Input"],["Pipe","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":{"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":{"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":{"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","Open":"ReadWrite","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"","typ":"None"}],"device":{"connectionList":[["Pipe","Input"],["PipeLiquid","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":{"Open":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Portable Slot","typ":"None"}],"device":{"connectionList":[["Power","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","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":[["Data","None"],["Power","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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Data","None"],["Power","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","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":[["Data","None"],["Power","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":{"PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Power","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":{"PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Power","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","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":[["Data","None"],["Power","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","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":[["Data","None"],["Pipe","Output"],["Power","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","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":[["Data","None"],["Pipe","Output"],["Power","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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Pipe","Input"],["PipeLiquid","Output"],["PowerAndData","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","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":[["Pipe","Input"],["Pipe","Input2"],["PowerAndData","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","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":[["PipeLiquid","Input"],["PipeLiquid","Input2"],["PowerAndData","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":{"PrefabHash":"Read","ReferenceId":"Read","Setting":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Data","None"],["Data","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":{"PrefabHash":"Read","ReferenceId":"Read","Setting":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Data","None"],["Data","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":{"PrefabHash":"Read","ReferenceId":"Read","Setting":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Data","None"],["Data","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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Pipe","Input"],["Pipe","Output"],["PowerAndData","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","PrefabHash":"Read","Quantity":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PowerAndData","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","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":[["PipeLiquid","None"],["PipeLiquid","None"],["PowerAndData","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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PipeLiquid","Input"],["Pipe","Output"],["PowerAndData","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","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":[["Chute","Input"],["Chute","Output"],["Data","None"],["Power","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","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":[["Chute","Input"],["Chute","Output"],["Data","None"],["Power","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}},"StructureResearchMachine":{"prefab":{"prefabName":"StructureResearchMachine","prefabHash":-796627526,"desc":"","name":"Research Machine"},"structure":{"smallGrid":true},"logic":{"logicSlotTypes":{"0":{},"1":{},"2":{}},"logicTypes":{"Activate":"ReadWrite","ClearMemory":"Write","CurrentResearchPodType":"Read","Error":"Read","ExportCount":"Read","ImportCount":"Read","Lock":"ReadWrite","ManualResearchRequiredPod":"Write","Maximum":"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":"Import","typ":"None"},{"name":"Export","typ":"None"},{"name":"","typ":"None"}],"device":{"connectionList":[["Chute","Input"],["Chute","Output"],["Data","None"],["Power","None"],["Pipe","Input"]],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":true,"hasReagents":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","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":[["PowerAndData","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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read","Vertical":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PowerAndData","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","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":[["PowerAndData","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","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":[["Pipe","Input"],["PowerAndData","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","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":[["Chute","Input"],["Chute","Output"],["Data","None"],["Power","None"]],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":true,"hasReagents":true}},"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","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":[["Chute","Output"],["PowerAndData","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","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":[["PowerAndData","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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Power","Input"],["Power","Output"],["Data","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","Open":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Import","typ":"None"}],"device":{"connectionList":[["Chute","Input"],["Chute","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","Open":"ReadWrite","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Import","typ":"None"}],"device":{"connectionList":[["Data","None"],["Power","None"],["Chute","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","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":[["Chute","Input"],["Chute","Output"],["Data","None"],["Power","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","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":[["Data","None"],["Power","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","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":[["Chute","Input"],["Chute","Output"],["Data","None"],["Power","None"]],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":true,"hasReagents":true}},"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":{"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","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","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","Open":"ReadWrite","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PipeLiquid","Input"],["PipeLiquid","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","On":"ReadWrite","Open":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Data","None"],["PipeLiquid","Input"],["PipeLiquid","Output"],["Power","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":{"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":{"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":{"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","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":[["Data","None"],["Pipe","Input"],["Power","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","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":[["Data","None"],["Pipe","Input"],["Power","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","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":[["Data","None"],["Pipe","Input"],["Power","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","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":[["Data","None"],["Pipe","Input"],["Power","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","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":[["Data","None"],["Power","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","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Pipe","Input"],["Pipe","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","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PipeLiquid","Input"],["Pipe","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","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PipeLiquid","Input"],["PipeLiquid","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","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":[["Data","None"],["Power","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","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Vertical":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PowerAndData","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","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Vertical":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PowerAndData","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","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Vertical":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PowerAndData","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","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Vertical":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Data","None"],["Power","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","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Vertical":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Data","None"],["Power","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","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Vertical":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PowerAndData","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","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Vertical":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PowerAndData","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","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Vertical":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PowerAndData","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","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":[["Chute","Input"],["Data","None"],["Power","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","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":[["Chute","Output2"],["Chute","Input"],["Chute","Output"],["PowerAndData","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","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":[["PowerAndData","None"],["Chute","Output"],["Chute","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","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":[["PowerAndData","None"],["Chute","Output"],["Chute","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","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":[["Data","None"],["Pipe","Input"],["Pipe","Output"],["Power","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","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","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":[["Data","None"],["Power","None"],["Pipe","Input"],["Pipe","Input2"],["Pipe","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","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":[["Data","None"],["Pipe","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","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":[["Data","None"],["Pipe","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","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":[["Data","None"],["Pipe","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","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":[["Data","None"],["Pipe","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","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":[["Data","None"],["Pipe","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","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":[["Data","None"],["Pipe","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","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":[["Chute","Input"],["Chute","Output"],["Data","None"],["Power","None"]],"hasActivateState":true,"hasAtmosphere":false,"hasColorState":false,"hasLockState":true,"hasModeState":false,"hasOnOffState":true,"hasOpenState":true,"hasReagents":true}},"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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PowerAndData","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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Data","None"],["Power","Input"],["Power","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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Power","Input"],["PowerAndData","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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Power","Output"],["PowerAndData","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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PowerAndData","Input"],["Power","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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Power","Output"],["PowerAndData","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":{"PowerGeneration":"Read","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Data","None"],["Power","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","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":[["Data","None"],["Power","None"],["Pipe","Output"],["Pipe","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","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":[["PowerAndData","None"],["Chute","Output"],["Chute","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":{"PowerGeneration":"Read","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Power","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","On":"ReadWrite","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Pipe","None"],["Pipe","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","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":[["Chute","Input"],["Chute","Output"],["Data","None"],["Power","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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Pipe","Output"],["Pipe","Input"],["PowerAndData","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","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":[["Pipe","None"],["PowerAndData","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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"","typ":"DataDisk"}],"device":{"connectionList":[["PowerAndData","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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PowerAndData","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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Battery","typ":"Battery"}],"device":{"connectionList":[["PowerAndData","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","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Bottle Slot","typ":"LiquidBottle"},{"name":"Bottle Slot","typ":"LiquidBottle"}],"device":{"connectionList":[["PipeLiquid","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","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Bottle Slot","typ":"LiquidBottle"},{"name":"Bottle Slot","typ":"LiquidBottle"}],"device":{"connectionList":[["PipeLiquid","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","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":[["PipeLiquid","Input"],["PowerAndData","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","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":[["PipeLiquid","None"],["PowerAndData","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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","Ratio":"Read","ReferenceId":"Read","RequiredPower":"Read","Setting":"ReadWrite"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["PipeLiquid","Output"],["PipeLiquid","Input"],["PowerAndData","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":{"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","On":"ReadWrite","Power":"Read","PrefabHash":"Read","ReferenceId":"Read","RequiredPower":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[{"name":"Import","typ":"Ore"}],"device":{"connectionList":[["Data","None"],["PipeLiquid","Input"],["PipeLiquid","Output"],["Power","None"],["Chute","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","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":[["PipeLiquid","None"],["PowerAndData","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","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":[["Data","None"],["Power","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":{"PowerGeneration":"Read","PrefabHash":"Read","ReferenceId":"Read"},"transmissionReceiver":false,"wirelessLogic":false,"circuitHolder":false},"slots":[],"device":{"connectionList":[["Power","None"],["Data","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","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":[["Data","None"],["Power","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.0,"slotClass":"None","sortingClass":"Default"}},"ToyLuna":{"prefab":{"prefabName":"ToyLuna","prefabHash":94730034,"desc":"","name":"Toy Luna"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"slotClass":"None","sortingClass":"Default"}},"UniformCommander":{"prefab":{"prefabName":"UniformCommander","prefabHash":-2083426457,"desc":"","name":"Uniform Commander"},"item":{"consumable":false,"ingredient":false,"maxQuantity":1.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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.0,"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}},"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}},"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"},"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":""}}},"GasType_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":""}}},"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"},"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":""}}},"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":""}}},"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","-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","-1352732550":"ItemResearchCapsuleGreen","-1351081801":"StructureLargeHangerDoor","-1348105509":"ItemGoldOre","-1344601965":"ItemCannedMushroom","-1339716113":"AppliancePaintMixer","-1339479035":"AccessCardGray","-1337091041":"StructureChuteDigitalValveRight","-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","-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","-796627526":"StructureResearchMachine","-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","-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","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","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","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","750952701":"ItemResearchCapsuleYellow","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","819096942":"ItemResearchCapsule","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","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","954947943":"ItemResearchCapsuleRed","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","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","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","StructureResearchMachine","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","StructureResearchMachine","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","ItemCoalOre","ItemCobaltOre","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","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","ItemResearchCapsule","ItemResearchCapsuleGreen","ItemResearchCapsuleRed","ItemResearchCapsuleYellow","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","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_Corn","SeedBag_Fern","SeedBag_Mushroom","SeedBag_Potato","SeedBag_Pumpkin","SeedBag_Rice","SeedBag_Soybean","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/data/instruction_help_patches.json b/data/instruction_help_patches.json new file mode 100644 index 0000000..16a9ae5 --- /dev/null +++ b/data/instruction_help_patches.json @@ -0,0 +1,12 @@ +{ + "bapz": "Branch to line c if abs(a) <= max(b * abs(a), float.epsilon * 8)", + "bapzal": "Branch to line c if abs(a) <= max(b * abs(a), float.epsilon * 8) and store next line number in ra", + "bnaz": "Branch to line c if abs(a) > max (b * abs(a), float.epsilon * 8)", + "bnazal": "Branch to line c if abs(a) > max (b * abs(a), float.epsilon * 8) and store next line number in ra", + "brapz": "Relative branch to line c if abs(a) <= max(b * abs(a), float.epsilon * 8)", + "brnaz": "Relative branch to line c if abs(a) > max(b * abs(a), float.epsilon * 8)", + "sapz": "Register = 1 if abs(a) <= max(b * abs(a), float.epsilon * 8), otherwise 0", + "snaz": "Register = 1 if abs(a) > max(b * abs(a), float.epsilon), otherwise 0", + "log": "Register = base e log(a) or ln(a)", + "exp": "Register = exp(a) or e^a" +} diff --git a/ic10emu/Cargo.toml b/ic10emu/Cargo.toml index 1d20748..c50a8df 100644 --- a/ic10emu/Cargo.toml +++ b/ic10emu/Cargo.toml @@ -14,7 +14,7 @@ const-crc32 = "1.3.0" itertools = "0.12.1" macro_rules_attribute = "0.2.0" paste = "1.0.14" -phf = "0.11.2" +phf = { version = "0.11.2", features = ["macros"] } rand = "0.8.5" regex = "1.10.3" serde = { version = "1.0.197", features = ["derive"] } diff --git a/ic10emu/build.rs b/ic10emu/build.rs deleted file mode 100644 index bd1a0da..0000000 --- a/ic10emu/build.rs +++ /dev/null @@ -1,421 +0,0 @@ -use convert_case::{Case, Casing}; -use std::{ - collections::BTreeSet, - env, - fmt::Display, - fs::{self, File}, - io::{BufWriter, Write}, - path::Path, - str::FromStr, -}; - -struct EnumVariant

-where - P: Display + FromStr, -{ - pub aliases: Vec, - pub value: Option

, - pub deprecated: bool, -} - -struct ReprEnumVariant

-where - P: Display + FromStr, -{ - pub value: P, - pub deprecated: bool, - pub props: Vec<(String, String)> -} - -fn write_repr_enum<'a, T: std::io::Write, I, P>( - writer: &mut BufWriter, - name: &str, - variants: I, - use_phf: bool, -) where - P: Display + FromStr + 'a, - I: IntoIterator)>, -{ - let additional_strum = if use_phf { "#[strum(use_phf)]\n" } else { "" }; - let repr = std::any::type_name::

(); - write!( - writer, - "#[derive(Debug, 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" - ) - .unwrap(); - for (name, variant) in variants { - 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} = \"{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() - }; - writeln!( - writer, - " #[strum({serialize_str}{props_str})] {variant_name} = {val}{repr}," - ) - .unwrap(); - } - writeln!(writer, "}}").unwrap(); -} - -fn write_enum<'a, T: std::io::Write, I, P>( - writer: &mut BufWriter, - name: &str, - variants: I, - use_phf: bool, -) where - P: Display + FromStr + 'a, - I: IntoIterator)>, -{ - let additional_strum = if use_phf { "#[strum(use_phf)]\n" } else { "" }; - write!( - writer, - "#[derive(Debug, Display, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, EnumString, AsRefStr, EnumProperty, EnumIter, Serialize, Deserialize)]\n\ - {additional_strum}\ - pub enum {name} {{\n" - ) - .unwrap(); - for (name, variant) in variants { - let variant_name = name.replace('.', "").to_case(Case::Pascal); - let mut serialize = vec![name.clone()]; - serialize.extend(variant.aliases.iter().cloned()); - 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()); - } - if let Some(val) = &variant.value { - props.push(format!("value = \"{val}\"")); - } - let props_str = if !props.is_empty() { - format!(", props( {} )", props.join(", ")) - } else { - "".to_owned() - }; - writeln!( - writer, - " #[strum({serialize_str}{props_str})] {variant_name}," - ) - .unwrap(); - } - writeln!(writer, "}}").unwrap(); -} - -fn write_logictypes() { - let out_dir = env::var_os("OUT_DIR").unwrap(); - - let dest_path = Path::new(&out_dir).join("logictypes.rs"); - let output_file = File::create(dest_path).unwrap(); - let mut writer = BufWriter::new(&output_file); - - let mut logictypes: Vec<(String, ReprEnumVariant)> = Vec::new(); - let l_infile = Path::new("data/logictypes.txt"); - let l_contents = fs::read_to_string(l_infile).unwrap(); - - for line in l_contents.lines().filter(|l| !l.trim().is_empty()) { - let mut it = line.splitn(3, ' '); - let name = it.next().unwrap(); - let val_str = it.next().unwrap(); - let value: u16 = val_str.parse().unwrap_or_else(|err| panic!("'{val_str}' not valid u16: {err}")); - let docs = it.next(); - let deprecated = docs - .map(|docs| docs.trim().to_uppercase() == "DEPRECATED") - .unwrap_or(false); - let mut props = Vec::new(); - if let Some(docs) = docs { - props.push(("docs".to_owned(), docs.to_owned())); - } - logictypes.push(( - name.to_string(), - ReprEnumVariant { - value, - deprecated, - props, - }, - )); - } - - let mut slotlogictypes: Vec<(String, ReprEnumVariant)> = Vec::new(); - let sl_infile = Path::new("data/slotlogictypes.txt"); - let sl_contents = fs::read_to_string(sl_infile).unwrap(); - - for line in sl_contents.lines().filter(|l| !l.trim().is_empty()) { - let mut it = line.splitn(3, ' '); - let name = it.next().unwrap(); - let val_str = it.next().unwrap(); - let value: u8 = val_str.parse().unwrap_or_else(|err| panic!("'{val_str}' not valid u8: {err}")); - let docs = it.next(); - let deprecated = docs - .map(|docs| docs.trim().to_uppercase() == "DEPRECATED") - .unwrap_or(false); - let mut props = Vec::new(); - if let Some(docs) = docs { - props.push(("docs".to_owned(), docs.to_owned())); - } - slotlogictypes.push(( - name.to_string(), - ReprEnumVariant { - value, - deprecated, - props, - }, - )); - } - - write_repr_enum(&mut writer, "LogicType", &logictypes, true); - - println!("cargo:rerun-if-changed=data/logictypes.txt"); - - write_repr_enum(&mut writer, "SlotLogicType", &slotlogictypes, true); - - println!("cargo:rerun-if-changed=data/slotlogictypes.txt"); -} - -fn write_enums() { - let out_dir = env::var_os("OUT_DIR").unwrap(); - - let dest_path = Path::new(&out_dir).join("enums.rs"); - let output_file = File::create(dest_path).unwrap(); - let mut writer = BufWriter::new(&output_file); - - let mut enums_map: Vec<(String, EnumVariant)> = Vec::new(); - let e_infile = Path::new("data/enums.txt"); - let e_contents = fs::read_to_string(e_infile).unwrap(); - - for line in e_contents.lines().filter(|l| !l.trim().is_empty()) { - let mut it = line.splitn(3, ' '); - let name = it.next().unwrap(); - let val_str = it.next().unwrap(); - let val: Option = val_str.parse().ok(); - let docs = it.next(); - let deprecated = docs - .map(|docs| docs.trim().to_uppercase() == "DEPRECATED") - .unwrap_or(false); - - enums_map.push(( - name.to_string(), - EnumVariant { - aliases: Vec::new(), - value: val, - deprecated, - }, - )); - } - - write_enum(&mut writer, "LogicEnums", &enums_map, true); - - println!("cargo:rerun-if-changed=data/enums.txt"); -} - -fn write_modes() { - let out_dir = env::var_os("OUT_DIR").unwrap(); - - let dest_path = Path::new(&out_dir).join("modes.rs"); - let output_file = File::create(dest_path).unwrap(); - let mut writer = BufWriter::new(&output_file); - - let mut batchmodes: Vec<(String, ReprEnumVariant)> = Vec::new(); - let b_infile = Path::new("data/batchmodes.txt"); - let b_contents = fs::read_to_string(b_infile).unwrap(); - - for line in b_contents.lines().filter(|l| !l.trim().is_empty()) { - let mut it = line.splitn(3, ' '); - let name = it.next().unwrap(); - let val_str = it.next().unwrap(); - let value: u8 = val_str.parse().unwrap_or_else(|err| panic!("'{val_str}' not valid u8: {err}")); - - batchmodes.push(( - name.to_string(), - ReprEnumVariant { - value, - deprecated: false, - props: Vec::new(), - }, - )); - } - - let mut reagentmodes: Vec<(String, ReprEnumVariant)> = Vec::new(); - let r_infile = Path::new("data/reagentmodes.txt"); - let r_contents = fs::read_to_string(r_infile).unwrap(); - - for line in r_contents.lines().filter(|l| !l.trim().is_empty()) { - let mut it = line.splitn(3, ' '); - let name = it.next().unwrap(); - let val_str = it.next().unwrap(); - let value: u8 = val_str.parse().unwrap_or_else(|err| panic!("'{val_str}' not valid u8: {err}")); - reagentmodes.push(( - name.to_string(), - ReprEnumVariant { - value, - deprecated: false, - props: Vec::new(), - }, - )); - - } - - write_repr_enum(&mut writer, "BatchMode", &batchmodes, false); - - println!("cargo:rerun-if-changed=data/batchmodes.txt"); - - write_repr_enum(&mut writer, "ReagentMode", &reagentmodes, false); - - println!("cargo:rerun-if-changed=data/reagentmodes.txt"); -} - -fn write_constants() { - let out_dir = env::var_os("OUT_DIR").unwrap(); - - let dest_path = Path::new(&out_dir).join("constants.rs"); - let output_file = File::create(dest_path).unwrap(); - let mut writer = BufWriter::new(&output_file); - - let mut constants_lookup_map_builder = ::phf_codegen::Map::new(); - let infile = Path::new("data/constants.txt"); - let contents = fs::read_to_string(infile).unwrap(); - - for line in contents.lines().filter(|l| !l.trim().is_empty()) { - let mut it = line.splitn(3, ' '); - let name = it.next().unwrap(); - let constant = it.next().unwrap(); - - constants_lookup_map_builder.entry(name, constant); - } - - writeln!( - &mut writer, - "#[allow(clippy::approx_constant)] pub(crate) const CONSTANTS_LOOKUP: phf::Map<&'static str, f64> = {};", - constants_lookup_map_builder.build() - ) - .unwrap(); - println!("cargo:rerun-if-changed=data/constants.txt"); -} - -fn write_instructions_enum() { - let out_dir = env::var_os("OUT_DIR").unwrap(); - - let dest_path = Path::new(&out_dir).join("instructions.rs"); - let output_file = File::create(dest_path).unwrap(); - let mut writer = BufWriter::new(&output_file); - - let mut instructions = BTreeSet::new(); - let infile = Path::new("data/instructions.txt"); - let contents = fs::read_to_string(infile).unwrap(); - - for line in contents.lines() { - let mut it = line.split(' '); - let instruction = it.next().unwrap(); - instructions.insert(instruction.to_string()); - } - - write!( - &mut writer, - "#[derive(Debug, Display, PartialEq, Eq, Clone, Copy, Serialize, Deserialize)]\n\ - pub enum InstructionOp {{\n\ - " - ) - .unwrap(); - - writeln!(&mut writer, " Nop,").unwrap(); - - for typ in &instructions { - writeln!(&mut writer, " {},", typ.to_case(Case::Pascal)).unwrap(); - } - writeln!(&mut writer, "}}").unwrap(); - - write!( - &mut writer, - "impl FromStr for InstructionOp {{\n \ - type Err = ParseError;\n \ - fn from_str(s: &str) -> Result {{\n \ - let end = s.len();\n \ - match s {{\n" - ) - .unwrap(); - - for typ in &instructions { - let name = typ.to_case(Case::Pascal); - writeln!(&mut writer, " \"{typ}\" => Ok(Self::{name}),").unwrap(); - } - write!( - &mut writer, - " _ => Err(crate::grammar::ParseError {{ line: 0, start: 0, end, msg: format!(\"Unknown instruction '{{}}'\", s) }})\n \ - }}\n \ - }}\n\ - }}" - ) - .unwrap(); - - println!("cargo:rerun-if-changed=data/instructions.txt"); -} - -fn write_stationpedia() { - let out_dir = env::var_os("OUT_DIR").unwrap(); - - let dest_path = Path::new(&out_dir).join("stationpedia_prefabs.rs"); - let output_file = File::create(dest_path).unwrap(); - let mut writer = BufWriter::new(&output_file); - - let mut prefabs: Vec<(String, ReprEnumVariant)> = Vec::new(); - let l_infile = Path::new("data/stationpedia.txt"); - let l_contents = fs::read_to_string(l_infile).unwrap(); - - for line in l_contents.lines().filter(|l| !l.trim().is_empty()) { - let mut it = line.splitn(3, ' '); - let val_str = it.next().unwrap(); - let value: i32 = val_str.parse().unwrap_or_else(|err| panic!("'{val_str}' not valid i32: {err}")); - let name = it.next().unwrap(); - let title = it.next(); - - let mut props = Vec::new(); - if let Some(title) = title { - props.push(("title".to_owned(), title.to_owned())); - } - - prefabs.push(( - name.to_string(), - ReprEnumVariant { - value, - deprecated: false, - props, - }, - )); - } - - write_repr_enum(&mut writer, "StationpediaPrefab", &prefabs, true); - - println!("cargo:rerun-if-changed=data/stationpdeia.txt"); -} - -fn main() { - write_logictypes(); - write_modes(); - write_constants(); - write_enums(); - - write_instructions_enum(); - write_stationpedia(); -} diff --git a/ic10emu/data/Enums.json b/ic10emu/data/Enums.json deleted file mode 100644 index 2cbd544..0000000 --- a/ic10emu/data/Enums.json +++ /dev/null @@ -1 +0,0 @@ -{"LogicType":{"None":0,"Power":1,"Open":2,"Mode":3,"Error":4,"Pressure":5,"Temperature":6,"PressureExternal":7,"PressureInternal":8,"Activate":9,"Lock":10,"Charge":11,"Setting":12,"Reagents":13,"RatioOxygen":14,"RatioCarbonDioxide":15,"RatioNitrogen":16,"RatioPollutant":17,"RatioVolatiles":18,"RatioWater":19,"Horizontal":20,"Vertical":21,"SolarAngle":22,"Maximum":23,"Ratio":24,"PowerPotential":25,"PowerActual":26,"Quantity":27,"On":28,"ImportQuantity":29,"ImportSlotOccupant":30,"ExportQuantity":31,"ExportSlotOccupant":32,"RequiredPower":33,"HorizontalRatio":34,"VerticalRatio":35,"PowerRequired":36,"Idle":37,"Color":38,"ElevatorSpeed":39,"ElevatorLevel":40,"RecipeHash":41,"ExportSlotHash":42,"ImportSlotHash":43,"PlantHealth1":44,"PlantHealth2":45,"PlantHealth3":46,"PlantHealth4":47,"PlantGrowth1":48,"PlantGrowth2":49,"PlantGrowth3":50,"PlantGrowth4":51,"PlantEfficiency1":52,"PlantEfficiency2":53,"PlantEfficiency3":54,"PlantEfficiency4":55,"PlantHash1":56,"PlantHash2":57,"PlantHash3":58,"PlantHash4":59,"RequestHash":60,"CompletionRatio":61,"ClearMemory":62,"ExportCount":63,"ImportCount":64,"PowerGeneration":65,"TotalMoles":66,"Volume":67,"Plant":68,"Harvest":69,"Output":70,"PressureSetting":71,"TemperatureSetting":72,"TemperatureExternal":73,"Filtration":74,"AirRelease":75,"PositionX":76,"PositionY":77,"PositionZ":78,"VelocityMagnitude":79,"VelocityRelativeX":80,"VelocityRelativeY":81,"VelocityRelativeZ":82,"RatioNitrousOxide":83,"PrefabHash":84,"ForceWrite":85,"SignalStrength":86,"SignalID":87,"TargetX":88,"TargetY":89,"TargetZ":90,"SettingInput":91,"SettingOutput":92,"CurrentResearchPodType":93,"ManualResearchRequiredPod":94,"MineablesInVicinity":95,"MineablesInQueue":96,"NextWeatherEventTime":97,"Combustion":98,"Fuel":99,"ReturnFuelCost":100,"CollectableGoods":101,"Time":102,"Bpm":103,"EnvironmentEfficiency":104,"WorkingGasEfficiency":105,"PressureInput":106,"TemperatureInput":107,"RatioOxygenInput":108,"RatioCarbonDioxideInput":109,"RatioNitrogenInput":110,"RatioPollutantInput":111,"RatioVolatilesInput":112,"RatioWaterInput":113,"RatioNitrousOxideInput":114,"TotalMolesInput":115,"PressureInput2":116,"TemperatureInput2":117,"RatioOxygenInput2":118,"RatioCarbonDioxideInput2":119,"RatioNitrogenInput2":120,"RatioPollutantInput2":121,"RatioVolatilesInput2":122,"RatioWaterInput2":123,"RatioNitrousOxideInput2":124,"TotalMolesInput2":125,"PressureOutput":126,"TemperatureOutput":127,"RatioOxygenOutput":128,"RatioCarbonDioxideOutput":129,"RatioNitrogenOutput":130,"RatioPollutantOutput":131,"RatioVolatilesOutput":132,"RatioWaterOutput":133,"RatioNitrousOxideOutput":134,"TotalMolesOutput":135,"PressureOutput2":136,"TemperatureOutput2":137,"RatioOxygenOutput2":138,"RatioCarbonDioxideOutput2":139,"RatioNitrogenOutput2":140,"RatioPollutantOutput2":141,"RatioVolatilesOutput2":142,"RatioWaterOutput2":143,"RatioNitrousOxideOutput2":144,"TotalMolesOutput2":145,"CombustionInput":146,"CombustionInput2":147,"CombustionOutput":148,"CombustionOutput2":149,"OperationalTemperatureEfficiency":150,"TemperatureDifferentialEfficiency":151,"PressureEfficiency":152,"CombustionLimiter":153,"Throttle":154,"Rpm":155,"Stress":156,"InterrogationProgress":157,"TargetPadIndex":158,"SizeX":160,"SizeY":161,"SizeZ":162,"MinimumWattsToContact":163,"WattsReachingContact":164,"Channel0":165,"Channel1":166,"Channel2":167,"Channel3":168,"Channel4":169,"Channel5":170,"Channel6":171,"Channel7":172,"LineNumber":173,"Flush":174,"SoundAlert":175,"SolarIrradiance":176,"RatioLiquidNitrogen":177,"RatioLiquidNitrogenInput":178,"RatioLiquidNitrogenInput2":179,"RatioLiquidNitrogenOutput":180,"RatioLiquidNitrogenOutput2":181,"VolumeOfLiquid":182,"RatioLiquidOxygen":183,"RatioLiquidOxygenInput":184,"RatioLiquidOxygenInput2":185,"RatioLiquidOxygenOutput":186,"RatioLiquidOxygenOutput2":187,"RatioLiquidVolatiles":188,"RatioLiquidVolatilesInput":189,"RatioLiquidVolatilesInput2":190,"RatioLiquidVolatilesOutput":191,"RatioLiquidVolatilesOutput2":192,"RatioSteam":193,"RatioSteamInput":194,"RatioSteamInput2":195,"RatioSteamOutput":196,"RatioSteamOutput2":197,"ContactTypeId":198,"RatioLiquidCarbonDioxide":199,"RatioLiquidCarbonDioxideInput":200,"RatioLiquidCarbonDioxideInput2":201,"RatioLiquidCarbonDioxideOutput":202,"RatioLiquidCarbonDioxideOutput2":203,"RatioLiquidPollutant":204,"RatioLiquidPollutantInput":205,"RatioLiquidPollutantInput2":206,"RatioLiquidPollutantOutput":207,"RatioLiquidPollutantOutput2":208,"RatioLiquidNitrousOxide":209,"RatioLiquidNitrousOxideInput":210,"RatioLiquidNitrousOxideInput2":211,"RatioLiquidNitrousOxideOutput":212,"RatioLiquidNitrousOxideOutput2":213,"Progress":214,"DestinationCode":215,"Acceleration":216,"ReferenceId":217,"AutoShutOff":218,"Mass":219,"DryMass":220,"Thrust":221,"Weight":222,"ThrustToWeight":223,"TimeToDestination":224,"BurnTimeRemaining":225,"AutoLand":226,"ForwardX":227,"ForwardY":228,"ForwardZ":229,"Orientation":230,"VelocityX":231,"VelocityY":232,"VelocityZ":233,"PassedMoles":234,"ExhaustVelocity":235,"FlightControlRule":236,"ReEntryAltitude":237,"Apex":238,"EntityState":239,"DrillCondition":240,"Index":241,"CelestialHash":242,"AlignmentError":243,"DistanceAu":244,"OrbitPeriod":245,"Inclination":246,"Eccentricity":247,"SemiMajorAxis":248,"DistanceKm":249,"CelestialParentHash":250,"TrueAnomaly":251,"RatioHydrogen":252,"RatioLiquidHydrogen":253,"RatioPollutedWater":254,"Discover":255,"Chart":256,"Survey":257,"NavPoints":258,"ChartedNavPoints":259,"Sites":260,"CurrentCode":261,"Density":262,"Richness":263,"Size":264,"TotalQuantity":265,"MinedQuantity":266},"LogicSlotType":{"None":0,"Occupied":1,"OccupantHash":2,"Quantity":3,"Damage":4,"Efficiency":5,"Health":6,"Growth":7,"Pressure":8,"Temperature":9,"Charge":10,"ChargeRatio":11,"Class":12,"PressureWaste":13,"PressureAir":14,"MaxQuantity":15,"Mature":16,"PrefabHash":17,"Seeding":18,"LineNumber":19,"Volume":20,"Open":21,"On":22,"Lock":23,"SortingClass":24,"FilterType":25,"ReferenceId":26},"LogicBatchMethod":{"Average":0,"Sum":1,"Minimum":2,"Maximum":3},"LogicReagentMode":{"Contents":0,"Required":1,"Recipe":2,"TotalContents":3},"Enums":{"LogicType.None":0,"LogicType.Power":1,"LogicType.Open":2,"LogicType.Mode":3,"LogicType.Error":4,"LogicType.Pressure":5,"LogicType.Temperature":6,"LogicType.PressureExternal":7,"LogicType.PressureInternal":8,"LogicType.Activate":9,"LogicType.Lock":10,"LogicType.Charge":11,"LogicType.Setting":12,"LogicType.Reagents":13,"LogicType.RatioOxygen":14,"LogicType.RatioCarbonDioxide":15,"LogicType.RatioNitrogen":16,"LogicType.RatioPollutant":17,"LogicType.RatioVolatiles":18,"LogicType.RatioWater":19,"LogicType.Horizontal":20,"LogicType.Vertical":21,"LogicType.SolarAngle":22,"LogicType.Maximum":23,"LogicType.Ratio":24,"LogicType.PowerPotential":25,"LogicType.PowerActual":26,"LogicType.Quantity":27,"LogicType.On":28,"LogicType.ImportQuantity":29,"LogicType.ImportSlotOccupant":30,"LogicType.ExportQuantity":31,"LogicType.ExportSlotOccupant":32,"LogicType.RequiredPower":33,"LogicType.HorizontalRatio":34,"LogicType.VerticalRatio":35,"LogicType.PowerRequired":36,"LogicType.Idle":37,"LogicType.Color":38,"LogicType.ElevatorSpeed":39,"LogicType.ElevatorLevel":40,"LogicType.RecipeHash":41,"LogicType.ExportSlotHash":42,"LogicType.ImportSlotHash":43,"LogicType.PlantHealth1":44,"LogicType.PlantHealth2":45,"LogicType.PlantHealth3":46,"LogicType.PlantHealth4":47,"LogicType.PlantGrowth1":48,"LogicType.PlantGrowth2":49,"LogicType.PlantGrowth3":50,"LogicType.PlantGrowth4":51,"LogicType.PlantEfficiency1":52,"LogicType.PlantEfficiency2":53,"LogicType.PlantEfficiency3":54,"LogicType.PlantEfficiency4":55,"LogicType.PlantHash1":56,"LogicType.PlantHash2":57,"LogicType.PlantHash3":58,"LogicType.PlantHash4":59,"LogicType.RequestHash":60,"LogicType.CompletionRatio":61,"LogicType.ClearMemory":62,"LogicType.ExportCount":63,"LogicType.ImportCount":64,"LogicType.PowerGeneration":65,"LogicType.TotalMoles":66,"LogicType.Volume":67,"LogicType.Plant":68,"LogicType.Harvest":69,"LogicType.Output":70,"LogicType.PressureSetting":71,"LogicType.TemperatureSetting":72,"LogicType.TemperatureExternal":73,"LogicType.Filtration":74,"LogicType.AirRelease":75,"LogicType.PositionX":76,"LogicType.PositionY":77,"LogicType.PositionZ":78,"LogicType.VelocityMagnitude":79,"LogicType.VelocityRelativeX":80,"LogicType.VelocityRelativeY":81,"LogicType.VelocityRelativeZ":82,"LogicType.RatioNitrousOxide":83,"LogicType.PrefabHash":84,"LogicType.ForceWrite":85,"LogicType.SignalStrength":86,"LogicType.SignalID":87,"LogicType.TargetX":88,"LogicType.TargetY":89,"LogicType.TargetZ":90,"LogicType.SettingInput":91,"LogicType.SettingOutput":92,"LogicType.CurrentResearchPodType":93,"LogicType.ManualResearchRequiredPod":94,"LogicType.MineablesInVicinity":95,"LogicType.MineablesInQueue":96,"LogicType.NextWeatherEventTime":97,"LogicType.Combustion":98,"LogicType.Fuel":99,"LogicType.ReturnFuelCost":100,"LogicType.CollectableGoods":101,"LogicType.Time":102,"LogicType.Bpm":103,"LogicType.EnvironmentEfficiency":104,"LogicType.WorkingGasEfficiency":105,"LogicType.PressureInput":106,"LogicType.TemperatureInput":107,"LogicType.RatioOxygenInput":108,"LogicType.RatioCarbonDioxideInput":109,"LogicType.RatioNitrogenInput":110,"LogicType.RatioPollutantInput":111,"LogicType.RatioVolatilesInput":112,"LogicType.RatioWaterInput":113,"LogicType.RatioNitrousOxideInput":114,"LogicType.TotalMolesInput":115,"LogicType.PressureInput2":116,"LogicType.TemperatureInput2":117,"LogicType.RatioOxygenInput2":118,"LogicType.RatioCarbonDioxideInput2":119,"LogicType.RatioNitrogenInput2":120,"LogicType.RatioPollutantInput2":121,"LogicType.RatioVolatilesInput2":122,"LogicType.RatioWaterInput2":123,"LogicType.RatioNitrousOxideInput2":124,"LogicType.TotalMolesInput2":125,"LogicType.PressureOutput":126,"LogicType.TemperatureOutput":127,"LogicType.RatioOxygenOutput":128,"LogicType.RatioCarbonDioxideOutput":129,"LogicType.RatioNitrogenOutput":130,"LogicType.RatioPollutantOutput":131,"LogicType.RatioVolatilesOutput":132,"LogicType.RatioWaterOutput":133,"LogicType.RatioNitrousOxideOutput":134,"LogicType.TotalMolesOutput":135,"LogicType.PressureOutput2":136,"LogicType.TemperatureOutput2":137,"LogicType.RatioOxygenOutput2":138,"LogicType.RatioCarbonDioxideOutput2":139,"LogicType.RatioNitrogenOutput2":140,"LogicType.RatioPollutantOutput2":141,"LogicType.RatioVolatilesOutput2":142,"LogicType.RatioWaterOutput2":143,"LogicType.RatioNitrousOxideOutput2":144,"LogicType.TotalMolesOutput2":145,"LogicType.CombustionInput":146,"LogicType.CombustionInput2":147,"LogicType.CombustionOutput":148,"LogicType.CombustionOutput2":149,"LogicType.OperationalTemperatureEfficiency":150,"LogicType.TemperatureDifferentialEfficiency":151,"LogicType.PressureEfficiency":152,"LogicType.CombustionLimiter":153,"LogicType.Throttle":154,"LogicType.Rpm":155,"LogicType.Stress":156,"LogicType.InterrogationProgress":157,"LogicType.TargetPadIndex":158,"LogicType.SizeX":160,"LogicType.SizeY":161,"LogicType.SizeZ":162,"LogicType.MinimumWattsToContact":163,"LogicType.WattsReachingContact":164,"LogicType.Channel0":165,"LogicType.Channel1":166,"LogicType.Channel2":167,"LogicType.Channel3":168,"LogicType.Channel4":169,"LogicType.Channel5":170,"LogicType.Channel6":171,"LogicType.Channel7":172,"LogicType.LineNumber":173,"LogicType.Flush":174,"LogicType.SoundAlert":175,"LogicType.SolarIrradiance":176,"LogicType.RatioLiquidNitrogen":177,"LogicType.RatioLiquidNitrogenInput":178,"LogicType.RatioLiquidNitrogenInput2":179,"LogicType.RatioLiquidNitrogenOutput":180,"LogicType.RatioLiquidNitrogenOutput2":181,"LogicType.VolumeOfLiquid":182,"LogicType.RatioLiquidOxygen":183,"LogicType.RatioLiquidOxygenInput":184,"LogicType.RatioLiquidOxygenInput2":185,"LogicType.RatioLiquidOxygenOutput":186,"LogicType.RatioLiquidOxygenOutput2":187,"LogicType.RatioLiquidVolatiles":188,"LogicType.RatioLiquidVolatilesInput":189,"LogicType.RatioLiquidVolatilesInput2":190,"LogicType.RatioLiquidVolatilesOutput":191,"LogicType.RatioLiquidVolatilesOutput2":192,"LogicType.RatioSteam":193,"LogicType.RatioSteamInput":194,"LogicType.RatioSteamInput2":195,"LogicType.RatioSteamOutput":196,"LogicType.RatioSteamOutput2":197,"LogicType.ContactTypeId":198,"LogicType.RatioLiquidCarbonDioxide":199,"LogicType.RatioLiquidCarbonDioxideInput":200,"LogicType.RatioLiquidCarbonDioxideInput2":201,"LogicType.RatioLiquidCarbonDioxideOutput":202,"LogicType.RatioLiquidCarbonDioxideOutput2":203,"LogicType.RatioLiquidPollutant":204,"LogicType.RatioLiquidPollutantInput":205,"LogicType.RatioLiquidPollutantInput2":206,"LogicType.RatioLiquidPollutantOutput":207,"LogicType.RatioLiquidPollutantOutput2":208,"LogicType.RatioLiquidNitrousOxide":209,"LogicType.RatioLiquidNitrousOxideInput":210,"LogicType.RatioLiquidNitrousOxideInput2":211,"LogicType.RatioLiquidNitrousOxideOutput":212,"LogicType.RatioLiquidNitrousOxideOutput2":213,"LogicType.Progress":214,"LogicType.DestinationCode":215,"LogicType.Acceleration":216,"LogicType.ReferenceId":217,"LogicType.AutoShutOff":218,"LogicType.Mass":219,"LogicType.DryMass":220,"LogicType.Thrust":221,"LogicType.Weight":222,"LogicType.ThrustToWeight":223,"LogicType.TimeToDestination":224,"LogicType.BurnTimeRemaining":225,"LogicType.AutoLand":226,"LogicType.ForwardX":227,"LogicType.ForwardY":228,"LogicType.ForwardZ":229,"LogicType.Orientation":230,"LogicType.VelocityX":231,"LogicType.VelocityY":232,"LogicType.VelocityZ":233,"LogicType.PassedMoles":234,"LogicType.ExhaustVelocity":235,"LogicType.FlightControlRule":236,"LogicType.ReEntryAltitude":237,"LogicType.Apex":238,"LogicType.EntityState":239,"LogicType.DrillCondition":240,"LogicType.Index":241,"LogicType.CelestialHash":242,"LogicType.AlignmentError":243,"LogicType.DistanceAu":244,"LogicType.OrbitPeriod":245,"LogicType.Inclination":246,"LogicType.Eccentricity":247,"LogicType.SemiMajorAxis":248,"LogicType.DistanceKm":249,"LogicType.CelestialParentHash":250,"LogicType.TrueAnomaly":251,"LogicType.RatioHydrogen":252,"LogicType.RatioLiquidHydrogen":253,"LogicType.RatioPollutedWater":254,"LogicType.Discover":255,"LogicType.Chart":256,"LogicType.Survey":257,"LogicType.NavPoints":258,"LogicType.ChartedNavPoints":259,"LogicType.Sites":260,"LogicType.CurrentCode":261,"LogicType.Density":262,"LogicType.Richness":263,"LogicType.Size":264,"LogicType.TotalQuantity":265,"LogicType.MinedQuantity":266,"LogicSlotType.None":0,"LogicSlotType.Occupied":1,"LogicSlotType.OccupantHash":2,"LogicSlotType.Quantity":3,"LogicSlotType.Damage":4,"LogicSlotType.Efficiency":5,"LogicSlotType.Health":6,"LogicSlotType.Growth":7,"LogicSlotType.Pressure":8,"LogicSlotType.Temperature":9,"LogicSlotType.Charge":10,"LogicSlotType.ChargeRatio":11,"LogicSlotType.Class":12,"LogicSlotType.PressureWaste":13,"LogicSlotType.PressureAir":14,"LogicSlotType.MaxQuantity":15,"LogicSlotType.Mature":16,"LogicSlotType.PrefabHash":17,"LogicSlotType.Seeding":18,"LogicSlotType.LineNumber":19,"LogicSlotType.Volume":20,"LogicSlotType.Open":21,"LogicSlotType.On":22,"LogicSlotType.Lock":23,"LogicSlotType.SortingClass":24,"LogicSlotType.FilterType":25,"LogicSlotType.ReferenceId":26,"Sound.None":0,"Sound.Alarm2":1,"Sound.Alarm3":2,"Sound.Alarm4":3,"Sound.Alarm5":4,"Sound.Alarm6":5,"Sound.Alarm7":6,"Sound.Music1":7,"Sound.Music2":8,"Sound.Music3":9,"Sound.Alarm8":10,"Sound.Alarm9":11,"Sound.Alarm10":12,"Sound.Alarm11":13,"Sound.Alarm12":14,"Sound.Danger":15,"Sound.Warning":16,"Sound.Alert":17,"Sound.StormIncoming":18,"Sound.IntruderAlert":19,"Sound.Depressurising":20,"Sound.Pressurising":21,"Sound.AirlockCycling":22,"Sound.PowerLow":23,"Sound.SystemFailure":24,"Sound.Welcome":25,"Sound.MalfunctionDetected":26,"Sound.HaltWhoGoesThere":27,"Sound.FireFireFire":28,"Sound.One":29,"Sound.Two":30,"Sound.Three":31,"Sound.Four":32,"Sound.Five":33,"Sound.Floor":34,"Sound.RocketLaunching":35,"Sound.LiftOff":36,"Sound.TraderIncoming":37,"Sound.TraderLanded":38,"Sound.PressureHigh":39,"Sound.PressureLow":40,"Sound.TemperatureHigh":41,"Sound.TemperatureLow":42,"Sound.PollutantsDetected":43,"Sound.HighCarbonDioxide":44,"Sound.Alarm1":45,"TransmitterMode.Passive":0,"TransmitterMode.Active":1,"ElevatorMode.Stationary":0,"ElevatorMode.Upward":1,"ElevatorMode.Downward":2,"Color.Blue":0,"Color.Gray":1,"Color.Green":2,"Color.Orange":3,"Color.Red":4,"Color.Yellow":5,"Color.White":6,"Color.Black":7,"Color.Brown":8,"Color.Khaki":9,"Color.Pink":10,"Color.Purple":11,"EntityState.Alive":0,"EntityState.Dead":1,"EntityState.Unconscious":2,"EntityState.Decay":3,"AirControl.None":0,"AirControl.Offline":1,"AirControl.Pressure":2,"AirControl.Draught":4,"DaylightSensorMode.Default":0,"DaylightSensorMode.Horizontal":1,"DaylightSensorMode.Vertical":2,"Equals":0,"Greater":1,"Less":2,"NotEquals":3,"AirCon.Cold":0,"AirCon.Hot":1,"Vent.Outward":0,"Vent.Inward":1,"PowerMode.Idle":0,"PowerMode.Discharged":1,"PowerMode.Discharging":2,"PowerMode.Charging":3,"PowerMode.Charged":4,"RobotMode.None":0,"RobotMode.Follow":1,"RobotMode.MoveToTarget":2,"RobotMode.Roam":3,"RobotMode.Unload":4,"RobotMode.PathToTarget":5,"RobotMode.StorageFull":6,"SortingClass.Default":0,"SortingClass.Kits":1,"SortingClass.Tools":2,"SortingClass.Resources":3,"SortingClass.Food":4,"SortingClass.Clothing":5,"SortingClass.Appliances":6,"SortingClass.Atmospherics":7,"SortingClass.Storage":8,"SortingClass.Ores":9,"SortingClass.Ices":10,"SlotClass.None":0,"SlotClass.Helmet":1,"SlotClass.Suit":2,"SlotClass.Back":3,"SlotClass.GasFilter":4,"SlotClass.GasCanister":5,"SlotClass.Motherboard":6,"SlotClass.Circuitboard":7,"SlotClass.DataDisk":8,"SlotClass.Organ":9,"SlotClass.Ore":10,"SlotClass.Plant":11,"SlotClass.Uniform":12,"SlotClass.Entity":13,"SlotClass.Battery":14,"SlotClass.Egg":15,"SlotClass.Belt":16,"SlotClass.Tool":17,"SlotClass.Appliance":18,"SlotClass.Ingot":19,"SlotClass.Torpedo":20,"SlotClass.Cartridge":21,"SlotClass.AccessCard":22,"SlotClass.Magazine":23,"SlotClass.Circuit":24,"SlotClass.Bottle":25,"SlotClass.ProgrammableChip":26,"SlotClass.Glasses":27,"SlotClass.CreditCard":28,"SlotClass.DirtCanister":29,"SlotClass.SensorProcessingUnit":30,"SlotClass.LiquidCanister":31,"SlotClass.LiquidBottle":32,"SlotClass.Wreckage":33,"SlotClass.SoundCartridge":34,"SlotClass.DrillHead":35,"SlotClass.ScanningHead":36,"SlotClass.Flare":37,"SlotClass.Blocked":38,"GasType.Undefined":0,"GasType.Oxygen":1,"GasType.Nitrogen":2,"GasType.CarbonDioxide":4,"GasType.Volatiles":8,"GasType.Pollutant":16,"GasType.Water":32,"GasType.NitrousOxide":64,"GasType.LiquidNitrogen":128,"GasType.LiquidOxygen":256,"GasType.LiquidVolatiles":512,"GasType.Steam":1024,"GasType.LiquidCarbonDioxide":2048,"GasType.LiquidPollutant":4096,"GasType.LiquidNitrousOxide":8192,"GasType.Hydrogen":16384,"GasType.LiquidHydrogen":32768,"GasType.PollutedWater":65536}} \ No newline at end of file diff --git a/ic10emu/data/batchmodes.txt b/ic10emu/data/batchmodes.txt deleted file mode 100644 index b57b772..0000000 --- a/ic10emu/data/batchmodes.txt +++ /dev/null @@ -1,4 +0,0 @@ -Average 0 Average of all read values -Maximum 3 Highest of all read values -Minimum 2 Lowest of all read values -Sum 1 All read values added together diff --git a/ic10emu/data/constants.txt b/ic10emu/data/constants.txt deleted file mode 100644 index 3dfa33d..0000000 --- a/ic10emu/data/constants.txt +++ /dev/null @@ -1,7 +0,0 @@ -nan f64::NAN A constant representing 'not a number'. This constants technically provides a 'quiet' NaN, a signal NaN from some instructions will result in an exception and halt execution -pinf f64::INFINITY A constant representing a positive infinite value -ninf f64::NEG_INFINITY A constant representing a negative infinite value -pi 3.141592653589793f64 \nA constant representing the ratio of the circumference of a circle to its diameter, provided in double percision -deg2rad 0.0174532923847437f64 \nDegrees to radians conversion constant -rad2deg 57.2957801818848f64 \nRadians to degrees conversion constant -epsilon f64::EPSILON A constant representing the smallest value representable in double precision diff --git a/ic10emu/data/enums.txt b/ic10emu/data/enums.txt deleted file mode 100644 index 6c492db..0000000 --- a/ic10emu/data/enums.txt +++ /dev/null @@ -1,475 +0,0 @@ -AirCon.Cold 0 -AirCon.Hot 1 -AirControl.Draught 4 -AirControl.None 0 -AirControl.Offline 1 -AirControl.Pressure 2 -Color.Black 7 Black -Color.Blue 0 Blue -Color.Brown 8 Brown -Color.Gray 1 Gray -Color.Green 2 Green -Color.Khaki 9 Khaki -Color.Orange 3 Orange -Color.Pink 10 Pink -Color.Purple 11 Purple -Color.Red 4 Red -Color.White 6 White -Color.Yellow 5 Yellow -DaylightSensorMode.Default 0 -DaylightSensorMode.Horizontal 1 -DaylightSensorMode.Vertical 2 -ElevatorMode.Downward 2 -ElevatorMode.Stationary 0 -ElevatorMode.Upward 1 -EntityState.Alive 0 -EntityState.Dead 1 -EntityState.Decay 3 -EntityState.Unconscious 2 -Equals 0 -GasType.CarbonDioxide 4 -GasType.Hydrogen 16384 -GasType.LiquidCarbonDioxide 2048 -GasType.LiquidHydrogen 32768 -GasType.LiquidNitrogen 128 -GasType.LiquidNitrousOxide 8192 -GasType.LiquidOxygen 256 -GasType.LiquidPollutant 4096 -GasType.LiquidVolatiles 512 -GasType.Nitrogen 2 -GasType.NitrousOxide 64 -GasType.Oxygen 1 -GasType.Pollutant 16 -GasType.PollutedWater 65536 -GasType.Steam 1024 -GasType.Undefined 0 -GasType.Volatiles 8 -GasType.Water 32 -Greater 1 -Less 2 -LogicSlotType.Charge 10 returns current energy charge the slot occupant is holding -LogicSlotType.ChargeRatio 11 returns current energy charge the slot occupant is holding as a ratio between 0 and 1 of its maximum -LogicSlotType.Class 12 returns integer representing the class of object -LogicSlotType.Damage 4 returns the damage state of the item in the slot -LogicSlotType.Efficiency 5 returns the growth efficiency of the plant in the slot -LogicSlotType.FilterType 25 -LogicSlotType.Growth 7 returns the current growth state of the plant in the slot -LogicSlotType.Health 6 returns the health of the plant in the slot -LogicSlotType.LineNumber 19 -LogicSlotType.Lock 23 -LogicSlotType.Mature 16 returns 1 if the plant in this slot is mature, 0 when it isn't -LogicSlotType.MaxQuantity 15 returns the max stack size of the item in the slot -LogicSlotType.None 0 No description -LogicSlotType.OccupantHash 2 returns the has of the current occupant, the unique identifier of the thing -LogicSlotType.Occupied 1 returns 0 when slot is not occupied, 1 when it is -LogicSlotType.On 22 -LogicSlotType.Open 21 -LogicSlotType.PrefabHash 17 returns the hash of the structure in the slot -LogicSlotType.Pressure 8 returns pressure of the slot occupants internal atmosphere -LogicSlotType.PressureAir 14 returns pressure in the air tank of the jetpack in this slot -LogicSlotType.PressureWaste 13 returns pressure in the waste tank of the jetpack in this slot -LogicSlotType.Quantity 3 returns the current quantity, such as stack size, of the item in the slot -LogicSlotType.ReferenceId 26 -LogicSlotType.Seeding 18 Whether a plant is seeding (ready to harvest seeds from). Returns 1 if seeding or 0 if not. -LogicSlotType.SortingClass 24 -LogicSlotType.Temperature 9 returns temperature of the slot occupants internal atmosphere -LogicSlotType.Volume 20 -LogicType.Acceleration 216 Change in velocity. Rockets that are deccelerating when landing will show this as negative value. -LogicType.Activate 9 1 if device is activated (usually means running), otherwise 0 -LogicType.AirRelease 75 The current state of the air release system, for example AirRelease = 1 for a Hardsuit sets Air Release to On -LogicType.AlignmentError 243 -LogicType.Apex 238 -LogicType.AutoLand 226 Engages the automatic landing algorithm. The rocket will automatically throttle and turn on and off its engines to achieve a smooth landing. -LogicType.AutoShutOff 218 Turns off all devices in the rocket upon reaching destination -LogicType.BestContactFilter 267 -LogicType.Bpm 103 Bpm -LogicType.BurnTimeRemaining 225 Estimated time in seconds until fuel is depleted. Calculated based on current fuel usage. -LogicType.CelestialHash 242 -LogicType.CelestialParentHash 250 -LogicType.Channel0 165 -LogicType.Channel1 166 -LogicType.Channel2 167 -LogicType.Channel3 168 -LogicType.Channel4 169 -LogicType.Channel5 170 -LogicType.Channel6 171 -LogicType.Channel7 172 -LogicType.Charge 11 The current charge the device has -LogicType.Chart 256 -LogicType.ChartedNavPoints 259 -LogicType.ClearMemory 62 When set to 1, clears the counter memory (e.g. ExportCount). Will set itself back to 0 when actioned -LogicType.CollectableGoods 101 -LogicType.Color 38 \n Whether driven by concerns for clarity, safety or simple aesthetics, {LINK:Stationeers;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 {LINK:ODA;ODA} is powerless to change this. Similarly, anything lower than 0 will be Blue.\n -LogicType.Combustion 98 The assess atmosphere is on fire. Returns 1 if atmosphere is on fire, 0 if not. -LogicType.CombustionInput 146 The assess atmosphere is on fire. Returns 1 if device's input network is on fire, 0 if not. -LogicType.CombustionInput2 147 The assess atmosphere is on fire. Returns 1 if device's Input2 network is on fire, 0 if not. -LogicType.CombustionLimiter 153 Retards the rate of combustion inside the machine (range: 0-100), with 0 being the slowest rate of combustion and 100 being the fastest -LogicType.CombustionOutput 148 The assess atmosphere is on fire. Returns 1 if device's Output network is on fire, 0 if not. -LogicType.CombustionOutput2 149 The assess atmosphere is on fire. Returns 1 if device's Output2 network is on fire, 0 if not. -LogicType.CompletionRatio 61 How complete the current production is for this device, between 0 and 1 -LogicType.ContactTypeId 198 The type id of the contact. -LogicType.CurrentCode 261 -LogicType.CurrentResearchPodType 93 -LogicType.Density 262 -LogicType.DestinationCode 215 Unique identifier code for a destination on the space map. -LogicType.Discover 255 -LogicType.DistanceAu 244 -LogicType.DistanceKm 249 -LogicType.DrillCondition 240 -LogicType.DryMass 220 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. -LogicType.Eccentricity 247 -LogicType.ElevatorLevel 40 Level the elevator is currently at -LogicType.ElevatorSpeed 39 Current speed of the elevator -LogicType.EntityState 239 -LogicType.EnvironmentEfficiency 104 The Environment Efficiency reported by the machine, as a float between 0 and 1 -LogicType.Error 4 1 if device is in error state, otherwise 0 -LogicType.ExhaustVelocity 235 -LogicType.ExportCount 63 How many items exported since last ClearMemory -LogicType.ExportQuantity 31 Total quantity of items exported by the device -LogicType.ExportSlotHash 42 DEPRECATED -LogicType.ExportSlotOccupant 32 DEPRECATED -LogicType.Filtration 74 The current state of the filtration system, for example Filtration = 1 for a Hardsuit sets filtration to On -LogicType.FlightControlRule 236 -LogicType.Flush 174 Set to 1 to activate the flush function on the device -LogicType.ForceWrite 85 Forces Logic Writer devices to rewrite value -LogicType.ForwardX 227 -LogicType.ForwardY 228 -LogicType.ForwardZ 229 -LogicType.Fuel 99 -LogicType.Harvest 69 Performs the harvesting action for any plant based machinery -LogicType.Horizontal 20 Horizontal setting of the device -LogicType.HorizontalRatio 34 Radio of horizontal setting for device -LogicType.Idle 37 Returns 1 if the device is currently idle, otherwise 0 -LogicType.ImportCount 64 How many items imported since last ClearMemory -LogicType.ImportQuantity 29 Total quantity of items imported by the device -LogicType.ImportSlotHash 43 DEPRECATED -LogicType.ImportSlotOccupant 30 DEPRECATED -LogicType.Inclination 246 -LogicType.Index 241 -LogicType.InterrogationProgress 157 Progress of this sattellite dish's interrogation of its current target, as a ratio from 0-1 -LogicType.LineNumber 173 The line number of current execution for an integrated circuit running on this device. While this number can be written, use with caution -LogicType.Lock 10 1 if device is locked, otherwise 0, can be set in most devices and prevents the user from access the values -LogicType.ManualResearchRequiredPod 94 -LogicType.Mass 219 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. -LogicType.Maximum 23 Maximum setting of the device -LogicType.MineablesInQueue 96 -LogicType.MineablesInVicinity 95 -LogicType.MinedQuantity 266 -LogicType.MinimumWattsToContact 163 -LogicType.Mode 3 Integer for mode state, different devices will have different mode states available to them -LogicType.NavPoints 258 -LogicType.NextWeatherEventTime 97 -LogicType.None 0 No description -LogicType.On 28 The current state of the device, 0 for off, 1 for on -LogicType.Open 2 1 if device is open, otherwise 0 -LogicType.OperationalTemperatureEfficiency 150 How the input pipe's temperature effects the machines efficiency -LogicType.OrbitPeriod 245 -LogicType.Orientation 230 -LogicType.Output 70 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 -LogicType.PassedMoles 234 -LogicType.Plant 68 Performs the planting action for any plant based machinery -LogicType.PlantEfficiency1 52 DEPRECATED -LogicType.PlantEfficiency2 53 DEPRECATED -LogicType.PlantEfficiency3 54 DEPRECATED -LogicType.PlantEfficiency4 55 DEPRECATED -LogicType.PlantGrowth1 48 DEPRECATED -LogicType.PlantGrowth2 49 DEPRECATED -LogicType.PlantGrowth3 50 DEPRECATED -LogicType.PlantGrowth4 51 DEPRECATED -LogicType.PlantHash1 56 DEPRECATED -LogicType.PlantHash2 57 DEPRECATED -LogicType.PlantHash3 58 DEPRECATED -LogicType.PlantHash4 59 DEPRECATED -LogicType.PlantHealth1 44 DEPRECATED -LogicType.PlantHealth2 45 DEPRECATED -LogicType.PlantHealth3 46 DEPRECATED -LogicType.PlantHealth4 47 DEPRECATED -LogicType.PositionX 76 The current position in X dimension in world coordinates -LogicType.PositionY 77 The current position in Y dimension in world coordinates -LogicType.PositionZ 78 The current position in Z dimension in world coordinates -LogicType.Power 1 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 -LogicType.PowerActual 26 How much energy the device or network is actually using -LogicType.PowerGeneration 65 Returns how much power is being generated -LogicType.PowerPotential 25 How much energy the device or network potentially provides -LogicType.PowerRequired 36 Power requested from the device and/or network -LogicType.PrefabHash 84 The hash of the structure -LogicType.Pressure 5 The current pressure reading of the device -LogicType.PressureEfficiency 152 How the pressure of the input pipe and waste pipe effect the machines efficiency -LogicType.PressureExternal 7 Setting for external pressure safety, in KPa -LogicType.PressureInput 106 The current pressure reading of the device's Input Network -LogicType.PressureInput2 116 The current pressure reading of the device's Input2 Network -LogicType.PressureInternal 8 Setting for internal pressure safety, in KPa -LogicType.PressureOutput 126 The current pressure reading of the device's Output Network -LogicType.PressureOutput2 136 The current pressure reading of the device's Output2 Network -LogicType.PressureSetting 71 The current setting for the internal pressure of the object (e.g. the Hardsuit Air release), in KPa -LogicType.Progress 214 Progress of the rocket to the next node on the map expressed as a value between 0-1. -LogicType.Quantity 27 Total quantity on the device -LogicType.Ratio 24 Context specific value depending on device, 0 to 1 based ratio -LogicType.RatioCarbonDioxide 15 The ratio of {GAS:CarbonDioxide} in device atmosphere -LogicType.RatioCarbonDioxideInput 109 The ratio of {GAS:CarbonDioxide} in device's input network -LogicType.RatioCarbonDioxideInput2 119 The ratio of {GAS:CarbonDioxide} in device's Input2 network -LogicType.RatioCarbonDioxideOutput 129 The ratio of {GAS:CarbonDioxide} in device's Output network -LogicType.RatioCarbonDioxideOutput2 139 The ratio of {GAS:CarbonDioxide} in device's Output2 network -LogicType.RatioHydrogen 252 The ratio of {GAS:Hydrogen} in device's Atmopshere -LogicType.RatioLiquidCarbonDioxide 199 The ratio of {GAS:LiquidCarbonDioxide} in device's Atmosphere -LogicType.RatioLiquidCarbonDioxideInput 200 The ratio of {GAS:LiquidCarbonDioxide} in device's Input Atmosphere -LogicType.RatioLiquidCarbonDioxideInput2 201 The ratio of {GAS:LiquidCarbonDioxide} in device's Input2 Atmosphere -LogicType.RatioLiquidCarbonDioxideOutput 202 The ratio of {GAS:LiquidCarbonDioxide} in device's device's Output Atmosphere -LogicType.RatioLiquidCarbonDioxideOutput2 203 The ratio of {GAS:LiquidCarbonDioxide} in device's Output2 Atmopshere -LogicType.RatioLiquidHydrogen 253 The ratio of {GAS:LiquidHydrogen} in device's Atmopshere -LogicType.RatioLiquidNitrogen 177 The ratio of {GAS:LiquidNitrogen} in device atmosphere -LogicType.RatioLiquidNitrogenInput 178 The ratio of {GAS:LiquidNitrogen} in device's input network -LogicType.RatioLiquidNitrogenInput2 179 The ratio of {GAS:LiquidNitrogen} in device's Input2 network -LogicType.RatioLiquidNitrogenOutput 180 The ratio of {GAS:LiquidNitrogen} in device's Output network -LogicType.RatioLiquidNitrogenOutput2 181 The ratio of {GAS:LiquidNitrogen} in device's Output2 network -LogicType.RatioLiquidNitrousOxide 209 The ratio of {GAS:LiquidNitrousOxide} in device's Atmosphere -LogicType.RatioLiquidNitrousOxideInput 210 The ratio of {GAS:LiquidNitrousOxide} in device's Input Atmosphere -LogicType.RatioLiquidNitrousOxideInput2 211 The ratio of {GAS:LiquidNitrousOxide} in device's Input2 Atmosphere -LogicType.RatioLiquidNitrousOxideOutput 212 The ratio of {GAS:LiquidNitrousOxide} in device's device's Output Atmosphere -LogicType.RatioLiquidNitrousOxideOutput2 213 The ratio of {GAS:LiquidNitrousOxide} in device's Output2 Atmopshere -LogicType.RatioLiquidOxygen 183 The ratio of {GAS:LiquidOxygen} in device's Atmosphere -LogicType.RatioLiquidOxygenInput 184 The ratio of {GAS:LiquidOxygen} in device's Input Atmosphere -LogicType.RatioLiquidOxygenInput2 185 The ratio of {GAS:LiquidOxygen} in device's Input2 Atmosphere -LogicType.RatioLiquidOxygenOutput 186 The ratio of {GAS:LiquidOxygen} in device's device's Output Atmosphere -LogicType.RatioLiquidOxygenOutput2 187 The ratio of {GAS:LiquidOxygen} in device's Output2 Atmopshere -LogicType.RatioLiquidPollutant 204 The ratio of {GAS:LiquidPollutant} in device's Atmosphere -LogicType.RatioLiquidPollutantInput 205 The ratio of {GAS:LiquidPollutant} in device's Input Atmosphere -LogicType.RatioLiquidPollutantInput2 206 The ratio of {GAS:LiquidPollutant} in device's Input2 Atmosphere -LogicType.RatioLiquidPollutantOutput 207 The ratio of {GAS:LiquidPollutant} in device's device's Output Atmosphere -LogicType.RatioLiquidPollutantOutput2 208 The ratio of {GAS:LiquidPollutant} in device's Output2 Atmopshere -LogicType.RatioLiquidVolatiles 188 The ratio of {GAS:LiquidVolatiles} in device's Atmosphere -LogicType.RatioLiquidVolatilesInput 189 The ratio of {GAS:LiquidVolatiles} in device's Input Atmosphere -LogicType.RatioLiquidVolatilesInput2 190 The ratio of {GAS:LiquidVolatiles} in device's Input2 Atmosphere -LogicType.RatioLiquidVolatilesOutput 191 The ratio of {GAS:LiquidVolatiles} in device's device's Output Atmosphere -LogicType.RatioLiquidVolatilesOutput2 192 The ratio of {GAS:LiquidVolatiles} in device's Output2 Atmopshere -LogicType.RatioNitrogen 16 The ratio of nitrogen in device atmosphere -LogicType.RatioNitrogenInput 110 The ratio of nitrogen in device's input network -LogicType.RatioNitrogenInput2 120 The ratio of nitrogen in device's Input2 network -LogicType.RatioNitrogenOutput 130 The ratio of nitrogen in device's Output network -LogicType.RatioNitrogenOutput2 140 The ratio of nitrogen in device's Output2 network -LogicType.RatioNitrousOxide 83 The ratio of {GAS:NitrousOxide} in device atmosphere -LogicType.RatioNitrousOxideInput 114 The ratio of {GAS:NitrousOxide} in device's input network -LogicType.RatioNitrousOxideInput2 124 The ratio of {GAS:NitrousOxide} in device's Input2 network -LogicType.RatioNitrousOxideOutput 134 The ratio of {GAS:NitrousOxide} in device's Output network -LogicType.RatioNitrousOxideOutput2 144 The ratio of {GAS:NitrousOxide} in device's Output2 network -LogicType.RatioOxygen 14 The ratio of oxygen in device atmosphere -LogicType.RatioOxygenInput 108 The ratio of oxygen in device's input network -LogicType.RatioOxygenInput2 118 The ratio of oxygen in device's Input2 network -LogicType.RatioOxygenOutput 128 The ratio of oxygen in device's Output network -LogicType.RatioOxygenOutput2 138 The ratio of oxygen in device's Output2 network -LogicType.RatioPollutant 17 The ratio of pollutant in device atmosphere -LogicType.RatioPollutantInput 111 The ratio of pollutant in device's input network -LogicType.RatioPollutantInput2 121 The ratio of pollutant in device's Input2 network -LogicType.RatioPollutantOutput 131 The ratio of pollutant in device's Output network -LogicType.RatioPollutantOutput2 141 The ratio of pollutant in device's Output2 network -LogicType.RatioPollutedWater 254 The ratio of polluted water in device atmosphere -LogicType.RatioSteam 193 The ratio of {GAS:Steam} in device's Atmosphere -LogicType.RatioSteamInput 194 The ratio of {GAS:Steam} in device's Input Atmosphere -LogicType.RatioSteamInput2 195 The ratio of {GAS:Steam} in device's Input2 Atmosphere -LogicType.RatioSteamOutput 196 The ratio of {GAS:Steam} in device's device's Output Atmosphere -LogicType.RatioSteamOutput2 197 The ratio of {GAS:Steam} in device's Output2 Atmopshere -LogicType.RatioVolatiles 18 The ratio of volatiles in device atmosphere -LogicType.RatioVolatilesInput 112 The ratio of volatiles in device's input network -LogicType.RatioVolatilesInput2 122 The ratio of volatiles in device's Input2 network -LogicType.RatioVolatilesOutput 132 The ratio of volatiles in device's Output network -LogicType.RatioVolatilesOutput2 142 The ratio of volatiles in device's Output2 network -LogicType.RatioWater 19 The ratio of water in device atmosphere -LogicType.RatioWaterInput 113 The ratio of water in device's input network -LogicType.RatioWaterInput2 123 The ratio of water in device's Input2 network -LogicType.RatioWaterOutput 133 The ratio of water in device's Output network -LogicType.RatioWaterOutput2 143 The ratio of water in device's Output2 network -LogicType.ReEntryAltitude 237 -LogicType.Reagents 13 Total number of reagents recorded by the device -LogicType.RecipeHash 41 Current hash of the recipe the device is set to produce -LogicType.ReferenceId 217 -LogicType.RequestHash 60 When set to the unique identifier, requests an item of the provided type from the device -LogicType.RequiredPower 33 Idle operating power quantity, does not necessarily include extra demand power -LogicType.ReturnFuelCost 100 -LogicType.Richness 263 -LogicType.Rpm 155 The number of revolutions per minute that the device's spinning mechanism is doing -LogicType.SemiMajorAxis 248 -LogicType.Setting 12 A variable setting that can be read or written, depending on the device -LogicType.SettingInput 91 -LogicType.SettingOutput 92 -LogicType.SignalID 87 Returns the contact ID of the strongest signal from this Satellite -LogicType.SignalStrength 86 Returns the degree offset of the strongest contact -LogicType.Sites 260 -LogicType.Size 264 -LogicType.SizeX 160 Size on the X (right) axis of the object in largeGrids (a largeGrid is 2meters) -LogicType.SizeY 161 Size on the Y(Up) axis of the object in largeGrids (a largeGrid is 2meters) -LogicType.SizeZ 162 Size on the Z(Forward) axis of the object in largeGrids (a largeGrid is 2meters) -LogicType.SolarAngle 22 Solar angle of the device -LogicType.SolarIrradiance 176 -LogicType.SoundAlert 175 Plays a sound alert on the devices speaker -LogicType.Stress 156 Machines get stressed when working hard. When Stress reaches 100 the machine will automatically shut down -LogicType.Survey 257 -LogicType.TargetPadIndex 158 The index of the trader landing pad on this devices data network that it will try to call a trader in to land -LogicType.TargetX 88 The target position in X dimension in world coordinates -LogicType.TargetY 89 The target position in Y dimension in world coordinates -LogicType.TargetZ 90 The target position in Z dimension in world coordinates -LogicType.Temperature 6 The current temperature reading of the device -LogicType.TemperatureDifferentialEfficiency 151 How the difference between the input pipe and waste pipe temperatures effect the machines efficiency -LogicType.TemperatureExternal 73 The temperature of the outside of the device, usually the world atmosphere surrounding it -LogicType.TemperatureInput 107 The current temperature reading of the device's Input Network -LogicType.TemperatureInput2 117 The current temperature reading of the device's Input2 Network -LogicType.TemperatureOutput 127 The current temperature reading of the device's Output Network -LogicType.TemperatureOutput2 137 The current temperature reading of the device's Output2 Network -LogicType.TemperatureSetting 72 The current setting for the internal temperature of the object (e.g. the Hardsuit A/C) -LogicType.Throttle 154 Increases the rate at which the machine works (range: 0-100) -LogicType.Thrust 221 Total current thrust of all rocket engines on the rocket in Newtons. -LogicType.ThrustToWeight 223 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. -LogicType.Time 102 Time -LogicType.TimeToDestination 224 Estimated time in seconds until rocket arrives at target destination. -LogicType.TotalMoles 66 Returns the total moles of the device -LogicType.TotalMolesInput 115 Returns the total moles of the device's Input Network -LogicType.TotalMolesInput2 125 Returns the total moles of the device's Input2 Network -LogicType.TotalMolesOutput 135 Returns the total moles of the device's Output Network -LogicType.TotalMolesOutput2 145 Returns the total moles of the device's Output2 Network -LogicType.TotalQuantity 265 -LogicType.TrueAnomaly 251 -LogicType.VelocityMagnitude 79 The current magnitude of the velocity vector -LogicType.VelocityRelativeX 80 The current velocity X relative to the forward vector of this -LogicType.VelocityRelativeY 81 The current velocity Y relative to the forward vector of this -LogicType.VelocityRelativeZ 82 The current velocity Z relative to the forward vector of this -LogicType.VelocityX 231 -LogicType.VelocityY 232 -LogicType.VelocityZ 233 -LogicType.Vertical 21 Vertical setting of the device -LogicType.VerticalRatio 35 Radio of vertical setting for device -LogicType.Volume 67 Returns the device atmosphere volume -LogicType.VolumeOfLiquid 182 The total volume of all liquids in Liters in the atmosphere -LogicType.WattsReachingContact 164 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 -LogicType.Weight 222 Weight of Rocket in Newtons (Including fuel and cargo). Weight is effected by local body gravity. -LogicType.WorkingGasEfficiency 105 The Working Gas Efficiency reported by the machine, as a float between 0 and 1 -NotEquals 3 -PowerMode.Charged 4 -PowerMode.Charging 3 -PowerMode.Discharged 1 -PowerMode.Discharging 2 -PowerMode.Idle 0 -ReEntryProfile.High 3 -ReEntryProfile.Max 4 -ReEntryProfile.Medium 2 -ReEntryProfile.None 0 -ReEntryProfile.Optimal 1 -RobotMode.Follow 1 -RobotMode.MoveToTarget 2 -RobotMode.None 0 -RobotMode.PathToTarget 5 -RobotMode.Roam 3 -RobotMode.StorageFull 6 -RobotMode.Unload 4 -RocketMode.Chart 5 -RocketMode.Discover 4 -RocketMode.Invalid 0 -RocketMode.Mine 2 -RocketMode.None 1 -RocketMode.Survey 3 -SlotClass.AccessCard 22 -SlotClass.Appliance 18 -SlotClass.Back 3 -SlotClass.Battery 14 -SlotClass.Belt 16 -SlotClass.Blocked 38 -SlotClass.Bottle 25 -SlotClass.Cartridge 21 -SlotClass.Circuit 24 -SlotClass.Circuitboard 7 -SlotClass.CreditCard 28 -SlotClass.DataDisk 8 -SlotClass.DirtCanister 29 -SlotClass.DrillHead 35 -SlotClass.Egg 15 -SlotClass.Entity 13 -SlotClass.Flare 37 -SlotClass.GasCanister 5 -SlotClass.GasFilter 4 -SlotClass.Glasses 27 -SlotClass.Helmet 1 -SlotClass.Ingot 19 -SlotClass.LiquidBottle 32 -SlotClass.LiquidCanister 31 -SlotClass.Magazine 23 -SlotClass.Motherboard 6 -SlotClass.None 0 -SlotClass.Ore 10 -SlotClass.Organ 9 -SlotClass.Plant 11 -SlotClass.ProgrammableChip 26 -SlotClass.ScanningHead 36 -SlotClass.SensorProcessingUnit 30 -SlotClass.SoundCartridge 34 -SlotClass.Suit 2 -SlotClass.SuitMod 39 -SlotClass.Tool 17 -SlotClass.Torpedo 20 -SlotClass.Uniform 12 -SlotClass.Wreckage 33 -SorterInstruction.FilterPrefabHashEquals 1 -SorterInstruction.FilterPrefabHashNotEquals 2 -SorterInstruction.FilterQuantityCompare 5 -SorterInstruction.FilterSlotTypeCompare 4 -SorterInstruction.FilterSortingClassCompare 3 -SorterInstruction.LimitNextExecutionByCount 6 -SorterInstruction.None 0 -SortingClass.Appliances 6 -SortingClass.Atmospherics 7 -SortingClass.Clothing 5 -SortingClass.Default 0 -SortingClass.Food 4 -SortingClass.Ices 10 -SortingClass.Kits 1 -SortingClass.Ores 9 -SortingClass.Resources 3 -SortingClass.Storage 8 -SortingClass.Tools 2 -Sound.AirlockCycling 22 -Sound.Alarm1 45 -Sound.Alarm10 12 -Sound.Alarm11 13 -Sound.Alarm12 14 -Sound.Alarm2 1 -Sound.Alarm3 2 -Sound.Alarm4 3 -Sound.Alarm5 4 -Sound.Alarm6 5 -Sound.Alarm7 6 -Sound.Alarm8 10 -Sound.Alarm9 11 -Sound.Alert 17 -Sound.Danger 15 -Sound.Depressurising 20 -Sound.FireFireFire 28 -Sound.Five 33 -Sound.Floor 34 -Sound.Four 32 -Sound.HaltWhoGoesThere 27 -Sound.HighCarbonDioxide 44 -Sound.IntruderAlert 19 -Sound.LiftOff 36 -Sound.MalfunctionDetected 26 -Sound.Music1 7 -Sound.Music2 8 -Sound.Music3 9 -Sound.None 0 -Sound.One 29 -Sound.PollutantsDetected 43 -Sound.PowerLow 23 -Sound.PressureHigh 39 -Sound.PressureLow 40 -Sound.Pressurising 21 -Sound.RocketLaunching 35 -Sound.StormIncoming 18 -Sound.SystemFailure 24 -Sound.TemperatureHigh 41 -Sound.TemperatureLow 42 -Sound.Three 31 -Sound.TraderIncoming 37 -Sound.TraderLanded 38 -Sound.Two 30 -Sound.Warning 16 -Sound.Welcome 25 -TransmitterMode.Active 1 -TransmitterMode.Passive 0 -Vent.Inward 1 -Vent.Outward 0 diff --git a/ic10emu/data/instruction_help_patches.json b/ic10emu/data/instruction_help_patches.json deleted file mode 100644 index f2186ad..0000000 --- a/ic10emu/data/instruction_help_patches.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "english": { - "bapz": "Branch to line c if abs(a) <= max(b * abs(a), float.epsilon * 8)", - "bapzal": "Branch to line c if abs(a) <= max(b * abs(a), float.epsilon * 8) and store next line number in ra", - "bnaz": "Branch to line c if abs(a) > max (b * abs(a), float.epsilon * 8)", - "bnazal": "Branch to line c if abs(a) > max (b * abs(a), float.epsilon * 8) and store next line number in ra", - "brapz": "Relative branch to line c if abs(a) <= max(b * abs(a), float.epsilon * 8)", - "brnaz": "Relative branch to line c if abs(a) > max(b * abs(a), float.epsilon * 8)", - "sapz": "Register = 1 if abs(a) <= max(b * abs(a), float.epsilon * 8), otherwise 0", - "snaz": "Register = 1 if abs(a) > max(b * abs(a), float.epsilon), otherwise 0", - "log": "Register = base e log(a) or ln(a)", - "exp": "Register = exp(a) or e^a" - } -} diff --git a/ic10emu/data/instructions.txt b/ic10emu/data/instructions.txt deleted file mode 100644 index de0552b..0000000 --- a/ic10emu/data/instructions.txt +++ /dev/null @@ -1,140 +0,0 @@ -abs REGISTER VALUE -acos REGISTER VALUE -add REGISTER VALUE VALUE -alias NAME REGISTER_DEVICE -and REGISTER VALUE VALUE -asin REGISTER VALUE -atan REGISTER VALUE -atan2 REGISTER VALUE VALUE -bap VALUE VALUE VALUE VALUE -bapal VALUE VALUE VALUE VALUE -bapz VALUE VALUE VALUE -bapzal VALUE VALUE VALUE -bdns DEVICE VALUE -bdnsal DEVICE VALUE -bdse DEVICE VALUE -bdseal DEVICE VALUE -beq VALUE VALUE VALUE -beqal VALUE VALUE VALUE -beqz VALUE VALUE -beqzal VALUE VALUE -bge VALUE VALUE VALUE -bgeal VALUE VALUE VALUE -bgez VALUE VALUE -bgezal VALUE VALUE -bgt VALUE VALUE VALUE -bgtal VALUE VALUE VALUE -bgtz VALUE VALUE -bgtzal VALUE VALUE -ble VALUE VALUE VALUE -bleal VALUE VALUE VALUE -blez VALUE VALUE -blezal VALUE VALUE -blt VALUE VALUE VALUE -bltal VALUE VALUE VALUE -bltz VALUE VALUE -bltzal VALUE VALUE -bna VALUE VALUE VALUE VALUE -bnaal VALUE VALUE VALUE VALUE -bnan VALUE VALUE -bnaz VALUE VALUE VALUE -bnazal VALUE VALUE VALUE -bne VALUE VALUE VALUE -bneal VALUE VALUE VALUE -bnez VALUE VALUE -bnezal VALUE VALUE -brap VALUE VALUE VALUE VALUE -brapz VALUE VALUE VALUE -brdns DEVICE VALUE -brdse DEVICE VALUE -breq VALUE VALUE VALUE -breqz VALUE VALUE -brge VALUE VALUE VALUE -brgez VALUE VALUE -brgt VALUE VALUE VALUE -brgtz VALUE VALUE -brle VALUE VALUE VALUE -brlez VALUE VALUE -brlt VALUE VALUE VALUE -brltz VALUE VALUE -brna VALUE VALUE VALUE VALUE -brnan VALUE VALUE -brnaz VALUE VALUE VALUE -brne VALUE VALUE VALUE -brnez VALUE VALUE -ceil REGISTER VALUE -cos REGISTER VALUE -define NAME NUMBER -div REGISTER VALUE VALUE -exp REGISTER VALUE -floor REGISTER VALUE -get REGISTER DEVICE ADDRESS -getd REGISTER DEVICE_ID ADDRESS -hcf -j VALUE -jal VALUE -jr VALUE -l REGISTER DEVICE LOGIC_TYPE -lb REGISTER DEVICE_TYPE LOGIC_TYPE BATCH_MODE -lbn REGISTER DEVICE_TYPE DEVICE_NAME LOGIC_TYPE BATCH_MODE -lbns REGISTER DEVICE_TYPE DEVICE_NAME INDEX SLOT_LOGIC_TYPE BATCH_MODE -lbs REGISTER DEVICE_TYPE INDEX SLOT_LOGIC_TYPE BATCH_MODE -ld REGISTER DEVICE_ID LOGIC_TYPE -log REGISTER VALUE -lr REGISTER DEVICE REAGENT_MODE VALUE -ls REGISTER DEVICE VALUE SLOT_LOGIC_TYPE -max REGISTER VALUE VALUE -min REGISTER VALUE VALUE -mod REGISTER VALUE VALUE -move REGISTER VALUE -mul REGISTER VALUE VALUE -nor REGISTER VALUE VALUE -not REGISTER VALUE -or REGISTER VALUE VALUE -peek REGISTER -poke ADDRESS VALUE -pop REGISTER -push VALUE -put DEVICE ADDRESS VALUE -putd DEVICE_ID ADDRESS VALUE -rand REGISTER -round REGISTER VALUE -s DEVICE LOGIC_TYPE VALUE -sap REGISTER VALUE VALUE VALUE -sapz REGISTER VALUE VALUE -sb DEVICE_TYPE LOGIC_TYPE VALUE -sbn DEVICE_TYPE DEVICE_NAME LOGIC_TYPE VALUE -sbs DEVICE_TYPE INDEX SLOT_LOGIC_TYPE VALUE -sd DEVICE_ID LOGIC_TYPE VALUE -sdns REGISTER DEVICE -sdse REGISTER DEVICE -select REGISTER VALUE VALUE VALUE -seq REGISTER VALUE VALUE -seqz REGISTER VALUE -sge REGISTER VALUE VALUE -sgez REGISTER VALUE -sgt REGISTER VALUE VALUE -sgtz REGISTER VALUE -sin REGISTER VALUE -sla REGISTER VALUE VALUE -sle REGISTER VALUE VALUE -sleep VALUE -slez REGISTER VALUE -sll REGISTER VALUE VALUE -slt REGISTER VALUE VALUE -sltz REGISTER VALUE -sna REGISTER VALUE VALUE VALUE -snan REGISTER VALUE -snanz REGISTER VALUE -snaz REGISTER VALUE VALUE -sne REGISTER VALUE VALUE -snez REGISTER VALUE -sqrt REGISTER VALUE -sra REGISTER VALUE VALUE -srl REGISTER VALUE VALUE -ss DEVICE VALUE SLOT_LOGIC_TYPE REGISTER -sub REGISTER VALUE VALUE -tan REGISTER VALUE -trunc REGISTER VALUE -xor REGISTER VALUE VALUE -yield diff --git a/ic10emu/data/instructions_help.txt b/ic10emu/data/instructions_help.txt deleted file mode 100644 index ea7f53c..0000000 --- a/ic10emu/data/instructions_help.txt +++ /dev/null @@ -1,136 +0,0 @@ -abs Register = the absolute value of a -acos Returns the angle (radians) whos cosine is the specified value -add Register = a + b. -alias Labels register or device reference with name, device references also affect what shows on the screws on the IC base. -and 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. -asin Returns the angle (radians) whos sine is the specified value -atan Returns the angle (radians) whos tan is the specified value -atan2 Returns the angle (radians) whose tangent is the quotient of two specified values: a (y) and b (x) -bap Branch to line d if abs(a - b) <= max(c * max(abs(a), abs(b)), float.epsilon * 8) -bapal 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 -bapz Branch to line c if abs(a) <= max(b * abs(a), float.epsilon * 8) -bapzal Branch to line c if abs(a) <= max(b * abs(a), float.epsilon * 8) and store next line number in ra -bdns Branch to line a if device d isn't set -bdnsal Jump execution to line a and store next line number if device is not set -bdse Branch to line a if device d is set -bdseal Jump execution to line a and store next line number if device is set -beq Branch to line c if a == b -beqal Branch to line c if a == b and store next line number in ra -beqz Branch to line b if a == 0 -beqzal Branch to line b if a == 0 and store next line number in ra -bge Branch to line c if a >= b -bgeal Branch to line c if a >= b and store next line number in ra -bgez Branch to line b if a >= 0 -bgezal Branch to line b if a >= 0 and store next line number in ra -bgt Branch to line c if a > b -bgtal Branch to line c if a > b and store next line number in ra -bgtz Branch to line b if a > 0 -bgtzal Branch to line b if a > 0 and store next line number in ra -ble Branch to line c if a <= b -bleal Branch to line c if a <= b and store next line number in ra -blez Branch to line b if a <= 0 -blezal Branch to line b if a <= 0 and store next line number in ra -blt Branch to line c if a < b -bltal Branch to line c if a < b and store next line number in ra -bltz Branch to line b if a < 0 -bltzal Branch to line b if a < 0 and store next line number in ra -bna Branch to line d if abs(a - b) > max(c * max(abs(a), abs(b)), float.epsilon * 8) -bnaal 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 -bnan Branch to line b if a is not a number (NaN) -bnaz Branch to line c if abs(a) > max (b * abs(a), float.epsilon * 8) -bnazal Branch to line c if abs(a) > max (b * abs(a), float.epsilon * 8) and store next line number in ra -bne Branch to line c if a != b -bneal Branch to line c if a != b and store next line number in ra -bnez branch to line b if a != 0 -bnezal Branch to line b if a != 0 and store next line number in ra -brap Relative branch to line d if abs(a - b) <= max(c * max(abs(a), abs(b)), float.epsilon * 8) -brapz Relative branch to line c if abs(a) <= max(b * abs(a), float.epsilon * 8) -brdns Relative jump to line a if device is not set -brdse Relative jump to line a if device is set -breq Relative branch to line c if a == b -breqz Relative branch to line b if a == 0 -brge Relative jump to line c if a >= b -brgez Relative branch to line b if a >= 0 -brgt relative jump to line c if a > b -brgtz Relative branch to line b if a > 0 -brle Relative jump to line c if a <= b -brlez Relative branch to line b if a <= 0 -brlt Relative jump to line c if a < b -brltz Relative branch to line b if a < 0 -brna Relative branch to line d if abs(a - b) > max(c * max(abs(a), abs(b)), float.epsilon * 8) -brnan Relative branch to line b if a is not a number (NaN) -brnaz Relative branch to line c if abs(a) > max(b * abs(a), float.epsilon * 8) -brne Relative branch to line c if a != b -brnez Relative branch to line b if a != 0 -ceil Register = smallest integer greater than a -cos Returns the cosine of the specified angle (radians) -define Creates a label that will be replaced throughout the program with the provided value. -div Register = a / b -exp Register = exp(a) or e^a -floor Register = largest integer less than a -hcf Halt and catch fire -j Jump execution to line a -jal Jump execution to line a and store next line number in ra -jr Relative jump to line a -l Loads device LogicType to register by housing index value. -label DEPRECATED -lb 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. -lbn 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. -lbns 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. -lbs 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. -ld Loads device LogicType to register by direct ID reference. -log Register = base e log(a) or ln(a) -lr 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. -ls Loads slot LogicSlotType on device to register. -max Register = max of a or b -min Register = min of a or b -mod Register = a mod b (note: NOT a % b) -move Register = provided num or register value. -mul Register = a * b -nor 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. -not 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. -or 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. -peek Register = the value at the top of the stack -pop Register = the value at the top of the stack and decrements sp -push Pushes the value of a to the stack at sp and increments sp -rand Register = a random value x with 0 <= x < 1 -round Register = a rounded to nearest integer -s Stores register value to LogicType on device by housing index value. -sap Register = 1 if abs(a - b) <= max(c * max(abs(a), abs(b)), float.epsilon * 8), otherwise 0 -sapz Register = 1 if abs(a) <= max(b * abs(a), float.epsilon * 8), otherwise 0 -sb Stores register value to LogicType on all output network devices with provided type hash. -sbn Stores register value to LogicType on all output network devices with provided type hash and name. -sbs Stores register value to LogicSlotType on all output network devices with provided type hash in the provided slot. -sd Stores register value to LogicType on device by direct ID reference. -sdns Register = 1 if device is not set, otherwise 0 -sdse Register = 1 if device is set, otherwise 0. -select Register = b if a is non-zero, otherwise c -seq Register = 1 if a == b, otherwise 0 -seqz Register = 1 if a == 0, otherwise 0 -sge Register = 1 if a >= b, otherwise 0 -sgez Register = 1 if a >= 0, otherwise 0 -sgt Register = 1 if a > b, otherwise 0 -sgtz Register = 1 if a > 0, otherwise 0 -sin Returns the sine of the specified angle (radians) -sla 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). -sle Register = 1 if a <= b, otherwise 0 -sleep Pauses execution on the IC for a seconds -slez Register = 1 if a <= 0, otherwise 0 -sll 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. -slt Register = 1 if a < b, otherwise 0 -sltz Register = 1 if a < 0, otherwise 0 -sna Register = 1 if abs(a - b) > max(c * max(abs(a), abs(b)), float.epsilon * 8), otherwise 0 -snan Register = 1 if a is NaN, otherwise 0 -snanz Register = 0 if a is NaN, otherwise 1 -snaz Register = 1 if abs(a) > max(b * abs(a), float.epsilon), otherwise 0 -sne Register = 1 if a != b, otherwise 0 -snez Register = 1 if a != 0, otherwise 0 -sqrt Register = square root of a -sra 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). -srl 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 -ss Stores register value to device stored in a slot LogicSlotType on device. -sub Register = a - b. -tan Returns the tan of the specified angle (radians) -trunc Register = a with fractional part removed -xor 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. -yield Pauses execution for 1 tick diff --git a/ic10emu/data/logictypes.txt b/ic10emu/data/logictypes.txt deleted file mode 100644 index ccd785a..0000000 --- a/ic10emu/data/logictypes.txt +++ /dev/null @@ -1,267 +0,0 @@ -Acceleration 216 Change in velocity. Rockets that are deccelerating when landing will show this as negative value. -Activate 9 1 if device is activated (usually means running), otherwise 0 -AirRelease 75 The current state of the air release system, for example AirRelease = 1 for a Hardsuit sets Air Release to On -AlignmentError 243 -Apex 238 -AutoLand 226 Engages the automatic landing algorithm. The rocket will automatically throttle and turn on and off its engines to achieve a smooth landing. -AutoShutOff 218 Turns off all devices in the rocket upon reaching destination -BestContactFilter 267 -Bpm 103 Bpm -BurnTimeRemaining 225 Estimated time in seconds until fuel is depleted. Calculated based on current fuel usage. -CelestialHash 242 -CelestialParentHash 250 -Channel0 165 Channel 0 on a cable network which should be considered volatile -Channel1 166 Channel 1 on a cable network which should be considered volatile -Channel2 167 Channel 2 on a cable network which should be considered volatile -Channel3 168 Channel 3 on a cable network which should be considered volatile -Channel4 169 Channel 4 on a cable network which should be considered volatile -Channel5 170 Channel 5 on a cable network which should be considered volatile -Channel6 171 Channel 6 on a cable network which should be considered volatile -Channel7 172 Channel 7 on a cable network which should be considered volatile -Charge 11 The current charge the device has -Chart 256 -ChartedNavPoints 259 -ClearMemory 62 When set to 1, clears the counter memory (e.g. ExportCount). Will set itself back to 0 when actioned -CollectableGoods 101 -Color 38 \n Whether driven by concerns for clarity, safety or simple aesthetics, {LINK:Stationeers;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 {LINK:ODA;ODA} is powerless to change this. Similarly, anything lower than 0 will be Blue.\n -Combustion 98 The assess atmosphere is on fire. Returns 1 if atmosphere is on fire, 0 if not. -CombustionInput 146 The assess atmosphere is on fire. Returns 1 if device's input network is on fire, 0 if not. -CombustionInput2 147 The assess atmosphere is on fire. Returns 1 if device's Input2 network is on fire, 0 if not. -CombustionLimiter 153 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 148 The assess atmosphere is on fire. Returns 1 if device's Output network is on fire, 0 if not. -CombustionOutput2 149 The assess atmosphere is on fire. Returns 1 if device's Output2 network is on fire, 0 if not. -CompletionRatio 61 How complete the current production is for this device, between 0 and 1 -ContactTypeId 198 The type id of the contact. -CurrentCode 261 -CurrentResearchPodType 93 -Density 262 -DestinationCode 215 Unique identifier code for a destination on the space map. -Discover 255 -DistanceAu 244 -DistanceKm 249 -DrillCondition 240 -DryMass 220 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 247 -ElevatorLevel 40 Level the elevator is currently at -ElevatorSpeed 39 Current speed of the elevator -EntityState 239 -EnvironmentEfficiency 104 The Environment Efficiency reported by the machine, as a float between 0 and 1 -Error 4 1 if device is in error state, otherwise 0 -ExhaustVelocity 235 -ExportCount 63 How many items exported since last ClearMemory -ExportQuantity 31 Total quantity of items exported by the device -ExportSlotHash 42 DEPRECATED -ExportSlotOccupant 32 DEPRECATED -Filtration 74 The current state of the filtration system, for example Filtration = 1 for a Hardsuit sets filtration to On -FlightControlRule 236 -Flush 174 Set to 1 to activate the flush function on the device -ForceWrite 85 Forces Logic Writer devices to rewrite value -ForwardX 227 -ForwardY 228 -ForwardZ 229 -Fuel 99 -Harvest 69 Performs the harvesting action for any plant based machinery -Horizontal 20 Horizontal setting of the device -HorizontalRatio 34 Radio of horizontal setting for device -Idle 37 Returns 1 if the device is currently idle, otherwise 0 -ImportCount 64 How many items imported since last ClearMemory -ImportQuantity 29 Total quantity of items imported by the device -ImportSlotHash 43 DEPRECATED -ImportSlotOccupant 30 DEPRECATED -Inclination 246 -Index 241 -InterrogationProgress 157 Progress of this sattellite dish's interrogation of its current target, as a ratio from 0-1 -LineNumber 173 The line number of current execution for an integrated circuit running on this device. While this number can be written, use with caution -Lock 10 1 if device is locked, otherwise 0, can be set in most devices and prevents the user from access the values -ManualResearchRequiredPod 94 -Mass 219 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 23 Maximum setting of the device -MineablesInQueue 96 -MineablesInVicinity 95 -MinedQuantity 266 -MinimumWattsToContact 163 Minimum required amount of watts from the dish hitting the target trader contact to start interrogating the contact -Mode 3 Integer for mode state, different devices will have different mode states available to them -NavPoints 258 -NextWeatherEventTime 97 -None 0 No description -On 28 The current state of the device, 0 for off, 1 for on -Open 2 1 if device is open, otherwise 0 -OperationalTemperatureEfficiency 150 How the input pipe's temperature effects the machines efficiency -OrbitPeriod 245 -Orientation 230 -Output 70 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 234 -Plant 68 Performs the planting action for any plant based machinery -PlantEfficiency1 52 DEPRECATED -PlantEfficiency2 53 DEPRECATED -PlantEfficiency3 54 DEPRECATED -PlantEfficiency4 55 DEPRECATED -PlantGrowth1 48 DEPRECATED -PlantGrowth2 49 DEPRECATED -PlantGrowth3 50 DEPRECATED -PlantGrowth4 51 DEPRECATED -PlantHash1 56 DEPRECATED -PlantHash2 57 DEPRECATED -PlantHash3 58 DEPRECATED -PlantHash4 59 DEPRECATED -PlantHealth1 44 DEPRECATED -PlantHealth2 45 DEPRECATED -PlantHealth3 46 DEPRECATED -PlantHealth4 47 DEPRECATED -PositionX 76 The current position in X dimension in world coordinates -PositionY 77 The current position in Y dimension in world coordinates -PositionZ 78 The current position in Z dimension in world coordinates -Power 1 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 26 How much energy the device or network is actually using -PowerGeneration 65 Returns how much power is being generated -PowerPotential 25 How much energy the device or network potentially provides -PowerRequired 36 Power requested from the device and/or network -PrefabHash 84 The hash of the structure -Pressure 5 The current pressure reading of the device -PressureEfficiency 152 How the pressure of the input pipe and waste pipe effect the machines efficiency -PressureExternal 7 Setting for external pressure safety, in KPa -PressureInput 106 The current pressure reading of the device's Input Network -PressureInput2 116 The current pressure reading of the device's Input2 Network -PressureInternal 8 Setting for internal pressure safety, in KPa -PressureOutput 126 The current pressure reading of the device's Output Network -PressureOutput2 136 The current pressure reading of the device's Output2 Network -PressureSetting 71 The current setting for the internal pressure of the object (e.g. the Hardsuit Air release), in KPa -Progress 214 Progress of the rocket to the next node on the map expressed as a value between 0-1. -Quantity 27 Total quantity on the device -Ratio 24 Context specific value depending on device, 0 to 1 based ratio -RatioCarbonDioxide 15 The ratio of {GAS:CarbonDioxide} in device atmosphere -RatioCarbonDioxideInput 109 The ratio of {GAS:CarbonDioxide} in device's input network -RatioCarbonDioxideInput2 119 The ratio of {GAS:CarbonDioxide} in device's Input2 network -RatioCarbonDioxideOutput 129 The ratio of {GAS:CarbonDioxide} in device's Output network -RatioCarbonDioxideOutput2 139 The ratio of {GAS:CarbonDioxide} in device's Output2 network -RatioHydrogen 252 The ratio of {GAS:Hydrogen} in device's Atmopshere -RatioLiquidCarbonDioxide 199 The ratio of {GAS:LiquidCarbonDioxide} in device's Atmosphere -RatioLiquidCarbonDioxideInput 200 The ratio of {GAS:LiquidCarbonDioxide} in device's Input Atmosphere -RatioLiquidCarbonDioxideInput2 201 The ratio of {GAS:LiquidCarbonDioxide} in device's Input2 Atmosphere -RatioLiquidCarbonDioxideOutput 202 The ratio of {GAS:LiquidCarbonDioxide} in device's device's Output Atmosphere -RatioLiquidCarbonDioxideOutput2 203 The ratio of {GAS:LiquidCarbonDioxide} in device's Output2 Atmopshere -RatioLiquidHydrogen 253 The ratio of {GAS:LiquidHydrogen} in device's Atmopshere -RatioLiquidNitrogen 177 The ratio of {GAS:LiquidNitrogen} in device atmosphere -RatioLiquidNitrogenInput 178 The ratio of {GAS:LiquidNitrogen} in device's input network -RatioLiquidNitrogenInput2 179 The ratio of {GAS:LiquidNitrogen} in device's Input2 network -RatioLiquidNitrogenOutput 180 The ratio of {GAS:LiquidNitrogen} in device's Output network -RatioLiquidNitrogenOutput2 181 The ratio of {GAS:LiquidNitrogen} in device's Output2 network -RatioLiquidNitrousOxide 209 The ratio of {GAS:LiquidNitrousOxide} in device's Atmosphere -RatioLiquidNitrousOxideInput 210 The ratio of {GAS:LiquidNitrousOxide} in device's Input Atmosphere -RatioLiquidNitrousOxideInput2 211 The ratio of {GAS:LiquidNitrousOxide} in device's Input2 Atmosphere -RatioLiquidNitrousOxideOutput 212 The ratio of {GAS:LiquidNitrousOxide} in device's device's Output Atmosphere -RatioLiquidNitrousOxideOutput2 213 The ratio of {GAS:LiquidNitrousOxide} in device's Output2 Atmopshere -RatioLiquidOxygen 183 The ratio of {GAS:LiquidOxygen} in device's Atmosphere -RatioLiquidOxygenInput 184 The ratio of {GAS:LiquidOxygen} in device's Input Atmosphere -RatioLiquidOxygenInput2 185 The ratio of {GAS:LiquidOxygen} in device's Input2 Atmosphere -RatioLiquidOxygenOutput 186 The ratio of {GAS:LiquidOxygen} in device's device's Output Atmosphere -RatioLiquidOxygenOutput2 187 The ratio of {GAS:LiquidOxygen} in device's Output2 Atmopshere -RatioLiquidPollutant 204 The ratio of {GAS:LiquidPollutant} in device's Atmosphere -RatioLiquidPollutantInput 205 The ratio of {GAS:LiquidPollutant} in device's Input Atmosphere -RatioLiquidPollutantInput2 206 The ratio of {GAS:LiquidPollutant} in device's Input2 Atmosphere -RatioLiquidPollutantOutput 207 The ratio of {GAS:LiquidPollutant} in device's device's Output Atmosphere -RatioLiquidPollutantOutput2 208 The ratio of {GAS:LiquidPollutant} in device's Output2 Atmopshere -RatioLiquidVolatiles 188 The ratio of {GAS:LiquidVolatiles} in device's Atmosphere -RatioLiquidVolatilesInput 189 The ratio of {GAS:LiquidVolatiles} in device's Input Atmosphere -RatioLiquidVolatilesInput2 190 The ratio of {GAS:LiquidVolatiles} in device's Input2 Atmosphere -RatioLiquidVolatilesOutput 191 The ratio of {GAS:LiquidVolatiles} in device's device's Output Atmosphere -RatioLiquidVolatilesOutput2 192 The ratio of {GAS:LiquidVolatiles} in device's Output2 Atmopshere -RatioNitrogen 16 The ratio of nitrogen in device atmosphere -RatioNitrogenInput 110 The ratio of nitrogen in device's input network -RatioNitrogenInput2 120 The ratio of nitrogen in device's Input2 network -RatioNitrogenOutput 130 The ratio of nitrogen in device's Output network -RatioNitrogenOutput2 140 The ratio of nitrogen in device's Output2 network -RatioNitrousOxide 83 The ratio of {GAS:NitrousOxide} in device atmosphere -RatioNitrousOxideInput 114 The ratio of {GAS:NitrousOxide} in device's input network -RatioNitrousOxideInput2 124 The ratio of {GAS:NitrousOxide} in device's Input2 network -RatioNitrousOxideOutput 134 The ratio of {GAS:NitrousOxide} in device's Output network -RatioNitrousOxideOutput2 144 The ratio of {GAS:NitrousOxide} in device's Output2 network -RatioOxygen 14 The ratio of oxygen in device atmosphere -RatioOxygenInput 108 The ratio of oxygen in device's input network -RatioOxygenInput2 118 The ratio of oxygen in device's Input2 network -RatioOxygenOutput 128 The ratio of oxygen in device's Output network -RatioOxygenOutput2 138 The ratio of oxygen in device's Output2 network -RatioPollutant 17 The ratio of pollutant in device atmosphere -RatioPollutantInput 111 The ratio of pollutant in device's input network -RatioPollutantInput2 121 The ratio of pollutant in device's Input2 network -RatioPollutantOutput 131 The ratio of pollutant in device's Output network -RatioPollutantOutput2 141 The ratio of pollutant in device's Output2 network -RatioPollutedWater 254 The ratio of polluted water in device atmosphere -RatioSteam 193 The ratio of {GAS:Steam} in device's Atmosphere -RatioSteamInput 194 The ratio of {GAS:Steam} in device's Input Atmosphere -RatioSteamInput2 195 The ratio of {GAS:Steam} in device's Input2 Atmosphere -RatioSteamOutput 196 The ratio of {GAS:Steam} in device's device's Output Atmosphere -RatioSteamOutput2 197 The ratio of {GAS:Steam} in device's Output2 Atmopshere -RatioVolatiles 18 The ratio of volatiles in device atmosphere -RatioVolatilesInput 112 The ratio of volatiles in device's input network -RatioVolatilesInput2 122 The ratio of volatiles in device's Input2 network -RatioVolatilesOutput 132 The ratio of volatiles in device's Output network -RatioVolatilesOutput2 142 The ratio of volatiles in device's Output2 network -RatioWater 19 The ratio of water in device atmosphere -RatioWaterInput 113 The ratio of water in device's input network -RatioWaterInput2 123 The ratio of water in device's Input2 network -RatioWaterOutput 133 The ratio of water in device's Output network -RatioWaterOutput2 143 The ratio of water in device's Output2 network -ReEntryAltitude 237 -Reagents 13 Total number of reagents recorded by the device -RecipeHash 41 Current hash of the recipe the device is set to produce -ReferenceId 217 -RequestHash 60 When set to the unique identifier, requests an item of the provided type from the device -RequiredPower 33 Idle operating power quantity, does not necessarily include extra demand power -ReturnFuelCost 100 -Richness 263 -Rpm 155 The number of revolutions per minute that the device's spinning mechanism is doing -SemiMajorAxis 248 -Setting 12 A variable setting that can be read or written, depending on the device -SettingInput 91 The input setting for the device -SettingOutput 92 The output setting for the device -SignalID 87 Returns the contact ID of the strongest signal from this Satellite -SignalStrength 86 Returns the degree offset of the strongest contact -Sites 260 -Size 264 -SizeX 160 Size on the X (right) axis of the object in largeGrids (a largeGrid is 2meters) -SizeY 161 Size on the Y(Up) axis of the object in largeGrids (a largeGrid is 2meters) -SizeZ 162 Size on the Z(Forward) axis of the object in largeGrids (a largeGrid is 2meters) -SolarAngle 22 Solar angle of the device -SolarIrradiance 176 -SoundAlert 175 Plays a sound alert on the devices speaker -Stress 156 Machines get stressed when working hard. When Stress reaches 100 the machine will automatically shut down -Survey 257 -TargetPadIndex 158 The index of the trader landing pad on this devices data network that it will try to call a trader in to land -TargetX 88 The target position in X dimension in world coordinates -TargetY 89 The target position in Y dimension in world coordinates -TargetZ 90 The target position in Z dimension in world coordinates -Temperature 6 The current temperature reading of the device -TemperatureDifferentialEfficiency 151 How the difference between the input pipe and waste pipe temperatures effect the machines efficiency -TemperatureExternal 73 The temperature of the outside of the device, usually the world atmosphere surrounding it -TemperatureInput 107 The current temperature reading of the device's Input Network -TemperatureInput2 117 The current temperature reading of the device's Input2 Network -TemperatureOutput 127 The current temperature reading of the device's Output Network -TemperatureOutput2 137 The current temperature reading of the device's Output2 Network -TemperatureSetting 72 The current setting for the internal temperature of the object (e.g. the Hardsuit A/C) -Throttle 154 Increases the rate at which the machine works (range: 0-100) -Thrust 221 Total current thrust of all rocket engines on the rocket in Newtons. -ThrustToWeight 223 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 102 Time -TimeToDestination 224 Estimated time in seconds until rocket arrives at target destination. -TotalMoles 66 Returns the total moles of the device -TotalMolesInput 115 Returns the total moles of the device's Input Network -TotalMolesInput2 125 Returns the total moles of the device's Input2 Network -TotalMolesOutput 135 Returns the total moles of the device's Output Network -TotalMolesOutput2 145 Returns the total moles of the device's Output2 Network -TotalQuantity 265 -TrueAnomaly 251 -VelocityMagnitude 79 The current magnitude of the velocity vector -VelocityRelativeX 80 The current velocity X relative to the forward vector of this -VelocityRelativeY 81 The current velocity Y relative to the forward vector of this -VelocityRelativeZ 82 The current velocity Z relative to the forward vector of this -VelocityX 231 -VelocityY 232 -VelocityZ 233 -Vertical 21 Vertical setting of the device -VerticalRatio 35 Radio of vertical setting for device -Volume 67 Returns the device atmosphere volume -VolumeOfLiquid 182 The total volume of all liquids in Liters in the atmosphere -WattsReachingContact 164 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 222 Weight of Rocket in Newtons (Including fuel and cargo). Weight is effected by local body gravity. -WorkingGasEfficiency 105 The Working Gas Efficiency reported by the machine, as a float between 0 and 1 diff --git a/ic10emu/data/reagentmodes.txt b/ic10emu/data/reagentmodes.txt deleted file mode 100644 index c727f52..0000000 --- a/ic10emu/data/reagentmodes.txt +++ /dev/null @@ -1,4 +0,0 @@ -Contents 0 The amount of this Reagent present in the machine -Recipe 2 The amount of this Reagent required by the Machine's current recipe -Required 1 The amount of this Reagent needed to complete the Machine's current recipe after subtracting the amount currently present -TotalContents 3 diff --git a/ic10emu/data/slotlogictypes.txt b/ic10emu/data/slotlogictypes.txt deleted file mode 100644 index abd2d70..0000000 --- a/ic10emu/data/slotlogictypes.txt +++ /dev/null @@ -1,27 +0,0 @@ -Charge 10 returns current energy charge the slot occupant is holding -ChargeRatio 11 returns current energy charge the slot occupant is holding as a ratio between 0 and 1 of its maximum -Class 12 returns integer representing the class of object -Damage 4 returns the damage state of the item in the slot -Efficiency 5 returns the growth efficiency of the plant in the slot -FilterType 25 -Growth 7 returns the current growth state of the plant in the slot -Health 6 returns the health of the plant in the slot -LineNumber 19 -Lock 23 -Mature 16 returns 1 if the plant in this slot is mature, 0 when it isn't -MaxQuantity 15 returns the max stack size of the item in the slot -None 0 No description -OccupantHash 2 returns the has of the current occupant, the unique identifier of the thing -Occupied 1 returns 0 when slot is not occupied, 1 when it is -On 22 -Open 21 -PrefabHash 17 returns the hash of the structure in the slot -Pressure 8 returns pressure of the slot occupants internal atmosphere -PressureAir 14 returns pressure in the air tank of the jetpack in this slot -PressureWaste 13 returns pressure in the waste tank of the jetpack in this slot -Quantity 3 returns the current quantity, such as stack size, of the item in the slot -ReferenceId 26 -Seeding 18 Whether a plant is seeding (ready to harvest seeds from). Returns 1 if seeding or 0 if not. -SortingClass 24 -Temperature 9 returns temperature of the slot occupants internal atmosphere -Volume 20 diff --git a/ic10emu/data/stationpedia.txt b/ic10emu/data/stationpedia.txt deleted file mode 100644 index 7c65011..0000000 --- a/ic10emu/data/stationpedia.txt +++ /dev/null @@ -1,1745 +0,0 @@ --1330388999 AccessCardBlack Access Card (Black) --1411327657 AccessCardBlue Access Card (Blue) -1412428165 AccessCardBrown Access Card (Brown) --1339479035 AccessCardGray Access Card (Gray) --374567952 AccessCardGreen Access Card (Green) -337035771 AccessCardKhaki Access Card (Khaki) --332896929 AccessCardOrange Access Card (Orange) -431317557 AccessCardPink Access Card (Pink) -459843265 AccessCardPurple Access Card (Purple) --1713748313 AccessCardRed Access Card (Red) -2079959157 AccessCardWhite Access Card (White) -568932536 AccessCardYellow Access Card (Yellow) -1565803737 Alcohol Alcohol --1686269127 ApplianceBobbleHeadBasicSuit Bobble Head (Basic Suit) --38993607 ApplianceBobbleHeadHardSuit Bobble Head (Hard Suit) -1365789392 ApplianceChemistryStation Chemistry Station --1683849799 ApplianceDeskLampLeft Appliance Desk Lamp Left -1174360780 ApplianceDeskLampRight Appliance Desk Lamp Right --1136173965 ApplianceMicrowave Microwave --749191906 AppliancePackagingMachine Basic Packaging Machine --1339716113 AppliancePaintMixer Paint Mixer --1303038067 AppliancePlantGeneticAnalyzer Plant Genetic Analyzer --1094868323 AppliancePlantGeneticSplicer Plant Genetic Splicer -871432335 AppliancePlantGeneticStabilizer Plant Genetic Stabilizer -1260918085 ApplianceReagentProcessor Reagent Processor -142831994 ApplianceSeedTray Appliance Seed Tray -1853941363 ApplianceTabletDock Tablet Dock --1493155787 Astroloy Astroloy -221058307 AutolathePrinterMod Autolathe Printer Mod --462415758 Battery_Wireless_cell Battery Wireless Cell --41519077 Battery_Wireless_cell_Big Battery Wireless Cell (Big) -925270362 Biomass Biomass -724717025 BodyPartAstronautFemaleArmL Body Part Astronaut Female Arm --784502654 BodyPartAstronautFemaleArmR Body Part Astronaut Female Arm R --699183000 BodyPartAstronautFemaleHead Body Part Astronaut Female Head -987678787 BodyPartAstronautFemaleLegL Body Part Astronaut Female Leg L --1059982048 BodyPartAstronautFemaleLegR Body Part Astronaut Female Leg R --1644287450 BodyPartAstronautFemaleTorso Body Part Astronaut Female Torso --2049263135 BodyPartAstronautMaleArmL Body Part Astronaut Male Arm L -2144699522 BodyPartAstronautMaleArmR Body Part Astronaut Male Arm R -2025563240 BodyPartAstronautMaleHead Body Part Astronaut Male Head --1808384957 BodyPartAstronautMaleLegL Body Part Astronaut Male Leg) -1849229600 BodyPartAstronautMaleLegR Body Part Astronaut Male Leg R --331537198 BodyPartAstronautTorso Body Part Astronaut Torso -1488426674 BodyPartChickBody Body Part Chick Body -619473820 BodyPartChickHead Body Part Chick Head --933104713 BodyPartChickLegL Body Part Chick Leg) -846122708 BodyPartChickLegR Body Part Chick Leg R --14145187 BodyPartChickTail Body Part Chick Tail --589137369 BodyPartChickWingL Body Part Chick Wing) -653084484 BodyPartChickWingR Body Part Chick Wing R --1241112004 BodyPartChickenBrownBody Body Part Chicken Brown Body --899817710 BodyPartChickenBrownHead Body Part Chicken Brown Head -651183929 BodyPartChickenBrownLegL Body Part Chicken Brown Leg) --589333926 BodyPartChickenBrownLegR Body Part Chicken Brown Leg R -295280083 BodyPartChickenBrownTail Body Part Chicken Brown Tail --703830604 BodyPartChickenBrownWingL Body Part Chicken Brown Wing) -738416855 BodyPartChickenBrownWingR Body Part Chicken Brown Wing R -801013348 BodyPartChickenWhiteBody Body Part Chicken White Body -1407550282 BodyPartChickenWhiteHead Body Part Chicken White Head --1083696287 BodyPartChickenWhiteLegL Body Part Chicken White Leg) -1164387842 BodyPartChickenWhiteLegR Body Part Chicken White Leg R --2011053685 BodyPartChickenWhiteTail Body Part Chicken White Tail --1289419730 BodyPartChickenWhiteWingL Body Part Chicken White Wing) -1227503949 BodyPartChickenWhiteWingR Body Part Chicken White Wing R --815465419 BodyPartGraylienArmL Body Part Graylien Arm L -896254294 BodyPartGraylienArmR Body Part Graylien Arm R -1314790546 BodyPartGraylienBody Body Part Graylien Body -839246268 BodyPartGraylienHead Body Part Graylien Head --561481321 BodyPartGraylienLegL Body Part Graylien Leg L -612844788 BodyPartGraylienLegR Body Part Graylien Leg R --1579496195 BodyPartGraylienPelvis Body Part Graylien Pelvis -54192919 BodyPartRoosterBlackBody Body Part Rooster Black Body -2137069113 BodyPartRoosterBlackHead Body Part Rooster Black Head --1813213678 BodyPartRoosterBlackLegL Body Part Rooster Black Leg) -1776530289 BodyPartRoosterBlackLegR Body Part Rooster Black Leg R --1532668680 BodyPartRoosterBlackTail Body Part Rooster Black Tail -2047189053 BodyPartRoosterBlackWingL Body Part Rooster Black Wing) --2146788002 BodyPartRoosterBlackWingR Body Part Rooster Black Wing R -1788050606 BodyPartRoosterBrownBody Body Part Rooster Brown Body -382239104 BodyPartRoosterBrownHead Body Part Rooster Brown Head --96134741 BodyPartRoosterBrownLegL Body Part Rooster Brown Leg) -4859080 BodyPartRoosterBrownLegR Body Part Rooster Brown Leg R --854801599 BodyPartRoosterBrownTail Body Part Rooster Brown Tail --925826430 BodyPartRoosterBrownWingL Body Part Rooster Brown Wing) -853426145 BodyPartRoosterBrownWingR Body Part Rooster Brown Wing R -1582746610 Carbon Carbon --1976947556 CardboardBox Cardboard Box --1634532552 CartridgeAccessController Cartridge (Access Controller) --1550278665 CartridgeAtmosAnalyser Atmos Analyzer --932136011 CartridgeConfiguration Configuration --1462180176 CartridgeElectronicReader eReader --1957063345 CartridgeGPS GPS -872720793 CartridgeGuide Guide --1116110181 CartridgeMedicalAnalyser Medical Analyzer -1606989119 CartridgeNetworkAnalyser Network Analyzer --1768732546 CartridgeOreScanner Ore Scanner -1738236580 CartridgeOreScannerColor Ore Scanner (Color) -1101328282 CartridgePlantAnalyser Cartridge Plant Analyser -81488783 CartridgeTracker Tracker -294335127 Character Character -1633663176 CircuitboardAdvAirlockControl Advanced Airlock -725140769 CircuitboardAdvancedAirlockControl Advanced Airlock -1618019559 CircuitboardAirControl Air Control -912176135 CircuitboardAirlockControl Airlock --412104504 CircuitboardCameraDisplay Camera Display -855694771 CircuitboardDoorControl Door Control --82343730 CircuitboardGasDisplay Gas Display -1344368806 CircuitboardGraphDisplay Graph Display -1633074601 CircuitboardHashDisplay Hash Display --1134148135 CircuitboardModeControl Mode Control --1923778429 CircuitboardPowerControl Power Control --2044446819 CircuitboardShipDisplay Ship Display -2020180320 CircuitboardSolarControl Solar Control -1702246124 Cobalt Cobalt -557517660 ColorBlue Blue Coloring -2129955242 ColorGreen Green Coloring -1728153015 ColorOrange Orange Coloring -667001276 ColorRed Red Coloring --1430202288 ColorYellow Yellow Coloring -917709227 CompositeFloorGrating1 Composite Floor Grating (Type 1) --1346736111 CompositeFloorGrating2 Composite Floor Grating (Type 2) -1228794916 CompositeRollCover Composite Roll Cover --1399197262 CompositeWallPanelling1 Composite Wall Panelling --786918288 CompositeWallPanelling10 Composite Wall Panelling 10 --1507875610 CompositeWallPanelling11 Composite Wall Panelling 11 -1058469212 CompositeWallPanelling12 Composite Wall Panelling 12 -1209124298 CompositeWallPanelling13 Composite Wall Panelling 13 --696954775 CompositeWallPanelling14 Composite Wall Panelling 14 --1586339585 CompositeWallPanelling15 Composite Wall Panelling 15 -947597637 CompositeWallPanelling16 Composite Wall Panelling 16 -1333526995 CompositeWallPanelling17 Composite Wall Panelling 17 --540861374 CompositeWallPanelling18 Composite Wall Panelling 18 --1463538476 CompositeWallPanelling19 Composite Wall Panelling 19 -898670600 CompositeWallPanelling2 Composite Wall Panelling 2 --97138765 CompositeWallPanelling20 Composite Wall Panelling 20 --1926039771 CompositeWallPanelling21 Composite Wall Panelling 21 -1117229214 CompositeWallPanelling3 Composite Wall Panelling 3 --588053187 CompositeWallPanelling4 Composite Wall Panelling 4 --1410058837 CompositeWallPanelling5 Composite Wall Panelling 5 -855467025 CompositeWallPanelling6 Composite Wall Panelling 6 -1174033543 CompositeWallPanelling7 Composite Wall Panelling 7 --716879594 CompositeWallPanelling8 Composite Wall Panelling 8 --1572701824 CompositeWallPanelling9 Composite Wall Panelling 9 -1731241392 Constantan Constantan --1172078909 Copper Copper -1550709753 Corn Corn -1259154447 Corner1 Corner -8709219 CrateMkII Crate Mk II --1865671034 Cube Cube -1531087544 DecayedFood Decayed Food --1844430312 DeviceLfoVolume Low frequency oscillator -1762696475 DeviceStepUnit Device Step Unit -519913639 DynamicAirConditioner Portable Air Conditioner -1941079206 DynamicCrate Dynamic Crate -1404648592 DynamicCrateBuildingSupplies Crate (Building Supplies) --746362430 DynamicCrateCableSupplies Crate (Cabling Supplies) -166707648 DynamicCrateConveyorSupplies Crate (Conveyor Supplies) --282237045 DynamicCratePipeSupplies Crate (Pipe Supplies) --2085885850 DynamicGPR --1713611165 DynamicGasCanisterAir Portable Gas Tank (Air) --322413931 DynamicGasCanisterCarbonDioxide Portable Gas Tank (CO2) --1741267161 DynamicGasCanisterEmpty Portable Gas Tank --817051527 DynamicGasCanisterFuel Portable Gas Tank (Fuel) -121951301 DynamicGasCanisterNitrogen Portable Gas Tank (Nitrogen) -30727200 DynamicGasCanisterNitrousOxide Portable Gas Tank (Nitrous Oxide) -1360925836 DynamicGasCanisterOxygen Portable Gas Tank (Oxygen) -396065382 DynamicGasCanisterPollutants Portable Gas Tank (Pollutants) --8883951 DynamicGasCanisterRocketFuel Dynamic Gas Canister Rocket Fuel -108086870 DynamicGasCanisterVolatiles Portable Gas Tank (Volatiles) -197293625 DynamicGasCanisterWater Portable Liquid Tank (Water) --386375420 DynamicGasTankAdvanced Gas Tank Mk II --1264455519 DynamicGasTankAdvancedOxygen Portable Gas Tank Mk II (Oxygen) -1637373684 DynamicGasTankAdvancedWater Portable Liquid Tank Mk II (Water) --82087220 DynamicGenerator Portable Generator -587726607 DynamicHydroponics Portable Hydroponics --21970188 DynamicLight Portable Light --1199074750 DynamicLightNetworkTest Dynamic Light Network Test --1939209112 DynamicLiquidCanisterEmpty Portable Liquid Tank -2130739600 DynamicMKIILiquidCanisterEmpty Portable Liquid Tank Mk II --319510386 DynamicMKIILiquidCanisterWater Portable Liquid Tank Mk II (Water) --1842190124 DynamicPortal Dynamic Portal -755048589 DynamicScrubber Portable Air Scrubber -106953348 DynamicSkeleton Skeleton -1275592521 EffectSplatEgg Effect Splat Egg -1887084450 Egg Egg --311170652 ElectronicPrinterMod Electronic Printer Mod -478264742 Electrum Electrum --110788403 ElevatorCarrage Elevator --1263359062 EntityAlien Entity Alien -1730165908 EntityChick Entity Chick -334097180 EntityChickenBrown Entity Chicken Brown -1010807532 EntityChickenWhite Entity Chicken White --1536144399 EntityGraylien Entity Graylien -966959649 EntityRoosterBlack Entity Rooster Black --583103395 EntityRoosterBrown Entity Rooster Brown --865687737 Fenoxitone Fenoxitone -1517856652 Fertilizer Fertilizer --86315541 FireArmSMG Fire Arm SMG -1845441951 Flag_ODA_10m Flag (ODA 10m) -1159126354 Flag_ODA_4m Flag (ODA 4m) -1998634960 Flag_ODA_6m Flag (ODA 6m) --375156130 Flag_ODA_8m Flag (ODA 8m) -118685786 FlareGun Flare Gun --811006991 Flour Flour -1122161317 GasRocketEngineBasic Gas Rocket Engine Basic -1397815367 GasTankAir Gas Tank (Air) --409226641 Gold Gold -1840108251 H2Combustor H2 Combustor -247238062 Handgun Handgun -1254383185 HandgunMagazine Handgun Magazine -2019732679 Hastelloy Hastelloy --857713709 HumanSkull Human Skull -2003628602 Hydrocarbon Hydrocarbon --73796547 ImGuiCircuitboardAirlockControl Airlock (Experimental) --586072179 Inconel Inconel --1905065374 InsulatedLiquidPipeCorner Insulated Liquid Pipe Corner -1778779251 InsulatedLiquidPipeCrossJunction Insulated Liquid Pipe Cross Junction --1531664359 InsulatedLiquidPipeCrossJunction3 Insulated Liquid Pipe Cross Junction3 -986725818 InsulatedLiquidPipeCrossJunction4 Insulated Liquid Pipe Cross Junction4 -1305939244 InsulatedLiquidPipeCrossJunction5 Insulated Liquid Pipe Cross Junction5 --723624810 InsulatedLiquidPipeCrossJunction6 Insulated Liquid Pipe Cross Junction6 -415264035 InsulatedLiquidPipeJunction Insulated Liquid Pipe Junction --916909854 InsulatedLiquidPipeStraight Insulated Liquid Pipe Straight --626453759 Invar Invar --666742878 Iron Iron --842048328 ItemActiveVent Kit (Active Vent) -1871048978 ItemAdhesiveInsulation Adhesive Insulation -1722785341 ItemAdvancedTablet Advanced Tablet -176446172 ItemAlienMushroom Alien Mushroom --9559091 ItemAmmoBox Ammo Box -201215010 ItemAngleGrinder Angle Grinder -1385062886 ItemArcWelder Arc Welder -1757673317 ItemAreaPowerControl Kit (Power Controller) -412924554 ItemAstroloyIngot Ingot (Astroloy) --1662476145 ItemAstroloySheets Astroloy Sheets -789015045 ItemAuthoringTool Authoring Tool --1731627004 ItemAuthoringToolRocketNetwork --1262580790 ItemBasketBall Basket Ball -700133157 ItemBatteryCell Battery Cell (Small) --459827268 ItemBatteryCellLarge Battery Cell (Large) -544617306 ItemBatteryCellNuclear Battery Cell (Nuclear) --1866880307 ItemBatteryCharger Kit (Battery Charger) -1008295833 ItemBatteryChargerSmall Battery Charger Small --869869491 ItemBeacon Tracking Beacon --831480639 ItemBiomass Biomass -954141841 ItemBook Book -893514943 ItemBreadLoaf Bread Loaf --1792787349 ItemCableAnalyser Kit (Cable Analyzer) --466050668 ItemCableCoil Cable Coil -2060134443 ItemCableCoilHeavy Cable Coil (Heavy) -195442047 ItemCableFuse Kit (Cable Fuses) --2104175091 ItemCannedCondensedMilk Canned Condensed Milk --999714082 ItemCannedEdamame Canned Edamame --1344601965 ItemCannedMushroom Canned Mushroom -1161510063 ItemCannedPowderedEggs Canned Powdered Eggs --1185552595 ItemCannedRicePudding Canned Rice Pudding -791746840 ItemCerealBar Cereal Bar -252561409 ItemCharcoal Charcoal --772542081 ItemChemLightBlue Chem Light (Blue) --597479390 ItemChemLightGreen Chem Light (Green) --525810132 ItemChemLightRed Chem Light (Red) -1312166823 ItemChemLightWhite Chem Light (White) -1224819963 ItemChemLightYellow Chem Light (Yellow) --869697826 ItemClothingBagOveralls_Aus Overalls (Australia) -611886665 ItemClothingBagOveralls_Brazil Overalls (Brazil) -1265354377 ItemClothingBagOveralls_Canada Overalls (Canada) --271773907 ItemClothingBagOveralls_China Overalls (China) -1969872429 ItemClothingBagOveralls_EU Overalls (EU) -670416861 ItemClothingBagOveralls_France Overalls (France) -1858014029 ItemClothingBagOveralls_Germany Overalls (Germany) --1694123145 ItemClothingBagOveralls_Japan Overalls (Japan) --1309808369 ItemClothingBagOveralls_Korea Overalls (Korea) -102898295 ItemClothingBagOveralls_NZ Overalls (NZ) -520003812 ItemClothingBagOveralls_Russia Overalls (Russia) --265868019 ItemClothingBagOveralls_SouthAfrica Overalls (South Africa) --979046113 ItemClothingBagOveralls_UK Overalls (UK) --691508919 ItemClothingBagOveralls_US Overalls (US) --198158955 ItemClothingBagOveralls_Ukraine Overalls (Ukraine) -1724793494 ItemCoalOre Ore (Coal) --1778339150 ItemCobaltIngot Ingot (Cobalt) --983091249 ItemCobaltOre Ore (Cobalt) -1800622698 ItemCoffeeMug Coffee Mug --954489473 ItemCompositeFloorGrating Composite Floor Grating -1058547521 ItemConstantanIngot Ingot (Constantan) -1715917521 ItemCookedCondensedMilk Condensed Milk -1344773148 ItemCookedCorn Cooked Corn --1076892658 ItemCookedMushroom Cooked Mushroom --1712264413 ItemCookedPowderedEggs Powdered Eggs -1849281546 ItemCookedPumpkin Cooked Pumpkin -2013539020 ItemCookedRice Cooked Rice -1353449022 ItemCookedSoybean Cooked Soybean --709086714 ItemCookedTomato Cooked Tomato --404336834 ItemCopperIngot Ingot (Copper) --707307845 ItemCopperOre Ore (Copper) -258339687 ItemCorn Corn -545034114 ItemCornSoup Corn Soup --1756772618 ItemCreditCard Credit Card -215486157 ItemCropHay Hay -856108234 ItemCrowbar Crowbar -1005843700 ItemDataDisk Data Disk --1958662275 ItemDecorFern Decorative Fern -902565329 ItemDirtCanister Dirt Canister -789388065 ItemDirtCannister Dirt Cannister --1234745580 ItemDirtyOre Dirty Ore --2124435700 ItemDisposableBatteryCharger Disposable Battery Charger -2009673399 ItemDrill Hand Drill --1943134693 ItemDuctTape Duct Tape -1072914031 ItemDynamicAirCon Kit (Portable Air Conditioner) --971920158 ItemDynamicScrubber Kit (Portable Scrubber) --1202955052 ItemDynamite Dynamite --873909936 ItemEgg Egg -682727744 ItemEggBottom Egg Bottom --524289310 ItemEggCarton Egg Carton -1436756543 ItemEggTop Egg Top -731250882 ItemElectronicParts Electronic Parts -502280180 ItemElectrumIngot Ingot (Electrum) --351438780 ItemEmergencyAngleGrinder Emergency Angle Grinder --1056029600 ItemEmergencyArcWelder Emergency Arc Welder -976699731 ItemEmergencyCrowbar Emergency Crowbar --2052458905 ItemEmergencyDrill Emergency Drill -1791306431 ItemEmergencyEvaSuit Emergency Eva Suit -350596352 ItemEmergencyHelmet Emergency Helmet --1061510408 ItemEmergencyPickaxe Emergency Pickaxe -266099983 ItemEmergencyScrewdriver Emergency Screwdriver -205916793 ItemEmergencySpaceHelmet Emergency Space Helmet -1661941301 ItemEmergencyToolBelt Emergency Tool Belt -2102803952 ItemEmergencyWireCutters Emergency Wire Cutters -162553030 ItemEmergencyWrench Emergency Wrench -1013818348 ItemEmptyCan Empty Can -1677018918 ItemEvaSuit Eva Suit -235361649 ItemExplosive Remote Explosive --233482317 ItemExplosiveBasic Explosive Basic -892110467 ItemFern Fern --383972371 ItemFertilizedEgg Egg -266654416 ItemFilterFern Darga Fern -1578288856 ItemFireExtinguisher Fire Extinguisher -2011191088 ItemFlagSmall Kit (Small Flag) --2107840748 ItemFlashingLight Kit (Flashing Light) --838472102 ItemFlashlight Flashlight --665995854 ItemFlour Flour --1573623434 ItemFlowerBlue Flower (Blue) --1513337058 ItemFlowerGreen Flower (Green) --1411986716 ItemFlowerOrange Flower (Orange) --81376085 ItemFlowerRed Flower (Red) -1712822019 ItemFlowerYellow Flower (Yellow) --57608687 ItemFrenchFries Canned French Fries -1371786091 ItemFries French Fries --767685874 ItemGasCanisterCarbonDioxide Canister (CO2) -42280099 ItemGasCanisterEmpty Canister --1014695176 ItemGasCanisterFuel Canister (Fuel) -2145068424 ItemGasCanisterNitrogen Canister (Nitrogen) --1712153401 ItemGasCanisterNitrousOxide Gas Canister (Sleeping) --1152261938 ItemGasCanisterOxygen Canister (Oxygen) --1552586384 ItemGasCanisterPollutants Canister (Pollutants) --668314371 ItemGasCanisterSmart Gas Canister (Smart) --472094806 ItemGasCanisterVolatiles Canister (Volatiles) --1854861891 ItemGasCanisterWater Liquid Canister (Water) -1635000764 ItemGasFilterCarbonDioxide Filter (Carbon Dioxide) --185568964 ItemGasFilterCarbonDioxideInfinite Catalytic Filter (Carbon Dioxide) -1876847024 ItemGasFilterCarbonDioxideL Heavy Filter (Carbon Dioxide) -416897318 ItemGasFilterCarbonDioxideM Medium Filter (Carbon Dioxide) -632853248 ItemGasFilterNitrogen Filter (Nitrogen) -152751131 ItemGasFilterNitrogenInfinite Catalytic Filter (Nitrogen) --1387439451 ItemGasFilterNitrogenL Heavy Filter (Nitrogen) --632657357 ItemGasFilterNitrogenM Medium Filter (Nitrogen) --1247674305 ItemGasFilterNitrousOxide Filter (Nitrous Oxide) --123934842 ItemGasFilterNitrousOxideInfinite Catalytic Filter (Nitrous Oxide) -465267979 ItemGasFilterNitrousOxideL Heavy Filter (Nitrous Oxide) -1824284061 ItemGasFilterNitrousOxideM Medium Filter (Nitrous Oxide) --721824748 ItemGasFilterOxygen Filter (Oxygen) --1055451111 ItemGasFilterOxygenInfinite Catalytic Filter (Oxygen) --1217998945 ItemGasFilterOxygenL Heavy Filter (Oxygen) --1067319543 ItemGasFilterOxygenM Medium Filter (Oxygen) -1915566057 ItemGasFilterPollutants Filter (Pollutant) --503738105 ItemGasFilterPollutantsInfinite Catalytic Filter (Pollutants) -1959564765 ItemGasFilterPollutantsL Heavy Filter (Pollutants) -63677771 ItemGasFilterPollutantsM Medium Filter (Pollutants) -15011598 ItemGasFilterVolatiles Filter (Volatiles) --1916176068 ItemGasFilterVolatilesInfinite Catalytic Filter (Volatiles) -1255156286 ItemGasFilterVolatilesL Heavy Filter (Volatiles) -1037507240 ItemGasFilterVolatilesM Medium Filter (Volatiles) --1993197973 ItemGasFilterWater Filter (Water) --1678456554 ItemGasFilterWaterInfinite Catalytic Filter (Water) -2004969680 ItemGasFilterWaterL Heavy Filter (Water) -8804422 ItemGasFilterWaterM Medium Filter (Water) -1717593480 ItemGasSensor Kit (Gas Sensor) --2113012215 ItemGasTankStorage Kit (Canister Storage) -1588896491 ItemGlassSheets Glass Sheets --1068925231 ItemGlasses Glasses -226410516 ItemGoldIngot Ingot (Gold) --1348105509 ItemGoldOre Ore (Gold) -1544275894 ItemGrenade Hand Grenade -470636008 ItemHEMDroidRepairKit HEMDroid Repair Kit -745978059 ItemHandSanitizer Hand Sanitizer -374891127 ItemHardBackpack Hardsuit Backpack --412551656 ItemHardJetpack Hardsuit Jetpack -900366130 ItemHardMiningBackPack Hard Mining Backpack --1758310454 ItemHardSuit Hardsuit --84573099 ItemHardsuitHelmet Hardsuit Helmet -1579842814 ItemHastelloyIngot Ingot (Hastelloy) -299189339 ItemHat Hat --1075983932 ItemHealPill Heal Pill -998653377 ItemHighVolumeGasCanisterEmpty High Volume Gas Canister --1117581553 ItemHorticultureBelt Horticulture Belt --1193543727 ItemHydroponicTray Kit (Hydroponic Tray) --1555582482 ItemIcarusHelmet Icarus Helmet --2112405954 ItemIcarusSuit Icarus Suit -1217489948 ItemIce Ice (Water) -890106742 ItemIgniter Kit (Igniter) --787796599 ItemInconelIngot Ingot (Inconel) --299044195 ItemInsulatedTankConnector Insulated (Tank Connector) --122188311 ItemInsulatedTankConnectorLiquid Kit (Insulated Tank Connector Liquid) -897176943 ItemInsulation Insulation --744098481 ItemIntegratedCircuit10 Integrated Circuit (IC10) --297990285 ItemInvarIngot Ingot (Invar) -1225836666 ItemIronFrames Iron Frames --1301215609 ItemIronIngot Ingot (Iron) -1758427767 ItemIronOre Ore (Iron) --487378546 ItemIronSheets Iron Sheets -1969189000 ItemJetpackBasic Jetpack Basic -496830914 ItemKitAIMeE Kit (AIMeE) -513258369 ItemKitAccessBridge Kit (Access Bridge) --1431998347 ItemKitAdvancedComposter Kit (Advanced Composter) --616758353 ItemKitAdvancedFurnace Kit (Advanced Furnace) --598545233 ItemKitAdvancedPackagingMachine Kit (Advanced Packaging Machine) -964043875 ItemKitAirlock Kit (Airlock) -682546947 ItemKitAirlockGate Kit (Hangar Door) --98995857 ItemKitArcFurnace Kit (Arc Furnace) -1222286371 ItemKitAtmospherics Kit (Atmospherics) --1985198635 ItemKitAutoMiner Kit (Auto Miner) -1668815415 ItemKitAutoMinerSmall Kit (Autominer Small) --1753893214 ItemKitAutolathe Kit (Autolathe) --1931958659 ItemKitAutomatedOven Kit (Automated Oven) -148305004 ItemKitBasket Kit (Basket) -1406656973 ItemKitBattery Kit (Battery) --21225041 ItemKitBatteryLarge Kit (Battery Large) -249073136 ItemKitBeacon Kit (Beacon) --1241256797 ItemKitBeds Kit (Beds) --1755116240 ItemKitBlastDoor Kit (Blast Door) -578182956 ItemKitCentrifuge Kit (Centrifuge) --1394008073 ItemKitChairs Kit (Chairs) -1025254665 ItemKitChute Kit (Basic Chutes) --876560854 ItemKitChuteUmbilical Kit (Chute Umbilical) --1470820996 ItemKitCompositeCladding Kit (Cladding) -1182412869 ItemKitCompositeFloorGrating Kit (Floor Grating) -1990225489 ItemKitComputer Kit (Computer) --1241851179 ItemKitConsole Kit (Consoles) --581253863 ItemKitConveyor Kit (Conveyors) -429365598 ItemKitCrate Kit (Crate) --1585956426 ItemKitCrateMkII Kit (Crate Mk II) --551612946 ItemKitCrateMount Kit (Container Mount) --545234195 ItemKitCryoTube Kit (Cryo Tube) --1340655007 ItemKitCube Kit (Cube) --1825913764 ItemKitDebug Kit (Debug) --1935075707 ItemKitDeepMiner Kit (Deep Miner) -77421200 ItemKitDockingPort Kit (Docking Port) -168615924 ItemKitDoor Kit (Door) --1743663875 ItemKitDrinkingFountain Kit (Drinking Fountain) -1584075627 ItemKitDuct Kit (Duct) --1061945368 ItemKitDynamicCanister Kit (Portable Gas Tank) -1533501495 ItemKitDynamicGasTankAdvanced Kit (Portable Gas Tank Mk II) --732720413 ItemKitDynamicGenerator Kit (Portable Generator) --1861154222 ItemKitDynamicHydroponics Kit (Portable Hydroponics) -375541286 ItemKitDynamicLiquidCanister Kit (Portable Liquid Tank) --638019974 ItemKitDynamicMKIILiquidCanister Kit (Portable Liquid Tank Mk II) -1603046970 ItemKitElectricUmbilical Kit (Power Umbilical) --1181922382 ItemKitElectronicsPrinter Kit (Electronics Printer) --945806652 ItemKitElevator Kit (Elevator) --1036468582 ItemKitEngine Kit (Engines) -755302726 ItemKitEngineLarge Kit (Engine Large) -1969312177 ItemKitEngineMedium Kit (Engine Medium) -19645163 ItemKitEngineSmall Kit (Engine Small) -1587787610 ItemKitEvaporationChamber Kit (Phase Change Device) -750443106 ItemKitFabrication Kit (Fabrication) -1500664489 ItemKitFabricator Kit (Fabricator) -1701764190 ItemKitFlagODA Kit (ODA Flag) --1168199498 ItemKitFridgeBig Kit (Fridge Large) -1661226524 ItemKitFridgeSmall Kit (Fridge Small) --806743925 ItemKitFurnace Kit (Furnace) -1162905029 ItemKitFurniture Kit (Furniture) --366262681 ItemKitFuselage Kit (Fuselage) -1438837103 ItemKitFuselageTypeA Kit (Fuselage Type A) --859064107 ItemKitFuselageTypeB Kit (Fuselage Type B) --1144223677 ItemKitFuselageTypeC Kit (Fuselage Type C) -631774688 ItemKitFuselageTypeD Kit (Fuselage Type D) -377745425 ItemKitGasGenerator Kit (Gas Fuel Generator) --1867280568 ItemKitGasUmbilical Kit (Gas Umbilical) --375184378 ItemKitGenerator Kit (Generator) -206848766 ItemKitGovernedGasRocketEngine Kit (Pumped Gas Rocket Engine) -1354070388 ItemKitGovernedLiquidRocketEngine Kit (Pumped Liquid Rocket Engine) --2140672772 ItemKitGroundTelescope Kit (Telescope) -341030083 ItemKitGrowLight Kit (Grow Light) -180482893 ItemKitGyroscope Kit (Gyroscope) --1022693454 ItemKitHarvie Kit (Harvie) --1710540039 ItemKitHeatExchanger Kit Heat Exchanger -844391171 ItemKitHorizontalAutoMiner Kit (OGRE) --2098556089 ItemKitHydraulicPipeBender Kit (Hydraulic Pipe Bender) --927931558 ItemKitHydroponicAutomated Kit (Automated Hydroponics) -2057179799 ItemKitHydroponicStation Kit (Hydroponic Station) -288111533 ItemKitIceCrusher Kit (Ice Crusher) -2067655311 ItemKitInsulatedLiquidPipe Kit (Insulated Liquid Pipe) -452636699 ItemKitInsulatedPipe Kit (Insulated Pipe) --27284803 ItemKitInsulatedPipeUtility Kit (Insulated Pipe Utility Gas) --1831558953 ItemKitInsulatedPipeUtilityLiquid Kit (Insulated Pipe Utility Liquid) --1708400347 ItemKitInsulatedWaterPipe Insulated Water Pipe Kit -1935945891 ItemKitInteriorDoors Kit (Interior Doors) -489494578 ItemKitLadder Kit (Ladder) --1793485995 ItemKitLandingPad Kit (Landing Pad) -1817007843 ItemKitLandingPadAtmos Kit (Landing Pad Atmospherics) -293581318 ItemKitLandingPadBasic Kit (Landing Pad Basic) --1267511065 ItemKitLandingPadWaypoint Kit (Landing Pad Runway) -450164077 ItemKitLargeDirectHeatExchanger Kit (Large Direct Heat Exchanger) -847430620 ItemKitLargeExtendableRadiator Kit (Large Extendable Radiator) --2039971217 ItemKitLargeSatelliteDish Kit (Large Satellite Dish) --1854167549 ItemKitLaunchMount Kit (Launch Mount) --1791423603 ItemKitLaunchPad Kit (Launch Pad) --174523552 ItemKitLaunchTower Kit (Rocket Launch Tower) -1951126161 ItemKitLiquidRegulator Kit (Liquid Regulator) --799849305 ItemKitLiquidTank Kit (Liquid Tank) -617773453 ItemKitLiquidTankInsulated Kit (Insulated Liquid Tank) --1805020897 ItemKitLiquidTurboVolumePump Kit (Turbo Volume Pump - Liquid) -1571996765 ItemKitLiquidUmbilical Kit (Liquid Umbilical) -882301399 ItemKitLocker Kit (Locker) -724972630 ItemKitLogic Kit (Logic Unit) -1512322581 ItemKitLogicCircuit Kit (IC Housing) -1997293610 ItemKitLogicInputOutput Kit (Logic I/O) --2098214189 ItemKitLogicMemory Kit (Logic Memory) -220644373 ItemKitLogicProcessor Kit (Logic Processor) -124499454 ItemKitLogicSwitch Kit (Logic Switch) -1005397063 ItemKitLogicTransmitter Kit (Logic Transmitter) -1709456101 ItemKitLowVolumeLiquidPipes Kit (Low Volume Liquid Pipe) --94545890 ItemKitLowVolumePipes Kit (Low Volume Pipe) --344968335 ItemKitMotherShipCore Kit (Mothership) --2038889137 ItemKitMusicMachines Kit (Music Machines) -313966123 ItemKitOrganicsPrinter Kit (Organics Printer) --559068873 ItemKitPassiveLargeRadiator Kit (Medium Radiator) --1752768283 ItemKitPassiveLargeRadiatorGas Kit (Medium Radiator) -1453961898 ItemKitPassiveLargeRadiatorLiquid Kit (Medium Radiator Liquid) -1546379588 ItemKitPassiveVent Kit (Passive Vent) -636112787 ItemKitPassthroughHeatExchanger Kit (CounterFlow Heat Exchanger) --2062364768 ItemKitPictureFrame Kit Picture Frame --1619793705 ItemKitPipe Kit (Pipe) --1166461357 ItemKitPipeLiquid Kit (Liquid Pipe) --827125300 ItemKitPipeOrgan Kit (Pipe Organ) -920411066 ItemKitPipeRadiator Kit (Pipe Radiator) --1697302609 ItemKitPipeRadiatorLiquid Kit (Pipe Radiator Liquid) -1934508338 ItemKitPipeUtility Kit (Pipe Utility Gas) -595478589 ItemKitPipeUtilityLiquid Kit (Pipe Utility Liquid) -2146152113 ItemKitPipeValve Kit (Pipe Valve) -119096484 ItemKitPlanter Kit (Planter) -1041148999 ItemKitPortablesConnector Kit (Portables Connector) -291368213 ItemKitPowerTransmitter Kit (Power Transmitter) --831211676 ItemKitPowerTransmitterOmni Kit (Power Transmitter Omni) -2015439334 ItemKitPoweredVent Kit (Powered Vent) --121514007 ItemKitPressureFedGasEngine Kit (Pressure Fed Gas Engine) --99091572 ItemKitPressureFedLiquidEngine Kit (Pressure Fed Liquid Engine) -123504691 ItemKitPressurePlate Kit (Trigger Plate) -1921918951 ItemKitPumpedLiquidEngine Kit (Pumped Liquid Engine) -750176282 ItemKitRailing Kit (Railing) -849148192 ItemKitRecycler Kit (Recycler) -1181371795 ItemKitRegulator Kit (Pressure Regulator) -1459985302 ItemKitReinforcedWindows Kit (Reinforced Windows) -724776762 ItemKitResearchMachine Kit Research Machine -1574688481 ItemKitRespawnPointWallMounted Kit (Respawn) -1396305045 ItemKitRocketAvionics Kit (Avionics) --314072139 ItemKitRocketBattery Kit (Rocket Battery) -479850239 ItemKitRocketCargoStorage Kit (Rocket Cargo Storage) --303008602 ItemKitRocketCelestialTracker Kit (Rocket Celestial Tracker) -721251202 ItemKitRocketCircuitHousing Kit (Rocket Circuit Housing) --1256996603 ItemKitRocketDatalink Kit (Rocket Datalink) --1811652578 ItemKitRocketFuelTanks Kit (Rocket Fuel Tanks) --1629347579 ItemKitRocketGasFuelTank Kit (Rocket Gas Fuel Tank) --368220577 ItemKitRocketLaunchPad Kit (Rocket Launch Pad) -2032027950 ItemKitRocketLiquidFuelTank Kit (Rocket Liquid Fuel Tank) --636127860 ItemKitRocketManufactory Kit (Rocket Manufactory) --867969909 ItemKitRocketMiner Kit (Rocket Miner) --1603934523 ItemKitRocketParts Rocket Internal Parts -1753647154 ItemKitRocketScanner Kit (Rocket Scanner) --932335800 ItemKitRocketTransformerSmall Kit (Transformer Small (Rocket)) -1647730352 ItemKitRockets Rocket External Parts -1827215803 ItemKitRoverFrame Kit (Rover Frame) -197243872 ItemKitRoverMKI Kit (Rover Mk I) -323957548 ItemKitSDBHopper Kit (SDB Hopper) -178422810 ItemKitSatelliteDish Kit (Medium Satellite Dish) -578078533 ItemKitSecurityPrinter Kit (Security Printer) --1776897113 ItemKitSensor Kit (Sensors) -735858725 ItemKitShower Kit (Shower) -529996327 ItemKitSign Kit (Sign) -326752036 ItemKitSleeper Kit (Sleeper) --1332682164 ItemKitSmallDirectHeatExchanger Kit (Small Direct Heat Exchanger) -1960952220 ItemKitSmallSatelliteDish Kit (Small Satellite Dish) --1924492105 ItemKitSolarPanel Kit (Solar Panel) -844961456 ItemKitSolarPanelBasic Kit (Solar Panel Basic) --528695432 ItemKitSolarPanelBasicReinforced Kit (Solar Panel Basic Heavy) --364868685 ItemKitSolarPanelReinforced Kit (Solar Panel Heavy) -1293995736 ItemKitSolidGenerator Kit (Solid Generator) -969522478 ItemKitSorter Kit (Sorter) --126038526 ItemKitSpeaker Kit (Speaker) -1013244511 ItemKitStacker Kit (Stacker) -170878959 ItemKitStairs Kit (Stairs) --1868555784 ItemKitStairwell Kit (Stairwell) -2133035682 ItemKitStandardChute Kit (Powered Chutes) --134410934 ItemKitStellarAnchor Kit (Stellar Anchor) --1821571150 ItemKitStirlingEngine Kit (Stirling Engine) --679276969 ItemKitStorage Kit (Storage) --1538229217 ItemKitStructureLaunchPad Kit (Launch Pad) --347156845 ItemKitStructureModularRocketCargo01 Kit (Modular Rocket Cargo) --34763297 ItemKitStructureModularRocketEngine01 Kit (Modular Rocket Engine) --1838947287 ItemKitStructureModularRocketFueltank01 Kit (Modular Rocket Fueltank) -1088892825 ItemKitSuitStorage Kit (Suit Storage) --1361598922 ItemKitTables Kit (Tables) -771439840 ItemKitTank Kit (Tank) -1021053608 ItemKitTankInsulated Kit (Tank Insulated) -529137748 ItemKitToolManufactory Kit (Tool Manufactory) --655661931 ItemKitTorpedoTube Kit (Torpedo Launcher) --453039435 ItemKitTransformer Kit (Transformer Large) -665194284 ItemKitTransformerSmall Kit (Transformer Small) --1590715731 ItemKitTurbineGenerator Kit (Turbine Generator) --1248429712 ItemKitTurboVolumePump Kit (Turbo Volume Pump - Gas) --479012046 ItemKitTurret Kit (Turret) --1798044015 ItemKitUprightWindTurbine Kit (Upright Wind Turbine) --2038384332 ItemKitVendingMachine Kit (Vending Machine) --1867508561 ItemKitVendingMachineRefrigerated Kit (Vending Machine Refrigerated) --1826855889 ItemKitWall Kit (Wall) -1625214531 ItemKitWallArch Kit (Arched Wall) --846838195 ItemKitWallFlat Kit (Flat Wall) --784733231 ItemKitWallGeometry Kit (Geometric Wall) --524546923 ItemKitWallIron Kit (Iron Wall) --821868990 ItemKitWallPadded Kit (Padded Wall) --210898273 ItemKitWallPanels Kit (Wall Panels) -159886536 ItemKitWaterBottleFiller Kit (Water Bottle Filler) -611181283 ItemKitWaterPurifier Kit (Water Purifier) -337505889 ItemKitWeatherStation Kit (Weather Station) --868916503 ItemKitWindTurbine Kit (Wind Turbine) -1779979754 ItemKitWindowShutter Kit (Window Shutter) --743968726 ItemLabeller Labeller -141535121 ItemLaptop Laptop -2134647745 ItemLeadIngot Ingot (Lead) --190236170 ItemLeadOre Ore (Lead) -1949076595 ItemLightSword Light Sword --185207387 ItemLiquidCanisterEmpty Liquid Canister -777684475 ItemLiquidCanisterSmart Liquid Canister (Smart) -2036225202 ItemLiquidDrain Kit (Liquid Drain) -226055671 ItemLiquidPipeAnalyzer Kit (Liquid Pipe Analyzer) --248475032 ItemLiquidPipeHeater Pipe Heater Kit (Liquid) --2126113312 ItemLiquidPipeValve Kit (Liquid Pipe Valve) --2106280569 ItemLiquidPipeVolumePump Kit (Liquid Volume Pump) -2037427578 ItemLiquidTankStorage Kit (Liquid Canister Storage) -240174650 ItemMKIIAngleGrinder Mk II Angle Grinder --2061979347 ItemMKIIArcWelder Mk II Arc Welder -1440775434 ItemMKIICrowbar Mk II Crowbar -324791548 ItemMKIIDrill Mk II Drill -388774906 ItemMKIIDuctTape Mk II Duct Tape --1875271296 ItemMKIIMiningDrill Mk II Mining Drill --2015613246 ItemMKIIScrewdriver Mk II Screwdriver --178893251 ItemMKIIWireCutters Mk II Wire Cutters -1862001680 ItemMKIIWrench Mk II Wrench -1399098998 ItemMarineBodyArmor Marine Armor -1073631646 ItemMarineHelmet Marine Helmet -1327248310 ItemMilk Milk --1650383245 ItemMiningBackPack Mining Backpack --676435305 ItemMiningBelt Mining Belt -1471707059 ItemMiningBeltAdvanced Mining Belt MK II -1470787934 ItemMiningBeltMKII Mining Belt MK II -15829510 ItemMiningCharge Mining Charge -1055173191 ItemMiningDrill Mining Drill --1663349918 ItemMiningDrillHeavy Mining Drill (Heavy) -1258187304 ItemMiningDrillPneumatic Pneumatic Mining Drill -1467558064 ItemMkIIToolbelt Tool Belt MK II --1864982322 ItemMuffin Muffin -2044798572 ItemMushroom Mushroom -982514123 ItemNVG Night Vision Goggles --1406385572 ItemNickelIngot Ingot (Nickel) -1830218956 ItemNickelOre Ore (Nickel) --1499471529 ItemNitrice Ice (Nitrice) --1805394113 ItemOxite Ice (Oxite) -238631271 ItemPassiveVent Passive Vent --1397583760 ItemPassiveVentInsulated Kit (Insulated Passive Vent) -2042955224 ItemPeaceLily Peace Lily --913649823 ItemPickaxe Pickaxe -1118069417 ItemPillHeal Pill (Medical) -418958601 ItemPillStun Pill (Paralysis) --767597887 ItemPipeAnalyizer Kit (Pipe Analyzer) --453870153 ItemPipeCorner Kit (Pipe Corner) --38898376 ItemPipeCowl Pipe Cowl --1315694144 ItemPipeCrossJunction Kit (Pipe Cross Junction) --167258062 ItemPipeCrossJunction3 Kit (Pipe 3-Way Junction) -526679303 ItemPipeCrossJunction5 Kit (Pipe 5-Way Junction) --2039665475 ItemPipeCrossJunction6 Kit (Pipe 6-Way Junction) --1532448832 ItemPipeDigitalValve Kit (Digital Valve) --1134459463 ItemPipeGasMixer Kit (Gas Mixer) --1751627006 ItemPipeHeater Pipe Heater Kit (Gas) -1366030599 ItemPipeIgniter Kit (Pipe Igniter) -391769637 ItemPipeLabel Kit (Pipe Label) --906521320 ItemPipeLiquidRadiator Kit (Liquid Radiator) -1207939683 ItemPipeMeter Kit (Pipe Meter) --1796655088 ItemPipeRadiator Kit (Radiator) --173267052 ItemPipeStraight Kit (Pipe Straight) --274679544 ItemPipeTJunction Kit (Pipe T Junction) -799323450 ItemPipeValve Kit (Pipe Valve) --1766301997 ItemPipeVolumePump Kit (Volume Pump) --1159179557 ItemPlantEndothermic_Creative Endothermic Plant Creative -851290561 ItemPlantEndothermic_Genepool1 Winterspawn (Alpha variant) --1414203269 ItemPlantEndothermic_Genepool2 Winterspawn (Beta variant) -173023800 ItemPlantSampler Plant Sampler --532672323 ItemPlantSwitchGrass Switch Grass --1208890208 ItemPlantThermogenic_Creative Thermogenic Plant Creative --177792789 ItemPlantThermogenic_Genepool1 Hades Flower (Alpha strain) -1819167057 ItemPlantThermogenic_Genepool2 Hades Flower (Beta strain) -662053345 ItemPlasticSheets Plastic Sheets -1929046963 ItemPotato Potato --2111886401 ItemPotatoBaked Baked Potato -1305806506 ItemPowderedeggs Powdered Eggs -839924019 ItemPowerConnector Kit (Power Connector) -616428336 ItemPoweredEggs Powered Eggs -1277828144 ItemPumpkin Pumpkin -62768076 ItemPumpkinPie Pumpkin Pie -1277979876 ItemPumpkinSoup Pumpkin Soup --1616308158 ItemPureIce Pure Ice Water --1251009404 ItemPureIceCarbonDioxide Pure Ice Carbon Dioxide -944530361 ItemPureIceHydrogen Pure Ice Hydrogen --1715945725 ItemPureIceLiquidCarbonDioxide Pure Ice Liquid Carbon Dioxide --1044933269 ItemPureIceLiquidHydrogen Pure Ice Liquid Hydrogen -1674576569 ItemPureIceLiquidNitrogen Pure Ice Liquid Nitrogen -1428477399 ItemPureIceLiquidNitrous Pure Ice Liquid Nitrous -541621589 ItemPureIceLiquidOxygen Pure Ice Liquid Oxygen --1748926678 ItemPureIceLiquidPollutant Pure Ice Liquid Pollutant --1306628937 ItemPureIceLiquidVolatiles Pure Ice Liquid Volatiles --1708395413 ItemPureIceNitrogen Pure Ice Nitrogen -386754635 ItemPureIceNitrous Pure Ice NitrousOxide --1150448260 ItemPureIceOxygen Pure Ice Oxygen --1755356 ItemPureIcePollutant Pure Ice Pollutant --2073202179 ItemPureIcePollutedWater Pure Ice Polluted Water --874791066 ItemPureIceSteam Pure Ice Steam --633723719 ItemPureIceVolatiles Pure Ice Volatiles -495305053 ItemRTG Kit (Creative RTG) -1817645803 ItemRTGSurvival Kit (RTG) --1641500434 ItemReagentMix Reagent Mix -678483886 ItemRemoteDetonator Remote Detonator -819096942 ItemResearchCapsule Research Capsule Blue --1352732550 ItemResearchCapsuleGreen Research Capsule Green -954947943 ItemResearchCapsuleRed Research Capsule Red -750952701 ItemResearchCapsuleYellow Research Capsule Yellow --1773192190 ItemReusableFireExtinguisher Fire Extinguisher (Reusable) -658916791 ItemRice Rice -871811564 ItemRoadFlare Road Flare -2109945337 ItemRocketMiningDrillHead Mining-Drill Head (Basic) -1530764483 ItemRocketMiningDrillHeadDurable Mining-Drill Head (Durable) -653461728 ItemRocketMiningDrillHeadHighSpeedIce Mining-Drill Head (High Speed Ice) -1440678625 ItemRocketMiningDrillHeadHighSpeedMineral Mining-Drill Head (High Speed Mineral) --380904592 ItemRocketMiningDrillHeadIce Mining-Drill Head (Ice) --684020753 ItemRocketMiningDrillHeadLongTerm Mining-Drill Head (Long Term) -1083675581 ItemRocketMiningDrillHeadMineral Mining-Drill Head (Mineral) --1198702771 ItemRocketScanningHead Rocket Scanner Head -1661270830 ItemScanner Handheld Scanner -687940869 ItemScrewdriver Screwdriver --1981101032 ItemSecurityCamera Security Camera --1176140051 ItemSensorLenses Sensor Lenses --1154200014 ItemSensorProcessingUnitCelestialScanner Sensor Processing Unit (Celestial Scanner) --1730464583 ItemSensorProcessingUnitMesonScanner Sensor Processing Unit (T-Ray Scanner) --1219128491 ItemSensorProcessingUnitOreScanner Sensor Processing Unit (Ore Scanner) --290196476 ItemSiliconIngot Ingot (Silicon) -1103972403 ItemSiliconOre Ore (Silicon) --929742000 ItemSilverIngot Ingot (Silver) --916518678 ItemSilverOre Ore (Silver) --82508479 ItemSolderIngot Ingot (Solder) --365253871 ItemSolidFuel Solid Fuel (Hydrocarbon) --1883441704 ItemSoundCartridgeBass Sound Cartridge Bass --1901500508 ItemSoundCartridgeDrums Sound Cartridge Drums --1174735962 ItemSoundCartridgeLeads Sound Cartridge Leads --1971419310 ItemSoundCartridgeSynth Sound Cartridge Synth -1387403148 ItemSoyOil Soy Oil -1924673028 ItemSoybean Soybean --1737666461 ItemSpaceCleaner Space Cleaner -714830451 ItemSpaceHelmet Space Helmet -675686937 ItemSpaceIce Space Ice -2131916219 ItemSpaceOre Dirty Ore --1260618380 ItemSpacepack Spacepack --688107795 ItemSprayCanBlack Spray Paint (Black) --498464883 ItemSprayCanBlue Spray Paint (Blue) -845176977 ItemSprayCanBrown Spray Paint (Brown) --1880941852 ItemSprayCanGreen Spray Paint (Green) --1645266981 ItemSprayCanGrey Spray Paint (Grey) -1918456047 ItemSprayCanKhaki Spray Paint (Khaki) --158007629 ItemSprayCanOrange Spray Paint (Orange) -1344257263 ItemSprayCanPink Spray Paint (Pink) -30686509 ItemSprayCanPurple Spray Paint (Purple) -1514393921 ItemSprayCanRed Spray Paint (Red) -498481505 ItemSprayCanWhite Spray Paint (White) -995468116 ItemSprayCanYellow Spray Paint (Yellow) -1289723966 ItemSprayGun Spray Gun --1448105779 ItemSteelFrames Steel Frames --654790771 ItemSteelIngot Ingot (Steel) -38555961 ItemSteelSheets Steel Sheets --2038663432 ItemStelliteGlassSheets Stellite Glass Sheets --1897868623 ItemStelliteIngot Ingot (Stellite) --1335056202 ItemSugarCane Sugar Cane -1447327071 ItemSuitAdvancedAC Advanced AC Suit -711019524 ItemSuitEmergency Emergency Suit -70631292 ItemSuitHard Hard Suit --2020709888 ItemSuitInsulated Insulated Suit --1274308304 ItemSuitModCryogenicUpgrade Cryogenic Suit Upgrade --942170293 ItemSuitNormal Normal Suit -416903029 ItemSuitSpace Space Suit -318109626 ItemSuitStorage Kit (Suit Storage) --229808600 ItemTablet Handheld Tablet --1782380726 ItemTankConnector Kit (Tank Connector) --1579112308 ItemTankConnectorLiquid Kit (Liquid Tank Connector) -111280987 ItemTerrainManipulator Terrain Manipulator --998592080 ItemTomato Tomato -688734890 ItemTomatoSoup Tomato Soup --355127880 ItemToolBelt Tool Belt --800947386 ItemTropicalPlant Tropical Lily --1516581844 ItemUraniumOre Ore (Uranium) -1253102035 ItemVolatiles Ice (Volatiles) -1707117569 ItemVoxelTool Voxel Tool --1567752627 ItemWallCooler Kit (Wall Cooler) -1880134612 ItemWallHeater Kit (Wall Heater) -1108423476 ItemWallLight Kit (Lights) -156348098 ItemWaspaloyIngot Ingot (Waspaloy) -1798764247 ItemWasteIngot Ingot (Waste) -107741229 ItemWaterBottle Water Bottle --1542288894 ItemWaterBottleFiller Water Bottle Filler -309693520 ItemWaterPipeDigitalValve Kit (Liquid Digital Valve) --1404370810 ItemWaterPipeHeater Pipe Heater Kit (Liquid) --90898877 ItemWaterPipeMeter Kit (Liquid Pipe Meter) --1721846327 ItemWaterWallCooler Kit (Liquid Wall Cooler) --598730959 ItemWearLamp Headlamp --2066892079 ItemWeldingTorch Welding Torch --1057658015 ItemWheat Wheat -1535854074 ItemWireCutters Wire Cutters --504717121 ItemWirelessBatteryCellExtraLarge Wireless Battery Cell Extra Large --777592237 ItemWreckage1 Wreckage -1219474409 ItemWreckage2 Wreckage -1068008319 ItemWreckage3 Wreckage --1580460324 ItemWreckage4 Wreckage -1443414563 ItemWreckageActiveVent1 Wreckage Active Vent --1826023284 ItemWreckageAirConditioner1 Wreckage Air Conditioner -169888054 ItemWreckageAirConditioner2 Wreckage Air Conditioner --486036403 ItemWreckageAirlock1 Wreckage Airlock -2047802871 ItemWreckageAirlock2 Wreckage Airlock -479890266 ItemWreckageArcFurnace1 Wreckage Arc Furnace --2053907744 ItemWreckageArcFurnace2 Wreckage Arc Furnace --225121674 ItemWreckageArcFurnace3 Wreckage Arc Furnace --1542823944 ItemWreckageAreaPowerControl1 Wreckage Area Power Control -1023610434 ItemWreckageAreaPowerControl2 Wreckage Area Power Control -1990336561 ItemWreckageAreaPowerControlReversed1 Wreckage Area Power Control Reversed --273976949 ItemWreckageAreaPowerControlReversed2 Wreckage Area Power Control Reversed --1207279124 ItemWreckageAutolathe1 Wreckage Autolathe -553857110 ItemWreckageAutolathe2 Wreckage Autolathe -1443102912 ItemWreckageAutolathe3 Wreckage Autolathe --933194397 ItemWreckageAutolathe4 Wreckage Autolathe --1083726347 ItemWreckageAutolathe5 Wreckage Autolathe -644805711 ItemWreckageAutolathe6 Wreckage Autolathe -1365886169 ItemWreckageAutolathe7 Wreckage Autolathe --1509194433 ItemWreckageBlastDoor1 Wreckage Blast Door -1057150085 ItemWreckageBlastDoor2 Wreckage Blast Door --208145314 ItemWreckageCentrifuge1 Wreckage Centrifuge -1788782052 ItemWreckageCentrifuge2 Wreckage Centrifuge -496604530 ItemWreckageCentrifuge3 Wreckage Centrifuge --2080571183 ItemWreckageCentrifuge4 Wreckage Centrifuge --184930233 ItemWreckageCentrifuge5 Wreckage Centrifuge -50205563 ItemWreckageCoalGenerator1 Wreckage Coal Generator --1678294335 ItemWreckageCoalGenerator2 Wreckage Coal Generator --319786409 ItemWreckageCoalGenerator3 Wreckage Coal Generator -2077142147 ItemWreckageCompositeDoor1 Wreckage Composite Door --490209991 ItemWreckageCompositeDoor2 Wreckage Composite Door --1782526545 ItemWreckageCompositeDoor3 Wreckage Composite Door -1635489893 ItemWreckageCompositeDoorGlass1 Wreckage Composite Door Glass --126694945 ItemWreckageCompositeDoorGlass2 Wreckage Composite Door Glass --1109808524 ItemWreckageConstructor Debug Wreckage Constructor -2053466622 ItemWreckageElectrolysis1 Wreckage Electrolysis --479446972 ItemWreckageElectrolysis2 Wreckage Electrolysis --299987533 ItemWreckageElectronicsPrinter1 Wreckage Electronics Printer1 -1998052361 ItemWreckageElectronicsPrinter2 Wreckage Electronics Printer2 -1109151 ItemWreckageElectronicsPrinter3 Wreckage Electronics Printer3 --1636533956 ItemWreckageElectronicsPrinter4 Wreckage Electronics Printer4 --378320470 ItemWreckageElectronicsPrinter5 Wreckage Electronics Printer5 -1887049744 ItemWreckageElectronicsPrinter6 Wreckage Electronics Printer6 -807820730 ItemWreckageElevatorLevelFront1 Wreckage Elevator Level Front --1456534528 ItemWreckageElevatorLevelFront2 Wreckage Elevator Level Front --441091249 ItemWreckageElevatorShaftIndustrial1 Wreckage Elevator Shaft Industrial -2092706549 ItemWreckageElevatorShaftIndustrial2 Wreckage Elevator Shaft Industrial -196811363 ItemWreckageElevatorShaftIndustrial3 Wreckage Elevator Shaft Industrial --690094117 ItemWreckageFlashingLight1 Wreckage Flashing Light -1339338337 ItemWreckageFlashingLight2 Wreckage Flashing Light -1504810883 ItemWreckageGasGenerator1 Wreckage Gas Generator --1061632455 ItemWreckageGasGenerator2 Wreckage Gas Generator --2111000740 ItemWreckageH2Combustor1 Wreckage H2 Combustor -697994371 ItemWreckageHydroponicsAutomatic1 Wreckage Hydroponics Automatic --1332486855 ItemWreckageHydroponicsAutomatic2 Wreckage Hydroponics Automatic --946541137 ItemWreckageHydroponicsAutomatic3 Wreckage Hydroponics Automatic --978136707 ItemWreckageHydroponicsStation1 Wreckage Hydroponics Station -1555792071 ItemWreckageHydroponicsStation2 Wreckage Hydroponics Station --310178617 ItemWreckageHydroponicsTray1 Wreckage Hydroponics Tray --997763 ItemWreckageLargeExtendableRadiator01 Wreckage Large Extendable Radiator -1494744304 ItemWreckageLight1 Wreckage Light --1071731382 ItemWreckageLight2 Wreckage Light --1932417031 ItemWreckageLightLongAngled1 Wreckage Light Long Angled -366540355 ItemWreckageLightLongAngled2 Wreckage Light Long Angled -512740782 ItemWreckageLightLongWide1 Wreckage Light Long Wide --2021221356 ItemWreckageLightLongWide2 Wreckage Light Long Wide --378382939 ItemWreckagePassiveVent1 Wreckage Passive Vent --1755613692 ItemWreckageRecycler1 Wreckage Recycler -240265150 ItemWreckageRecycler2 Wreckage Recycler -2035619624 ItemWreckageRecycler3 Wreckage Recycler --416185717 ItemWreckageRecycler4 Wreckage Recycler --1875463651 ItemWreckageRecycler5 Wreckage Recycler -155181991 ItemWreckageRecycler6 Wreckage Recycler -514013016 ItemWreckageSDBSilo1 Wreckage SDB Silo --2018875678 ItemWreckageSDBSilo2 Wreckage SDB Silo --257075596 ItemWreckageSDBSilo3 Wreckage SDB Silo -1858716631 ItemWreckageSDBSilo4 Wreckage SDB Silo -432993089 ItemWreckageSDBSilo5 Wreckage SDB Silo --1312888309 ItemWreckageSatelliteDish1 Wreckage Medium Satellite Dish -683129777 ItemWreckageSatelliteDish2 Wreckage Medium Satellite Dish -1605405479 ItemWreckageSatelliteDish3 Wreckage Medium Satellite Dish --875253743 ItemWreckageSecurityPrinter1 Wreckage Security Printer -1390272939 ItemWreckageSecurityPrinter2 Wreckage Security Printer -635097405 ItemWreckageSecurityPrinter3 Wreckage Security Printer --1145158498 ItemWreckageSecurityPrinter4 Wreckage Security Printer --860261368 ItemWreckageSecurityPrinter5 Wreckage Security Printer -1437607346 ItemWreckageSecurityPrinter6 Wreckage Security Printer --1847771550 ItemWreckageShuttleLandingPad1 Wreckage Shuttle Landing Pad -148139992 ItemWreckageShuttleLandingPad2 Wreckage Shuttle Landing Pad -2144558926 ItemWreckageShuttleLandingPad3 Wreckage Shuttle Landing Pad --508048659 ItemWreckageShuttleLandingPad4 Wreckage Shuttle Landing Pad --1766786437 ItemWreckageShuttleLandingPad5 Wreckage Shuttle Landing Pad --1796898215 ItemWreckageSolarPanel1 Wreckage Solar Panel -233624547 ItemWreckageSolarPanel2 Wreckage Solar Panel -2062279541 ItemWreckageSolarPanel3 Wreckage Solar Panel -391453348 ItemWreckageStructureRTG1 Wreckage Structure RTG --834664349 ItemWreckageStructureWeatherStation001 Wreckage Structure Weather Station -1464424921 ItemWreckageStructureWeatherStation002 Wreckage Structure Weather Station -542009679 ItemWreckageStructureWeatherStation003 Wreckage Structure Weather Station --1104478996 ItemWreckageStructureWeatherStation004 Wreckage Structure Weather Station --919745414 ItemWreckageStructureWeatherStation005 Wreckage Structure Weather Station -1344576960 ItemWreckageStructureWeatherStation006 Wreckage Structure Weather Station -656649558 ItemWreckageStructureWeatherStation007 Wreckage Structure Weather Station --1214467897 ItemWreckageStructureWeatherStation008 Wreckage Structure Weather Station -594559972 ItemWreckageTransformer1 Wreckage Transformer --1166470562 ItemWreckageTransformer2 Wreckage Transformer --123047854 ItemWreckageTransformerMedium1 Wreckage Transformer Medium -1638081000 ItemWreckageTransformerMedium2 Wreckage Transformer Medium -114353662 ItemWreckageTransformerSmall1 Wreckage Transformer Small --1613122492 ItemWreckageTransformerSmall2 Wreckage Transformer Small --1662394403 ItemWreckageTurbineGenerator1 Wreckage Turbine Generator -98602599 ItemWreckageTurbineGenerator2 Wreckage Turbine Generator -1927790321 ItemWreckageTurbineGenerator3 Wreckage Turbine Generator -989049177 ItemWreckageVendingMachine1 Wreckage Vending Machine --1543839517 ItemWreckageVendingMachine2 Wreckage Vending Machine --721563531 ItemWreckageVendingMachine3 Wreckage Vending Machine -1251558870 ItemWreckageVendingMachine4 Wreckage Vending Machine -608007229 ItemWreckageVent1 Wreckage Vent --1682930158 ItemWreckageWallCooler1 Wreckage Wall Cooler -45733800 ItemWreckageWallCooler2 Wreckage Wall Cooler -1989858879 ItemWreckageWallLightBatteryPowered1 Wreckage Wall Light Battery Powered --275544187 ItemWreckageWallLightBatteryPowered2 Wreckage Wall Light Battery Powered -1039364844 ItemWreckageWindTurbine001 Wreckage Wind Turbine --1527110826 ItemWreckageWindTurbine002 Wreckage Wind Turbine --738389056 ItemWreckageWindTurbine003 Wreckage Wind Turbine -1301907043 ItemWreckageWindTurbine004 Wreckage Wind Turbine -983480053 ItemWreckageWindTurbine005 Wreckage Wind Turbine --1886261558 ItemWrench Wrench --1959031919 KitPlanter Kit Planter -1932952652 KitSDBSilo Kit (SDB Silo) -231903234 KitStructureCombustionCentrifuge Kit (Combustion Centrifuge) --1427415566 KitchenTableShort Kitchen Table (Short) --78099334 KitchenTableSimpleShort Kitchen Table (Simple Short) --1068629349 KitchenTableSimpleTall Kitchen Table (Simple Tall) --1386237782 KitchenTableTall Kitchen Table (Tall) -1605130615 Lander Lander --1295222317 Landingpad_2x2CenterPiece01 Landingpad 2x2 Center Piece -912453390 Landingpad_BlankPiece Landingpad -1070143159 Landingpad_CenterPiece01 Landingpad Center -1101296153 Landingpad_CrossPiece Landingpad Cross --2066405918 Landingpad_DataConnectionPiece Landingpad Data And Power -977899131 Landingpad_DiagonalPiece01 Landingpad Diagonal -817945707 Landingpad_GasConnectorInwardPiece Landingpad Gas Input --1100218307 Landingpad_GasConnectorOutwardPiece Landingpad Gas Output -170818567 Landingpad_GasCylinderTankPiece Landingpad Gas Storage --1216167727 Landingpad_LiquidConnectorInwardPiece Landingpad Liquid Input --1788929869 Landingpad_LiquidConnectorOutwardPiece Landingpad Liquid Output --976273247 Landingpad_StraightPiece01 Landingpad Straight --1872345847 Landingpad_TaxiPieceCorner Landingpad Taxi Corner -146051619 Landingpad_TaxiPieceHold Landingpad Taxi Hold --1477941080 Landingpad_TaxiPieceStraight Landingpad Taxi Straight --1514298582 Landingpad_ThreshholdPiece Landingpad Threshhold --2002530571 Lead Lead --1748149715 LiquidRocketEngineBasic Liquid Rocket Engine Basic -1531272458 LogicStepSequencer8 Logic Step Sequencer --1650443378 ManualGetResearchPodsRequired PodTypeToSearchFor --99064335 Meteorite Meteorite -471085864 Milk Milk -96856935 ModularRocketCargo01 Rocket Cargo -762107604 ModularRocketCommand01Lander Rocket Command Lander --1667675295 MonsterEgg --337075633 MotherboardComms Communications Motherboard -502555944 MotherboardLogic Logic Motherboard -296034716 MotherboardManufacturing Manufacturing Motherboard --127121474 MotherboardMissionControl --161107071 MotherboardProgrammableChip IC Editor Motherboard --806986392 MotherboardRockets Rocket Control Motherboard --1908268220 MotherboardSorter Sorter Motherboard --1930442922 MothershipCore Mothership Core -516242109 Mushroom Mushroom --369148816 NPCDummyCharacter NPC Character -556601662 Nickel Nickel -155856647 NpcChick Chick -399074198 NpcChicken Chicken --561574140 NpcGrounder Npc Grounder -1958538866 Oil Oil -593101129 OrganBrain Human Brain --144408069 OrganLungs Human Lungs --2096246323 OrganLungsChicken Organ Lungs Chicken -248893646 PassiveSpeaker Passive Speaker -393296429 Phobos Phobos -443947415 PipeBenderMod Pipe Bender Mod -791382247 Plastic Plastic --1958705204 PortableComposter Portable Composter -2043318949 PortableSolarPanel Portable Solar Panel --1657266385 Potato Potato --1250164309 Pumpkin Pumpkin --1514425813 QuarryDrillBitBasic Quarry Drill Bit Basic -399661231 RailingElegant01 Railing Elegant (Type 1) --1898247915 RailingElegant02 Railing Elegant (Type 2) --2072792175 RailingIndustrial02 Railing Industrial (Type 2) -1343512922 ReagentCarbon Carbon Powder -1798609988 ReagentCobalt Cobalt Powder -980054869 ReagentColorBlue Color Dye (Blue) -120807542 ReagentColorGreen Color Dye (Green) --400696159 ReagentColorOrange Color Dye (Orange) -1998377961 ReagentColorRed Color Dye (Red) -635208006 ReagentColorYellow Color Dye (Yellow) -1281150963 ReagentElectrum Electrum Powder --1247719781 ReagentFenoxitone Fenoxitone Powder --867172244 ReagentGold Gold Powder -1133218057 ReagentInvar Invar Powder --1085822177 ReagentPotassiumIodide Potassium Iodide Powder -649443269 ReagentSilver Silver Powder --788672929 RespawnPoint Respawn Point --491247370 RespawnPointWallMounted Respawn Point (Mounted) -1951286569 Rice Rice -434786784 Robot AIMeE Bot -350726273 RoverCargo Rover (Cargo) --2049946335 Rover_MkI Rover MkI -861674123 Rover_MkI_build_states Rover MKI --256607540 SMGMagazine SMG Magazine --2086114347 SalicylicAcid Salicylic Acid --1290755415 SeedBag_Corn Corn Seeds --1990600883 SeedBag_Fern Fern Seeds -311593418 SeedBag_Mushroom Mushroom Seeds -1005571172 SeedBag_Potato Potato Seeds -1423199840 SeedBag_Pumpkin Pumpkin Seeds --1691151239 SeedBag_Rice Rice Seeds -1783004244 SeedBag_Soybean Soybean Seeds -488360169 SeedBag_Switchgrass Switchgrass Seed --1922066841 SeedBag_Tomato Tomato Seeds --654756733 SeedBag_Wheet Wheat Seeds --1195893171 Silicon Silicon -687283565 Silver Silver --1206542381 Solder Solder -1510471435 Soy Soy --1991297271 SpaceShuttle Space Shuttle --163799681 SpawnPoint Spawn Point -1547278694 SpecialBlocks Special Blocks -1331613335 Steel Steel --500544800 Stellite Stellite --1527229051 StopWatch Stop Watch -1298920475 StructureAccessBridge Access Bridge --1129453144 StructureActiveVent Active Vent -446212963 StructureAdvancedComposter Advanced Composter -545937711 StructureAdvancedFurnace Advanced Furnace --463037670 StructureAdvancedPackagingMachine Advanced Packaging Machine --2087593337 StructureAirConditioner Air Conditioner --2105052344 StructureAirlock Airlock -1736080881 StructureAirlockGate Small Hangar Door -1811979158 StructureAngledBench Bench (Angled) --247344692 StructureArcFurnace Arc Furnace -1999523701 StructureAreaPowerControl Area Power Control --1032513487 StructureAreaPowerControlReversed Area Power Control -7274344 StructureAutoMinerSmall Autominer (Small) -336213101 StructureAutolathe Autolathe --1672404896 StructureAutomatedOven Automated Oven -2099900163 StructureBackLiquidPressureRegulator Liquid Back Volume Regulator --1149857558 StructureBackPressureRegulator Back Pressure Regulator --1613497288 StructureBasketHoop Basket Hoop --400115994 StructureBattery Station Battery -1945930022 StructureBatteryCharger Battery Cell Charger --761772413 StructureBatteryChargerSmall Battery Charger Small --1388288459 StructureBatteryLarge Station Battery (Large) --1125305264 StructureBatteryMedium Battery (Medium) --2123455080 StructureBatterySmall Auxiliary Rocket Battery --188177083 StructureBeacon Beacon --2042448192 StructureBench Powered Bench -406745009 StructureBench1 Bench (Counter Style) --2127086069 StructureBench2 Bench (High Tech Style) --164622691 StructureBench3 Bench (Frame Style) -1750375230 StructureBench4 Bench (Workbench Style) -337416191 StructureBlastDoor Blast Door -697908419 StructureBlockBed Block Bed -378084505 StructureBlocker Blocker -1036015121 StructureCableAnalysizer Cable Analyzer --889269388 StructureCableCorner Cable (Corner) -980469101 StructureCableCorner3 Cable (3-Way Corner) -318437449 StructureCableCorner3Burnt Burnt Cable (3-Way Corner) -2393826 StructureCableCorner3HBurnt --1542172466 StructureCableCorner4 Cable (4-Way Corner) -268421361 StructureCableCorner4Burnt Burnt Cable (4-Way Corner) --981223316 StructureCableCorner4HBurnt Burnt Heavy Cable (4-Way Corner) --177220914 StructureCableCornerBurnt Burnt Cable (Corner) --39359015 StructureCableCornerH Heavy Cable (Corner) --1843379322 StructureCableCornerH3 Heavy Cable (3-Way Corner) -205837861 StructureCableCornerH4 Heavy Cable (4-Way Corner) -1931412811 StructureCableCornerHBurnt Burnt Cable (Corner) -281380789 StructureCableFuse100k Fuse (100kW) --1103727120 StructureCableFuse1k Fuse (1kW) --349716617 StructureCableFuse50k Fuse (50kW) --631590668 StructureCableFuse5k Fuse (5kW) --175342021 StructureCableJunction Cable (Junction) -1112047202 StructureCableJunction4 Cable (4-Way Junction) --1756896811 StructureCableJunction4Burnt Burnt Cable (4-Way Junction) --115809132 StructureCableJunction4HBurnt Burnt Cable (4-Way Junction) -894390004 StructureCableJunction5 Cable (5-Way Junction) -1545286256 StructureCableJunction5Burnt Burnt Cable (5-Way Junction) --1404690610 StructureCableJunction6 Cable (6-Way Junction) --628145954 StructureCableJunction6Burnt Burnt Cable (6-Way Junction) -1854404029 StructureCableJunction6HBurnt Burnt Cable (6-Way Junction) --1620686196 StructureCableJunctionBurnt Burnt Cable (Junction) -469451637 StructureCableJunctionH Heavy Cable (3-Way Junction) --742234680 StructureCableJunctionH4 Heavy Cable (4-Way Junction) --1530571426 StructureCableJunctionH5 Heavy Cable (5-Way Junction) -1701593300 StructureCableJunctionH5Burnt Burnt Heavy Cable (5-Way Junction) -1036780772 StructureCableJunctionH6 Heavy Cable (6-Way Junction) --341365649 StructureCableJunctionHBurnt Burnt Cable (Junction) -605357050 StructureCableStraight Cable (Straight) --1196981113 StructureCableStraightBurnt Burnt Cable (Straight) --146200530 StructureCableStraightH Heavy Cable (Straight) -2085762089 StructureCableStraightHBurnt Burnt Cable (Straight) --342072665 StructureCamera Camera -1063087964 StructureCapsuleTank Capsule Tank --1385712131 StructureCapsuleTankGas Gas Capsule Tank Small -1415396263 StructureCapsuleTankLiquid Liquid Capsule Tank Small -1151864003 StructureCargoStorageMedium Cargo Storage (Medium) --1493672123 StructureCargoStorageSmall Cargo Storage (Small) -690945935 StructureCentrifuge Centrifuge -1167659360 StructureChair Chair -1944858936 StructureChairBacklessDouble Chair (Backless Double) -1672275150 StructureChairBacklessSingle Chair (Backless Single) --367720198 StructureChairBoothCornerLeft Chair (Booth Corner Left) --1436813933 StructureChairBoothCornerRight Chair (Booth Corner Right) -1640720378 StructureChairBoothMiddle Chair (Booth Middle) --1152812099 StructureChairRectangleDouble Chair (Rectangle Double) --1425428917 StructureChairRectangleSingle Chair (Rectangle Single) --1245724402 StructureChairThickDouble Chair (Thick Double) --1510009608 StructureChairThickSingle Chair (Thick Single) --850484480 StructureChuteBin Chute Bin -1360330136 StructureChuteCorner Chute (Corner) --810874728 StructureChuteDigitalFlipFlopSplitterLeft Chute Digital Flip Flop Splitter Left -163728359 StructureChuteDigitalFlipFlopSplitterRight Chute Digital Flip Flop Splitter Right -648608238 StructureChuteDigitalValveLeft Chute Digital Valve Left --1337091041 StructureChuteDigitalValveRight Chute Digital Valve Right --1446854725 StructureChuteFlipFlopSplitter Chute Flip Flop Splitter --1469588766 StructureChuteInlet Chute Inlet --611232514 StructureChuteJunction Chute (Junction) --1022714809 StructureChuteOutlet Chute Outlet -225377225 StructureChuteOverflow Chute Overflow -168307007 StructureChuteStraight Chute (Straight) --1918892177 StructureChuteUmbilicalFemale Umbilical Socket (Chute) --659093969 StructureChuteUmbilicalFemaleSide Umbilical Socket Angle (Chute) --958884053 StructureChuteUmbilicalMale Umbilical (Chute) -434875271 StructureChuteValve Chute Valve --607241919 StructureChuteWindow Chute (Window) --128473777 StructureCircuitHousing IC Housing -1238905683 StructureCombustionCentrifuge Combustion Centrifuge --1513030150 StructureCompositeCladdingAngled Composite Cladding (Angled) --69685069 StructureCompositeCladdingAngledCorner Composite Cladding (Angled Corner) --1841871763 StructureCompositeCladdingAngledCornerInner Composite Cladding (Angled Corner Inner) --1417912632 StructureCompositeCladdingAngledCornerInnerLong Composite Cladding (Angled Corner Inner Long) -947705066 StructureCompositeCladdingAngledCornerInnerLongL Composite Cladding (Angled Corner Inner Long L) --1032590967 StructureCompositeCladdingAngledCornerInnerLongR Composite Cladding (Angled Corner Inner Long R) -850558385 StructureCompositeCladdingAngledCornerLong Composite Cladding (Long Angled Corner) --348918222 StructureCompositeCladdingAngledCornerLongR Composite Cladding (Long Angled Mirrored Corner) --387546514 StructureCompositeCladdingAngledLong Composite Cladding (Long Angled) -212919006 StructureCompositeCladdingCylindrical Composite Cladding (Cylindrical) -1077151132 StructureCompositeCladdingCylindricalPanel Composite Cladding (Cylindrical Panel) -1997436771 StructureCompositeCladdingPanel Composite Cladding (Panel) --259357734 StructureCompositeCladdingRounded Composite Cladding (Rounded) -1951525046 StructureCompositeCladdingRoundedCorner Composite Cladding (Rounded Corner) -110184667 StructureCompositeCladdingRoundedCornerInner Composite Cladding (Rounded Corner Inner) -139107321 StructureCompositeCladdingSpherical Composite Cladding (Spherical) -534213209 StructureCompositeCladdingSphericalCap Composite Cladding (Spherical Cap) -1751355139 StructureCompositeCladdingSphericalCorner Composite Cladding (Spherical Corner) --793837322 StructureCompositeDoor Composite Door -324868581 StructureCompositeFloorGrating Composite Floor Grating --895027741 StructureCompositeFloorGrating2 Composite Floor Grating (Type 2) --1113471627 StructureCompositeFloorGrating3 Composite Floor Grating (Type 3) -600133846 StructureCompositeFloorGrating4 Composite Floor Grating (Type 4) -2109695912 StructureCompositeFloorGratingOpen Composite Floor Grating Open -882307910 StructureCompositeFloorGratingOpenRotated Composite Floor Grating Open Rotated -1237302061 StructureCompositeWall Composite Wall (Type 1) -718343384 StructureCompositeWall02 Composite Wall (Type 2) -1574321230 StructureCompositeWall03 Composite Wall (Type 3) --1011701267 StructureCompositeWall04 Composite Wall (Type 4) --11567609 StructureCompositeWallPanelling1 Composite Wall Panelling -414493311 StructureCompositeWallRound Composite Wall Round -481880519 StructureCompositeWallType1 Composite Wall (Type 1) --2051950467 StructureCompositeWallType2 Composite Wall (Type 2) --222918421 StructureCompositeWallType3 Composite Wall (Type 3) -1825709384 StructureCompositeWallType4 Composite Wall (Type 4) -1782004613 StructureCompositeWallWindow Composite Window --2060571986 StructureCompositeWindow Composite Window --688284639 StructureCompositeWindowIron Iron Window --626563514 StructureComputer Computer -1420719315 StructureCondensationChamber Condensation Chamber --965741795 StructureCondensationValve Condensation Valve -235638270 StructureConsole Console --722284333 StructureConsoleDual Console Dual --53151617 StructureConsoleLED1x2 LED Display (Medium) --1949054743 StructureConsoleLED1x3 LED Display (Large) --815193061 StructureConsoleLED5 LED Display (Small) --1414618258 StructureConsoleLED5Large LED Display (Medium) -389066928 StructureConsoleLED8Large LED Display (Large) -801677497 StructureConsoleMonitor Console Monitor --1961153710 StructureControlChair Control Chair -1095344176 StructureConveyorCorner Conveyor (Corner) -1539241770 StructureConveyorRiser Conveyor (Riser) -2030838474 StructureConveyorStraight Conveyor (Straight) -1022368814 StructureConveyorStraightLong Conveyor (Straight Long) -277877682 StructureConveyorStraightShort Conveyor (Straight Short) --1968255729 StructureCornerLocker Corner Locker --733500083 StructureCrateMount Container Mount -1938254586 StructureCryoTube CryoTube -1443059329 StructureCryoTubeHorizontal Cryo Tube Horizontal --1381321828 StructureCryoTubeVertical Cryo Tube Vertical -1076425094 StructureDaylightSensor Daylight Sensor -265720906 StructureDeepMiner Deep Miner --1280984102 StructureDigitalValve Digital Valve -1944485013 StructureDiode LED -576516101 StructureDiodeSlide Diode Slide --137465079 StructureDockPortSide Dock (Port Side) -544677628 StructureDockShipSide Dock Ship Side -1968371847 StructureDrinkingFountain --1027802654 StructureDuctCorner Duct Corner -667066324 StructureDuctCrossJunction Duct Cross Junction --330605879 StructureDuctCrossJunction3 Duct Cross Junction3 -1915735914 StructureDuctCrossJunction4 Duct Cross Junction4 -86573052 StructureDuctCrossJunction5 Duct Cross Junction5 --1675514298 StructureDuctCrossJunction6 Duct Cross Junction6 --659165198 StructureDuctStraight Duct Straight -1264346285 StructureDuctTJunction Duct T Junction --1668992663 StructureElectrolyzer Electrolyzer -1307165496 StructureElectronicsPrinter Electronics Printer --827912235 StructureElevatorLevelFront Elevator Level (Cabled) -2060648791 StructureElevatorLevelIndustrial Elevator Level -826144419 StructureElevatorShaft Elevator Shaft (Cabled) -1998354978 StructureElevatorShaftIndustrial Elevator Shaft -1668452680 StructureEmergencyButton Important Button --1725252354 StructureEngineFuselage1x1 Engine Fuselage -2035781224 StructureEngineMountTypeA1 Engine Mount (Type A1) --530653230 StructureEngineMountTypeA2 Engine Mount (Type A2) --1755713724 StructureEngineMountTypeA3 Engine Mount (Type A3) -155024103 StructureEngineMountTypeA4 Engine Mount (Type A4) -1383783851 StructureEngineMountTypeB1 Engine Mount (Type B1) --881619951 StructureEngineMountTypeB2 Engine Mount (Type B2) --1133200249 StructureEngineMountTypeB3 Engine Mount (Type B3) -571484452 StructureEngineMountTypeB4 Engine Mount (Type B4) -1264708842 StructureEngineMountTypeC1 Engine Mount (Type C1) --764887728 StructureEngineMountTypeC2 Engine Mount (Type C2) --1519415866 StructureEngineMountTypeC3 Engine Mount (Type C3) -990582885 StructureEngineMountTypeC4 Engine Mount (Type C4) -69237293 StructureEngineMountTypeD1 Engine Mount (Type D1) --1658246249 StructureEngineMountTypeD2 Engine Mount (Type D2) --366077183 StructureEngineMountTypeD3 Engine Mount (Type D3) -1951043234 StructureEngineMountTypeD4 Engine Mount (Type D4) --1429782576 StructureEvaporationChamber Evaporation Chamber -195298587 StructureExpansionValve Expansion Valve -1378546186 StructureFabricator Fabricator -1622567418 StructureFairingTypeA1 Fairing (Type A1) --104908736 StructureFairingTypeA2 Fairing (Type A2) --1900541738 StructureFairingTypeA3 Fairing (Type A3) -1268464185 StructureFairingTypeB1 Fairing (Type B1) --762156157 StructureFairingTypeB2 Fairing (Type B2) -1384123256 StructureFairingTypeC1 Fairing (Type C1) --880190782 StructureFairingTypeC2 Fairing (Type C2) -499228095 StructureFairingTypeD1 Fairing (Type D1) --2067215355 StructureFairingTypeD2 Fairing (Type D2) --348054045 StructureFiltration Filtration --1529819532 StructureFlagSmall Small Flag --1535893860 StructureFlashingLight Flashing Light -839890807 StructureFlatBench Bench (Flat) -1048813293 StructureFloorDrain Passive Liquid Inlet -1432512808 StructureFrame Steel Frame --2112390778 StructureFrameCorner Steel Frame (Corner) -271315669 StructureFrameCornerCut Steel Frame (Corner Cut) --1240951678 StructureFrameIron Iron Frame --302420053 StructureFrameSide Steel Frame (Side) -958476921 StructureFridgeBig Fridge (Large) -751887598 StructureFridgeSmall Fridge Small -1947944864 StructureFurnace Furnace -1677968143 StructureFuselage1x1 Fuselage -1033024712 StructureFuselageTypeA1 Fuselage (Type A1) --1533287054 StructureFuselageTypeA2 Fuselage (Type A2) --744696348 StructureFuselageTypeA3 Fuselage (Type A3) -1308115015 StructureFuselageTypeA4 Fuselage (Type A4) -381675275 StructureFuselageTypeB1 Fuselage (Type B1) --1883851087 StructureFuselageTypeB2 Fuselage (Type B2) --122583513 StructureFuselageTypeB3 Fuselage (Type B3) -1725240196 StructureFuselageTypeB4 Fuselage (Type B4) -262461002 StructureFuselageTypeC1 Fuselage (Type C1) --1767012368 StructureFuselageTypeC2 Fuselage (Type C2) --508905626 StructureFuselageTypeC3 Fuselage (Type C3) -2144215749 StructureFuselageTypeC4 Fuselage (Type C4) -147395155 StructureFuselageTypeC5 Fuselage (Type C5) --1849670679 StructureFuselageTypeC6 Fuselage (Type C6) -1088766093 StructureFuselageTypeD1 Fuselage (Type D1) --638840521 StructureFuselageTypeD2 Fuselage (Type D2) --1360322143 StructureFuselageTypeD3 Fuselage (Type D3) -814724098 StructureFuselageTypeD4 Fuselage (Type D4) -1200129172 StructureFuselageTypeD5 Fuselage (Type D5) --561916626 StructureFuselageTypeD6 Fuselage (Type D6) -1165997963 StructureGasGenerator Gas Fuel Generator -2104106366 StructureGasMixer Gas Mixer --1252983604 StructureGasSensor Gas Sensor -1632165346 StructureGasTankStorage Gas Tank Storage --1680477930 StructureGasUmbilicalFemale Umbilical Socket (Gas) --648683847 StructureGasUmbilicalFemaleSide Umbilical Socket Angle (Gas) --1814939203 StructureGasUmbilicalMale Umbilical (Gas) --324331872 StructureGlassDoor Glass Door --214232602 StructureGovernedGasEngine Pumped Gas Engine --619745681 StructureGroundBasedTelescope Telescope --1758710260 StructureGrowLight Grow Light -1053578886 StructureGunTurret Gun Emplacement --1984007806 StructureGyroscope Gyroscope -643057382 StructureH2Combustor H2 Combustor -958056199 StructureHarvie Harvie --271480358 StructureHarvieReversed Harvie --1310204724 StructureHeatExchangeLiquidAndGas Heat Exchange Liquid And Gas -944685608 StructureHeatExchangeLiquidtoGas Heat Exchanger - Liquid + Gas -21266291 StructureHeatExchangerGastoGas Heat Exchanger - Gas --613784254 StructureHeatExchangerLiquidtoLiquid Heat Exchanger - Liquid -1070427573 StructureHorizontalAutoMiner OGRE --1888248335 StructureHydraulicPipeBender Hydraulic Pipe Bender -1812780450 StructureHydroponicsAutomated Automated Hydroponics -1441767298 StructureHydroponicsStation Hydroponics Station -1464854517 StructureHydroponicsTray Hydroponics Tray --1841632400 StructureHydroponicsTrayData Hydroponics Device -443849486 StructureIceCrusher Ice Crusher -1005491513 StructureIgniter Igniter --1693382705 StructureInLineTankGas1x1 In-Line Tank Small Gas -35149429 StructureInLineTankGas1x2 In-Line Tank Gas -543645499 StructureInLineTankLiquid1x1 In-Line Tank Small Liquid --1183969663 StructureInLineTankLiquid1x2 In-Line Tank Liquid -1818267386 StructureInsulatedInLineTankGas1x1 Insulated In-Line Tank Small Gas --177610944 StructureInsulatedInLineTankGas1x2 Insulated In-Line Tank Gas --813426145 StructureInsulatedInLineTankLiquid1x1 Insulated In-Line Tank Small Liquid -1452100517 StructureInsulatedInLineTankLiquid1x2 Insulated In-Line Tank Liquid --1967711059 StructureInsulatedPipeCorner Insulated Pipe (Corner) --92778058 StructureInsulatedPipeCrossJunction Insulated Pipe (Cross Junction) -1328210035 StructureInsulatedPipeCrossJunction3 Insulated Pipe (3-Way Junction) --783387184 StructureInsulatedPipeCrossJunction4 Insulated Pipe (4-Way Junction) --1505147578 StructureInsulatedPipeCrossJunction5 Insulated Pipe (5-Way Junction) -1061164284 StructureInsulatedPipeCrossJunction6 Insulated Pipe (6-Way Junction) -1713710802 StructureInsulatedPipeLiquidCorner Insulated Liquid Pipe (Corner) -1926651727 StructureInsulatedPipeLiquidCrossJunction Insulated Liquid Pipe (3-Way Junction) -363303270 StructureInsulatedPipeLiquidCrossJunction4 Insulated Liquid Pipe (4-Way Junction) -1654694384 StructureInsulatedPipeLiquidCrossJunction5 Insulated Liquid Pipe (5-Way Junction) --72748982 StructureInsulatedPipeLiquidCrossJunction6 Insulated Liquid Pipe (6-Way Junction) -295678685 StructureInsulatedPipeLiquidStraight Insulated Liquid Pipe (Straight) --532384855 StructureInsulatedPipeLiquidTJunction Insulated Liquid Pipe (T Junction) -2134172356 StructureInsulatedPipeStraight Insulated Pipe (Straight) --2076086215 StructureInsulatedPipeTJunction Insulated Pipe (T Junction) --31273349 StructureInsulatedTankConnector Insulated Tank Connector --1602030414 StructureInsulatedTankConnectorLiquid Insulated Tank Connector Liquid --2096421875 StructureInteriorDoorGlass Interior Door Glass -847461335 StructureInteriorDoorPadded Interior Door Padded -1981698201 StructureInteriorDoorPaddedThin Interior Door Padded Thin --1182923101 StructureInteriorDoorTriangle Interior Door Triangle --828056979 StructureKlaxon Klaxon Speaker --415420281 StructureLadder Ladder -1541734993 StructureLadderEnd Ladder End --1230658883 StructureLargeDirectHeatExchangeGastoGas Large Direct Heat Exchanger - Gas + Gas -1412338038 StructureLargeDirectHeatExchangeGastoLiquid Large Direct Heat Exchanger - Gas + Liquid -792686502 StructureLargeDirectHeatExchangeLiquidtoLiquid Large Direct Heat Exchange - Liquid + Liquid --566775170 StructureLargeExtendableRadiator Large Extendable Radiator --1351081801 StructureLargeHangerDoor Large Hangar Door -1913391845 StructureLargeSatelliteDish Large Satellite Dish --558953231 StructureLaunchMount Launch Mount -535711669 StructureLaunchPadCenter Launch Pad Center -1396343481 StructureLaunchPadModule Launch Pad Module -1160134233 StructureLaunchPadTower Launch Pad Tower --1641770018 StructureLaunchPadTowerScaffolding Launch Pad Tower Scaffolding -797794350 StructureLightLong Wall Light (Long) -1847265835 StructureLightLongAngled Wall Light (Long Angled) -555215790 StructureLightLongWide Wall Light (Long Wide) -1514476632 StructureLightRound Light Round -1592905386 StructureLightRoundAngled Light Round (Angled) -1436121888 StructureLightRoundSmall Light Round (Small) -1687692899 StructureLiquidDrain Active Liquid Outlet --2113838091 StructureLiquidPipeAnalyzer Liquid Pipe Analyzer --287495560 StructureLiquidPipeHeater Pipe Heater (Liquid) --782453061 StructureLiquidPipeOneWayValve One Way Valve (Liquid) -2072805863 StructureLiquidPipeRadiator Liquid Pipe Convection Radiator -482248766 StructureLiquidPressureRegulator Liquid Volume Regulator -1098900430 StructureLiquidTankBig Liquid Tank Big --1430440215 StructureLiquidTankBigInsulated Insulated Liquid Tank Big -1988118157 StructureLiquidTankSmall Liquid Tank Small -608607718 StructureLiquidTankSmallInsulated Insulated Liquid Tank Small -1691898022 StructureLiquidTankStorage Liquid Tank Storage --1051805505 StructureLiquidTurboVolumePump Turbo Volume Pump (Liquid) -1734723642 StructureLiquidUmbilicalFemale Umbilical Socket (Liquid) -1220870319 StructureLiquidUmbilicalFemaleSide Umbilical Socket Angle (Liquid) --1798420047 StructureLiquidUmbilicalMale Umbilical (Liquid) -1849974453 StructureLiquidValve Liquid Valve --454028979 StructureLiquidVolumePump Liquid Volume Pump --830017182 StructureLocker Locker --647164662 StructureLockerSmall Locker (Small) -264413729 StructureLogicBatchReader Batch Reader -436888930 StructureLogicBatchSlotReader Batch Slot Reader -1415443359 StructureLogicBatchWriter Batch Writer -491845673 StructureLogicButton Button --1489728908 StructureLogicCompare Logic Compare -554524804 StructureLogicDial Dial --1983222432 StructureLogicDisplay5 LED Display (Small) -1942143074 StructureLogicGate Logic Gate -2077593121 StructureLogicHashGen Logic Hash Generator -1657691323 StructureLogicMath Logic Math --1160020195 StructureLogicMathUnary Math Unary --851746783 StructureLogicMemory Logic Memory -929022276 StructureLogicMinMax Logic Min/Max -2096189278 StructureLogicMirror Logic Mirror --345383640 StructureLogicReader Logic Reader --124308857 StructureLogicReagentReader Reagent Reader -876108549 StructureLogicRocketDownlink Logic Rocket Downlink -546002924 StructureLogicRocketUplink Logic Uplink -1822736084 StructureLogicSelect Logic Select --767867194 StructureLogicSlotReader Slot Reader -873418029 StructureLogicSorter Logic Sorter -1220484876 StructureLogicSwitch Lever -321604921 StructureLogicSwitch2 Switch --693235651 StructureLogicTransmitter Logic Transmitter -391271589 StructureLogicUnit Logic Unit --1326019434 StructureLogicWriter Logic Writer --1321250424 StructureLogicWriterSwitch Logic Writer Switch --1909140125 StructureLowVolumeLiquidPipeCorner Low Volume Liquid Pipe (Corner) -697935625 StructureLowVolumeLiquidPipeCrossJunction Low Volume Liquid Pipe (Cross Junction) -338145176 StructureLowVolumeLiquidPipeCrossJunction3 Low Volume Liquid Pipe (3-Way Junction) --1975305669 StructureLowVolumeLiquidPipeCrossJunction4 Low Volume Liquid Pipe (4-Way Junction) --45872467 StructureLowVolumeLiquidPipeCrossJunction5 Low Volume Liquid Pipe (5-Way Junction) -1682791191 StructureLowVolumeLiquidPipeCrossJunction6 Low Volume Liquid Pipe (6-Way Junction) --923441517 StructureLowVolumeLiquidPipeStraight Low Volume Liquid Pipe (Straight) -1912174058 StructureLowVolumeLiquidPipeTJunction Low Volume Liquid Pipe (T Junction) --1442601681 StructureLowVolumePipeCorner Low Volume Pipe (Corner) --1656624838 StructureLowVolumePipeCrossJunction Low Volume Pipe (Cross Junction) --1421666624 StructureLowVolumePipeCrossJunction3 Low Volume Pipe (3-Way Junction) -891781987 StructureLowVolumePipeCrossJunction4 Low Volume Pipe (4-Way Junction) -1109439477 StructureLowVolumePipeCrossJunction5 Low Volume Pipe (5-Way Junction) --618012081 StructureLowVolumePipeCrossJunction6 Low Volume Pipe (6-Way Junction) --1002687599 StructureLowVolumePipeStraight Low Volume Pipe (Straight) --1610883693 StructureLowVolumePipeTJunction Low Volume Pipe (T Junction) --1808154199 StructureManualHatch Manual Hatch --1918215845 StructureMediumConvectionRadiator Medium Convection Radiator --1169014183 StructureMediumConvectionRadiatorLiquid Medium Convection Radiator Liquid --566348148 StructureMediumHangerDoor Medium Hangar Door --975966237 StructureMediumRadiator Medium Radiator --1141760613 StructureMediumRadiatorLiquid Medium Radiator Liquid --1093860567 StructureMediumRocketGasFuelTank Gas Capsule Tank Medium -1143639539 StructureMediumRocketLiquidFuelTank Liquid Capsule Tank Medium --1713470563 StructureMotionSensor Motion Sensor -1898243702 StructureNitrolyzer Nitrolyzer -790511747 StructureNosecone1x1 Nosecone -322782515 StructureOccupancySensor Occupancy Sensor --744355143 StructureOneWayValve One Way Valve (Gas) --385751893 StructureOrganicsPrinter Organics Printer --1794932560 StructureOverheadShortCornerLocker Overhead Corner Locker -1468249454 StructureOverheadShortLocker Overhead Locker --56441216 StructurePassiveLargeRadiator Medium Convection Radiator -2066977095 StructurePassiveLargeRadiatorGas Medium Convection Radiator -24786172 StructurePassiveLargeRadiatorLiquid Medium Convection Radiator Liquid -1812364811 StructurePassiveLiquidDrain Passive Liquid Drain -335498166 StructurePassiveVent Passive Vent -1363077139 StructurePassiveVentInsulated Insulated Passive Vent --1674187440 StructurePassthroughHeatExchangerGasToGas CounterFlow Heat Exchanger - Gas + Gas -1928991265 StructurePassthroughHeatExchangerGasToLiquid CounterFlow Heat Exchanger - Gas + Liquid --1472829583 StructurePassthroughHeatExchangerLiquidToLiquid CounterFlow Heat Exchanger - Liquid + Liquid --1434523206 StructurePictureFrameThickLandscapeLarge Picture Frame Thick Landscape Large --2041566697 StructurePictureFrameThickLandscapeSmall Picture Frame Thick Landscape Small -950004659 StructurePictureFrameThickMountLandscapeLarge Picture Frame Thick Landscape Large -347154462 StructurePictureFrameThickMountLandscapeSmall Picture Frame Thick Landscape Small --1459641358 StructurePictureFrameThickMountPortraitLarge Picture Frame Thick Mount Portrait Large --2066653089 StructurePictureFrameThickMountPortraitSmall Picture Frame Thick Mount Portrait Small --1686949570 StructurePictureFrameThickPortraitLarge Picture Frame Thick Portrait Large --1218579821 StructurePictureFrameThickPortraitSmall Picture Frame Thick Portrait Small --1418288625 StructurePictureFrameThinLandscapeLarge Picture Frame Thin Landscape Large --2024250974 StructurePictureFrameThinLandscapeSmall Picture Frame Thin Landscape Small --1146760430 StructurePictureFrameThinMountLandscapeLarge Picture Frame Thin Landscape Large --1752493889 StructurePictureFrameThinMountLandscapeSmall Picture Frame Thin Landscape Small -1094895077 StructurePictureFrameThinMountPortraitLarge Picture Frame Thin Portrait Large -1835796040 StructurePictureFrameThinMountPortraitSmall Picture Frame Thin Portrait Small -1212777087 StructurePictureFrameThinPortraitLarge Picture Frame Thin Portrait Large -1684488658 StructurePictureFrameThinPortraitSmall Picture Frame Thin Portrait Small -435685051 StructurePipeAnalysizer Pipe Analyzer --1785673561 StructurePipeCorner Pipe (Corner) -465816159 StructurePipeCowl Pipe Cowl --1405295588 StructurePipeCrossJunction Pipe (Cross Junction) -2038427184 StructurePipeCrossJunction3 Pipe (3-Way Junction) --417629293 StructurePipeCrossJunction4 Pipe (4-Way Junction) --1877193979 StructurePipeCrossJunction5 Pipe (5-Way Junction) -152378047 StructurePipeCrossJunction6 Pipe (6-Way Junction) --419758574 StructurePipeHeater Pipe Heater (Gas) -1286441942 StructurePipeIgniter Pipe Igniter --2068497073 StructurePipeInsulatedLiquidCrossJunction Insulated Liquid Pipe (Cross Junction) --999721119 StructurePipeLabel Pipe Label --1856720921 StructurePipeLiquidCorner Liquid Pipe (Corner) -1848735691 StructurePipeLiquidCrossJunction Liquid Pipe (Cross Junction) -1628087508 StructurePipeLiquidCrossJunction3 Liquid Pipe (3-Way Junction) --9555593 StructurePipeLiquidCrossJunction4 Liquid Pipe (4-Way Junction) --2006384159 StructurePipeLiquidCrossJunction5 Liquid Pipe (5-Way Junction) -291524699 StructurePipeLiquidCrossJunction6 Liquid Pipe (6-Way Junction) -667597982 StructurePipeLiquidStraight Liquid Pipe (Straight) -262616717 StructurePipeLiquidTJunction Liquid Pipe (T Junction) --1798362329 StructurePipeMeter Pipe Meter -1580412404 StructurePipeOneWayValve One Way Valve (Gas) -1305252611 StructurePipeOrgan Pipe Organ -1696603168 StructurePipeRadiator Pipe Convection Radiator --399883995 StructurePipeRadiatorFlat Pipe Radiator -2024754523 StructurePipeRadiatorFlatLiquid Pipe Radiator Liquid -73728932 StructurePipeStraight Pipe (Straight) --913817472 StructurePipeTJunction Pipe (T Junction) --1125641329 StructurePlanter Planter -1559586682 StructurePlatformLadderOpen Ladder Platform -34040217 StructurePlatformLadderOpenRotated Ladder Platform Rotated -989835703 StructurePlinth Plinth --899013427 StructurePortablesConnector Portables Connector --782951720 StructurePowerConnector Power Connector --65087121 StructurePowerTransmitter Microwave Power Transmitter --327468845 StructurePowerTransmitterOmni Power Transmitter Omni -1195820278 StructurePowerTransmitterReceiver Microwave Power Receiver -101488029 StructurePowerUmbilicalFemale Umbilical Socket (Power) -1922506192 StructurePowerUmbilicalFemaleSide Umbilical Socket Angle (Power) -1529453938 StructurePowerUmbilicalMale Umbilical (Power) -938836756 StructurePoweredVent Powered Vent --785498334 StructurePoweredVentLarge Powered Vent Large -23052817 StructurePressurantValve Pressurant Valve --624011170 StructurePressureFedGasEngine Pressure Fed Gas Engine -379750958 StructurePressureFedLiquidEngine Pressure Fed Liquid Engine --2008706143 StructurePressurePlateLarge Trigger Plate (Large) -1269458680 StructurePressurePlateMedium Trigger Plate (Medium) --1536471028 StructurePressurePlateSmall Trigger Plate (Small) -209854039 StructurePressureRegulator Pressure Regulator -568800213 StructureProximitySensor Proximity Sensor --2031440019 StructurePumpedLiquidEngine Pumped Liquid Engine --737232128 StructurePurgeValve Purge Valve --44928532 StructureRTG Creative RTG -1905352762 StructureRTGSurvival RTG --1756913871 StructureRailing Railing Industrial (Type 1) --1633947337 StructureRecycler Recycler --1577831321 StructureRefrigeratedVendingMachine Refrigerated Vending Machine -2027713511 StructureReinforcedCompositeWindow Reinforced Window (Composite) --816454272 StructureReinforcedCompositeWindowSteel Reinforced Window (Composite Steel) -1939061729 StructureReinforcedWallPaddedWindow Reinforced Window (Padded) -158502707 StructureReinforcedWallPaddedWindowThin Reinforced Window (Thin) --796627526 StructureResearchMachine Research Machine --2786426 StructureReverseElectrolyzer Reverse Electrolyzer -808389066 StructureRocketAvionics Rocket Avionics -997453927 StructureRocketCelestialTracker Rocket Celestial Tracker -1977688565 StructureRocketChuteStorage Rocket Chute Storage -150135861 StructureRocketCircuitHousing Rocket Circuit Housing -177639794 StructureRocketEngine Rocket Engine -1234268097 StructureRocketEngineDestroyed Rocket Engine (Destroyed) -823909553 StructureRocketEngineSmall Rocket Engine (Small) -178472613 StructureRocketEngineTiny Rocket Engine (Tiny) -1781051034 StructureRocketManufactory Rocket Manufactory --2087223687 StructureRocketMiner Rocket Miner -407081452 StructureRocketPlaceHolderMiner Rocket Place Holder Miner -2014252591 StructureRocketScanner Rocket Scanner --654619479 StructureRocketTower Launch Tower -518925193 StructureRocketTransformerSmall Transformer Small (Rocket) -806513938 StructureRover Rover Frame --1875856925 StructureSDBHopper SDB Hopper -467225612 StructureSDBHopperAdvanced SDB Hopper Advanced -1155865682 StructureSDBSilo SDB Silo -439026183 StructureSatelliteDish Medium Satellite Dish --641491515 StructureSecurityPrinter Security Printer -1172114950 StructureShelf Shelf -182006674 StructureShelfMedium Shelf Medium -1330754486 StructureShortCornerLocker Short Corner Locker --554553467 StructureShortLocker Short Locker --775128944 StructureShower Shower --1081797501 StructureShowerPowered Shower (Powered) --1309237526 StructureShuttleLandingPad Landing Pad -879058460 StructureSign1x1 Sign 1x1 -908320837 StructureSign2x1 Sign 2x1 --492611 StructureSingleBed Single Bed --1467449329 StructureSleeper Sleeper -1213495833 StructureSleeperLeft Sleeper Left --1812330717 StructureSleeperRight Sleeper Right --1300059018 StructureSleeperVertical Sleeper Vertical -1382098999 StructureSleeperVerticalDroid Droid Sleeper Vertical -1310303582 StructureSmallDirectHeatExchangeGastoGas Small Direct Heat Exchanger - Gas + Gas -1825212016 StructureSmallDirectHeatExchangeLiquidtoGas Small Direct Heat Exchanger - Liquid + Gas --507770416 StructureSmallDirectHeatExchangeLiquidtoLiquid Small Direct Heat Exchanger - Liquid + Liquid --2138748650 StructureSmallSatelliteDish Small Satellite Dish --1633000411 StructureSmallTableBacklessDouble Small (Table Backless Double) --1897221677 StructureSmallTableBacklessSingle Small (Table Backless Single) -1260651529 StructureSmallTableDinnerSingle Small (Table Dinner Single) --660451023 StructureSmallTableRectangleDouble Small (Table Rectangle Double) --924678969 StructureSmallTableRectangleSingle Small (Table Rectangle Single) --19246131 StructureSmallTableThickDouble Small (Table Thick Double) --291862981 StructureSmallTableThickSingle Small Table (Thick Single) --2045627372 StructureSolarPanel Solar Panel --1554349863 StructureSolarPanel45 Solar Panel (Angled) -930865127 StructureSolarPanel45Reinforced Solar Panel (Heavy Angled) --539224550 StructureSolarPanelDual Solar Panel (Dual) --1545574413 StructureSolarPanelDualReinforced Solar Panel (Heavy Dual) -1968102968 StructureSolarPanelFlat Solar Panel (Flat) -1697196770 StructureSolarPanelFlatReinforced Solar Panel (Heavy Flat) --775884649 StructureSolarPanelFused Solar Panel --934345724 StructureSolarPanelReinforced Solar Panel (Heavy) -813146305 StructureSolidFuelGenerator Generator (Solid Fuel) --1009150565 StructureSorter Sorter -192735066 StructureSpawnPoint Spawn Point --947062903 StructureSphericalTank Spherical Tank --2020231820 StructureStacker Stacker -1585641623 StructureStackerReverse Stacker -1405018945 StructureStairs4x2 Stairs -155214029 StructureStairs4x2RailL Stairs with Rail (Left) --212902482 StructureStairs4x2RailR Stairs with Rail (Right) --1088008720 StructureStairs4x2Rails Stairs with Rails -505924160 StructureStairwellBackLeft Stairwell (Back Left) --862048392 StructureStairwellBackPassthrough Stairwell (Back Passthrough) --2128896573 StructureStairwellBackRight Stairwell (Back Right) --37454456 StructureStairwellFrontLeft Stairwell (Front Left) --1625452928 StructureStairwellFrontPassthrough Stairwell (Front Passthrough) -340210934 StructureStairwellFrontRight Stairwell (Front Right) -2049879875 StructureStairwellNoDoors Stairwell (No Doors) --411792553 StructureStellarAnchor Stellar Anchor --260316435 StructureStirlingEngine Stirling Engine --793623899 StructureStorageLocker Locker -255034731 StructureSuitStorage Suit Storage --1606848156 StructureTankBig Large Tank -1280378227 StructureTankBigInsulated Tank Big (Insulated) --1276379454 StructureTankConnector Tank Connector -1331802518 StructureTankConnectorLiquid Liquid Tank Connector -1013514688 StructureTankSmall Small Tank -955744474 StructureTankSmallAir Small Tank (Air) -2102454415 StructureTankSmallFuel Small Tank (Fuel) -272136332 StructureTankSmallInsulated Tank Small (Insulated) --465741100 StructureToolManufactory Tool Manufactory -1473807953 StructureTorpedoRack Torpedo Rack --1757426073 StructureTorpedoTube Torpedo Launcher -1570931620 StructureTraderWaypoint Trader Waypoint --1423212473 StructureTransformer Transformer (Large) --1065725831 StructureTransformerMedium Transformer (Medium) -833912764 StructureTransformerMediumReversed Transformer Reversed (Medium) --890946730 StructureTransformerSmall Transformer (Small) -1054059374 StructureTransformerSmallReversed Transformer Reversed (Small) -1282191063 StructureTurbineGenerator Turbine Generator -1310794736 StructureTurboVolumePump Turbo Volume Pump (Gas) -750118160 StructureUnloader Unloader --1892095368 StructureUnpoweredHatch Unpowered Hatch -1622183451 StructureUprightWindTurbine Upright Wind Turbine --692036078 StructureValve Valve --443130773 StructureVendingMachine Vending Machine --321403609 StructureVolumePump Volume Pump --858143148 StructureWallArch Wall (Arch) -1649708822 StructureWallArchArrow Wall (Arch Arrow) -1794588890 StructureWallArchCornerRound Wall (Arch Corner Round) --1963016580 StructureWallArchCornerSquare Wall (Arch Corner Square) -1281911841 StructureWallArchCornerTriangle Wall (Arch Corner Triangle) -1182510648 StructureWallArchPlating Wall (Arch Plating) -782529714 StructureWallArchTwoTone Wall (Arch Two Tone) --739292323 StructureWallCooler Wall Cooler -1635864154 StructureWallFlat Wall (Flat) -898708250 StructureWallFlatCornerRound Wall (Flat Corner Round) -298130111 StructureWallFlatCornerSquare Wall (Flat Corner Square) -2097419366 StructureWallFlatCornerTriangle Wall (Flat Corner Triangle) --1161662836 StructureWallFlatCornerTriangleFlat Wall (Flat Corner Triangle Flat) -1979212240 StructureWallGeometryCorner Wall (Geometry Corner) -1049735537 StructureWallGeometryStreight Wall (Geometry Straight) -1602758612 StructureWallGeometryT Wall (Geometry T) --1427845483 StructureWallGeometryTMirrored Wall (Geometry T Mirrored) -24258244 StructureWallHeater Wall Heater -1287324802 StructureWallIron Iron Wall (Type 1) -1485834215 StructureWallIron02 Iron Wall (Type 2) -798439281 StructureWallIron03 Iron Wall (Type 3) --1309433134 StructureWallIron04 Iron Wall (Type 4) -1492930217 StructureWallLargePanel Wall (Large Panel) --776581573 StructureWallLargePanelArrow Wall (Large Panel Arrow) --1860064656 StructureWallLight Wall Light --1306415132 StructureWallLightBattery Wall Light (Battery) -1590330637 StructureWallPaddedArch Wall (Padded Arch) --1126688298 StructureWallPaddedArchCorner Wall (Padded Arch Corner) -1171987947 StructureWallPaddedArchLightFittingTop Wall (Padded Arch Light Fitting Top) --1546743960 StructureWallPaddedArchLightsFittings Wall (Padded Arch Lights Fittings) --155945899 StructureWallPaddedCorner Wall (Padded Corner) -1183203913 StructureWallPaddedCornerThin Wall (Padded Corner Thin) -8846501 StructureWallPaddedNoBorder Wall (Padded No Border) -179694804 StructureWallPaddedNoBorderCorner Wall (Padded No Border Corner) --1611559100 StructureWallPaddedThinNoBorder Wall (Padded Thin No Border) -1769527556 StructureWallPaddedThinNoBorderCorner Wall (Padded Thin No Border Corner) -2087628940 StructureWallPaddedWindow Wall (Padded Window) --37302931 StructureWallPaddedWindowThin Wall (Padded Window Thin) -635995024 StructureWallPadding Wall (Padding) --1243329828 StructureWallPaddingArchVent Wall (Padding Arch Vent) -2024882687 StructureWallPaddingLightFitting Wall (Padding Light Fitting) --1102403554 StructureWallPaddingThin Wall (Padding Thin) -26167457 StructureWallPlating Wall (Plating) --1302523785 StructureWallSimple Wall (Simple) --825106501 StructureWallSmallPanels Wall (Small Panels) -619828719 StructureWallSmallPanelsAndHatch Wall (Small Panels And Hatch) --639306697 StructureWallSmallPanelsArrow Wall (Small Panels Arrow) -386820253 StructureWallSmallPanelsMonoChrome Wall (Small Panels Mono Chrome) --1407480603 StructureWallSmallPanelsOpen Wall (Small Panels Open) -1709994581 StructureWallSmallPanelsTwoTone Wall (Small Panels Two Tone) --1177469307 StructureWallVent Wall Vent --1178961954 StructureWaterBottleFiller Water Bottle Filler -1433754995 StructureWaterBottleFillerBottom Water Bottle Filler Bottom --756587791 StructureWaterBottleFillerPowered Waterbottle Filler -1986658780 StructureWaterBottleFillerPoweredBottom Waterbottle Filler --517628750 StructureWaterDigitalValve Liquid Digital Valve --1687126443 StructureWaterPipeHeater Pipe Heater (Gas) -433184168 StructureWaterPipeMeter Liquid Pipe Meter -887383294 StructureWaterPurifier Water Purifier --1369060582 StructureWaterWallCooler Liquid Wall Cooler -1997212478 StructureWeatherStation Weather Station --2082355173 StructureWindTurbine Wind Turbine -2056377335 StructureWindowShutter Window Shutter -328180977 StrutureDrinkingFountain Drinking Fountain -733496620 Tomato Tomato -1700018136 ToolPrinterMod Tool Printer Mod -94730034 ToyLuna Toy Luna --820692038 TriggerZone Trigger Zone --2083426457 UniformCommander Uniform Commander --48342840 UniformMarine Marine Uniform -810053150 UniformOrangeJumpSuit Jump Suit (Orange) --208860272 Uranium Uranium -1134509928 WallFrameCornerCut Steel Frame (Corner Cut) -1787814293 Waspaloy Waspaloy -789494694 WeaponEnergy Weapon Energy --385323479 WeaponPistolEnergy Energy Pistol -1154745374 WeaponRifleEnergy Energy Rifle --1102977898 WeaponTorpedo Torpedo --686695134 Wheat Wheat diff --git a/ic10emu/src/device.rs b/ic10emu/src/device.rs index 205a984..48b2e3d 100644 --- a/ic10emu/src/device.rs +++ b/ic10emu/src/device.rs @@ -1,7 +1,11 @@ use crate::{ - grammar::{LogicType, ReagentMode, SlotLogicType}, - interpreter::{ICError, ICState}, + errors::ICError, + interpreter::ICState, network::{CableConnectionType, Connection}, + vm::enums::script_enums::{ + LogicBatchMethod as BatchMode, LogicReagentMode as ReagentMode, + LogicSlotType as SlotLogicType, LogicType, + }, vm::VM, }; use std::{collections::BTreeMap, ops::Deref}; diff --git a/ic10emu/src/errors.rs b/ic10emu/src/errors.rs new file mode 100644 index 0000000..23d42c4 --- /dev/null +++ b/ic10emu/src/errors.rs @@ -0,0 +1,209 @@ +use crate::vm::instructions::enums::InstructionOp; +use serde::{Deserialize, Serialize}; +use std::error::Error as StdError; +use std::fmt::Display; +use thiserror::Error; + +#[derive(Error, Debug, Serialize, Deserialize)] +pub enum VMError { + #[error("device with id '{0}' does not exist")] + UnknownId(u32), + #[error("ic with id '{0}' does not exist")] + UnknownIcId(u32), + #[error("device with id '{0}' does not have a ic slot")] + NoIC(u32), + #[error("ic encountered an error: {0}")] + ICError(#[from] ICError), + #[error("ic encountered an error: {0}")] + LineError(#[from] LineError), + #[error("invalid network id {0}")] + InvalidNetwork(u32), + #[error("device {0} not visible to device {1} (not on the same networks)")] + DeviceNotVisible(u32, u32), + #[error("a device with id {0} already exists")] + IdInUse(u32), + #[error("device(s) with ids {0:?} already exist")] + IdsInUse(Vec), + #[error("atempt to use a set of id's with duplicates: id(s) {0:?} exsist more than once")] + DuplicateIds(Vec), +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct LineError { + pub error: ICError, + pub line: u32, +} + +impl Display for LineError { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "Error on line {}: {}", self.line, self.error) + } +} + +impl StdError for LineError {} + +#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)] +pub struct ParseError { + pub line: usize, + pub start: usize, + pub end: usize, + pub msg: String, +} + +impl Display for ParseError { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!( + f, + "{} at line {} {}:{}", + self.msg, self.line, self.start, self.end + ) + } +} + +impl StdError for ParseError {} + +impl ParseError { + /// Offset the ParseError in it's line, adding the passed values to it's `start` and `end` + #[must_use] + pub fn offset(self, offset: usize) -> Self { + ParseError { + start: self.start + offset, + end: self.end + offset, + ..self + } + } + + /// Offset the ParseError line, adding the passed value to it's `line` + #[must_use] + pub fn offset_line(self, offset: usize) -> Self { + ParseError { + line: self.line + offset, + start: self.start, + ..self + } + } + + /// Mark the parse error as extending 'length' bytes from `start` + #[must_use] + pub fn span(self, length: usize) -> Self { + ParseError { + start: self.start, + end: self.start + length, + ..self + } + } +} + +#[derive(Debug, Error, Clone, Serialize, Deserialize)] +pub enum ICError { + #[error("error compiling code: {0}")] + ParseError(#[from] ParseError), + #[error("duplicate label {0}")] + DuplicateLabel(String), + #[error("instruction pointer out of range: '{0}'")] + InstructionPointerOutOfRange(u32), + #[error("register pointer out of range: '{0}'")] + RegisterIndexOutOfRange(f64), + #[error("device pointer out of range: '{0}'")] + DeviceIndexOutOfRange(f64), + #[error("stack index out of range: '{0}'")] + StackIndexOutOfRange(f64), + #[error("slot index out of range: '{0}'")] + SlotIndexOutOfRange(f64), + #[error("pin index {0} out of range 0-6")] + PinIndexOutOfRange(usize), + #[error("connection index {0} out of range {1}")] + ConnectionIndexOutOfRange(usize, usize), + #[error("unknown device ID '{0}'")] + UnknownDeviceID(f64), + #[error("too few operands!: provide: '{provided}', desired: '{desired}'")] + TooFewOperands { provided: u32, desired: u32 }, + #[error("too many operands!: provide: '{provided}', desired: '{desired}'")] + TooManyOperands { provided: u32, desired: u32 }, + #[error("incorrect operand type for instruction `{inst}` operand {index}, not a {desired} ")] + IncorrectOperandType { + inst: InstructionOp, + index: u32, + desired: String, + }, + #[error("unknown identifier {0}")] + UnknownIdentifier(String), + #[error("device Not Set")] + DeviceNotSet, + #[error("shift Underflow i64(signed long)")] + ShiftUnderflowI64, + #[error("shift Overflow i64(signed long)")] + ShiftOverflowI64, + #[error("shift underflow i32(signed int)")] + ShiftUnderflowI32, + #[error("shift overflow i32(signed int)")] + ShiftOverflowI32, + #[error("stack underflow")] + StackUnderflow, + #[error("stack overflow")] + StackOverflow, + #[error("duplicate define '{0}'")] + DuplicateDefine(String), + #[error("read only field '{0}'")] + ReadOnlyField(String), + #[error("write only field '{0}'")] + WriteOnlyField(String), + #[error("device has no field '{0}'")] + DeviceHasNoField(String), + #[error("device has not ic")] + DeviceHasNoIC, + #[error("unknown device '{0}'")] + UnknownDeviceId(f64), + #[error("unknown logic type '{0}'")] + UnknownLogicType(f64), + #[error("unknown slot logic type '{0}'")] + UnknownSlotLogicType(f64), + #[error("unknown batch mode '{0}'")] + UnknownBatchMode(f64), + #[error("unknown reagent mode '{0}'")] + UnknownReagentMode(f64), + #[error("type value not known")] + TypeValueNotKnown, + #[error("empty device list")] + EmptyDeviceList, + #[error("connection specifier missing")] + MissingConnectionSpecifier, + #[error("no data network on connection '{0}'")] + NotACableConnection(usize), + #[error("network not connected on connection '{0}'")] + NetworkNotConnected(usize), + #[error("bad network Id '{0}'")] + BadNetworkId(u32), + #[error("channel index out of range '{0}'")] + ChannelIndexOutOfRange(usize), + #[error("slot has no occupant")] + SlotNotOccupied, + #[error("generated Enum {0} has no value attached. Report this error.")] + NoGeneratedValue(String), + #[error("generated Enum {0}'s value does not parse as {1} . Report this error.")] + BadGeneratedValueParse(String, String), +} + +impl ICError { + pub const fn too_few_operands(provided: usize, desired: u32) -> Self { + ICError::TooFewOperands { + provided: provided as u32, + desired, + } + } + + pub const fn too_many_operands(provided: usize, desired: u32) -> Self { + ICError::TooManyOperands { + provided: provided as u32, + desired, + } + } + + pub const fn mismatch_operands(provided: usize, desired: u32) -> Self { + if provided < desired as usize { + ICError::too_few_operands(provided, desired) + } else { + ICError::too_many_operands(provided, desired) + } + } +} diff --git a/ic10emu/src/grammar.rs b/ic10emu/src/grammar.rs index b1ff57e..0ba5559 100644 --- a/ic10emu/src/grammar.rs +++ b/ic10emu/src/grammar.rs @@ -1,138 +1,62 @@ -use crate::interpreter::{self, ICError}; +use crate::interpreter; use crate::tokens::{SplitConsecutiveIndicesExt, SplitConsecutiveWithIndices}; +use crate::vm::enums::script_enums::{ + LogicBatchMethod, LogicReagentMode, LogicSlotType, LogicType, +}; +use crate::vm::instructions::{ + enums::InstructionOp, + operands::{Device, DeviceSpec, Identifier, Number, Operand, RegisterSpec}, + Instruction, CONSTANTS_LOOKUP, +}; +use crate::{ + errors::{ICError, ParseError}, + vm::enums::basic_enums::BasicEnum, +}; use itertools::Itertools; -use std::error::Error; use std::fmt::Display; use std::str::FromStr; -use strum::EnumProperty; +use strum::{EnumProperty, IntoEnumIterator}; -pub mod generated { - use super::ParseError; - use crate::interpreter::ICError; - use serde::{Deserialize, Serialize}; - use std::str::FromStr; - use strum::{ - AsRefStr, Display, EnumIter, EnumProperty, EnumString, FromRepr, IntoEnumIterator, - }; - - include!(concat!(env!("OUT_DIR"), "/instructions.rs")); - include!(concat!(env!("OUT_DIR"), "/logictypes.rs")); - include!(concat!(env!("OUT_DIR"), "/modes.rs")); - include!(concat!(env!("OUT_DIR"), "/constants.rs")); - include!(concat!(env!("OUT_DIR"), "/enums.rs")); - - impl TryFrom for LogicType { - type Error = ICError; - fn try_from(value: f64) -> Result>::Error> { - if let Some(lt) = LogicType::iter().find(|lt| { - lt.get_str("value") - .map(|val| val.parse::().unwrap() as f64 == value) - .unwrap_or(false) - }) { - Ok(lt) - } else { - Err(crate::interpreter::ICError::UnknownLogicType(value)) - } - } - } - - impl TryFrom for SlotLogicType { - type Error = ICError; - fn try_from(value: f64) -> Result>::Error> { - if let Some(slt) = SlotLogicType::iter().find(|lt| { - lt.get_str("value") - .map(|val| val.parse::().unwrap() as f64 == value) - .unwrap_or(false) - }) { - Ok(slt) - } else { - Err(crate::interpreter::ICError::UnknownSlotLogicType(value)) - } - } - } - - impl TryFrom for BatchMode { - type Error = ICError; - fn try_from(value: f64) -> Result>::Error> { - if let Some(bm) = BatchMode::iter().find(|lt| { - lt.get_str("value") - .map(|val| val.parse::().unwrap() as f64 == value) - .unwrap_or(false) - }) { - Ok(bm) - } else { - Err(crate::interpreter::ICError::UnknownBatchMode(value)) - } - } - } - - impl TryFrom for ReagentMode { - type Error = ICError; - fn try_from(value: f64) -> Result>::Error> { - if let Some(rm) = ReagentMode::iter().find(|lt| { - lt.get_str("value") - .map(|val| val.parse::().unwrap() as f64 == value) - .unwrap_or(false) - }) { - Ok(rm) - } else { - Err(crate::interpreter::ICError::UnknownReagentMode(value)) - } +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)) } } } -pub use generated::*; -use serde::{Deserialize, Serialize}; - -#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)] -pub struct ParseError { - pub line: usize, - pub start: usize, - pub end: usize, - pub msg: String, -} - -impl Display for ParseError { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!( - f, - "{} at line {} {}:{}", - self.msg, self.line, self.start, self.end - ) +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::UnknownSlotLogicType(value)) + } } } -impl Error for ParseError {} - -impl ParseError { - /// Offset the ParseError in it's line, adding the passed values to it's `start` and `end` - #[must_use] - pub fn offset(self, offset: usize) -> Self { - ParseError { - start: self.start + offset, - end: self.end + offset, - ..self +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)) } } +} - /// Offset the ParseError line, adding the passed value to it's `line` - #[must_use] - pub fn offset_line(self, offset: usize) -> Self { - ParseError { - line: self.line + offset, - start: self.start, - ..self - } - } - - /// Mark the parse error as extending 'length' bytes from `start` - #[must_use] - pub fn span(self, length: usize) -> Self { - ParseError { - start: self.start, - end: self.start + length, - ..self +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)) } } } @@ -246,12 +170,6 @@ impl FromStr for Comment { } } -#[derive(PartialEq, Debug, Clone, Serialize, Deserialize)] -pub struct Instruction { - pub instruction: InstructionOp, - pub operands: Vec, -} - impl FromStr for Instruction { type Err = ParseError; /// parse a non-empty string for an instruction and it's operands @@ -259,9 +177,16 @@ impl FromStr for Instruction { let mut tokens_iter = s.split_consecutive_with_indices(&[' ', '\t'][..]); let instruction: InstructionOp = { if let Some((index, token)) = tokens_iter.next() { - token - .parse::() - .map_err(|e| e.offset(index).span(token.len())) + token.parse::().map_err(|_e| { + ParseError { + line: 0, + start: 0, + end: 0, + msg: format!("unknown instruction '{token}'"), + } + .offset(index) + .span(token.len()) + }) } else { Err(ParseError { line: 0, @@ -320,290 +245,6 @@ fn get_operand_tokens<'a>( operand_tokens } -#[derive(PartialEq, Eq, Debug, Clone, Copy, Serialize, Deserialize)] -pub enum Device { - Db, - Numbered(u32), - Indirect { indirection: u32, target: u32 }, -} - -#[derive(PartialEq, Debug, Clone, Serialize, Deserialize)] -pub struct RegisterSpec { - pub indirection: u32, - pub target: u32, -} - -#[derive(PartialEq, Debug, Clone, Serialize, Deserialize)] -pub struct DeviceSpec { - pub device: Device, - pub connection: Option, -} - -#[derive(PartialEq, Debug, Clone, Serialize, Deserialize)] -pub enum Operand { - RegisterSpec(RegisterSpec), - DeviceSpec(DeviceSpec), - Number(Number), - Type { - logic_type: Option, - slot_logic_type: Option, - batch_mode: Option, - reagent_mode: Option, - identifier: Identifier, - }, - Identifier(Identifier), -} - -impl Operand { - pub fn as_value( - &self, - ic: &interpreter::IC, - inst: InstructionOp, - index: u32, - ) -> Result { - match self.translate_alias(ic) { - Operand::RegisterSpec(RegisterSpec { - indirection, - target, - }) => ic.get_register(indirection, target), - Operand::Number(num) => Ok(num.value()), - Operand::Type { - logic_type, - slot_logic_type, - batch_mode, - reagent_mode, - identifier: _, - } => { - if let Some(lt) = logic_type { - Ok(lt - .get_str("value") - .ok_or_else(|| ICError::NoGeneratedValue(lt.to_string()))? - .parse::() - .map_err(|_| { - ICError::BadGeneratedValueParse(lt.to_string(), "u16".to_owned()) - })? as f64) - } else if let Some(slt) = slot_logic_type { - Ok(slt - .get_str("value") - .ok_or_else(|| ICError::NoGeneratedValue(slt.to_string()))? - .parse::() - .map_err(|_| { - ICError::BadGeneratedValueParse(slt.to_string(), "u8".to_owned()) - })? as f64) - } else if let Some(bm) = batch_mode { - Ok(bm - .get_str("value") - .ok_or_else(|| ICError::NoGeneratedValue(bm.to_string()))? - .parse::() - .map_err(|_| { - ICError::BadGeneratedValueParse(bm.to_string(), "u8".to_owned()) - })? as f64) - } else if let Some(rm) = reagent_mode { - Ok(rm - .get_str("value") - .ok_or_else(|| ICError::NoGeneratedValue(rm.to_string()))? - .parse::() - .map_err(|_| { - ICError::BadGeneratedValueParse(rm.to_string(), "u8".to_owned()) - })? as f64) - } else { - Err(interpreter::ICError::TypeValueNotKnown) - } - } - Operand::Identifier(id) => { - Err(interpreter::ICError::UnknownIdentifier(id.name.to_string())) - } - Operand::DeviceSpec { .. } => Err(interpreter::ICError::IncorrectOperandType { - inst, - index, - desired: "Value".to_owned(), - }), - } - } - - pub fn as_value_i64( - &self, - ic: &interpreter::IC, - signed: bool, - inst: InstructionOp, - index: u32, - ) -> Result { - match self { - Self::Number(num) => Ok(num.value_i64(signed)), - _ => { - let val = self.as_value(ic, inst, index)?; - if val < -9.223_372_036_854_776E18 { - Err(interpreter::ICError::ShiftUnderflowI64) - } else if val <= 9.223_372_036_854_776E18 { - Ok(interpreter::f64_to_i64(val, signed)) - } else { - Err(interpreter::ICError::ShiftOverflowI64) - } - } - } - } - pub fn as_value_i32( - &self, - ic: &interpreter::IC, - signed: bool, - inst: InstructionOp, - index: u32, - ) -> Result { - match self { - Self::Number(num) => Ok(num.value_i64(signed) as i32), - _ => { - let val = self.as_value(ic, inst, index)?; - if val < -2147483648.0 { - Err(interpreter::ICError::ShiftUnderflowI32) - } else if val <= 2147483647.0 { - Ok(val as i32) - } else { - Err(interpreter::ICError::ShiftOverflowI32) - } - } - } - } - - pub fn as_register( - &self, - ic: &interpreter::IC, - inst: InstructionOp, - index: u32, - ) -> Result { - match self.translate_alias(ic) { - Operand::RegisterSpec(reg) => Ok(reg), - Operand::Identifier(id) => { - Err(interpreter::ICError::UnknownIdentifier(id.name.to_string())) - } - _ => Err(interpreter::ICError::IncorrectOperandType { - inst, - index, - desired: "Register".to_owned(), - }), - } - } - - pub fn as_device( - &self, - ic: &interpreter::IC, - inst: InstructionOp, - index: u32, - ) -> Result<(Option, Option), interpreter::ICError> { - match self.translate_alias(ic) { - Operand::DeviceSpec(DeviceSpec { device, connection }) => match device { - Device::Db => Ok((Some(ic.device), connection)), - Device::Numbered(p) => { - let dp = ic - .pins - .borrow() - .get(p as usize) - .ok_or(interpreter::ICError::DeviceIndexOutOfRange(p as f64)) - .copied()?; - Ok((dp, connection)) - } - Device::Indirect { - indirection, - target, - } => { - let val = ic.get_register(indirection, target)?; - let dp = ic - .pins - .borrow() - .get(val as usize) - .ok_or(interpreter::ICError::DeviceIndexOutOfRange(val)) - .copied()?; - Ok((dp, connection)) - } - }, - Operand::Identifier(id) => { - Err(interpreter::ICError::UnknownIdentifier(id.name.to_string())) - } - _ => Err(interpreter::ICError::IncorrectOperandType { - inst, - index, - desired: "Value".to_owned(), - }), - } - } - - pub fn as_logic_type( - &self, - ic: &interpreter::IC, - inst: InstructionOp, - index: u32, - ) -> Result { - match &self { - Operand::Type { - logic_type: Some(lt), - .. - } => Ok(*lt), - _ => LogicType::try_from(self.as_value(ic, inst, index)?), - } - } - - pub fn as_slot_logic_type( - &self, - ic: &interpreter::IC, - inst: InstructionOp, - index: u32, - ) -> Result { - match &self { - Operand::Type { - slot_logic_type: Some(slt), - .. - } => Ok(*slt), - _ => SlotLogicType::try_from(self.as_value(ic, inst, index)?), - } - } - - pub fn as_batch_mode( - &self, - ic: &interpreter::IC, - inst: InstructionOp, - index: u32, - ) -> Result { - match &self { - Operand::Type { - batch_mode: Some(bm), - .. - } => Ok(*bm), - _ => BatchMode::try_from(self.as_value(ic, inst, index)?), - } - } - - pub fn as_reagent_mode( - &self, - ic: &interpreter::IC, - inst: InstructionOp, - index: u32, - ) -> Result { - match &self { - Operand::Type { - reagent_mode: Some(rm), - .. - } => Ok(*rm), - _ => ReagentMode::try_from(self.as_value(ic, inst, index)?), - } - } - - pub fn translate_alias(&self, ic: &interpreter::IC) -> Self { - match &self { - Operand::Identifier(id) | Operand::Type { identifier: id, .. } => { - if let Some(alias) = ic.aliases.borrow().get(&id.name) { - alias.clone() - } else if let Some(define) = ic.defines.borrow().get(&id.name) { - Operand::Number(Number::Float(*define)) - } else if let Some(label) = ic.program.borrow().labels.get(&id.name) { - Operand::Number(Number::Float(*label as f64)) - } else { - self.clone() - } - } - _ => self.clone(), - } - } -} - impl FromStr for Operand { type Err = ParseError; /// Parse a str containing an single instruction operand @@ -874,15 +515,13 @@ impl FromStr for Operand { } } else if let Some(val) = CONSTANTS_LOOKUP.get(s) { Ok(Operand::Number(Number::Constant(*val))) - } else if let Ok(val) = LogicEnums::from_str(s) { - Ok(Operand::Number(Number::Enum( - val.get_str("value").unwrap().parse().unwrap(), - ))) + } else if let Ok(val) = BasicEnum::from_str(s) { + Ok(Operand::Number(Number::Enum(val.get_value() as f64))) } else { let lt = LogicType::from_str(s).ok(); - let slt = SlotLogicType::from_str(s).ok(); - let bm = BatchMode::from_str(s).ok(); - let rm = ReagentMode::from_str(s).ok(); + let slt = LogicSlotType::from_str(s).ok(); + let bm = LogicBatchMethod::from_str(s).ok(); + let rm = LogicReagentMode::from_str(s).ok(); let identifier = Identifier::from_str(s)?; if lt.is_some() || slt.is_some() || bm.is_some() || rm.is_some() { Ok(Operand::Type { @@ -1007,11 +646,6 @@ impl FromStr for Label { } } -#[derive(PartialEq, Eq, Debug, Clone, Serialize, Deserialize)] -pub struct Identifier { - pub name: String, -} - impl FromStr for Identifier { type Err = ParseError; fn from_str(s: &str) -> Result { @@ -1057,16 +691,6 @@ impl Display for Identifier { } } -#[derive(PartialEq, Debug, Clone, Serialize, Deserialize)] -pub enum Number { - Float(f64), - Binary(i64), - Hexadecimal(i64), - Constant(f64), - String(String), - Enum(f64), -} - impl Number { pub fn value(&self) -> f64 { match self { @@ -1249,7 +873,7 @@ mod tests { }), Operand::Type { logic_type: Some(LogicType::On), - slot_logic_type: Some(SlotLogicType::On), + slot_logic_type: Some(LogicSlotType::On), batch_mode: None, reagent_mode: None, identifier: Identifier { @@ -1458,9 +1082,9 @@ mod tests { test_roundtrip("1.2345"); test_roundtrip("-1.2345"); test_roundtrip(LogicType::Pressure.as_ref()); - test_roundtrip(SlotLogicType::Occupied.as_ref()); - test_roundtrip(BatchMode::Average.as_ref()); - test_roundtrip(ReagentMode::Recipe.as_ref()); + test_roundtrip(LogicSlotType::Occupied.as_ref()); + test_roundtrip(LogicBatchMethod::Average.as_ref()); + test_roundtrip(LogicReagentMode::Recipe.as_ref()); test_roundtrip("pi"); test_roundtrip("pinf"); test_roundtrip("ninf"); @@ -1478,30 +1102,35 @@ mod tests { let value = lt.get_str("value"); assert!(value.is_some()); assert!(value.unwrap().parse::().is_ok()); + assert_eq!(lt as u16, value.unwrap()); } - for slt in SlotLogicType::iter() { + for slt in LogicSlotType::iter() { println!("testing SlotLogicType.{slt}"); let value = slt.get_str("value"); assert!(value.is_some()); assert!(value.unwrap().parse::().is_ok()); + assert_eq!(slt as u8, value.unwrap()); } - for bm in BatchMode::iter() { + for bm in LogicReagentMode::iter() { println!("testing BatchMode.{bm}"); let value = bm.get_str("value"); assert!(value.is_some()); assert!(value.unwrap().parse::().is_ok()); + assert_eq!(bm as u8, value.unwrap()); } - for rm in ReagentMode::iter() { + for rm in LogicReagentMode::iter() { println!("testing ReagentMode.{rm}"); let value = rm.get_str("value"); assert!(value.is_some()); assert!(value.unwrap().parse::().is_ok()); + assert_eq!(rm as u8, value.unwrap()); } - for le in LogicEnums::iter() { - println!("testing Enum.{le}"); + for le in BasicEnum::iter() { + println!("testing BasicEnum {le}"); let value = le.get_str("value"); assert!(value.is_some()); assert!(value.unwrap().parse::().is_ok()); + assert_eq!(le.get_value(), value.unwrap()); } } diff --git a/ic10emu/src/interpreter.rs b/ic10emu/src/interpreter.rs index 1094b51..0bd5f79 100644 --- a/ic10emu/src/interpreter.rs +++ b/ic10emu/src/interpreter.rs @@ -18,142 +18,21 @@ use time::format_description; use crate::{ device::SlotType, - grammar::{self, LogicType, ParseError, SlotLogicType}, - vm::VM, + errors::{ICError, LineError, ParseError}, + grammar, + vm::{ + enums::script_enums::{LogicSlotType as SlotLogicType, LogicType}, + instructions::{ + enums::InstructionOp, + operands::{DeviceSpec, Operand, RegisterSpec}, + Instruction, + }, + VM, + }, }; use serde_with::serde_as; -use thiserror::Error; - -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct LineError { - error: ICError, - line: u32, -} - -impl Display for LineError { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(f, "Error on line {}: {}", self.line, self.error) - } -} - -impl Error for LineError {} - -#[derive(Debug, Error, Clone, Serialize, Deserialize)] -pub enum ICError { - #[error("error compiling code: {0}")] - ParseError(#[from] ParseError), - #[error("duplicate label {0}")] - DuplicateLabel(String), - #[error("instruction pointer out of range: '{0}'")] - InstructionPointerOutOfRange(u32), - #[error("register pointer out of range: '{0}'")] - RegisterIndexOutOfRange(f64), - #[error("device pointer out of range: '{0}'")] - DeviceIndexOutOfRange(f64), - #[error("stack index out of range: '{0}'")] - StackIndexOutOfRange(f64), - #[error("slot index out of range: '{0}'")] - SlotIndexOutOfRange(f64), - #[error("pin index {0} out of range 0-6")] - PinIndexOutOfRange(usize), - #[error("connection index {0} out of range {1}")] - ConnectionIndexOutOfRange(usize, usize), - #[error("unknown device ID '{0}'")] - UnknownDeviceID(f64), - #[error("too few operands!: provide: '{provided}', desired: '{desired}'")] - TooFewOperands { provided: u32, desired: u32 }, - #[error("too many operands!: provide: '{provided}', desired: '{desired}'")] - TooManyOperands { provided: u32, desired: u32 }, - #[error("incorrect operand type for instruction `{inst}` operand {index}, not a {desired} ")] - IncorrectOperandType { - inst: grammar::InstructionOp, - index: u32, - desired: String, - }, - #[error("unknown identifier {0}")] - UnknownIdentifier(String), - #[error("device Not Set")] - DeviceNotSet, - #[error("shift Underflow i64(signed long)")] - ShiftUnderflowI64, - #[error("shift Overflow i64(signed long)")] - ShiftOverflowI64, - #[error("shift underflow i32(signed int)")] - ShiftUnderflowI32, - #[error("shift overflow i32(signed int)")] - ShiftOverflowI32, - #[error("stack underflow")] - StackUnderflow, - #[error("stack overflow")] - StackOverflow, - #[error("duplicate define '{0}'")] - DuplicateDefine(String), - #[error("read only field '{0}'")] - ReadOnlyField(String), - #[error("write only field '{0}'")] - WriteOnlyField(String), - #[error("device has no field '{0}'")] - DeviceHasNoField(String), - #[error("device has not ic")] - DeviceHasNoIC, - #[error("unknown device '{0}'")] - UnknownDeviceId(f64), - #[error("unknown logic type '{0}'")] - UnknownLogicType(f64), - #[error("unknown slot logic type '{0}'")] - UnknownSlotLogicType(f64), - #[error("unknown batch mode '{0}'")] - UnknownBatchMode(f64), - #[error("unknown reagent mode '{0}'")] - UnknownReagentMode(f64), - #[error("type value not known")] - TypeValueNotKnown, - #[error("empty device list")] - EmptyDeviceList, - #[error("connection specifier missing")] - MissingConnectionSpecifier, - #[error("no data network on connection '{0}'")] - NotACableConnection(usize), - #[error("network not connected on connection '{0}'")] - NetworkNotConnected(usize), - #[error("bad network Id '{0}'")] - BadNetworkId(u32), - #[error("channel index out of range '{0}'")] - ChannelIndexOutOfRange(usize), - #[error("slot has no occupant")] - SlotNotOccupied, - #[error("generated Enum {0} has no value attached. Report this error.")] - NoGeneratedValue(String), - #[error("generated Enum {0}'s value does not parse as {1} . Report this error.")] - BadGeneratedValueParse(String, String), -} - -impl ICError { - pub const fn too_few_operands(provided: usize, desired: u32) -> Self { - ICError::TooFewOperands { - provided: provided as u32, - desired, - } - } - - pub const fn too_many_operands(provided: usize, desired: u32) -> Self { - ICError::TooManyOperands { - provided: provided as u32, - desired, - } - } - - pub const fn mismatch_operands(provided: usize, desired: u32) -> Self { - if provided < desired as usize { - ICError::too_few_operands(provided, desired) - } else { - ICError::too_many_operands(provided, desired) - } - } -} - #[derive(Debug, Clone, Serialize, Deserialize)] pub enum ICState { Start, @@ -195,7 +74,7 @@ pub struct IC { /// Instruction Count since last yield pub ic: Cell, pub stack: RefCell<[f64; 512]>, - pub aliases: RefCell>, + pub aliases: RefCell>, pub defines: RefCell>, pub pins: RefCell<[Option; 6]>, pub code: RefCell, @@ -215,7 +94,7 @@ pub struct FrozenIC { pub ic: u16, #[serde_as(as = "[_; 512]")] pub stack: [f64; 512], - pub aliases: BTreeMap, + pub aliases: BTreeMap, pub defines: BTreeMap, pub pins: [Option; 6], pub state: ICState, @@ -264,7 +143,7 @@ impl From for IC { #[derive(Debug, Clone, Serialize, Deserialize)] pub struct Program { - pub instructions: Vec, + pub instructions: Vec, pub errors: Vec, pub labels: BTreeMap, } @@ -293,8 +172,8 @@ impl Program { .into_iter() .enumerate() .map(|(line_number, line)| match line.code { - None => Ok(grammar::Instruction { - instruction: grammar::InstructionOp::Nop, + None => Ok(Instruction { + instruction: InstructionOp::Nop, operands: vec![], }), Some(code) => match code { @@ -304,8 +183,8 @@ impl Program { } else { labels_set.insert(label.id.name.clone()); labels.insert(label.id.name, line_number as u32); - Ok(grammar::Instruction { - instruction: grammar::InstructionOp::Nop, + Ok(Instruction { + instruction: InstructionOp::Nop, operands: vec![], }) } @@ -331,8 +210,8 @@ impl Program { .into_iter() .enumerate() .map(|(line_number, line)| match line.code { - None => grammar::Instruction { - instruction: grammar::InstructionOp::Nop, + None => Instruction { + instruction: InstructionOp::Nop, operands: vec![], }, Some(code) => match code { @@ -343,16 +222,16 @@ impl Program { labels_set.insert(label.id.name.clone()); labels.insert(label.id.name, line_number as u32); } - grammar::Instruction { - instruction: grammar::InstructionOp::Nop, + Instruction { + instruction: InstructionOp::Nop, operands: vec![], } } grammar::Code::Instruction(instruction) => instruction, grammar::Code::Invalid(err) => { errors.push(err.into()); - grammar::Instruction { - instruction: grammar::InstructionOp::Nop, + Instruction { + instruction: InstructionOp::Nop, operands: vec![], } } @@ -366,7 +245,7 @@ impl Program { } } - pub fn get_line(&self, line: u32) -> Result<&grammar::Instruction, ICError> { + pub fn get_line(&self, line: u32) -> Result<&Instruction, ICError> { self.instructions .get(line as usize) .ok_or(ICError::InstructionPointerOutOfRange(line)) @@ -560,14 +439,13 @@ impl IC { } fn internal_step(&self, vm: &VM, advance_ip_on_err: bool) -> Result<(), ICError> { - use grammar::*; use ICError::*; let mut next_ip = self.ip() + 1; // XXX: This closure should be replaced with a try block // https://github.com/rust-lang/rust/issues/31436 let mut process_op = |this: &Self| -> Result<(), ICError> { - use grammar::InstructionOp::*; + use InstructionOp::*; // force the program borrow to drop let line = { @@ -578,7 +456,9 @@ impl IC { let inst = line.instruction; match inst { Nop => Ok(()), - Hcf => Ok(()), // TODO + Hcf => Ok(()), // TODO + Clr => Ok(()), // TODO + Label => Ok(()), // NOP Sleep => match &operands[..] { [a] => { let a = a.as_value(this, inst, 1)?; @@ -2577,31 +2457,31 @@ impl IC { } #[allow(dead_code)] -const CHANNEL_LOGIC_TYPES: [grammar::LogicType; 8] = [ - grammar::LogicType::Channel0, - grammar::LogicType::Channel1, - grammar::LogicType::Channel2, - grammar::LogicType::Channel3, - grammar::LogicType::Channel4, - grammar::LogicType::Channel5, - grammar::LogicType::Channel6, - grammar::LogicType::Channel7, +const CHANNEL_LOGIC_TYPES: [LogicType; 8] = [ + LogicType::Channel0, + LogicType::Channel1, + LogicType::Channel2, + LogicType::Channel3, + LogicType::Channel4, + LogicType::Channel5, + LogicType::Channel6, + LogicType::Channel7, ]; trait LogicTypeExt { fn as_channel(&self) -> Option; } -impl LogicTypeExt for grammar::LogicType { +impl LogicTypeExt for LogicType { fn as_channel(&self) -> Option { match self { - grammar::LogicType::Channel0 => Some(0), - grammar::LogicType::Channel1 => Some(1), - grammar::LogicType::Channel2 => Some(2), - grammar::LogicType::Channel3 => Some(3), - grammar::LogicType::Channel4 => Some(4), - grammar::LogicType::Channel5 => Some(5), - grammar::LogicType::Channel6 => Some(6), - grammar::LogicType::Channel7 => Some(7), + LogicType::Channel0 => Some(0), + LogicType::Channel1 => Some(1), + LogicType::Channel2 => Some(2), + LogicType::Channel3 => Some(3), + LogicType::Channel4 => Some(4), + LogicType::Channel5 => Some(5), + LogicType::Channel6 => Some(6), + LogicType::Channel7 => Some(7), _ => None, } } diff --git a/ic10emu/src/lib.rs b/ic10emu/src/lib.rs index 92a61f3..cd2f896 100644 --- a/ic10emu/src/lib.rs +++ b/ic10emu/src/lib.rs @@ -1,8 +1,8 @@ +pub mod device; +pub mod errors; pub mod grammar; pub mod interpreter; +pub mod network; mod rand_mscorlib; pub mod tokens; -pub mod device; pub mod vm; -pub mod network; - diff --git a/ic10emu/src/network.rs b/ic10emu/src/network.rs index 7823675..fd8688d 100644 --- a/ic10emu/src/network.rs +++ b/ic10emu/src/network.rs @@ -131,7 +131,6 @@ pub enum NetworkError { } impl Network { - pub fn new(id: u32) -> Self { Network { id, diff --git a/ic10emu/src/vm/enums/basic_enums.rs b/ic10emu/src/vm/enums/basic_enums.rs new file mode 100644 index 0000000..59d04c0 --- /dev/null +++ b/ic10emu/src/vm/enums/basic_enums.rs @@ -0,0 +1,3717 @@ +// ================================================= +// !! <-----> DO NOT MODIFY <-----> !! +// +// This module was automatically generated by an +// xtask +// +// run `cargo xtask generate` from the workspace +// to regenerate +// +// ================================================= + +use serde::{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 AirConditioningMode { + #[strum(serialize = "Cold", props(docs = r#""#, value = "0"))] + Cold = 0u8, + #[strum(serialize = "Hot", props(docs = r#""#, value = "1"))] + Hot = 1u8, +} +#[derive( + Debug, + Display, + Clone, + Copy, + PartialEq, + Eq, + PartialOrd, + Ord, + Hash, + EnumString, + AsRefStr, + EnumProperty, + EnumIter, + FromRepr, + Serialize, + Deserialize, +)] +#[strum(use_phf)] +#[repr(u8)] +pub enum AirControlMode { + #[strum(serialize = "Draught", props(docs = r#""#, value = "4"))] + Draught = 4u8, + #[strum(serialize = "None", props(docs = r#""#, value = "0"))] + None = 0u8, + #[strum(serialize = "Offline", props(docs = r#""#, value = "1"))] + Offline = 1u8, + #[strum(serialize = "Pressure", props(docs = r#""#, value = "2"))] + Pressure = 2u8, +} +#[derive( + Debug, + Display, + Clone, + Copy, + PartialEq, + Eq, + PartialOrd, + Ord, + Hash, + EnumString, + AsRefStr, + EnumProperty, + EnumIter, + FromRepr, + Serialize, + Deserialize, +)] +#[strum(use_phf)] +#[repr(u8)] +pub enum ColorType { + #[strum(serialize = "Black", props(docs = r#""#, value = "7"))] + Black = 7u8, + #[strum(serialize = "Blue", props(docs = r#""#, value = "0"))] + Blue = 0u8, + #[strum(serialize = "Brown", props(docs = r#""#, value = "8"))] + Brown = 8u8, + #[strum(serialize = "Gray", props(docs = r#""#, value = "1"))] + Gray = 1u8, + #[strum(serialize = "Green", props(docs = r#""#, value = "2"))] + Green = 2u8, + #[strum(serialize = "Khaki", props(docs = r#""#, value = "9"))] + Khaki = 9u8, + #[strum(serialize = "Orange", props(docs = r#""#, value = "3"))] + Orange = 3u8, + #[strum(serialize = "Pink", props(docs = r#""#, value = "10"))] + Pink = 10u8, + #[strum(serialize = "Purple", props(docs = r#""#, value = "11"))] + Purple = 11u8, + #[strum(serialize = "Red", props(docs = r#""#, value = "4"))] + Red = 4u8, + #[strum(serialize = "White", props(docs = r#""#, value = "6"))] + White = 6u8, + #[strum(serialize = "Yellow", props(docs = r#""#, value = "5"))] + Yellow = 5u8, +} +#[derive( + Debug, + Display, + Clone, + Copy, + PartialEq, + Eq, + PartialOrd, + Ord, + Hash, + EnumString, + AsRefStr, + EnumProperty, + EnumIter, + FromRepr, + Serialize, + Deserialize, +)] +#[strum(use_phf)] +#[repr(u8)] +pub enum DaylightSensorMode { + #[strum(serialize = "Default", props(docs = r#""#, value = "0"))] + Default = 0u8, + #[strum(serialize = "Horizontal", props(docs = r#""#, value = "1"))] + Horizontal = 1u8, + #[strum(serialize = "Vertical", props(docs = r#""#, value = "2"))] + Vertical = 2u8, +} +#[derive( + Debug, + Display, + Clone, + Copy, + PartialEq, + Eq, + PartialOrd, + Ord, + Hash, + EnumString, + AsRefStr, + EnumProperty, + EnumIter, + FromRepr, + Serialize, + Deserialize, +)] +#[strum(use_phf)] +#[repr(u8)] +pub enum ElevatorMode { + #[strum(serialize = "Downward", props(docs = r#""#, value = "2"))] + Downward = 2u8, + #[strum(serialize = "Stationary", props(docs = r#""#, value = "0"))] + Stationary = 0u8, + #[strum(serialize = "Upward", props(docs = r#""#, value = "1"))] + Upward = 1u8, +} +#[derive( + Debug, + Display, + Clone, + Copy, + PartialEq, + Eq, + PartialOrd, + Ord, + Hash, + EnumString, + AsRefStr, + EnumProperty, + EnumIter, + FromRepr, + Serialize, + Deserialize, +)] +#[strum(use_phf)] +#[repr(u8)] +pub enum EntityState { + #[strum(serialize = "Alive", props(docs = r#""#, value = "0"))] + Alive = 0u8, + #[strum(serialize = "Dead", props(docs = r#""#, value = "1"))] + Dead = 1u8, + #[strum(serialize = "Decay", props(docs = r#""#, value = "3"))] + Decay = 3u8, + #[strum(serialize = "Unconscious", props(docs = r#""#, value = "2"))] + Unconscious = 2u8, +} +#[derive( + Debug, + Display, + Clone, + Copy, + PartialEq, + Eq, + PartialOrd, + Ord, + Hash, + EnumString, + AsRefStr, + EnumProperty, + EnumIter, + FromRepr, + Serialize, + Deserialize, +)] +#[strum(use_phf)] +#[repr(u32)] +pub enum GasType { + #[strum(serialize = "CarbonDioxide", props(docs = r#""#, value = "4"))] + CarbonDioxide = 4u32, + #[strum(serialize = "Hydrogen", props(docs = r#""#, value = "16384"))] + Hydrogen = 16384u32, + #[strum(serialize = "LiquidCarbonDioxide", props(docs = r#""#, value = "2048"))] + LiquidCarbonDioxide = 2048u32, + #[strum(serialize = "LiquidHydrogen", props(docs = r#""#, value = "32768"))] + LiquidHydrogen = 32768u32, + #[strum(serialize = "LiquidNitrogen", props(docs = r#""#, value = "128"))] + LiquidNitrogen = 128u32, + #[strum(serialize = "LiquidNitrousOxide", props(docs = r#""#, value = "8192"))] + LiquidNitrousOxide = 8192u32, + #[strum(serialize = "LiquidOxygen", props(docs = r#""#, value = "256"))] + LiquidOxygen = 256u32, + #[strum(serialize = "LiquidPollutant", props(docs = r#""#, value = "4096"))] + LiquidPollutant = 4096u32, + #[strum(serialize = "LiquidVolatiles", props(docs = r#""#, value = "512"))] + LiquidVolatiles = 512u32, + #[strum(serialize = "Nitrogen", props(docs = r#""#, value = "2"))] + Nitrogen = 2u32, + #[strum(serialize = "NitrousOxide", props(docs = r#""#, value = "64"))] + NitrousOxide = 64u32, + #[strum(serialize = "Oxygen", props(docs = r#""#, value = "1"))] + Oxygen = 1u32, + #[strum(serialize = "Pollutant", props(docs = r#""#, value = "16"))] + Pollutant = 16u32, + #[strum(serialize = "PollutedWater", props(docs = r#""#, value = "65536"))] + PollutedWater = 65536u32, + #[strum(serialize = "Steam", props(docs = r#""#, value = "1024"))] + Steam = 1024u32, + #[strum(serialize = "Undefined", props(docs = r#""#, value = "0"))] + Undefined = 0u32, + #[strum(serialize = "Volatiles", props(docs = r#""#, value = "8"))] + Volatiles = 8u32, + #[strum(serialize = "Water", props(docs = r#""#, value = "32"))] + Water = 32u32, +} +#[derive( + Debug, + Display, + Clone, + Copy, + PartialEq, + Eq, + PartialOrd, + Ord, + Hash, + EnumString, + AsRefStr, + EnumProperty, + EnumIter, + FromRepr, + Serialize, + Deserialize, +)] +#[strum(use_phf)] +#[repr(u8)] +pub enum RocketMode { + #[strum(serialize = "Chart", props(docs = r#""#, value = "5"))] + Chart = 5u8, + #[strum(serialize = "Discover", props(docs = r#""#, value = "4"))] + Discover = 4u8, + #[strum(serialize = "Invalid", props(docs = r#""#, value = "0"))] + Invalid = 0u8, + #[strum(serialize = "Mine", props(docs = r#""#, value = "2"))] + Mine = 2u8, + #[strum(serialize = "None", props(docs = r#""#, value = "1"))] + None = 1u8, + #[strum(serialize = "Survey", props(docs = r#""#, value = "3"))] + Survey = 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 LogicSlotType { + #[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 = "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 = "FilterType", + props(docs = r#"No description available"#, value = "25") + )] + FilterType = 25u8, + #[strum( + serialize = "Growth", + props( + docs = r#"returns the current growth state of the plant in the slot"#, + value = "7" + ) + )] + Growth = 7u8, + #[strum( + serialize = "Health", + props(docs = r#"returns the health of the plant in the slot"#, value = "6") + )] + Health = 6u8, + #[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 = "Lock", + props(docs = r#"No description available"#, value = "23") + )] + Lock = 23u8, + #[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 = "MaxQuantity", + props( + docs = r#"returns the max stack size of the item in the slot"#, + value = "15" + ) + )] + MaxQuantity = 15u8, + #[strum(serialize = "None", props(docs = r#"No description"#, value = "0"))] + None = 0u8, + #[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 = "Occupied", + props( + docs = r#"returns 0 when slot is not occupied, 1 when it is"#, + value = "1" + ) + )] + Occupied = 1u8, + #[strum( + serialize = "On", + props(docs = r#"No description available"#, value = "22") + )] + On = 22u8, + #[strum( + serialize = "Open", + props(docs = r#"No description available"#, value = "21") + )] + Open = 21u8, + #[strum( + serialize = "PrefabHash", + props( + docs = r#"returns the hash of the structure in the slot"#, + value = "17" + ) + )] + PrefabHash = 17u8, + #[strum( + serialize = "Pressure", + props( + docs = r#"returns pressure of the slot occupants internal atmosphere"#, + value = "8" + ) + )] + Pressure = 8u8, + #[strum( + serialize = "PressureAir", + props( + docs = r#"returns pressure in the air tank of the jetpack in this slot"#, + value = "14" + ) + )] + PressureAir = 14u8, + #[strum( + serialize = "PressureWaste", + props( + docs = r#"returns pressure in the waste tank of the jetpack in this slot"#, + value = "13" + ) + )] + PressureWaste = 13u8, + #[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 = "ReferenceId", + props(docs = r#"Unique Reference Identifier for this object"#, value = "26") + )] + ReferenceId = 26u8, + #[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 = "SortingClass", + props(docs = r#"No description available"#, value = "24") + )] + SortingClass = 24u8, + #[strum( + serialize = "Temperature", + props( + docs = r#"returns temperature of the slot occupants internal atmosphere"#, + value = "9" + ) + )] + Temperature = 9u8, + #[strum( + serialize = "Volume", + props(docs = r#"No description available"#, value = "20") + )] + Volume = 20u8, +} +#[derive( + 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 = "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 = "Activate", + props( + docs = r#"1 if device is activated (usually means running), otherwise 0"#, + value = "9" + ) + )] + Activate = 9u16, + #[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 = "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 = "Apex", + props( + docs = r#"The lowest altitude that the rocket will reach before it starts travelling upwards again."#, + value = "238" + ) + )] + Apex = 238u16, + #[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 = "AutoShutOff", + props( + docs = r#"Turns off all devices in the rocket upon reaching destination"#, + value = "218" + ) + )] + AutoShutOff = 218u16, + #[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 = "Bpm", props(docs = r#"Bpm"#, value = "103"))] + Bpm = 103u16, + #[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 = "CelestialHash", + props( + docs = r#"The current hash of the targeted celestial object."#, + value = "242" + ) + )] + CelestialHash = 242u16, + #[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 = "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 = "Charge", + props(docs = r#"The current charge the device has"#, value = "11") + )] + Charge = 11u16, + #[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 = "ChartedNavPoints", + props( + docs = r#"The number of charted NavPoints at the rocket's target Space Map Location."#, + value = "259" + ) + )] + ChartedNavPoints = 259u16, + #[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 = "CollectableGoods", + props( + docs = r#"Gets the cost of fuel to return the rocket to your current world."#, + value = "101" + ) + )] + CollectableGoods = 101u16, + #[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 = "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 = "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 = "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 = "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 = "CompletionRatio", + props( + docs = r#"How complete the current production is for this device, between 0 and 1"#, + value = "61" + ) + )] + CompletionRatio = 61u16, + #[strum( + serialize = "ContactTypeId", + props(docs = r#"The type id of the contact."#, value = "198") + )] + ContactTypeId = 198u16, + #[strum( + serialize = "CurrentCode", + props( + docs = r#"The Space Map Address of the rockets current Space Map Location"#, + value = "261" + ) + )] + CurrentCode = 261u16, + #[strum( + serialize = "CurrentResearchPodType", + props(docs = r#""#, value = "93") + )] + CurrentResearchPodType = 93u16, + #[strum( + serialize = "Density", + props( + docs = r#"The density of the rocket's target site's mine-able deposit."#, + value = "262" + ) + )] + Density = 262u16, + #[strum( + serialize = "DestinationCode", + props( + docs = r#"The Space Map Address of the rockets target Space Map Location"#, + value = "215" + ) + )] + DestinationCode = 215u16, + #[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 = "DistanceAu", + props( + docs = r#"The current distance to the celestial object, measured in astronomical units."#, + value = "244" + ) + )] + DistanceAu = 244u16, + #[strum( + serialize = "DistanceKm", + props( + docs = r#"The current distance to the celestial object, measured in kilometers."#, + value = "249" + ) + )] + DistanceKm = 249u16, + #[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 = "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 = "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 = "ElevatorLevel", + props(docs = r#"Level the elevator is currently at"#, value = "40") + )] + ElevatorLevel = 40u16, + #[strum( + serialize = "ElevatorSpeed", + props(docs = r#"Current speed of the elevator"#, value = "39") + )] + ElevatorSpeed = 39u16, + #[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 = "EnvironmentEfficiency", + props( + docs = r#"The Environment Efficiency reported by the machine, as a float between 0 and 1"#, + value = "104" + ) + )] + EnvironmentEfficiency = 104u16, + #[strum( + serialize = "Error", + props(docs = r#"1 if device is in error state, otherwise 0"#, value = "4") + )] + Error = 4u16, + #[strum( + serialize = "ExhaustVelocity", + props(docs = r#"The velocity of the exhaust gas in m/s"#, value = "235") + )] + ExhaustVelocity = 235u16, + #[strum( + serialize = "ExportCount", + props( + docs = r#"How many items exported since last ClearMemory"#, + value = "63" + ) + )] + ExportCount = 63u16, + #[strum( + serialize = "ExportQuantity", + props( + deprecated = "true", + docs = r#"Total quantity of items exported by the device"#, + value = "31" + ) + )] + ExportQuantity = 31u16, + #[strum( + serialize = "ExportSlotHash", + props(deprecated = "true", docs = r#"DEPRECATED"#, value = "42") + )] + ExportSlotHash = 42u16, + #[strum( + serialize = "ExportSlotOccupant", + props(deprecated = "true", docs = r#"DEPRECATED"#, value = "32") + )] + ExportSlotOccupant = 32u16, + #[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 = "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 = "Flush", + props( + docs = r#"Set to 1 to activate the flush function on the device"#, + value = "174" + ) + )] + Flush = 174u16, + #[strum( + serialize = "ForceWrite", + props(docs = r#"Forces Logic Writer devices to rewrite value"#, value = "85") + )] + ForceWrite = 85u16, + #[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 = "Fuel", + props( + docs = r#"Gets the cost of fuel to return the rocket to your current world."#, + value = "99" + ) + )] + Fuel = 99u16, + #[strum( + serialize = "Harvest", + props( + docs = r#"Performs the harvesting action for any plant based machinery"#, + value = "69" + ) + )] + Harvest = 69u16, + #[strum( + serialize = "Horizontal", + props(docs = r#"Horizontal setting of the device"#, value = "20") + )] + Horizontal = 20u16, + #[strum( + serialize = "HorizontalRatio", + props(docs = r#"Radio of horizontal setting for device"#, value = "34") + )] + HorizontalRatio = 34u16, + #[strum( + serialize = "Idle", + props( + docs = r#"Returns 1 if the device is currently idle, otherwise 0"#, + value = "37" + ) + )] + Idle = 37u16, + #[strum( + serialize = "ImportCount", + props( + docs = r#"How many items imported since last ClearMemory"#, + value = "64" + ) + )] + ImportCount = 64u16, + #[strum( + serialize = "ImportQuantity", + props( + deprecated = "true", + docs = r#"Total quantity of items imported by the device"#, + value = "29" + ) + )] + ImportQuantity = 29u16, + #[strum( + serialize = "ImportSlotHash", + props(deprecated = "true", docs = r#"DEPRECATED"#, value = "43") + )] + ImportSlotHash = 43u16, + #[strum( + serialize = "ImportSlotOccupant", + props(deprecated = "true", docs = r#"DEPRECATED"#, value = "30") + )] + ImportSlotOccupant = 30u16, + #[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 = "Index", + props(docs = r#"The current index for the device."#, value = "241") + )] + Index = 241u16, + #[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 = "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 = "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 = "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 = "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 = "Maximum", + props(docs = r#"Maximum setting of the device"#, value = "23") + )] + Maximum = 23u16, + #[strum( + serialize = "MineablesInQueue", + props( + docs = r#"Returns the amount of mineables AIMEe has queued up to mine."#, + value = "96" + ) + )] + MineablesInQueue = 96u16, + #[strum( + serialize = "MineablesInVicinity", + props( + docs = r#"Returns the amount of potential mineables within an extended area around AIMEe."#, + value = "95" + ) + )] + MineablesInVicinity = 95u16, + #[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 = "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 = "Mode", + props( + docs = r#"Integer for mode state, different devices will have different mode states available to them"#, + value = "3" + ) + )] + Mode = 3u16, + #[strum( + serialize = "NavPoints", + props( + docs = r#"The number of NavPoints at the rocket's target Space Map Location."#, + value = "258" + ) + )] + NavPoints = 258u16, + #[strum( + serialize = "NextWeatherEventTime", + props( + docs = r#"Returns in seconds when the next weather event is inbound."#, + value = "97" + ) + )] + NextWeatherEventTime = 97u16, + #[strum( + serialize = "None", + props(deprecated = "true", docs = r#"No description"#, value = "0") + )] + None = 0u16, + #[strum( + serialize = "On", + props( + docs = r#"The current state of the device, 0 for off, 1 for on"#, + value = "28" + ) + )] + On = 28u16, + #[strum( + serialize = "Open", + props(docs = r#"1 if device is open, otherwise 0"#, value = "2") + )] + Open = 2u16, + #[strum( + serialize = "OperationalTemperatureEfficiency", + props( + docs = r#"How the input pipe's temperature effects the machines efficiency"#, + value = "150" + ) + )] + OperationalTemperatureEfficiency = 150u16, + #[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 = "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 = "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 = "PassedMoles", + props( + docs = r#"The number of moles that passed through this device on the previous simulation tick"#, + value = "234" + ) + )] + PassedMoles = 234u16, + #[strum( + serialize = "Plant", + props( + docs = r#"Performs the planting action for any plant based machinery"#, + value = "68" + ) + )] + Plant = 68u16, + #[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 = "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 = "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 = "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 = "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 = "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 = "PowerActual", + props( + docs = r#"How much energy the device or network is actually using"#, + value = "26" + ) + )] + PowerActual = 26u16, + #[strum( + serialize = "PowerGeneration", + props(docs = r#"Returns how much power is being generated"#, value = "65") + )] + PowerGeneration = 65u16, + #[strum( + serialize = "PowerPotential", + props( + docs = r#"How much energy the device or network potentially provides"#, + value = "25" + ) + )] + PowerPotential = 25u16, + #[strum( + serialize = "PowerRequired", + props( + docs = r#"Power requested from the device and/or network"#, + value = "36" + ) + )] + PowerRequired = 36u16, + #[strum( + serialize = "PrefabHash", + props(docs = r#"The hash of the structure"#, value = "84") + )] + PrefabHash = 84u16, + #[strum( + serialize = "Pressure", + props(docs = r#"The current pressure reading of the device"#, value = "5") + )] + Pressure = 5u16, + #[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 = "PressureExternal", + props(docs = r#"Setting for external pressure safety, in KPa"#, value = "7") + )] + PressureExternal = 7u16, + #[strum( + serialize = "PressureInput", + props( + docs = r#"The current pressure reading of the device's Input Network"#, + value = "106" + ) + )] + PressureInput = 106u16, + #[strum( + serialize = "PressureInput2", + props( + docs = r#"The current pressure reading of the device's Input2 Network"#, + value = "116" + ) + )] + PressureInput2 = 116u16, + #[strum( + serialize = "PressureInternal", + props(docs = r#"Setting for internal pressure safety, in KPa"#, value = "8") + )] + PressureInternal = 8u16, + #[strum( + serialize = "PressureOutput", + props( + docs = r#"The current pressure reading of the device's Output Network"#, + value = "126" + ) + )] + PressureOutput = 126u16, + #[strum( + serialize = "PressureOutput2", + props( + docs = r#"The current pressure reading of the device's Output2 Network"#, + value = "136" + ) + )] + PressureOutput2 = 136u16, + #[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 = "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 = "Quantity", + props(docs = r#"Total quantity on the device"#, value = "27") + )] + Quantity = 27u16, + #[strum( + serialize = "Ratio", + props( + docs = r#"Context specific value depending on device, 0 to 1 based ratio"#, + value = "24" + ) + )] + Ratio = 24u16, + #[strum( + serialize = "RatioCarbonDioxide", + props( + docs = r#"The ratio of Carbon Dioxide in device atmosphere"#, + value = "15" + ) + )] + RatioCarbonDioxide = 15u16, + #[strum( + serialize = "RatioCarbonDioxideInput", + props( + docs = r#"The ratio of Carbon Dioxide in device's input network"#, + value = "109" + ) + )] + RatioCarbonDioxideInput = 109u16, + #[strum( + serialize = "RatioCarbonDioxideInput2", + props( + docs = r#"The ratio of Carbon Dioxide in device's Input2 network"#, + value = "119" + ) + )] + RatioCarbonDioxideInput2 = 119u16, + #[strum( + serialize = "RatioCarbonDioxideOutput", + props( + docs = r#"The ratio of Carbon Dioxide in device's Output network"#, + value = "129" + ) + )] + RatioCarbonDioxideOutput = 129u16, + #[strum( + serialize = "RatioCarbonDioxideOutput2", + props( + docs = r#"The ratio of Carbon Dioxide in device's Output2 network"#, + value = "139" + ) + )] + RatioCarbonDioxideOutput2 = 139u16, + #[strum( + serialize = "RatioHydrogen", + props( + docs = r#"The ratio of Hydrogen in device's Atmopshere"#, + value = "252" + ) + )] + RatioHydrogen = 252u16, + #[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 = "RatioLiquidHydrogen", + props( + docs = r#"The ratio of Liquid Hydrogen in device's Atmopshere"#, + value = "253" + ) + )] + RatioLiquidHydrogen = 253u16, + #[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 = "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 = "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 = "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 = "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 = "RatioNitrogen", + props(docs = r#"The ratio of nitrogen in device atmosphere"#, value = "16") + )] + RatioNitrogen = 16u16, + #[strum( + serialize = "RatioNitrogenInput", + props( + docs = r#"The ratio of nitrogen in device's input network"#, + value = "110" + ) + )] + RatioNitrogenInput = 110u16, + #[strum( + serialize = "RatioNitrogenInput2", + props( + docs = r#"The ratio of nitrogen in device's Input2 network"#, + value = "120" + ) + )] + RatioNitrogenInput2 = 120u16, + #[strum( + serialize = "RatioNitrogenOutput", + props( + docs = r#"The ratio of nitrogen in device's Output network"#, + value = "130" + ) + )] + RatioNitrogenOutput = 130u16, + #[strum( + serialize = "RatioNitrogenOutput2", + props( + docs = r#"The ratio of nitrogen in device's Output2 network"#, + value = "140" + ) + )] + RatioNitrogenOutput2 = 140u16, + #[strum( + serialize = "RatioNitrousOxide", + props( + docs = r#"The ratio of Nitrous Oxide in device atmosphere"#, + value = "83" + ) + )] + RatioNitrousOxide = 83u16, + #[strum( + serialize = "RatioNitrousOxideInput", + props( + docs = r#"The ratio of Nitrous Oxide in device's input network"#, + value = "114" + ) + )] + RatioNitrousOxideInput = 114u16, + #[strum( + serialize = "RatioNitrousOxideInput2", + props( + docs = r#"The ratio of Nitrous Oxide in device's Input2 network"#, + value = "124" + ) + )] + RatioNitrousOxideInput2 = 124u16, + #[strum( + serialize = "RatioNitrousOxideOutput", + props( + docs = r#"The ratio of Nitrous Oxide in device's Output network"#, + value = "134" + ) + )] + RatioNitrousOxideOutput = 134u16, + #[strum( + serialize = "RatioNitrousOxideOutput2", + props( + docs = r#"The ratio of Nitrous Oxide in device's Output2 network"#, + value = "144" + ) + )] + RatioNitrousOxideOutput2 = 144u16, + #[strum( + serialize = "RatioOxygen", + props(docs = r#"The ratio of oxygen in device atmosphere"#, value = "14") + )] + RatioOxygen = 14u16, + #[strum( + serialize = "RatioOxygenInput", + props( + docs = r#"The ratio of oxygen in device's input network"#, + value = "108" + ) + )] + RatioOxygenInput = 108u16, + #[strum( + serialize = "RatioOxygenInput2", + props( + docs = r#"The ratio of oxygen in device's Input2 network"#, + value = "118" + ) + )] + RatioOxygenInput2 = 118u16, + #[strum( + serialize = "RatioOxygenOutput", + props( + docs = r#"The ratio of oxygen in device's Output network"#, + value = "128" + ) + )] + RatioOxygenOutput = 128u16, + #[strum( + serialize = "RatioOxygenOutput2", + props( + docs = r#"The ratio of oxygen in device's Output2 network"#, + value = "138" + ) + )] + RatioOxygenOutput2 = 138u16, + #[strum( + serialize = "RatioPollutant", + props(docs = r#"The ratio of pollutant in device atmosphere"#, value = "17") + )] + RatioPollutant = 17u16, + #[strum( + serialize = "RatioPollutantInput", + props( + docs = r#"The ratio of pollutant in device's input network"#, + value = "111" + ) + )] + RatioPollutantInput = 111u16, + #[strum( + serialize = "RatioPollutantInput2", + props( + docs = r#"The ratio of pollutant in device's Input2 network"#, + value = "121" + ) + )] + RatioPollutantInput2 = 121u16, + #[strum( + serialize = "RatioPollutantOutput", + props( + docs = r#"The ratio of pollutant in device's Output network"#, + value = "131" + ) + )] + RatioPollutantOutput = 131u16, + #[strum( + serialize = "RatioPollutantOutput2", + props( + docs = r#"The ratio of pollutant in device's Output2 network"#, + value = "141" + ) + )] + RatioPollutantOutput2 = 141u16, + #[strum( + serialize = "RatioPollutedWater", + props( + docs = r#"The ratio of polluted water in device atmosphere"#, + value = "254" + ) + )] + RatioPollutedWater = 254u16, + #[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 = "RatioVolatiles", + props(docs = r#"The ratio of volatiles in device atmosphere"#, value = "18") + )] + RatioVolatiles = 18u16, + #[strum( + serialize = "RatioVolatilesInput", + props( + docs = r#"The ratio of volatiles in device's input network"#, + value = "112" + ) + )] + RatioVolatilesInput = 112u16, + #[strum( + serialize = "RatioVolatilesInput2", + props( + docs = r#"The ratio of volatiles in device's Input2 network"#, + value = "122" + ) + )] + RatioVolatilesInput2 = 122u16, + #[strum( + serialize = "RatioVolatilesOutput", + props( + docs = r#"The ratio of volatiles in device's Output network"#, + value = "132" + ) + )] + RatioVolatilesOutput = 132u16, + #[strum( + serialize = "RatioVolatilesOutput2", + props( + docs = r#"The ratio of volatiles in device's Output2 network"#, + value = "142" + ) + )] + RatioVolatilesOutput2 = 142u16, + #[strum( + serialize = "RatioWater", + props(docs = r#"The ratio of water in device atmosphere"#, value = "19") + )] + RatioWater = 19u16, + #[strum( + serialize = "RatioWaterInput", + props( + docs = r#"The ratio of water in device's input network"#, + value = "113" + ) + )] + RatioWaterInput = 113u16, + #[strum( + serialize = "RatioWaterInput2", + props( + docs = r#"The ratio of water in device's Input2 network"#, + value = "123" + ) + )] + RatioWaterInput2 = 123u16, + #[strum( + serialize = "RatioWaterOutput", + props( + docs = r#"The ratio of water in device's Output network"#, + value = "133" + ) + )] + RatioWaterOutput = 133u16, + #[strum( + serialize = "RatioWaterOutput2", + props( + docs = r#"The ratio of water in device's Output2 network"#, + value = "143" + ) + )] + RatioWaterOutput2 = 143u16, + #[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 = "Reagents", + props( + docs = r#"Total number of reagents recorded by the device"#, + value = "13" + ) + )] + Reagents = 13u16, + #[strum( + serialize = "RecipeHash", + props( + docs = r#"Current hash of the recipe the device is set to produce"#, + value = "41" + ) + )] + RecipeHash = 41u16, + #[strum( + serialize = "ReferenceId", + props(docs = r#"Unique Reference Identifier for this object"#, value = "217") + )] + ReferenceId = 217u16, + #[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 = "RequiredPower", + props( + docs = r#"Idle operating power quantity, does not necessarily include extra demand power"#, + value = "33" + ) + )] + RequiredPower = 33u16, + #[strum( + serialize = "ReturnFuelCost", + props( + docs = r#"Gets the fuel remaining in your rocket's fuel tank."#, + value = "100" + ) + )] + ReturnFuelCost = 100u16, + #[strum( + serialize = "Richness", + props( + docs = r#"The richness of the rocket's target site's mine-able deposit."#, + value = "263" + ) + )] + Richness = 263u16, + #[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 = "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 = "Setting", + props( + docs = r#"A variable setting that can be read or written, depending on the device"#, + value = "12" + ) + )] + Setting = 12u16, + #[strum( + serialize = "SettingInput", + props(docs = r#""#, value = "91") + )] + SettingInput = 91u16, + #[strum( + serialize = "SettingOutput", + props(docs = r#""#, value = "92") + )] + SettingOutput = 92u16, + #[strum( + serialize = "SignalID", + props( + docs = r#"Returns the contact ID of the strongest signal from this Satellite"#, + value = "87" + ) + )] + SignalId = 87u16, + #[strum( + serialize = "SignalStrength", + props( + docs = r#"Returns the degree offset of the strongest contact"#, + value = "86" + ) + )] + SignalStrength = 86u16, + #[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 = "Size", + props( + docs = r#"The size of the rocket's target site's mine-able deposit."#, + value = "264" + ) + )] + Size = 264u16, + #[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 = "SolarAngle", + props(docs = r#"Solar angle of the device"#, value = "22") + )] + SolarAngle = 22u16, + #[strum( + serialize = "SolarIrradiance", + props(docs = r#""#, value = "176") + )] + SolarIrradiance = 176u16, + #[strum( + serialize = "SoundAlert", + props(docs = r#"Plays a sound alert on the devices speaker"#, value = "175") + )] + SoundAlert = 175u16, + #[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 = "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 = "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 = "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 = "Temperature", + props(docs = r#"The current temperature reading of the device"#, value = "6") + )] + Temperature = 6u16, + #[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 = "TemperatureExternal", + props( + docs = r#"The temperature of the outside of the device, usually the world atmosphere surrounding it"#, + value = "73" + ) + )] + TemperatureExternal = 73u16, + #[strum( + serialize = "TemperatureInput", + props( + docs = r#"The current temperature reading of the device's Input Network"#, + value = "107" + ) + )] + TemperatureInput = 107u16, + #[strum( + serialize = "TemperatureInput2", + props( + docs = r#"The current temperature reading of the device's Input2 Network"#, + value = "117" + ) + )] + TemperatureInput2 = 117u16, + #[strum( + serialize = "TemperatureOutput", + props( + docs = r#"The current temperature reading of the device's Output Network"#, + value = "127" + ) + )] + TemperatureOutput = 127u16, + #[strum( + serialize = "TemperatureOutput2", + props( + docs = r#"The current temperature reading of the device's Output2 Network"#, + value = "137" + ) + )] + TemperatureOutput2 = 137u16, + #[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 = "Throttle", + props( + docs = r#"Increases the rate at which the machine works (range: 0-100)"#, + value = "154" + ) + )] + Throttle = 154u16, + #[strum( + serialize = "Thrust", + props( + docs = r#"Total current thrust of all rocket engines on the rocket in Newtons."#, + value = "221" + ) + )] + Thrust = 221u16, + #[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 = "Time", props(docs = r#"Time"#, value = "102"))] + Time = 102u16, + #[strum( + serialize = "TimeToDestination", + props( + docs = r#"Estimated time in seconds until rocket arrives at target destination."#, + value = "224" + ) + )] + TimeToDestination = 224u16, + #[strum( + serialize = "TotalMoles", + props(docs = r#"Returns the total moles of the device"#, value = "66") + )] + TotalMoles = 66u16, + #[strum( + serialize = "TotalMolesInput", + props( + docs = r#"Returns the total moles of the device's Input Network"#, + value = "115" + ) + )] + TotalMolesInput = 115u16, + #[strum( + serialize = "TotalMolesInput2", + props( + docs = r#"Returns the total moles of the device's Input2 Network"#, + value = "125" + ) + )] + TotalMolesInput2 = 125u16, + #[strum( + serialize = "TotalMolesOutput", + props( + docs = r#"Returns the total moles of the device's Output Network"#, + value = "135" + ) + )] + TotalMolesOutput = 135u16, + #[strum( + serialize = "TotalMolesOutput2", + props( + docs = r#"Returns the total moles of the device's Output2 Network"#, + value = "145" + ) + )] + TotalMolesOutput2 = 145u16, + #[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 = "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 = "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 = "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 = "Vertical", + props(docs = r#"Vertical setting of the device"#, value = "21") + )] + Vertical = 21u16, + #[strum( + serialize = "VerticalRatio", + props(docs = r#"Radio of vertical setting for device"#, value = "35") + )] + VerticalRatio = 35u16, + #[strum( + serialize = "Volume", + props(docs = r#"Returns the device atmosphere volume"#, value = "67") + )] + Volume = 67u16, + #[strum( + serialize = "VolumeOfLiquid", + props( + docs = r#"The total volume of all liquids in Liters in the atmosphere"#, + value = "182" + ) + )] + VolumeOfLiquid = 182u16, + #[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 = "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 = "WorkingGasEfficiency", + props( + docs = r#"The Working Gas Efficiency reported by the machine, as a float between 0 and 1"#, + value = "105" + ) + )] + WorkingGasEfficiency = 105u16, +} +#[derive( + Debug, + Display, + Clone, + Copy, + PartialEq, + Eq, + PartialOrd, + Ord, + Hash, + EnumString, + AsRefStr, + EnumProperty, + EnumIter, + FromRepr, + Serialize, + Deserialize, +)] +#[strum(use_phf)] +#[repr(u8)] +pub enum PowerMode { + #[strum(serialize = "Charged", props(docs = r#""#, value = "4"))] + Charged = 4u8, + #[strum(serialize = "Charging", props(docs = r#""#, value = "3"))] + Charging = 3u8, + #[strum(serialize = "Discharged", props(docs = r#""#, value = "1"))] + Discharged = 1u8, + #[strum(serialize = "Discharging", props(docs = r#""#, value = "2"))] + Discharging = 2u8, + #[strum(serialize = "Idle", props(docs = r#""#, value = "0"))] + Idle = 0u8, +} +#[derive( + Debug, + Display, + Clone, + Copy, + PartialEq, + Eq, + PartialOrd, + Ord, + Hash, + EnumString, + AsRefStr, + EnumProperty, + EnumIter, + FromRepr, + Serialize, + Deserialize, +)] +#[strum(use_phf)] +#[repr(u8)] +pub enum ReEntryProfile { + #[strum(serialize = "High", props(docs = r#""#, value = "3"))] + High = 3u8, + #[strum(serialize = "Max", props(docs = r#""#, value = "4"))] + Max = 4u8, + #[strum(serialize = "Medium", props(docs = r#""#, value = "2"))] + Medium = 2u8, + #[strum(serialize = "None", props(docs = r#""#, value = "0"))] + None = 0u8, + #[strum(serialize = "Optimal", props(docs = r#""#, value = "1"))] + Optimal = 1u8, +} +#[derive( + Debug, + Display, + Clone, + Copy, + PartialEq, + Eq, + PartialOrd, + Ord, + Hash, + EnumString, + AsRefStr, + EnumProperty, + EnumIter, + FromRepr, + Serialize, + Deserialize, +)] +#[strum(use_phf)] +#[repr(u8)] +pub enum RobotMode { + #[strum(serialize = "Follow", props(docs = r#""#, value = "1"))] + Follow = 1u8, + #[strum(serialize = "MoveToTarget", props(docs = r#""#, value = "2"))] + MoveToTarget = 2u8, + #[strum(serialize = "None", props(docs = r#""#, value = "0"))] + None = 0u8, + #[strum(serialize = "PathToTarget", props(docs = r#""#, value = "5"))] + PathToTarget = 5u8, + #[strum(serialize = "Roam", props(docs = r#""#, value = "3"))] + Roam = 3u8, + #[strum(serialize = "StorageFull", props(docs = r#""#, value = "6"))] + StorageFull = 6u8, + #[strum(serialize = "Unload", props(docs = r#""#, value = "4"))] + Unload = 4u8, +} +#[derive( + Debug, + Display, + Clone, + Copy, + PartialEq, + Eq, + PartialOrd, + Ord, + Hash, + EnumString, + AsRefStr, + EnumProperty, + EnumIter, + FromRepr, + Serialize, + Deserialize, +)] +#[strum(use_phf)] +#[repr(u8)] +pub enum Class { + #[strum(serialize = "AccessCard", props(docs = r#""#, value = "22"))] + AccessCard = 22u8, + #[strum(serialize = "Appliance", props(docs = r#""#, value = "18"))] + Appliance = 18u8, + #[strum(serialize = "Back", props(docs = r#""#, value = "3"))] + Back = 3u8, + #[strum(serialize = "Battery", props(docs = r#""#, value = "14"))] + Battery = 14u8, + #[strum(serialize = "Belt", props(docs = r#""#, value = "16"))] + Belt = 16u8, + #[strum(serialize = "Blocked", props(docs = r#""#, value = "38"))] + Blocked = 38u8, + #[strum(serialize = "Bottle", props(docs = r#""#, value = "25"))] + Bottle = 25u8, + #[strum(serialize = "Cartridge", props(docs = r#""#, value = "21"))] + Cartridge = 21u8, + #[strum(serialize = "Circuit", props(docs = r#""#, value = "24"))] + Circuit = 24u8, + #[strum(serialize = "Circuitboard", props(docs = r#""#, value = "7"))] + Circuitboard = 7u8, + #[strum(serialize = "CreditCard", props(docs = r#""#, value = "28"))] + CreditCard = 28u8, + #[strum(serialize = "DataDisk", props(docs = r#""#, value = "8"))] + DataDisk = 8u8, + #[strum(serialize = "DirtCanister", props(docs = r#""#, value = "29"))] + DirtCanister = 29u8, + #[strum(serialize = "DrillHead", props(docs = r#""#, value = "35"))] + DrillHead = 35u8, + #[strum(serialize = "Egg", props(docs = r#""#, value = "15"))] + Egg = 15u8, + #[strum(serialize = "Entity", props(docs = r#""#, value = "13"))] + Entity = 13u8, + #[strum(serialize = "Flare", props(docs = r#""#, value = "37"))] + Flare = 37u8, + #[strum(serialize = "GasCanister", props(docs = r#""#, value = "5"))] + GasCanister = 5u8, + #[strum(serialize = "GasFilter", props(docs = r#""#, value = "4"))] + GasFilter = 4u8, + #[strum(serialize = "Glasses", props(docs = r#""#, value = "27"))] + Glasses = 27u8, + #[strum(serialize = "Helmet", props(docs = r#""#, value = "1"))] + Helmet = 1u8, + #[strum(serialize = "Ingot", props(docs = r#""#, value = "19"))] + Ingot = 19u8, + #[strum(serialize = "LiquidBottle", props(docs = r#""#, value = "32"))] + LiquidBottle = 32u8, + #[strum(serialize = "LiquidCanister", props(docs = r#""#, value = "31"))] + LiquidCanister = 31u8, + #[strum(serialize = "Magazine", props(docs = r#""#, value = "23"))] + Magazine = 23u8, + #[strum(serialize = "Motherboard", props(docs = r#""#, value = "6"))] + Motherboard = 6u8, + #[strum(serialize = "None", props(docs = r#""#, value = "0"))] + None = 0u8, + #[strum(serialize = "Ore", props(docs = r#""#, value = "10"))] + Ore = 10u8, + #[strum(serialize = "Organ", props(docs = r#""#, value = "9"))] + Organ = 9u8, + #[strum(serialize = "Plant", props(docs = r#""#, value = "11"))] + Plant = 11u8, + #[strum(serialize = "ProgrammableChip", props(docs = r#""#, value = "26"))] + ProgrammableChip = 26u8, + #[strum(serialize = "ScanningHead", props(docs = r#""#, value = "36"))] + ScanningHead = 36u8, + #[strum(serialize = "SensorProcessingUnit", props(docs = r#""#, value = "30"))] + SensorProcessingUnit = 30u8, + #[strum(serialize = "SoundCartridge", props(docs = r#""#, value = "34"))] + SoundCartridge = 34u8, + #[strum(serialize = "Suit", props(docs = r#""#, value = "2"))] + Suit = 2u8, + #[strum(serialize = "SuitMod", props(docs = r#""#, value = "39"))] + SuitMod = 39u8, + #[strum(serialize = "Tool", props(docs = r#""#, value = "17"))] + Tool = 17u8, + #[strum(serialize = "Torpedo", props(docs = r#""#, value = "20"))] + Torpedo = 20u8, + #[strum(serialize = "Uniform", props(docs = r#""#, value = "12"))] + Uniform = 12u8, + #[strum(serialize = "Wreckage", props(docs = r#""#, value = "33"))] + Wreckage = 33u8, +} +#[derive( + Debug, + Display, + Clone, + Copy, + PartialEq, + Eq, + PartialOrd, + Ord, + Hash, + EnumString, + AsRefStr, + EnumProperty, + EnumIter, + FromRepr, + Serialize, + Deserialize, +)] +#[strum(use_phf)] +#[repr(u8)] +pub enum SorterInstruction { + #[strum(serialize = "FilterPrefabHashEquals", props(docs = r#""#, value = "1"))] + FilterPrefabHashEquals = 1u8, + #[strum( + serialize = "FilterPrefabHashNotEquals", + props(docs = r#""#, value = "2") + )] + FilterPrefabHashNotEquals = 2u8, + #[strum(serialize = "FilterQuantityCompare", props(docs = r#""#, value = "5"))] + FilterQuantityCompare = 5u8, + #[strum(serialize = "FilterSlotTypeCompare", props(docs = r#""#, value = "4"))] + FilterSlotTypeCompare = 4u8, + #[strum( + serialize = "FilterSortingClassCompare", + props(docs = r#""#, value = "3") + )] + FilterSortingClassCompare = 3u8, + #[strum( + serialize = "LimitNextExecutionByCount", + props(docs = r#""#, value = "6") + )] + LimitNextExecutionByCount = 6u8, + #[strum(serialize = "None", props(docs = r#""#, value = "0"))] + None = 0u8, +} +#[derive( + Debug, + Display, + Clone, + Copy, + PartialEq, + Eq, + PartialOrd, + Ord, + Hash, + EnumString, + AsRefStr, + EnumProperty, + EnumIter, + FromRepr, + Serialize, + Deserialize, +)] +#[strum(use_phf)] +#[repr(u8)] +pub enum SortingClass { + #[strum(serialize = "Appliances", props(docs = r#""#, value = "6"))] + Appliances = 6u8, + #[strum(serialize = "Atmospherics", props(docs = r#""#, value = "7"))] + Atmospherics = 7u8, + #[strum(serialize = "Clothing", props(docs = r#""#, value = "5"))] + Clothing = 5u8, + #[strum(serialize = "Default", props(docs = r#""#, value = "0"))] + Default = 0u8, + #[strum(serialize = "Food", props(docs = r#""#, value = "4"))] + Food = 4u8, + #[strum(serialize = "Ices", props(docs = r#""#, value = "10"))] + Ices = 10u8, + #[strum(serialize = "Kits", props(docs = r#""#, value = "1"))] + Kits = 1u8, + #[strum(serialize = "Ores", props(docs = r#""#, value = "9"))] + Ores = 9u8, + #[strum(serialize = "Resources", props(docs = r#""#, value = "3"))] + Resources = 3u8, + #[strum(serialize = "Storage", props(docs = r#""#, value = "8"))] + Storage = 8u8, + #[strum(serialize = "Tools", props(docs = r#""#, value = "2"))] + Tools = 2u8, +} +#[derive( + Debug, + Display, + Clone, + Copy, + PartialEq, + Eq, + PartialOrd, + Ord, + Hash, + EnumString, + AsRefStr, + EnumProperty, + EnumIter, + FromRepr, + Serialize, + Deserialize, +)] +#[strum(use_phf)] +#[repr(u8)] +pub enum SoundAlert { + #[strum(serialize = "AirlockCycling", props(docs = r#""#, value = "22"))] + AirlockCycling = 22u8, + #[strum(serialize = "Alarm1", props(docs = r#""#, value = "45"))] + Alarm1 = 45u8, + #[strum(serialize = "Alarm10", props(docs = r#""#, value = "12"))] + Alarm10 = 12u8, + #[strum(serialize = "Alarm11", props(docs = r#""#, value = "13"))] + Alarm11 = 13u8, + #[strum(serialize = "Alarm12", props(docs = r#""#, value = "14"))] + Alarm12 = 14u8, + #[strum(serialize = "Alarm2", props(docs = r#""#, value = "1"))] + Alarm2 = 1u8, + #[strum(serialize = "Alarm3", props(docs = r#""#, value = "2"))] + Alarm3 = 2u8, + #[strum(serialize = "Alarm4", props(docs = r#""#, value = "3"))] + Alarm4 = 3u8, + #[strum(serialize = "Alarm5", props(docs = r#""#, value = "4"))] + Alarm5 = 4u8, + #[strum(serialize = "Alarm6", props(docs = r#""#, value = "5"))] + Alarm6 = 5u8, + #[strum(serialize = "Alarm7", props(docs = r#""#, value = "6"))] + Alarm7 = 6u8, + #[strum(serialize = "Alarm8", props(docs = r#""#, value = "10"))] + Alarm8 = 10u8, + #[strum(serialize = "Alarm9", props(docs = r#""#, value = "11"))] + Alarm9 = 11u8, + #[strum(serialize = "Alert", props(docs = r#""#, value = "17"))] + Alert = 17u8, + #[strum(serialize = "Danger", props(docs = r#""#, value = "15"))] + Danger = 15u8, + #[strum(serialize = "Depressurising", props(docs = r#""#, value = "20"))] + Depressurising = 20u8, + #[strum(serialize = "FireFireFire", props(docs = r#""#, value = "28"))] + FireFireFire = 28u8, + #[strum(serialize = "Five", props(docs = r#""#, value = "33"))] + Five = 33u8, + #[strum(serialize = "Floor", props(docs = r#""#, value = "34"))] + Floor = 34u8, + #[strum(serialize = "Four", props(docs = r#""#, value = "32"))] + Four = 32u8, + #[strum(serialize = "HaltWhoGoesThere", props(docs = r#""#, value = "27"))] + HaltWhoGoesThere = 27u8, + #[strum(serialize = "HighCarbonDioxide", props(docs = r#""#, value = "44"))] + HighCarbonDioxide = 44u8, + #[strum(serialize = "IntruderAlert", props(docs = r#""#, value = "19"))] + IntruderAlert = 19u8, + #[strum(serialize = "LiftOff", props(docs = r#""#, value = "36"))] + LiftOff = 36u8, + #[strum(serialize = "MalfunctionDetected", props(docs = r#""#, value = "26"))] + MalfunctionDetected = 26u8, + #[strum(serialize = "Music1", props(docs = r#""#, value = "7"))] + Music1 = 7u8, + #[strum(serialize = "Music2", props(docs = r#""#, value = "8"))] + Music2 = 8u8, + #[strum(serialize = "Music3", props(docs = r#""#, value = "9"))] + Music3 = 9u8, + #[strum(serialize = "None", props(docs = r#""#, value = "0"))] + None = 0u8, + #[strum(serialize = "One", props(docs = r#""#, value = "29"))] + One = 29u8, + #[strum(serialize = "PollutantsDetected", props(docs = r#""#, value = "43"))] + PollutantsDetected = 43u8, + #[strum(serialize = "PowerLow", props(docs = r#""#, value = "23"))] + PowerLow = 23u8, + #[strum(serialize = "PressureHigh", props(docs = r#""#, value = "39"))] + PressureHigh = 39u8, + #[strum(serialize = "PressureLow", props(docs = r#""#, value = "40"))] + PressureLow = 40u8, + #[strum(serialize = "Pressurising", props(docs = r#""#, value = "21"))] + Pressurising = 21u8, + #[strum(serialize = "RocketLaunching", props(docs = r#""#, value = "35"))] + RocketLaunching = 35u8, + #[strum(serialize = "StormIncoming", props(docs = r#""#, value = "18"))] + StormIncoming = 18u8, + #[strum(serialize = "SystemFailure", props(docs = r#""#, value = "24"))] + SystemFailure = 24u8, + #[strum(serialize = "TemperatureHigh", props(docs = r#""#, value = "41"))] + TemperatureHigh = 41u8, + #[strum(serialize = "TemperatureLow", props(docs = r#""#, value = "42"))] + TemperatureLow = 42u8, + #[strum(serialize = "Three", props(docs = r#""#, value = "31"))] + Three = 31u8, + #[strum(serialize = "TraderIncoming", props(docs = r#""#, value = "37"))] + TraderIncoming = 37u8, + #[strum(serialize = "TraderLanded", props(docs = r#""#, value = "38"))] + TraderLanded = 38u8, + #[strum(serialize = "Two", props(docs = r#""#, value = "30"))] + Two = 30u8, + #[strum(serialize = "Warning", props(docs = r#""#, value = "16"))] + Warning = 16u8, + #[strum(serialize = "Welcome", props(docs = r#""#, value = "25"))] + Welcome = 25u8, +} +#[derive( + Debug, + Display, + Clone, + Copy, + PartialEq, + Eq, + PartialOrd, + Ord, + Hash, + EnumString, + AsRefStr, + EnumProperty, + EnumIter, + FromRepr, + Serialize, + Deserialize, +)] +#[strum(use_phf)] +#[repr(u8)] +pub enum LogicTransmitterMode { + #[strum(serialize = "Active", props(docs = r#""#, value = "1"))] + Active = 1u8, + #[strum(serialize = "Passive", props(docs = r#""#, value = "0"))] + Passive = 0u8, +} +#[derive( + Debug, + Display, + Clone, + Copy, + PartialEq, + Eq, + PartialOrd, + Ord, + Hash, + EnumString, + AsRefStr, + EnumProperty, + EnumIter, + FromRepr, + Serialize, + Deserialize, +)] +#[strum(use_phf)] +#[repr(u8)] +pub enum VentDirection { + #[strum(serialize = "Inward", props(docs = r#""#, value = "1"))] + Inward = 1u8, + #[strum(serialize = "Outward", props(docs = r#""#, value = "0"))] + Outward = 0u8, +} +#[derive( + Debug, + Display, + Clone, + Copy, + PartialEq, + Eq, + PartialOrd, + Ord, + Hash, + EnumString, + AsRefStr, + EnumProperty, + EnumIter, + FromRepr, + Serialize, + Deserialize, +)] +#[strum(use_phf)] +#[repr(u8)] +pub enum ConditionOperation { + #[strum(serialize = "Equals", props(docs = r#""#, value = "0"))] + Equals = 0u8, + #[strum(serialize = "Greater", props(docs = r#""#, value = "1"))] + Greater = 1u8, + #[strum(serialize = "Less", props(docs = r#""#, value = "2"))] + Less = 2u8, + #[strum(serialize = "NotEquals", props(docs = r#""#, value = "3"))] + NotEquals = 3u8, +} +pub enum BasicEnum { + AirCon(AirConditioningMode), + AirControl(AirControlMode), + Color(ColorType), + DaylightSensorMode(DaylightSensorMode), + ElevatorMode(ElevatorMode), + EntityState(EntityState), + GasType(GasType), + GasTypeRocketMode(RocketMode), + LogicSlotType(LogicSlotType), + LogicType(LogicType), + PowerMode(PowerMode), + ReEntryProfile(ReEntryProfile), + RobotMode(RobotMode), + SlotClass(Class), + SorterInstruction(SorterInstruction), + SortingClass(SortingClass), + Sound(SoundAlert), + TransmitterMode(LogicTransmitterMode), + Vent(VentDirection), + Unnamed(ConditionOperation), +} +impl BasicEnum { + pub fn get_value(&self) -> u32 { + match self { + Self::AirCon(enm) => *enm as u32, + Self::AirControl(enm) => *enm as u32, + Self::Color(enm) => *enm as u32, + Self::DaylightSensorMode(enm) => *enm as u32, + Self::ElevatorMode(enm) => *enm as u32, + Self::EntityState(enm) => *enm as u32, + Self::GasType(enm) => *enm as u32, + Self::GasTypeRocketMode(enm) => *enm as u32, + Self::LogicSlotType(enm) => *enm as u32, + Self::LogicType(enm) => *enm as u32, + Self::PowerMode(enm) => *enm as u32, + Self::ReEntryProfile(enm) => *enm as u32, + Self::RobotMode(enm) => *enm as u32, + Self::SlotClass(enm) => *enm as u32, + Self::SorterInstruction(enm) => *enm as u32, + Self::SortingClass(enm) => *enm as u32, + Self::Sound(enm) => *enm as u32, + Self::TransmitterMode(enm) => *enm as u32, + Self::Vent(enm) => *enm as u32, + Self::Unnamed(enm) => *enm as u32, + } + } + pub fn get_str(&self, prop: &str) -> Option<&'static str> { + match self { + Self::AirCon(enm) => enm.get_str(prop), + Self::AirControl(enm) => enm.get_str(prop), + Self::Color(enm) => enm.get_str(prop), + Self::DaylightSensorMode(enm) => enm.get_str(prop), + Self::ElevatorMode(enm) => enm.get_str(prop), + Self::EntityState(enm) => enm.get_str(prop), + Self::GasType(enm) => enm.get_str(prop), + Self::GasTypeRocketMode(enm) => enm.get_str(prop), + Self::LogicSlotType(enm) => enm.get_str(prop), + Self::LogicType(enm) => enm.get_str(prop), + Self::PowerMode(enm) => enm.get_str(prop), + Self::ReEntryProfile(enm) => enm.get_str(prop), + Self::RobotMode(enm) => enm.get_str(prop), + Self::SlotClass(enm) => enm.get_str(prop), + Self::SorterInstruction(enm) => enm.get_str(prop), + Self::SortingClass(enm) => enm.get_str(prop), + Self::Sound(enm) => enm.get_str(prop), + Self::TransmitterMode(enm) => enm.get_str(prop), + Self::Vent(enm) => enm.get_str(prop), + Self::Unnamed(enm) => enm.get_str(prop), + } + } + pub fn iter() -> impl std::iter::Iterator { + use strum::IntoEnumIterator; + AirConditioningMode::iter() + .map(|enm| Self::AirCon(enm)) + .chain(AirControlMode::iter().map(|enm| Self::AirControl(enm))) + .chain(ColorType::iter().map(|enm| Self::Color(enm))) + .chain(DaylightSensorMode::iter().map(|enm| Self::DaylightSensorMode(enm))) + .chain(ElevatorMode::iter().map(|enm| Self::ElevatorMode(enm))) + .chain(EntityState::iter().map(|enm| Self::EntityState(enm))) + .chain(GasType::iter().map(|enm| Self::GasType(enm))) + .chain(RocketMode::iter().map(|enm| Self::GasTypeRocketMode(enm))) + .chain(LogicSlotType::iter().map(|enm| Self::LogicSlotType(enm))) + .chain(LogicType::iter().map(|enm| Self::LogicType(enm))) + .chain(PowerMode::iter().map(|enm| Self::PowerMode(enm))) + .chain(ReEntryProfile::iter().map(|enm| Self::ReEntryProfile(enm))) + .chain(RobotMode::iter().map(|enm| Self::RobotMode(enm))) + .chain(Class::iter().map(|enm| Self::SlotClass(enm))) + .chain(SorterInstruction::iter().map(|enm| Self::SorterInstruction(enm))) + .chain(SortingClass::iter().map(|enm| Self::SortingClass(enm))) + .chain(SoundAlert::iter().map(|enm| Self::Sound(enm))) + .chain(LogicTransmitterMode::iter().map(|enm| Self::TransmitterMode(enm))) + .chain(VentDirection::iter().map(|enm| Self::Vent(enm))) + .chain(ConditionOperation::iter().map(|enm| Self::Unnamed(enm))) + } +} +impl std::str::FromStr for BasicEnum { + type Err = crate::errors::ParseError; + fn from_str(s: &str) -> Result { + let end = s.len(); + match s { + "aircon.cold" => Ok(Self::AirCon(AirConditioningMode::Cold)), + "aircon.hot" => Ok(Self::AirCon(AirConditioningMode::Hot)), + "aircontrol.draught" => Ok(Self::AirControl(AirControlMode::Draught)), + "aircontrol.none" => Ok(Self::AirControl(AirControlMode::None)), + "aircontrol.offline" => Ok(Self::AirControl(AirControlMode::Offline)), + "aircontrol.pressure" => Ok(Self::AirControl(AirControlMode::Pressure)), + "color.black" => Ok(Self::Color(ColorType::Black)), + "color.blue" => Ok(Self::Color(ColorType::Blue)), + "color.brown" => Ok(Self::Color(ColorType::Brown)), + "color.gray" => Ok(Self::Color(ColorType::Gray)), + "color.green" => Ok(Self::Color(ColorType::Green)), + "color.khaki" => Ok(Self::Color(ColorType::Khaki)), + "color.orange" => Ok(Self::Color(ColorType::Orange)), + "color.pink" => Ok(Self::Color(ColorType::Pink)), + "color.purple" => Ok(Self::Color(ColorType::Purple)), + "color.red" => Ok(Self::Color(ColorType::Red)), + "color.white" => Ok(Self::Color(ColorType::White)), + "color.yellow" => Ok(Self::Color(ColorType::Yellow)), + "daylightsensormode.default" => { + Ok(Self::DaylightSensorMode(DaylightSensorMode::Default)) + } + "daylightsensormode.horizontal" => { + Ok(Self::DaylightSensorMode(DaylightSensorMode::Horizontal)) + } + "daylightsensormode.vertical" => { + Ok(Self::DaylightSensorMode(DaylightSensorMode::Vertical)) + } + "elevatormode.downward" => Ok(Self::ElevatorMode(ElevatorMode::Downward)), + "elevatormode.stationary" => Ok(Self::ElevatorMode(ElevatorMode::Stationary)), + "elevatormode.upward" => Ok(Self::ElevatorMode(ElevatorMode::Upward)), + "entitystate.alive" => Ok(Self::EntityState(EntityState::Alive)), + "entitystate.dead" => Ok(Self::EntityState(EntityState::Dead)), + "entitystate.decay" => Ok(Self::EntityState(EntityState::Decay)), + "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.liquidhydrogen" => Ok(Self::GasType(GasType::LiquidHydrogen)), + "gastype.liquidnitrogen" => Ok(Self::GasType(GasType::LiquidNitrogen)), + "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)), + "gastype.nitrogen" => Ok(Self::GasType(GasType::Nitrogen)), + "gastype.nitrousoxide" => Ok(Self::GasType(GasType::NitrousOxide)), + "gastype.oxygen" => Ok(Self::GasType(GasType::Oxygen)), + "gastype.pollutant" => Ok(Self::GasType(GasType::Pollutant)), + "gastype.pollutedwater" => Ok(Self::GasType(GasType::PollutedWater)), + "gastype.steam" => Ok(Self::GasType(GasType::Steam)), + "gastype.undefined" => Ok(Self::GasType(GasType::Undefined)), + "gastype.volatiles" => Ok(Self::GasType(GasType::Volatiles)), + "gastype.water" => Ok(Self::GasType(GasType::Water)), + "gastype_rocketmode.chart" => Ok(Self::GasTypeRocketMode(RocketMode::Chart)), + "gastype_rocketmode.discover" => Ok(Self::GasTypeRocketMode(RocketMode::Discover)), + "gastype_rocketmode.invalid" => Ok(Self::GasTypeRocketMode(RocketMode::Invalid)), + "gastype_rocketmode.mine" => Ok(Self::GasTypeRocketMode(RocketMode::Mine)), + "gastype_rocketmode.none" => Ok(Self::GasTypeRocketMode(RocketMode::None)), + "gastype_rocketmode.survey" => Ok(Self::GasTypeRocketMode(RocketMode::Survey)), + "logicslottype.charge" => Ok(Self::LogicSlotType(LogicSlotType::Charge)), + "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.growth" => Ok(Self::LogicSlotType(LogicSlotType::Growth)), + "logicslottype.health" => Ok(Self::LogicSlotType(LogicSlotType::Health)), + "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.none" => Ok(Self::LogicSlotType(LogicSlotType::None)), + "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.pressure" => Ok(Self::LogicSlotType(LogicSlotType::Pressure)), + "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.seeding" => Ok(Self::LogicSlotType(LogicSlotType::Seeding)), + "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)), + "logictype.airrelease" => Ok(Self::LogicType(LogicType::AirRelease)), + "logictype.alignmenterror" => Ok(Self::LogicType(LogicType::AlignmentError)), + "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.bpm" => Ok(Self::LogicType(LogicType::Bpm)), + "logictype.burntimeremaining" => Ok(Self::LogicType(LogicType::BurnTimeRemaining)), + "logictype.celestialhash" => Ok(Self::LogicType(LogicType::CelestialHash)), + "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)), + "logictype.channel3" => Ok(Self::LogicType(LogicType::Channel3)), + "logictype.channel4" => Ok(Self::LogicType(LogicType::Channel4)), + "logictype.channel5" => Ok(Self::LogicType(LogicType::Channel5)), + "logictype.channel6" => Ok(Self::LogicType(LogicType::Channel6)), + "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.clearmemory" => Ok(Self::LogicType(LogicType::ClearMemory)), + "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.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.discover" => Ok(Self::LogicType(LogicType::Discover)), + "logictype.distanceau" => Ok(Self::LogicType(LogicType::DistanceAu)), + "logictype.distancekm" => Ok(Self::LogicType(LogicType::DistanceKm)), + "logictype.drillcondition" => Ok(Self::LogicType(LogicType::DrillCondition)), + "logictype.drymass" => Ok(Self::LogicType(LogicType::DryMass)), + "logictype.eccentricity" => Ok(Self::LogicType(LogicType::Eccentricity)), + "logictype.elevatorlevel" => Ok(Self::LogicType(LogicType::ElevatorLevel)), + "logictype.elevatorspeed" => Ok(Self::LogicType(LogicType::ElevatorSpeed)), + "logictype.entitystate" => Ok(Self::LogicType(LogicType::EntityState)), + "logictype.environmentefficiency" => { + Ok(Self::LogicType(LogicType::EnvironmentEfficiency)) + } + "logictype.error" => Ok(Self::LogicType(LogicType::Error)), + "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.filtration" => Ok(Self::LogicType(LogicType::Filtration)), + "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)), + "logictype.forwardy" => Ok(Self::LogicType(LogicType::ForwardY)), + "logictype.forwardz" => Ok(Self::LogicType(LogicType::ForwardZ)), + "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.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.inclination" => Ok(Self::LogicType(LogicType::Inclination)), + "logictype.index" => Ok(Self::LogicType(LogicType::Index)), + "logictype.interrogationprogress" => { + Ok(Self::LogicType(LogicType::InterrogationProgress)) + } + "logictype.linenumber" => Ok(Self::LogicType(LogicType::LineNumber)), + "logictype.lock" => Ok(Self::LogicType(LogicType::Lock)), + "logictype.manualresearchrequiredpod" => { + Ok(Self::LogicType(LogicType::ManualResearchRequiredPod)) + } + "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.minedquantity" => Ok(Self::LogicType(LogicType::MinedQuantity)), + "logictype.minimumwattstocontact" => { + Ok(Self::LogicType(LogicType::MinimumWattsToContact)) + } + "logictype.mode" => Ok(Self::LogicType(LogicType::Mode)), + "logictype.navpoints" => Ok(Self::LogicType(LogicType::NavPoints)), + "logictype.nextweathereventtime" => { + Ok(Self::LogicType(LogicType::NextWeatherEventTime)) + } + "logictype.none" => Ok(Self::LogicType(LogicType::None)), + "logictype.on" => Ok(Self::LogicType(LogicType::On)), + "logictype.open" => Ok(Self::LogicType(LogicType::Open)), + "logictype.operationaltemperatureefficiency" => { + Ok(Self::LogicType(LogicType::OperationalTemperatureEfficiency)) + } + "logictype.orbitperiod" => Ok(Self::LogicType(LogicType::OrbitPeriod)), + "logictype.orientation" => Ok(Self::LogicType(LogicType::Orientation)), + "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.plantgrowth1" => Ok(Self::LogicType(LogicType::PlantGrowth1)), + "logictype.plantgrowth2" => Ok(Self::LogicType(LogicType::PlantGrowth2)), + "logictype.plantgrowth3" => Ok(Self::LogicType(LogicType::PlantGrowth3)), + "logictype.plantgrowth4" => Ok(Self::LogicType(LogicType::PlantGrowth4)), + "logictype.planthash1" => Ok(Self::LogicType(LogicType::PlantHash1)), + "logictype.planthash2" => Ok(Self::LogicType(LogicType::PlantHash2)), + "logictype.planthash3" => Ok(Self::LogicType(LogicType::PlantHash3)), + "logictype.planthash4" => Ok(Self::LogicType(LogicType::PlantHash4)), + "logictype.planthealth1" => Ok(Self::LogicType(LogicType::PlantHealth1)), + "logictype.planthealth2" => Ok(Self::LogicType(LogicType::PlantHealth2)), + "logictype.planthealth3" => Ok(Self::LogicType(LogicType::PlantHealth3)), + "logictype.planthealth4" => Ok(Self::LogicType(LogicType::PlantHealth4)), + "logictype.positionx" => Ok(Self::LogicType(LogicType::PositionX)), + "logictype.positiony" => Ok(Self::LogicType(LogicType::PositionY)), + "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.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.pressureinput" => Ok(Self::LogicType(LogicType::PressureInput)), + "logictype.pressureinput2" => Ok(Self::LogicType(LogicType::PressureInput2)), + "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.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.ratiocarbondioxideinput" => { + Ok(Self::LogicType(LogicType::RatioCarbonDioxideInput)) + } + "logictype.ratiocarbondioxideinput2" => { + Ok(Self::LogicType(LogicType::RatioCarbonDioxideInput2)) + } + "logictype.ratiocarbondioxideoutput" => { + Ok(Self::LogicType(LogicType::RatioCarbonDioxideOutput)) + } + "logictype.ratiocarbondioxideoutput2" => { + Ok(Self::LogicType(LogicType::RatioCarbonDioxideOutput2)) + } + "logictype.ratiohydrogen" => Ok(Self::LogicType(LogicType::RatioHydrogen)), + "logictype.ratioliquidcarbondioxide" => { + Ok(Self::LogicType(LogicType::RatioLiquidCarbonDioxide)) + } + "logictype.ratioliquidcarbondioxideinput" => { + Ok(Self::LogicType(LogicType::RatioLiquidCarbonDioxideInput)) + } + "logictype.ratioliquidcarbondioxideinput2" => { + Ok(Self::LogicType(LogicType::RatioLiquidCarbonDioxideInput2)) + } + "logictype.ratioliquidcarbondioxideoutput" => { + Ok(Self::LogicType(LogicType::RatioLiquidCarbonDioxideOutput)) + } + "logictype.ratioliquidcarbondioxideoutput2" => { + Ok(Self::LogicType(LogicType::RatioLiquidCarbonDioxideOutput2)) + } + "logictype.ratioliquidhydrogen" => Ok(Self::LogicType(LogicType::RatioLiquidHydrogen)), + "logictype.ratioliquidnitrogen" => Ok(Self::LogicType(LogicType::RatioLiquidNitrogen)), + "logictype.ratioliquidnitrogeninput" => { + Ok(Self::LogicType(LogicType::RatioLiquidNitrogenInput)) + } + "logictype.ratioliquidnitrogeninput2" => { + Ok(Self::LogicType(LogicType::RatioLiquidNitrogenInput2)) + } + "logictype.ratioliquidnitrogenoutput" => { + Ok(Self::LogicType(LogicType::RatioLiquidNitrogenOutput)) + } + "logictype.ratioliquidnitrogenoutput2" => { + Ok(Self::LogicType(LogicType::RatioLiquidNitrogenOutput2)) + } + "logictype.ratioliquidnitrousoxide" => { + Ok(Self::LogicType(LogicType::RatioLiquidNitrousOxide)) + } + "logictype.ratioliquidnitrousoxideinput" => { + Ok(Self::LogicType(LogicType::RatioLiquidNitrousOxideInput)) + } + "logictype.ratioliquidnitrousoxideinput2" => { + Ok(Self::LogicType(LogicType::RatioLiquidNitrousOxideInput2)) + } + "logictype.ratioliquidnitrousoxideoutput" => { + Ok(Self::LogicType(LogicType::RatioLiquidNitrousOxideOutput)) + } + "logictype.ratioliquidnitrousoxideoutput2" => { + Ok(Self::LogicType(LogicType::RatioLiquidNitrousOxideOutput2)) + } + "logictype.ratioliquidoxygen" => Ok(Self::LogicType(LogicType::RatioLiquidOxygen)), + "logictype.ratioliquidoxygeninput" => { + Ok(Self::LogicType(LogicType::RatioLiquidOxygenInput)) + } + "logictype.ratioliquidoxygeninput2" => { + Ok(Self::LogicType(LogicType::RatioLiquidOxygenInput2)) + } + "logictype.ratioliquidoxygenoutput" => { + Ok(Self::LogicType(LogicType::RatioLiquidOxygenOutput)) + } + "logictype.ratioliquidoxygenoutput2" => { + Ok(Self::LogicType(LogicType::RatioLiquidOxygenOutput2)) + } + "logictype.ratioliquidpollutant" => { + Ok(Self::LogicType(LogicType::RatioLiquidPollutant)) + } + "logictype.ratioliquidpollutantinput" => { + Ok(Self::LogicType(LogicType::RatioLiquidPollutantInput)) + } + "logictype.ratioliquidpollutantinput2" => { + Ok(Self::LogicType(LogicType::RatioLiquidPollutantInput2)) + } + "logictype.ratioliquidpollutantoutput" => { + Ok(Self::LogicType(LogicType::RatioLiquidPollutantOutput)) + } + "logictype.ratioliquidpollutantoutput2" => { + Ok(Self::LogicType(LogicType::RatioLiquidPollutantOutput2)) + } + "logictype.ratioliquidvolatiles" => { + Ok(Self::LogicType(LogicType::RatioLiquidVolatiles)) + } + "logictype.ratioliquidvolatilesinput" => { + Ok(Self::LogicType(LogicType::RatioLiquidVolatilesInput)) + } + "logictype.ratioliquidvolatilesinput2" => { + Ok(Self::LogicType(LogicType::RatioLiquidVolatilesInput2)) + } + "logictype.ratioliquidvolatilesoutput" => { + Ok(Self::LogicType(LogicType::RatioLiquidVolatilesOutput)) + } + "logictype.ratioliquidvolatilesoutput2" => { + 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.rationitrogenoutput2" => { + Ok(Self::LogicType(LogicType::RatioNitrogenOutput2)) + } + "logictype.rationitrousoxide" => Ok(Self::LogicType(LogicType::RatioNitrousOxide)), + "logictype.rationitrousoxideinput" => { + Ok(Self::LogicType(LogicType::RatioNitrousOxideInput)) + } + "logictype.rationitrousoxideinput2" => { + Ok(Self::LogicType(LogicType::RatioNitrousOxideInput2)) + } + "logictype.rationitrousoxideoutput" => { + Ok(Self::LogicType(LogicType::RatioNitrousOxideOutput)) + } + "logictype.rationitrousoxideoutput2" => { + 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.ratiopollutant" => Ok(Self::LogicType(LogicType::RatioPollutant)), + "logictype.ratiopollutantinput" => Ok(Self::LogicType(LogicType::RatioPollutantInput)), + "logictype.ratiopollutantinput2" => { + Ok(Self::LogicType(LogicType::RatioPollutantInput2)) + } + "logictype.ratiopollutantoutput" => { + Ok(Self::LogicType(LogicType::RatioPollutantOutput)) + } + "logictype.ratiopollutantoutput2" => { + Ok(Self::LogicType(LogicType::RatioPollutantOutput2)) + } + "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.ratiovolatiles" => Ok(Self::LogicType(LogicType::RatioVolatiles)), + "logictype.ratiovolatilesinput" => Ok(Self::LogicType(LogicType::RatioVolatilesInput)), + "logictype.ratiovolatilesinput2" => { + Ok(Self::LogicType(LogicType::RatioVolatilesInput2)) + } + "logictype.ratiovolatilesoutput" => { + Ok(Self::LogicType(LogicType::RatioVolatilesOutput)) + } + "logictype.ratiovolatilesoutput2" => { + 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.reagents" => Ok(Self::LogicType(LogicType::Reagents)), + "logictype.recipehash" => Ok(Self::LogicType(LogicType::RecipeHash)), + "logictype.referenceid" => Ok(Self::LogicType(LogicType::ReferenceId)), + "logictype.requesthash" => Ok(Self::LogicType(LogicType::RequestHash)), + "logictype.requiredpower" => Ok(Self::LogicType(LogicType::RequiredPower)), + "logictype.returnfuelcost" => Ok(Self::LogicType(LogicType::ReturnFuelCost)), + "logictype.richness" => Ok(Self::LogicType(LogicType::Richness)), + "logictype.rpm" => Ok(Self::LogicType(LogicType::Rpm)), + "logictype.semimajoraxis" => Ok(Self::LogicType(LogicType::SemiMajorAxis)), + "logictype.setting" => Ok(Self::LogicType(LogicType::Setting)), + "logictype.settinginput" => Ok(Self::LogicType(LogicType::SettingInput)), + "logictype.settingoutput" => Ok(Self::LogicType(LogicType::SettingOutput)), + "logictype.signalid" => Ok(Self::LogicType(LogicType::SignalId)), + "logictype.signalstrength" => Ok(Self::LogicType(LogicType::SignalStrength)), + "logictype.sites" => Ok(Self::LogicType(LogicType::Sites)), + "logictype.size" => Ok(Self::LogicType(LogicType::Size)), + "logictype.sizex" => Ok(Self::LogicType(LogicType::SizeX)), + "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.soundalert" => Ok(Self::LogicType(LogicType::SoundAlert)), + "logictype.stress" => Ok(Self::LogicType(LogicType::Stress)), + "logictype.survey" => Ok(Self::LogicType(LogicType::Survey)), + "logictype.targetpadindex" => Ok(Self::LogicType(LogicType::TargetPadIndex)), + "logictype.targetx" => Ok(Self::LogicType(LogicType::TargetX)), + "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.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.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.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.velocityx" => Ok(Self::LogicType(LogicType::VelocityX)), + "logictype.velocityy" => Ok(Self::LogicType(LogicType::VelocityY)), + "logictype.velocityz" => Ok(Self::LogicType(LogicType::VelocityZ)), + "logictype.vertical" => Ok(Self::LogicType(LogicType::Vertical)), + "logictype.verticalratio" => Ok(Self::LogicType(LogicType::VerticalRatio)), + "logictype.volume" => Ok(Self::LogicType(LogicType::Volume)), + "logictype.volumeofliquid" => Ok(Self::LogicType(LogicType::VolumeOfLiquid)), + "logictype.wattsreachingcontact" => { + Ok(Self::LogicType(LogicType::WattsReachingContact)) + } + "logictype.weight" => Ok(Self::LogicType(LogicType::Weight)), + "logictype.workinggasefficiency" => { + Ok(Self::LogicType(LogicType::WorkingGasEfficiency)) + } + "powermode.charged" => Ok(Self::PowerMode(PowerMode::Charged)), + "powermode.charging" => Ok(Self::PowerMode(PowerMode::Charging)), + "powermode.discharged" => Ok(Self::PowerMode(PowerMode::Discharged)), + "powermode.discharging" => Ok(Self::PowerMode(PowerMode::Discharging)), + "powermode.idle" => Ok(Self::PowerMode(PowerMode::Idle)), + "reentryprofile.high" => Ok(Self::ReEntryProfile(ReEntryProfile::High)), + "reentryprofile.max" => Ok(Self::ReEntryProfile(ReEntryProfile::Max)), + "reentryprofile.medium" => Ok(Self::ReEntryProfile(ReEntryProfile::Medium)), + "reentryprofile.none" => Ok(Self::ReEntryProfile(ReEntryProfile::None)), + "reentryprofile.optimal" => Ok(Self::ReEntryProfile(ReEntryProfile::Optimal)), + "robotmode.follow" => Ok(Self::RobotMode(RobotMode::Follow)), + "robotmode.movetotarget" => Ok(Self::RobotMode(RobotMode::MoveToTarget)), + "robotmode.none" => Ok(Self::RobotMode(RobotMode::None)), + "robotmode.pathtotarget" => Ok(Self::RobotMode(RobotMode::PathToTarget)), + "robotmode.roam" => Ok(Self::RobotMode(RobotMode::Roam)), + "robotmode.storagefull" => Ok(Self::RobotMode(RobotMode::StorageFull)), + "robotmode.unload" => Ok(Self::RobotMode(RobotMode::Unload)), + "slotclass.accesscard" => Ok(Self::SlotClass(Class::AccessCard)), + "slotclass.appliance" => Ok(Self::SlotClass(Class::Appliance)), + "slotclass.back" => Ok(Self::SlotClass(Class::Back)), + "slotclass.battery" => Ok(Self::SlotClass(Class::Battery)), + "slotclass.belt" => Ok(Self::SlotClass(Class::Belt)), + "slotclass.blocked" => Ok(Self::SlotClass(Class::Blocked)), + "slotclass.bottle" => Ok(Self::SlotClass(Class::Bottle)), + "slotclass.cartridge" => Ok(Self::SlotClass(Class::Cartridge)), + "slotclass.circuit" => Ok(Self::SlotClass(Class::Circuit)), + "slotclass.circuitboard" => Ok(Self::SlotClass(Class::Circuitboard)), + "slotclass.creditcard" => Ok(Self::SlotClass(Class::CreditCard)), + "slotclass.datadisk" => Ok(Self::SlotClass(Class::DataDisk)), + "slotclass.dirtcanister" => Ok(Self::SlotClass(Class::DirtCanister)), + "slotclass.drillhead" => Ok(Self::SlotClass(Class::DrillHead)), + "slotclass.egg" => Ok(Self::SlotClass(Class::Egg)), + "slotclass.entity" => Ok(Self::SlotClass(Class::Entity)), + "slotclass.flare" => Ok(Self::SlotClass(Class::Flare)), + "slotclass.gascanister" => Ok(Self::SlotClass(Class::GasCanister)), + "slotclass.gasfilter" => Ok(Self::SlotClass(Class::GasFilter)), + "slotclass.glasses" => Ok(Self::SlotClass(Class::Glasses)), + "slotclass.helmet" => Ok(Self::SlotClass(Class::Helmet)), + "slotclass.ingot" => Ok(Self::SlotClass(Class::Ingot)), + "slotclass.liquidbottle" => Ok(Self::SlotClass(Class::LiquidBottle)), + "slotclass.liquidcanister" => Ok(Self::SlotClass(Class::LiquidCanister)), + "slotclass.magazine" => Ok(Self::SlotClass(Class::Magazine)), + "slotclass.motherboard" => Ok(Self::SlotClass(Class::Motherboard)), + "slotclass.none" => Ok(Self::SlotClass(Class::None)), + "slotclass.ore" => Ok(Self::SlotClass(Class::Ore)), + "slotclass.organ" => Ok(Self::SlotClass(Class::Organ)), + "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.soundcartridge" => Ok(Self::SlotClass(Class::SoundCartridge)), + "slotclass.suit" => Ok(Self::SlotClass(Class::Suit)), + "slotclass.suitmod" => Ok(Self::SlotClass(Class::SuitMod)), + "slotclass.tool" => Ok(Self::SlotClass(Class::Tool)), + "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)), + "sortingclass.appliances" => Ok(Self::SortingClass(SortingClass::Appliances)), + "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)), + "sortingclass.ices" => Ok(Self::SortingClass(SortingClass::Ices)), + "sortingclass.kits" => Ok(Self::SortingClass(SortingClass::Kits)), + "sortingclass.ores" => Ok(Self::SortingClass(SortingClass::Ores)), + "sortingclass.resources" => Ok(Self::SortingClass(SortingClass::Resources)), + "sortingclass.storage" => Ok(Self::SortingClass(SortingClass::Storage)), + "sortingclass.tools" => Ok(Self::SortingClass(SortingClass::Tools)), + "sound.airlockcycling" => Ok(Self::Sound(SoundAlert::AirlockCycling)), + "sound.alarm1" => Ok(Self::Sound(SoundAlert::Alarm1)), + "sound.alarm10" => Ok(Self::Sound(SoundAlert::Alarm10)), + "sound.alarm11" => Ok(Self::Sound(SoundAlert::Alarm11)), + "sound.alarm12" => Ok(Self::Sound(SoundAlert::Alarm12)), + "sound.alarm2" => Ok(Self::Sound(SoundAlert::Alarm2)), + "sound.alarm3" => Ok(Self::Sound(SoundAlert::Alarm3)), + "sound.alarm4" => Ok(Self::Sound(SoundAlert::Alarm4)), + "sound.alarm5" => Ok(Self::Sound(SoundAlert::Alarm5)), + "sound.alarm6" => Ok(Self::Sound(SoundAlert::Alarm6)), + "sound.alarm7" => Ok(Self::Sound(SoundAlert::Alarm7)), + "sound.alarm8" => Ok(Self::Sound(SoundAlert::Alarm8)), + "sound.alarm9" => Ok(Self::Sound(SoundAlert::Alarm9)), + "sound.alert" => Ok(Self::Sound(SoundAlert::Alert)), + "sound.danger" => Ok(Self::Sound(SoundAlert::Danger)), + "sound.depressurising" => Ok(Self::Sound(SoundAlert::Depressurising)), + "sound.firefirefire" => Ok(Self::Sound(SoundAlert::FireFireFire)), + "sound.five" => Ok(Self::Sound(SoundAlert::Five)), + "sound.floor" => Ok(Self::Sound(SoundAlert::Floor)), + "sound.four" => Ok(Self::Sound(SoundAlert::Four)), + "sound.haltwhogoesthere" => Ok(Self::Sound(SoundAlert::HaltWhoGoesThere)), + "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.music1" => Ok(Self::Sound(SoundAlert::Music1)), + "sound.music2" => Ok(Self::Sound(SoundAlert::Music2)), + "sound.music3" => Ok(Self::Sound(SoundAlert::Music3)), + "sound.none" => Ok(Self::Sound(SoundAlert::None)), + "sound.one" => Ok(Self::Sound(SoundAlert::One)), + "sound.pollutantsdetected" => Ok(Self::Sound(SoundAlert::PollutantsDetected)), + "sound.powerlow" => Ok(Self::Sound(SoundAlert::PowerLow)), + "sound.pressurehigh" => Ok(Self::Sound(SoundAlert::PressureHigh)), + "sound.pressurelow" => Ok(Self::Sound(SoundAlert::PressureLow)), + "sound.pressurising" => Ok(Self::Sound(SoundAlert::Pressurising)), + "sound.rocketlaunching" => Ok(Self::Sound(SoundAlert::RocketLaunching)), + "sound.stormincoming" => Ok(Self::Sound(SoundAlert::StormIncoming)), + "sound.systemfailure" => Ok(Self::Sound(SoundAlert::SystemFailure)), + "sound.temperaturehigh" => Ok(Self::Sound(SoundAlert::TemperatureHigh)), + "sound.temperaturelow" => Ok(Self::Sound(SoundAlert::TemperatureLow)), + "sound.three" => Ok(Self::Sound(SoundAlert::Three)), + "sound.traderincoming" => Ok(Self::Sound(SoundAlert::TraderIncoming)), + "sound.traderlanded" => Ok(Self::Sound(SoundAlert::TraderLanded)), + "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)), + "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), + }), + } + } +} +impl std::fmt::Display for BasicEnum { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + Self::AirCon(enm) => write!(f, "AirCon.{}", enm), + Self::AirControl(enm) => write!(f, "AirControl.{}", enm), + Self::Color(enm) => write!(f, "Color.{}", enm), + Self::DaylightSensorMode(enm) => write!(f, "DaylightSensorMode.{}", enm), + Self::ElevatorMode(enm) => write!(f, "ElevatorMode.{}", enm), + Self::EntityState(enm) => write!(f, "EntityState.{}", enm), + Self::GasType(enm) => write!(f, "GasType.{}", enm), + Self::GasTypeRocketMode(enm) => write!(f, "GasType_RocketMode.{}", enm), + Self::LogicSlotType(enm) => write!(f, "LogicSlotType.{}", enm), + Self::LogicType(enm) => write!(f, "LogicType.{}", enm), + Self::PowerMode(enm) => write!(f, "PowerMode.{}", enm), + Self::ReEntryProfile(enm) => write!(f, "ReEntryProfile.{}", enm), + Self::RobotMode(enm) => write!(f, "RobotMode.{}", enm), + Self::SlotClass(enm) => write!(f, "SlotClass.{}", enm), + Self::SorterInstruction(enm) => write!(f, "SorterInstruction.{}", enm), + Self::SortingClass(enm) => write!(f, "SortingClass.{}", enm), + 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), + } + } +} diff --git a/ic10emu/src/vm/enums/mod.rs b/ic10emu/src/vm/enums/mod.rs new file mode 100644 index 0000000..e408f98 --- /dev/null +++ b/ic10emu/src/vm/enums/mod.rs @@ -0,0 +1,3 @@ +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 new file mode 100644 index 0000000..8fef185 --- /dev/null +++ b/ic10emu/src/vm/enums/prefabs.rs @@ -0,0 +1,10103 @@ +// ================================================= +// !! <-----> DO NOT MODIFY <-----> !! +// +// This module was automatically generated by an +// xtask +// +// run `cargo xtask generate` from the workspace +// to regenerate +// +// ================================================= + +use serde::{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 = "DynamicGPR", + props( + name = r#""#, + desc = r#""#, + value = "-2085885850" + ) + )] + DynamicGpr = -2085885850i32, + #[strum( + serialize = "ItemAuthoringToolRocketNetwork", + props( + name = r#""#, + desc = r#""#, + value = "-1731627004" + ) + )] + ItemAuthoringToolRocketNetwork = -1731627004i32, + #[strum( + serialize = "MonsterEgg", + props( + name = r#""#, + desc = r#""#, + value = "-1667675295" + ) + )] + MonsterEgg = -1667675295i32, + #[strum( + serialize = "MotherboardMissionControl", + props( + name = r#""#, + desc = r#""#, + value = "-127121474" + ) + )] + MotherboardMissionControl = -127121474i32, + #[strum( + serialize = "StructureCableCorner3HBurnt", + props( + name = r#""#, + desc = r#""#, + value = "2393826" + ) + )] + StructureCableCorner3HBurnt = 2393826i32, + #[strum( + serialize = "StructureDrinkingFountain", + props( + name = r#""#, + desc = r#""#, + value = "1968371847" + ) + )] + StructureDrinkingFountain = 1968371847i32, + #[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 = "StructureAccessBridge", + props( + name = r#"Access Bridge"#, + desc = r#"Extendable bridge that spans three grids"#, + value = "1298920475" + ) + )] + StructureAccessBridge = 1298920475i32, + #[strum( + serialize = "AccessCardBlack", + props(name = r#"Access Card (Black)"#, desc = r#""#, value = "-1330388999") + )] + AccessCardBlack = -1330388999i32, + #[strum( + serialize = "AccessCardBlue", + props(name = r#"Access Card (Blue)"#, desc = r#""#, value = "-1411327657") + )] + AccessCardBlue = -1411327657i32, + #[strum( + serialize = "AccessCardBrown", + props(name = r#"Access Card (Brown)"#, desc = r#""#, value = "1412428165") + )] + AccessCardBrown = 1412428165i32, + #[strum( + serialize = "AccessCardGray", + props(name = r#"Access Card (Gray)"#, desc = r#""#, value = "-1339479035") + )] + AccessCardGray = -1339479035i32, + #[strum( + serialize = "AccessCardGreen", + props(name = r#"Access Card (Green)"#, desc = r#""#, value = "-374567952") + )] + AccessCardGreen = -374567952i32, + #[strum( + serialize = "AccessCardKhaki", + props(name = r#"Access Card (Khaki)"#, desc = r#""#, value = "337035771") + )] + AccessCardKhaki = 337035771i32, + #[strum( + serialize = "AccessCardOrange", + props(name = r#"Access Card (Orange)"#, desc = r#""#, value = "-332896929") + )] + AccessCardOrange = -332896929i32, + #[strum( + serialize = "AccessCardPink", + props(name = r#"Access Card (Pink)"#, desc = r#""#, value = "431317557") + )] + AccessCardPink = 431317557i32, + #[strum( + serialize = "AccessCardPurple", + props(name = r#"Access Card (Purple)"#, desc = r#""#, value = "459843265") + )] + AccessCardPurple = 459843265i32, + #[strum( + serialize = "AccessCardRed", + props(name = r#"Access Card (Red)"#, desc = r#""#, value = "-1713748313") + )] + AccessCardRed = -1713748313i32, + #[strum( + serialize = "AccessCardWhite", + props(name = r#"Access Card (White)"#, desc = r#""#, value = "2079959157") + )] + AccessCardWhite = 2079959157i32, + #[strum( + serialize = "AccessCardYellow", + props(name = r#"Access Card (Yellow)"#, desc = r#""#, value = "568932536") + )] + AccessCardYellow = 568932536i32, + #[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 = "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 = "ItemAdhesiveInsulation", + props(name = r#"Adhesive Insulation"#, desc = r#""#, value = "1871048978") + )] + ItemAdhesiveInsulation = 1871048978i32, + #[strum( + serialize = "CircuitboardAdvAirlockControl", + props(name = r#"Advanced Airlock"#, desc = r#""#, value = "1633663176") + )] + CircuitboardAdvAirlockControl = 1633663176i32, + #[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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "ImGuiCircuitboardAirlockControl", + props(name = r#"Airlock (Experimental)"#, desc = r#""#, value = "-73796547") + )] + ImGuiCircuitboardAirlockControl = -73796547i32, + #[strum( + serialize = "ItemAlienMushroom", + props(name = r#"Alien Mushroom"#, desc = r#""#, value = "176446172") + )] + ItemAlienMushroom = 176446172i32, + #[strum( + serialize = "ItemAmmoBox", + props(name = r#"Ammo Box"#, desc = r#""#, value = "-9559091") + )] + ItemAmmoBox = -9559091i32, + #[strum( + serialize = "ItemAngleGrinder", + props( + name = r#"Angle Grinder"#, + desc = r#"Angles-be-gone with the trusty angle grinder."#, + value = "201215010" + ) + )] + ItemAngleGrinder = 201215010i32, + #[strum( + serialize = "ApplianceDeskLampLeft", + props( + name = r#"Appliance Desk Lamp Left"#, + desc = r#""#, + value = "-1683849799" + ) + )] + ApplianceDeskLampLeft = -1683849799i32, + #[strum( + serialize = "ApplianceDeskLampRight", + props( + name = r#"Appliance Desk Lamp Right"#, + desc = r#""#, + value = "1174360780" + ) + )] + ApplianceDeskLampRight = 1174360780i32, + #[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 = "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 = "ItemArcWelder", + props(name = r#"Arc Welder"#, desc = r#""#, value = "1385062886") + )] + ItemArcWelder = 1385062886i32, + #[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 = "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 = "ItemAstroloySheets", + props(name = r#"Astroloy Sheets"#, desc = r#""#, value = "-1662476145") + )] + ItemAstroloySheets = -1662476145i32, + #[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 = "ItemAuthoringTool", + props(name = r#"Authoring Tool"#, desc = r#""#, value = "789015045") + )] + ItemAuthoringTool = 789015045i32, + #[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 = "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 = "StructureAutomatedOven", + props(name = r#"Automated Oven"#, desc = r#""#, value = "-1672404896") + )] + StructureAutomatedOven = -1672404896i32, + #[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 = "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 = "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 = "ItemPotatoBaked", + props(name = r#"Baked Potato"#, desc = r#""#, value = "-2111886401") + )] + ItemPotatoBaked = -2111886401i32, + #[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 = "ItemBasketBall", + props(name = r#"Basket Ball"#, desc = r#""#, value = "-1262580790") + )] + ItemBasketBall = -1262580790i32, + #[strum( + serialize = "StructureBasketHoop", + props(name = r#"Basket Hoop"#, desc = r#""#, value = "-1613497288") + )] + StructureBasketHoop = -1613497288i32, + #[strum( + serialize = "StructureLogicBatchReader", + props(name = r#"Batch Reader"#, desc = r#""#, value = "264413729") + )] + StructureLogicBatchReader = 264413729i32, + #[strum( + serialize = "StructureLogicBatchSlotReader", + props(name = r#"Batch Slot Reader"#, desc = r#""#, value = "436888930") + )] + StructureLogicBatchSlotReader = 436888930i32, + #[strum( + serialize = "StructureLogicBatchWriter", + props(name = r#"Batch Writer"#, desc = r#""#, value = "1415443359") + )] + StructureLogicBatchWriter = 1415443359i32, + #[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 = "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 = "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 = "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 = "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 = "StructureBatteryChargerSmall", + props(name = r#"Battery Charger Small"#, desc = r#""#, value = "-761772413") + )] + StructureBatteryChargerSmall = -761772413i32, + #[strum( + serialize = "ItemBatteryChargerSmall", + props(name = r#"Battery Charger Small"#, desc = r#""#, value = "1008295833") + )] + ItemBatteryChargerSmall = 1008295833i32, + #[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 = "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 = "StructureBeacon", + props(name = r#"Beacon"#, desc = r#""#, value = "-188177083") + )] + StructureBeacon = -188177083i32, + #[strum( + serialize = "StructureAngledBench", + props(name = r#"Bench (Angled)"#, desc = r#""#, value = "1811979158") + )] + StructureAngledBench = 1811979158i32, + #[strum( + serialize = "StructureBench1", + props(name = r#"Bench (Counter Style)"#, desc = r#""#, value = "406745009") + )] + StructureBench1 = 406745009i32, + #[strum( + serialize = "StructureFlatBench", + props(name = r#"Bench (Flat)"#, desc = r#""#, value = "839890807") + )] + StructureFlatBench = 839890807i32, + #[strum( + serialize = "StructureBench3", + props(name = r#"Bench (Frame Style)"#, desc = r#""#, value = "-164622691") + )] + StructureBench3 = -164622691i32, + #[strum( + serialize = "StructureBench2", + props( + name = r#"Bench (High Tech Style)"#, + desc = r#""#, + value = "-2127086069" + ) + )] + StructureBench2 = -2127086069i32, + #[strum( + serialize = "StructureBench4", + props( + name = r#"Bench (Workbench Style)"#, + desc = r#""#, + value = "1750375230" + ) + )] + StructureBench4 = 1750375230i32, + #[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 = "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 = "StructureBlockBed", + props( + name = r#"Block Bed"#, + desc = r#"Description coming."#, + value = "697908419" + ) + )] + StructureBlockBed = 697908419i32, + #[strum( + serialize = "StructureBlocker", + props(name = r#"Blocker"#, desc = r#""#, value = "378084505") + )] + StructureBlocker = 378084505i32, + #[strum( + serialize = "ItemBreadLoaf", + props(name = r#"Bread Loaf"#, desc = r#""#, value = "893514943") + )] + ItemBreadLoaf = 893514943i32, + #[strum( + serialize = "StructureCableCorner3Burnt", + props( + name = r#"Burnt Cable (3-Way Corner)"#, + desc = r#""#, + value = "318437449" + ) + )] + StructureCableCorner3Burnt = 318437449i32, + #[strum( + serialize = "StructureCableCorner4Burnt", + props( + name = r#"Burnt Cable (4-Way Corner)"#, + desc = r#""#, + value = "268421361" + ) + )] + StructureCableCorner4Burnt = 268421361i32, + #[strum( + serialize = "StructureCableJunction4Burnt", + props( + name = r#"Burnt Cable (4-Way Junction)"#, + desc = r#""#, + value = "-1756896811" + ) + )] + StructureCableJunction4Burnt = -1756896811i32, + #[strum( + serialize = "StructureCableJunction4HBurnt", + props( + name = r#"Burnt Cable (4-Way Junction)"#, + desc = r#""#, + value = "-115809132" + ) + )] + StructureCableJunction4HBurnt = -115809132i32, + #[strum( + serialize = "StructureCableJunction5Burnt", + props( + name = r#"Burnt Cable (5-Way Junction)"#, + desc = r#""#, + value = "1545286256" + ) + )] + StructureCableJunction5Burnt = 1545286256i32, + #[strum( + serialize = "StructureCableJunction6Burnt", + props( + name = r#"Burnt Cable (6-Way Junction)"#, + desc = r#""#, + value = "-628145954" + ) + )] + StructureCableJunction6Burnt = -628145954i32, + #[strum( + serialize = "StructureCableJunction6HBurnt", + props( + name = r#"Burnt Cable (6-Way Junction)"#, + desc = r#""#, + value = "1854404029" + ) + )] + StructureCableJunction6HBurnt = 1854404029i32, + #[strum( + serialize = "StructureCableCornerHBurnt", + props(name = r#"Burnt Cable (Corner)"#, desc = r#""#, value = "1931412811") + )] + StructureCableCornerHBurnt = 1931412811i32, + #[strum( + serialize = "StructureCableCornerBurnt", + props(name = r#"Burnt Cable (Corner)"#, desc = r#""#, value = "-177220914") + )] + StructureCableCornerBurnt = -177220914i32, + #[strum( + serialize = "StructureCableJunctionHBurnt", + props(name = r#"Burnt Cable (Junction)"#, desc = r#""#, value = "-341365649") + )] + StructureCableJunctionHBurnt = -341365649i32, + #[strum( + serialize = "StructureCableJunctionBurnt", + props( + name = r#"Burnt Cable (Junction)"#, + desc = r#""#, + value = "-1620686196" + ) + )] + StructureCableJunctionBurnt = -1620686196i32, + #[strum( + serialize = "StructureCableStraightHBurnt", + props(name = r#"Burnt Cable (Straight)"#, desc = r#""#, value = "2085762089") + )] + StructureCableStraightHBurnt = 2085762089i32, + #[strum( + serialize = "StructureCableStraightBurnt", + props( + name = r#"Burnt Cable (Straight)"#, + desc = r#""#, + value = "-1196981113" + ) + )] + StructureCableStraightBurnt = -1196981113i32, + #[strum( + serialize = "StructureCableCorner4HBurnt", + props( + name = r#"Burnt Heavy Cable (4-Way Corner)"#, + desc = r#""#, + value = "-981223316" + ) + )] + StructureCableCorner4HBurnt = -981223316i32, + #[strum( + serialize = "StructureCableJunctionH5Burnt", + props( + name = r#"Burnt Heavy Cable (5-Way Junction)"#, + desc = r#""#, + value = "1701593300" + ) + )] + StructureCableJunctionH5Burnt = 1701593300i32, + #[strum( + serialize = "StructureLogicButton", + props(name = r#"Button"#, desc = r#""#, value = "491845673") + )] + StructureLogicButton = 491845673i32, + #[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 = "StructureCableCorner4", + props(name = r#"Cable (4-Way Corner)"#, desc = r#""#, value = "-1542172466") + )] + StructureCableCorner4 = -1542172466i32, + #[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 = "StructureCableJunction5", + props(name = r#"Cable (5-Way Junction)"#, desc = r#""#, value = "894390004") + )] + StructureCableJunction5 = 894390004i32, + #[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 = "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 = "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 = "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 = "StructureCableAnalysizer", + props(name = r#"Cable Analyzer"#, desc = r#""#, value = "1036015121") + )] + StructureCableAnalysizer = 1036015121i32, + #[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 = "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 = "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 = "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 = "ItemGasCanisterEmpty", + props(name = r#"Canister"#, desc = r#""#, value = "42280099") + )] + ItemGasCanisterEmpty = 42280099i32, + #[strum( + serialize = "ItemGasCanisterCarbonDioxide", + props(name = r#"Canister (CO2)"#, desc = r#""#, value = "-767685874") + )] + ItemGasCanisterCarbonDioxide = -767685874i32, + #[strum( + serialize = "ItemGasCanisterFuel", + props(name = r#"Canister (Fuel)"#, desc = r#""#, value = "-1014695176") + )] + ItemGasCanisterFuel = -1014695176i32, + #[strum( + serialize = "ItemGasCanisterNitrogen", + props(name = r#"Canister (Nitrogen)"#, desc = r#""#, value = "2145068424") + )] + ItemGasCanisterNitrogen = 2145068424i32, + #[strum( + serialize = "ItemGasCanisterOxygen", + props(name = r#"Canister (Oxygen)"#, desc = r#""#, value = "-1152261938") + )] + ItemGasCanisterOxygen = -1152261938i32, + #[strum( + serialize = "ItemGasCanisterPollutants", + props(name = r#"Canister (Pollutants)"#, desc = r#""#, value = "-1552586384") + )] + ItemGasCanisterPollutants = -1552586384i32, + #[strum( + serialize = "ItemGasCanisterVolatiles", + props(name = r#"Canister (Volatiles)"#, desc = r#""#, value = "-472094806") + )] + ItemGasCanisterVolatiles = -472094806i32, + #[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 = "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 = "ItemFrenchFries", + props( + name = r#"Canned French Fries"#, + desc = r#"Because space would suck without 'em."#, + value = "-57608687" + ) + )] + ItemFrenchFries = -57608687i32, + #[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 = "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 = "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 = "CardboardBox", + props(name = r#"Cardboard Box"#, desc = r#""#, value = "-1976947556") + )] + CardboardBox = -1976947556i32, + #[strum( + serialize = "StructureCargoStorageMedium", + props(name = r#"Cargo Storage (Medium)"#, desc = r#""#, value = "1151864003") + )] + StructureCargoStorageMedium = 1151864003i32, + #[strum( + serialize = "StructureCargoStorageSmall", + props(name = r#"Cargo Storage (Small)"#, desc = r#""#, value = "-1493672123") + )] + StructureCargoStorageSmall = -1493672123i32, + #[strum( + serialize = "CartridgeAccessController", + props( + name = r#"Cartridge (Access Controller)"#, + desc = r#""#, + value = "-1634532552" + ) + )] + CartridgeAccessController = -1634532552i32, + #[strum( + serialize = "CartridgePlantAnalyser", + props( + name = r#"Cartridge Plant Analyser"#, + desc = r#""#, + value = "1101328282" + ) + )] + CartridgePlantAnalyser = 1101328282i32, + #[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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "StructureChairBacklessDouble", + props( + name = r#"Chair (Backless Double)"#, + desc = r#""#, + value = "1944858936" + ) + )] + StructureChairBacklessDouble = 1944858936i32, + #[strum( + serialize = "StructureChairBacklessSingle", + props( + name = r#"Chair (Backless Single)"#, + desc = r#""#, + value = "1672275150" + ) + )] + StructureChairBacklessSingle = 1672275150i32, + #[strum( + serialize = "StructureChairBoothCornerLeft", + props( + name = r#"Chair (Booth Corner Left)"#, + desc = r#""#, + value = "-367720198" + ) + )] + StructureChairBoothCornerLeft = -367720198i32, + #[strum( + serialize = "StructureChairBoothMiddle", + props(name = r#"Chair (Booth Middle)"#, desc = r#""#, value = "1640720378") + )] + StructureChairBoothMiddle = 1640720378i32, + #[strum( + serialize = "StructureChairRectangleDouble", + props( + name = r#"Chair (Rectangle Double)"#, + desc = r#""#, + value = "-1152812099" + ) + )] + StructureChairRectangleDouble = -1152812099i32, + #[strum( + serialize = "StructureChairRectangleSingle", + props( + name = r#"Chair (Rectangle Single)"#, + desc = r#""#, + value = "-1425428917" + ) + )] + StructureChairRectangleSingle = -1425428917i32, + #[strum( + serialize = "StructureChairThickDouble", + props(name = r#"Chair (Thick Double)"#, desc = r#""#, value = "-1245724402") + )] + StructureChairThickDouble = -1245724402i32, + #[strum( + serialize = "StructureChairThickSingle", + props(name = r#"Chair (Thick Single)"#, desc = r#""#, value = "-1510009608") + )] + StructureChairThickSingle = -1510009608i32, + #[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 = "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 = "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 = "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 = "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 = "ItemChemLightYellow", + props( + name = r#"Chem Light (Yellow)"#, + desc = r#"Dispel the darkness with this yellow glowstick."#, + value = "1224819963" + ) + )] + ItemChemLightYellow = 1224819963i32, + #[strum( + serialize = "ApplianceChemistryStation", + props(name = r#"Chemistry Station"#, desc = r#""#, value = "1365789392") + )] + ApplianceChemistryStation = 1365789392i32, + #[strum( + serialize = "NpcChick", + props(name = r#"Chick"#, desc = r#""#, value = "155856647") + )] + NpcChick = 155856647i32, + #[strum( + serialize = "NpcChicken", + props(name = r#"Chicken"#, desc = r#""#, value = "399074198") + )] + NpcChicken = 399074198i32, + #[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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "StructureChuteFlipFlopSplitter", + props( + name = r#"Chute Flip Flop Splitter"#, + desc = r#"A chute that toggles between two outputs"#, + value = "-1446854725" + ) + )] + StructureChuteFlipFlopSplitter = -1446854725i32, + #[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 = "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 = "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 = "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 = "ItemCoffeeMug", + props(name = r#"Coffee Mug"#, desc = r#""#, value = "1800622698") + )] + ItemCoffeeMug = 1800622698i32, + #[strum( + serialize = "ReagentColorBlue", + props(name = r#"Color Dye (Blue)"#, desc = r#""#, value = "980054869") + )] + ReagentColorBlue = 980054869i32, + #[strum( + serialize = "ReagentColorGreen", + props(name = r#"Color Dye (Green)"#, desc = r#""#, value = "120807542") + )] + ReagentColorGreen = 120807542i32, + #[strum( + serialize = "ReagentColorOrange", + props(name = r#"Color Dye (Orange)"#, desc = r#""#, value = "-400696159") + )] + ReagentColorOrange = -400696159i32, + #[strum( + serialize = "ReagentColorRed", + props(name = r#"Color Dye (Red)"#, desc = r#""#, value = "1998377961") + )] + ReagentColorRed = 1998377961i32, + #[strum( + serialize = "ReagentColorYellow", + props(name = r#"Color Dye (Yellow)"#, desc = r#""#, value = "635208006") + )] + ReagentColorYellow = 635208006i32, + #[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 = "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 = "StructureCompositeCladdingAngledCornerInnerLongL", + props( + name = r#"Composite Cladding (Angled Corner Inner Long L)"#, + desc = r#""#, + value = "947705066" + ) + )] + StructureCompositeCladdingAngledCornerInnerLongL = 947705066i32, + #[strum( + serialize = "StructureCompositeCladdingAngledCornerInnerLongR", + props( + name = r#"Composite Cladding (Angled Corner Inner Long R)"#, + desc = r#""#, + value = "-1032590967" + ) + )] + StructureCompositeCladdingAngledCornerInnerLongR = -1032590967i32, + #[strum( + serialize = "StructureCompositeCladdingAngledCornerInnerLong", + props( + name = r#"Composite Cladding (Angled Corner Inner Long)"#, + desc = r#""#, + value = "-1417912632" + ) + )] + StructureCompositeCladdingAngledCornerInnerLong = -1417912632i32, + #[strum( + serialize = "StructureCompositeCladdingAngledCornerInner", + props( + name = r#"Composite Cladding (Angled Corner Inner)"#, + desc = r#""#, + value = "-1841871763" + ) + )] + StructureCompositeCladdingAngledCornerInner = -1841871763i32, + #[strum( + serialize = "StructureCompositeCladdingAngledCorner", + props( + name = r#"Composite Cladding (Angled Corner)"#, + desc = r#""#, + value = "-69685069" + ) + )] + StructureCompositeCladdingAngledCorner = -69685069i32, + #[strum( + serialize = "StructureCompositeCladdingAngled", + props( + name = r#"Composite Cladding (Angled)"#, + desc = r#""#, + value = "-1513030150" + ) + )] + StructureCompositeCladdingAngled = -1513030150i32, + #[strum( + serialize = "StructureCompositeCladdingCylindricalPanel", + props( + name = r#"Composite Cladding (Cylindrical Panel)"#, + desc = r#""#, + value = "1077151132" + ) + )] + StructureCompositeCladdingCylindricalPanel = 1077151132i32, + #[strum( + serialize = "StructureCompositeCladdingCylindrical", + props( + name = r#"Composite Cladding (Cylindrical)"#, + desc = r#""#, + value = "212919006" + ) + )] + StructureCompositeCladdingCylindrical = 212919006i32, + #[strum( + serialize = "StructureCompositeCladdingAngledCornerLong", + props( + name = r#"Composite Cladding (Long Angled Corner)"#, + desc = r#""#, + value = "850558385" + ) + )] + StructureCompositeCladdingAngledCornerLong = 850558385i32, + #[strum( + serialize = "StructureCompositeCladdingAngledCornerLongR", + props( + name = r#"Composite Cladding (Long Angled Mirrored Corner)"#, + desc = r#""#, + value = "-348918222" + ) + )] + StructureCompositeCladdingAngledCornerLongR = -348918222i32, + #[strum( + serialize = "StructureCompositeCladdingAngledLong", + props( + name = r#"Composite Cladding (Long Angled)"#, + desc = r#""#, + value = "-387546514" + ) + )] + StructureCompositeCladdingAngledLong = -387546514i32, + #[strum( + serialize = "StructureCompositeCladdingPanel", + props( + name = r#"Composite Cladding (Panel)"#, + desc = r#""#, + value = "1997436771" + ) + )] + StructureCompositeCladdingPanel = 1997436771i32, + #[strum( + serialize = "StructureCompositeCladdingRoundedCornerInner", + props( + name = r#"Composite Cladding (Rounded Corner Inner)"#, + desc = r#""#, + value = "110184667" + ) + )] + StructureCompositeCladdingRoundedCornerInner = 110184667i32, + #[strum( + serialize = "StructureCompositeCladdingRoundedCorner", + props( + name = r#"Composite Cladding (Rounded Corner)"#, + desc = r#""#, + value = "1951525046" + ) + )] + StructureCompositeCladdingRoundedCorner = 1951525046i32, + #[strum( + serialize = "StructureCompositeCladdingRounded", + props( + name = r#"Composite Cladding (Rounded)"#, + desc = r#""#, + value = "-259357734" + ) + )] + StructureCompositeCladdingRounded = -259357734i32, + #[strum( + serialize = "StructureCompositeCladdingSphericalCap", + props( + name = r#"Composite Cladding (Spherical Cap)"#, + desc = r#""#, + value = "534213209" + ) + )] + StructureCompositeCladdingSphericalCap = 534213209i32, + #[strum( + serialize = "StructureCompositeCladdingSphericalCorner", + props( + name = r#"Composite Cladding (Spherical Corner)"#, + desc = r#""#, + value = "1751355139" + ) + )] + StructureCompositeCladdingSphericalCorner = 1751355139i32, + #[strum( + serialize = "StructureCompositeCladdingSpherical", + props( + name = r#"Composite Cladding (Spherical)"#, + desc = r#""#, + value = "139107321" + ) + )] + StructureCompositeCladdingSpherical = 139107321i32, + #[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 = "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 = "StructureCompositeFloorGrating2", + props( + name = r#"Composite Floor Grating (Type 2)"#, + desc = r#""#, + value = "-895027741" + ) + )] + StructureCompositeFloorGrating2 = -895027741i32, + #[strum( + serialize = "StructureCompositeFloorGrating3", + props( + name = r#"Composite Floor Grating (Type 3)"#, + desc = r#""#, + value = "-1113471627" + ) + )] + StructureCompositeFloorGrating3 = -1113471627i32, + #[strum( + serialize = "StructureCompositeFloorGrating4", + props( + name = r#"Composite Floor Grating (Type 4)"#, + desc = r#""#, + value = "600133846" + ) + )] + StructureCompositeFloorGrating4 = 600133846i32, + #[strum( + serialize = "StructureCompositeFloorGratingOpen", + props( + name = r#"Composite Floor Grating Open"#, + desc = r#""#, + value = "2109695912" + ) + )] + StructureCompositeFloorGratingOpen = 2109695912i32, + #[strum( + serialize = "StructureCompositeFloorGratingOpenRotated", + props( + name = r#"Composite Floor Grating Open Rotated"#, + desc = r#""#, + value = "882307910" + ) + )] + StructureCompositeFloorGratingOpenRotated = 882307910i32, + #[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 = "StructureCompositeWall02", + props(name = r#"Composite Wall (Type 2)"#, desc = r#""#, value = "718343384") + )] + StructureCompositeWall02 = 718343384i32, + #[strum( + serialize = "StructureCompositeWall03", + props( + name = r#"Composite Wall (Type 3)"#, + desc = r#""#, + value = "1574321230" + ) + )] + StructureCompositeWall03 = 1574321230i32, + #[strum( + serialize = "StructureCompositeWall04", + props( + name = r#"Composite Wall (Type 4)"#, + desc = r#""#, + value = "-1011701267" + ) + )] + StructureCompositeWall04 = -1011701267i32, + #[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 = "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 = "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 = "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 = "ItemCookedCondensedMilk", + props( + name = r#"Condensed Milk"#, + desc = r#"A high-nutrient cooked food, which can be canned."#, + value = "1715917521" + ) + )] + ItemCookedCondensedMilk = 1715917521i32, + #[strum( + serialize = "CartridgeConfiguration", + props(name = r#"Configuration"#, desc = r#""#, value = "-932136011") + )] + CartridgeConfiguration = -932136011i32, + #[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 = "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 = "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 = "StructureCrateMount", + props(name = r#"Container Mount"#, desc = r#""#, value = "-733500083") + )] + StructureCrateMount = -733500083i32, + #[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 = "ItemCookedCorn", + props( + name = r#"Cooked Corn"#, + desc = r#"A high-nutrient cooked food, which can be canned."#, + value = "1344773148" + ) + )] + ItemCookedCorn = 1344773148i32, + #[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 = "ItemCookedPumpkin", + props( + name = r#"Cooked Pumpkin"#, + desc = r#"A high-nutrient cooked food, which can be canned."#, + value = "1849281546" + ) + )] + ItemCookedPumpkin = 1849281546i32, + #[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 = "ItemCookedSoybean", + props( + name = r#"Cooked Soybean"#, + desc = r#"A high-nutrient cooked food, which can be canned."#, + value = "1353449022" + ) + )] + ItemCookedSoybean = 1353449022i32, + #[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 = "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 = "SeedBag_Corn", + props( + name = r#"Corn Seeds"#, + desc = r#"Grow a Corn."#, + value = "-1290755415" + ) + )] + SeedBagCorn = -1290755415i32, + #[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 = "StructureCornerLocker", + props(name = r#"Corner Locker"#, desc = r#""#, value = "-1968255729") + )] + StructureCornerLocker = -1968255729i32, + #[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 = "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 = "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 = "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 = "ItemCreditCard", + props(name = r#"Credit Card"#, desc = r#""#, value = "-1756772618") + )] + ItemCreditCard = -1756772618i32, + #[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 = "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 = "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 = "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 = "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 = "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 = "ItemDataDisk", + props(name = r#"Data Disk"#, desc = r#""#, value = "1005843700") + )] + ItemDataDisk = 1005843700i32, + #[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 = "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 = "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 = "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 = "StructureLogicDial", + props( + name = r#"Dial"#, + desc = r#"An assignable dial with up to 1000 modes."#, + value = "554524804" + ) + )] + StructureLogicDial = 554524804i32, + #[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 = "StructureDiodeSlide", + props(name = r#"Diode Slide"#, desc = r#""#, value = "576516101") + )] + StructureDiodeSlide = 576516101i32, + #[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 = "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 = "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 = "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 = "StructureDockPortSide", + props(name = r#"Dock (Port Side)"#, desc = r#""#, value = "-137465079") + )] + StructureDockPortSide = -137465079i32, + #[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 = "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 = "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 = "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 = "DynamicGasCanisterRocketFuel", + props( + name = r#"Dynamic Gas Canister Rocket Fuel"#, + desc = r#""#, + value = "-8883951" + ) + )] + DynamicGasCanisterRocketFuel = -8883951i32, + #[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 = "ItemEggCarton", + props( + name = r#"Egg Carton"#, + desc = r#"Within, eggs reside in mysterious, marmoreal silence."#, + value = "-524289310" + ) + )] + ItemEggCarton = -524289310i32, + #[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 = "ItemElectronicParts", + props(name = r#"Electronic Parts"#, desc = r#""#, value = "731250882") + )] + ItemElectronicParts = 731250882i32, + #[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 = "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 = "ElevatorCarrage", + props(name = r#"Elevator"#, desc = r#""#, value = "-110788403") + )] + ElevatorCarrage = -110788403i32, + #[strum( + serialize = "StructureElevatorLevelIndustrial", + props(name = r#"Elevator Level"#, desc = r#""#, value = "2060648791") + )] + StructureElevatorLevelIndustrial = 2060648791i32, + #[strum( + serialize = "StructureElevatorLevelFront", + props( + name = r#"Elevator Level (Cabled)"#, + desc = r#""#, + value = "-827912235" + ) + )] + StructureElevatorLevelFront = -827912235i32, + #[strum( + serialize = "StructureElevatorShaftIndustrial", + props(name = r#"Elevator Shaft"#, desc = r#""#, value = "1998354978") + )] + StructureElevatorShaftIndustrial = 1998354978i32, + #[strum( + serialize = "StructureElevatorShaft", + props(name = r#"Elevator Shaft (Cabled)"#, desc = r#""#, value = "826144419") + )] + StructureElevatorShaft = 826144419i32, + #[strum( + serialize = "ItemEmergencyAngleGrinder", + props( + name = r#"Emergency Angle Grinder"#, + desc = r#""#, + value = "-351438780" + ) + )] + ItemEmergencyAngleGrinder = -351438780i32, + #[strum( + serialize = "ItemEmergencyArcWelder", + props(name = r#"Emergency Arc Welder"#, desc = r#""#, value = "-1056029600") + )] + ItemEmergencyArcWelder = -1056029600i32, + #[strum( + serialize = "ItemEmergencyCrowbar", + props(name = r#"Emergency Crowbar"#, desc = r#""#, value = "976699731") + )] + ItemEmergencyCrowbar = 976699731i32, + #[strum( + serialize = "ItemEmergencyDrill", + props(name = r#"Emergency Drill"#, desc = r#""#, value = "-2052458905") + )] + ItemEmergencyDrill = -2052458905i32, + #[strum( + serialize = "ItemEmergencyEvaSuit", + props(name = r#"Emergency Eva Suit"#, desc = r#""#, value = "1791306431") + )] + ItemEmergencyEvaSuit = 1791306431i32, + #[strum( + serialize = "ItemEmergencyPickaxe", + props(name = r#"Emergency Pickaxe"#, desc = r#""#, value = "-1061510408") + )] + ItemEmergencyPickaxe = -1061510408i32, + #[strum( + serialize = "ItemEmergencyScrewdriver", + props(name = r#"Emergency Screwdriver"#, desc = r#""#, value = "266099983") + )] + ItemEmergencyScrewdriver = 266099983i32, + #[strum( + serialize = "ItemEmergencySpaceHelmet", + props(name = r#"Emergency Space Helmet"#, desc = r#""#, value = "205916793") + )] + ItemEmergencySpaceHelmet = 205916793i32, + #[strum( + serialize = "ItemEmergencyToolBelt", + props(name = r#"Emergency Tool Belt"#, desc = r#""#, value = "1661941301") + )] + ItemEmergencyToolBelt = 1661941301i32, + #[strum( + serialize = "ItemEmergencyWireCutters", + props(name = r#"Emergency Wire Cutters"#, desc = r#""#, value = "2102803952") + )] + ItemEmergencyWireCutters = 2102803952i32, + #[strum( + serialize = "ItemEmergencyWrench", + props(name = r#"Emergency Wrench"#, desc = r#""#, value = "162553030") + )] + ItemEmergencyWrench = 162553030i32, + #[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 = "ItemPlantEndothermic_Creative", + props( + name = r#"Endothermic Plant Creative"#, + desc = r#""#, + value = "-1159179557" + ) + )] + ItemPlantEndothermicCreative = -1159179557i32, + #[strum( + serialize = "WeaponPistolEnergy", + props( + name = r#"Energy Pistol"#, + desc = r#"0.Stun +1.Kill"#, + value = "-385323479" + ) + )] + WeaponPistolEnergy = -385323479i32, + #[strum( + serialize = "WeaponRifleEnergy", + props( + name = r#"Energy Rifle"#, + desc = r#"0.Stun +1.Kill"#, + value = "1154745374" + ) + )] + WeaponRifleEnergy = 1154745374i32, + #[strum( + serialize = "StructureEngineMountTypeA1", + props(name = r#"Engine Mount (Type A1)"#, desc = r#""#, value = "2035781224") + )] + StructureEngineMountTypeA1 = 2035781224i32, + #[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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "StructureFairingTypeA1", + props(name = r#"Fairing (Type A1)"#, desc = r#""#, value = "1622567418") + )] + StructureFairingTypeA1 = 1622567418i32, + #[strum( + serialize = "StructureFairingTypeA2", + props(name = r#"Fairing (Type A2)"#, desc = r#""#, value = "-104908736") + )] + StructureFairingTypeA2 = -104908736i32, + #[strum( + serialize = "StructureFairingTypeA3", + props(name = r#"Fairing (Type A3)"#, desc = r#""#, value = "-1900541738") + )] + StructureFairingTypeA3 = -1900541738i32, + #[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 = "SeedBag_Fern", + props( + name = r#"Fern Seeds"#, + desc = r#"Grow a Fern."#, + value = "-1990600883" + ) + )] + SeedBagFern = -1990600883i32, + #[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 = "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 = "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 = "ItemGasFilterNitrousOxide", + props( + name = r#"Filter (Nitrous Oxide)"#, + desc = r#""#, + value = "-1247674305" + ) + )] + ItemGasFilterNitrousOxide = -1247674305i32, + #[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 = "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 = "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 = "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 = "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 = "FireArmSMG", + props( + name = r#"Fire Arm SMG"#, + desc = r#"0.Single +1.Auto"#, + value = "-86315541" + ) + )] + FireArmSmg = -86315541i32, + #[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 = "Flag_ODA_10m", + props(name = r#"Flag (ODA 10m)"#, desc = r#""#, value = "1845441951") + )] + FlagOda10M = 1845441951i32, + #[strum( + serialize = "Flag_ODA_4m", + props(name = r#"Flag (ODA 4m)"#, desc = r#""#, value = "1159126354") + )] + FlagOda4M = 1159126354i32, + #[strum( + serialize = "Flag_ODA_6m", + props(name = r#"Flag (ODA 6m)"#, desc = r#""#, value = "1998634960") + )] + FlagOda6M = 1998634960i32, + #[strum( + serialize = "Flag_ODA_8m", + props(name = r#"Flag (ODA 8m)"#, desc = r#""#, value = "-375156130") + )] + FlagOda8M = -375156130i32, + #[strum( + serialize = "FlareGun", + props(name = r#"Flare Gun"#, desc = r#""#, value = "118685786") + )] + FlareGun = 118685786i32, + #[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 = "ItemFlashlight", + props( + name = r#"Flashlight"#, + desc = r#"A flashlight with a narrow and wide beam options."#, + value = "-838472102" + ) + )] + ItemFlashlight = -838472102i32, + #[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 = "ItemFlowerBlue", + props(name = r#"Flower (Blue)"#, desc = r#""#, value = "-1573623434") + )] + ItemFlowerBlue = -1573623434i32, + #[strum( + serialize = "ItemFlowerGreen", + props(name = r#"Flower (Green)"#, desc = r#""#, value = "-1513337058") + )] + ItemFlowerGreen = -1513337058i32, + #[strum( + serialize = "ItemFlowerOrange", + props(name = r#"Flower (Orange)"#, desc = r#""#, value = "-1411986716") + )] + ItemFlowerOrange = -1411986716i32, + #[strum( + serialize = "ItemFlowerRed", + props(name = r#"Flower (Red)"#, desc = r#""#, value = "-81376085") + )] + ItemFlowerRed = -81376085i32, + #[strum( + serialize = "ItemFlowerYellow", + props(name = r#"Flower (Yellow)"#, desc = r#""#, value = "1712822019") + )] + ItemFlowerYellow = 1712822019i32, + #[strum( + serialize = "ItemFries", + props(name = r#"French Fries"#, desc = r#""#, value = "1371786091") + )] + ItemFries = 1371786091i32, + #[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 = "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 = "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 = "StructureCableFuse100k", + props(name = r#"Fuse (100kW)"#, desc = r#""#, value = "281380789") + )] + StructureCableFuse100K = 281380789i32, + #[strum( + serialize = "StructureCableFuse1k", + props(name = r#"Fuse (1kW)"#, desc = r#""#, value = "-1103727120") + )] + StructureCableFuse1K = -1103727120i32, + #[strum( + serialize = "StructureCableFuse50k", + props(name = r#"Fuse (50kW)"#, desc = r#""#, value = "-349716617") + )] + StructureCableFuse50K = -349716617i32, + #[strum( + serialize = "StructureCableFuse5k", + props(name = r#"Fuse (5kW)"#, desc = r#""#, value = "-631590668") + )] + StructureCableFuse5K = -631590668i32, + #[strum( + serialize = "StructureFuselageTypeA1", + props(name = r#"Fuselage (Type A1)"#, desc = r#""#, value = "1033024712") + )] + StructureFuselageTypeA1 = 1033024712i32, + #[strum( + serialize = "StructureFuselageTypeA2", + props(name = r#"Fuselage (Type A2)"#, desc = r#""#, value = "-1533287054") + )] + StructureFuselageTypeA2 = -1533287054i32, + #[strum( + serialize = "StructureFuselageTypeA4", + props(name = r#"Fuselage (Type A4)"#, desc = r#""#, value = "1308115015") + )] + StructureFuselageTypeA4 = 1308115015i32, + #[strum( + serialize = "StructureFuselageTypeC5", + props(name = r#"Fuselage (Type C5)"#, desc = r#""#, value = "147395155") + )] + StructureFuselageTypeC5 = 147395155i32, + #[strum( + serialize = "CartridgeGPS", + props(name = r#"GPS"#, desc = r#""#, value = "-1957063345") + )] + CartridgeGps = -1957063345i32, + #[strum( + serialize = "ItemGasCanisterNitrousOxide", + props( + name = r#"Gas Canister (Sleeping)"#, + desc = r#""#, + value = "-1712153401" + ) + )] + ItemGasCanisterNitrousOxide = -1712153401i32, + #[strum( + serialize = "ItemGasCanisterSmart", + props( + name = r#"Gas Canister (Smart)"#, + desc = r#"0.Mode0 +1.Mode1"#, + value = "-668314371" + ) + )] + ItemGasCanisterSmart = -668314371i32, + #[strum( + serialize = "StructureMediumRocketGasFuelTank", + props( + name = r#"Gas Capsule Tank Medium"#, + desc = r#""#, + value = "-1093860567" + ) + )] + StructureMediumRocketGasFuelTank = -1093860567i32, + #[strum( + serialize = "StructureCapsuleTankGas", + props( + name = r#"Gas Capsule Tank Small"#, + desc = r#""#, + value = "-1385712131" + ) + )] + StructureCapsuleTankGas = -1385712131i32, + #[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 = "StructureGasGenerator", + props(name = r#"Gas Fuel Generator"#, desc = r#""#, value = "1165997963") + )] + StructureGasGenerator = 1165997963i32, + #[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 = "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 = "DynamicGasTankAdvanced", + props( + name = r#"Gas Tank Mk II"#, + desc = r#"0.Mode0 +1.Mode1"#, + value = "-386375420" + ) + )] + DynamicGasTankAdvanced = -386375420i32, + #[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 = "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 = "StructureGlassDoor", + props( + name = r#"Glass Door"#, + desc = r#"0.Operate +1.Logic"#, + value = "-324331872" + ) + )] + StructureGlassDoor = -324331872i32, + #[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 = "ItemGlasses", + props(name = r#"Glasses"#, desc = r#""#, value = "-1068925231") + )] + ItemGlasses = -1068925231i32, + #[strum( + serialize = "CircuitboardGraphDisplay", + props(name = r#"Graph Display"#, desc = r#""#, value = "1344368806") + )] + CircuitboardGraphDisplay = 1344368806i32, + #[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 = "CartridgeGuide", + props(name = r#"Guide"#, desc = r#""#, value = "872720793") + )] + CartridgeGuide = 872720793i32, + #[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 = "ItemHEMDroidRepairKit", + props( + name = r#"HEMDroid Repair Kit"#, + desc = r#"Repairs damaged HEM-Droids to full health."#, + value = "470636008" + ) + )] + ItemHemDroidRepairKit = 470636008i32, + #[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 = "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 = "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 = "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 = "Handgun", + props(name = r#"Handgun"#, desc = r#""#, value = "247238062") + )] + Handgun = 247238062i32, + #[strum( + serialize = "HandgunMagazine", + props(name = r#"Handgun Magazine"#, desc = r#""#, value = "1254383185") + )] + HandgunMagazine = 1254383185i32, + #[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 = "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 = "ItemHardMiningBackPack", + props(name = r#"Hard Mining Backpack"#, desc = r#""#, value = "900366130") + )] + ItemHardMiningBackPack = 900366130i32, + #[strum( + serialize = "ItemHardSuit", + props( + name = r#"Hardsuit"#, + desc = r#"Connects to Logic Transmitter"#, + value = "-1758310454" + ) + )] + ItemHardSuit = -1758310454i32, + #[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 = "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 = "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 = "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 = "CircuitboardHashDisplay", + props(name = r#"Hash Display"#, desc = r#""#, value = "1633074601") + )] + CircuitboardHashDisplay = 1633074601i32, + #[strum( + serialize = "ItemHat", + props( + name = r#"Hat"#, + desc = r#"As the name suggests, this is a hat."#, + value = "299189339" + ) + )] + ItemHat = 299189339i32, + #[strum( + serialize = "ItemCropHay", + props(name = r#"Hay"#, desc = r#""#, value = "215486157") + )] + ItemCropHay = 215486157i32, + #[strum( + serialize = "ItemWearLamp", + props(name = r#"Headlamp"#, desc = r#""#, value = "-598730959") + )] + ItemWearLamp = -598730959i32, + #[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 = "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 = "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 = "StructureCableCornerH3", + props( + name = r#"Heavy Cable (3-Way Corner)"#, + desc = r#""#, + value = "-1843379322" + ) + )] + StructureCableCornerH3 = -1843379322i32, + #[strum( + serialize = "StructureCableJunctionH", + props( + name = r#"Heavy Cable (3-Way Junction)"#, + desc = r#""#, + value = "469451637" + ) + )] + StructureCableJunctionH = 469451637i32, + #[strum( + serialize = "StructureCableCornerH4", + props( + name = r#"Heavy Cable (4-Way Corner)"#, + desc = r#""#, + value = "205837861" + ) + )] + StructureCableCornerH4 = 205837861i32, + #[strum( + serialize = "StructureCableJunctionH4", + props( + name = r#"Heavy Cable (4-Way Junction)"#, + desc = r#""#, + value = "-742234680" + ) + )] + StructureCableJunctionH4 = -742234680i32, + #[strum( + serialize = "StructureCableJunctionH5", + props( + name = r#"Heavy Cable (5-Way Junction)"#, + desc = r#""#, + value = "-1530571426" + ) + )] + StructureCableJunctionH5 = -1530571426i32, + #[strum( + serialize = "StructureCableJunctionH6", + props( + name = r#"Heavy Cable (6-Way Junction)"#, + desc = r#""#, + value = "1036780772" + ) + )] + StructureCableJunctionH6 = 1036780772i32, + #[strum( + serialize = "StructureCableCornerH", + props(name = r#"Heavy Cable (Corner)"#, desc = r#""#, value = "-39359015") + )] + StructureCableCornerH = -39359015i32, + #[strum( + serialize = "StructureCableStraightH", + props(name = r#"Heavy Cable (Straight)"#, desc = r#""#, value = "-146200530") + )] + StructureCableStraightH = -146200530i32, + #[strum( + serialize = "ItemGasFilterCarbonDioxideL", + props( + name = r#"Heavy Filter (Carbon Dioxide)"#, + desc = r#""#, + value = "1876847024" + ) + )] + ItemGasFilterCarbonDioxideL = 1876847024i32, + #[strum( + serialize = "ItemGasFilterNitrogenL", + props( + name = r#"Heavy Filter (Nitrogen)"#, + desc = r#""#, + value = "-1387439451" + ) + )] + ItemGasFilterNitrogenL = -1387439451i32, + #[strum( + serialize = "ItemGasFilterNitrousOxideL", + props( + name = r#"Heavy Filter (Nitrous Oxide)"#, + desc = r#""#, + value = "465267979" + ) + )] + ItemGasFilterNitrousOxideL = 465267979i32, + #[strum( + serialize = "ItemGasFilterOxygenL", + props(name = r#"Heavy Filter (Oxygen)"#, desc = r#""#, value = "-1217998945") + )] + ItemGasFilterOxygenL = -1217998945i32, + #[strum( + serialize = "ItemGasFilterPollutantsL", + props( + name = r#"Heavy Filter (Pollutants)"#, + desc = r#""#, + value = "1959564765" + ) + )] + ItemGasFilterPollutantsL = 1959564765i32, + #[strum( + serialize = "ItemGasFilterVolatilesL", + props( + name = r#"Heavy Filter (Volatiles)"#, + desc = r#""#, + value = "1255156286" + ) + )] + ItemGasFilterVolatilesL = 1255156286i32, + #[strum( + serialize = "ItemGasFilterWaterL", + props(name = r#"Heavy Filter (Water)"#, desc = r#""#, value = "2004969680") + )] + ItemGasFilterWaterL = 2004969680i32, + #[strum( + serialize = "ItemHighVolumeGasCanisterEmpty", + props( + name = r#"High Volume Gas Canister"#, + desc = r#""#, + value = "998653377" + ) + )] + ItemHighVolumeGasCanisterEmpty = 998653377i32, + #[strum( + serialize = "ItemHorticultureBelt", + props(name = r#"Horticulture Belt"#, desc = r#""#, value = "-1117581553") + )] + ItemHorticultureBelt = -1117581553i32, + #[strum( + serialize = "HumanSkull", + props(name = r#"Human Skull"#, desc = r#""#, value = "-857713709") + )] + HumanSkull = -857713709i32, + #[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 = "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 = "StructureHydroponicsStation", + props(name = r#"Hydroponics Station"#, desc = r#""#, value = "1441767298") + )] + StructureHydroponicsStation = 1441767298i32, + #[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 = "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 = "StructureCircuitHousing", + props(name = r#"IC Housing"#, desc = r#""#, value = "-128473777") + )] + StructureCircuitHousing = -128473777i32, + #[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 = "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 = "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 = "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 = "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 = "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 = "StructureEmergencyButton", + props( + name = r#"Important Button"#, + desc = r#"Description coming."#, + value = "1668452680" + ) + )] + StructureEmergencyButton = 1668452680i32, + #[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 = "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 = "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 = "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 = "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 = "ItemConstantanIngot", + props(name = r#"Ingot (Constantan)"#, desc = r#""#, value = "1058547521") + )] + ItemConstantanIngot = 1058547521i32, + #[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 = "ItemElectrumIngot", + props(name = r#"Ingot (Electrum)"#, desc = r#""#, value = "502280180") + )] + ItemElectrumIngot = 502280180i32, + #[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 = "ItemHastelloyIngot", + props(name = r#"Ingot (Hastelloy)"#, desc = r#""#, value = "1579842814") + )] + ItemHastelloyIngot = 1579842814i32, + #[strum( + serialize = "ItemInconelIngot", + props(name = r#"Ingot (Inconel)"#, desc = r#""#, value = "-787796599") + )] + ItemInconelIngot = -787796599i32, + #[strum( + serialize = "ItemInvarIngot", + props(name = r#"Ingot (Invar)"#, desc = r#""#, value = "-297990285") + )] + ItemInvarIngot = -297990285i32, + #[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 = "ItemLeadIngot", + props(name = r#"Ingot (Lead)"#, desc = r#""#, value = "2134647745") + )] + ItemLeadIngot = 2134647745i32, + #[strum( + serialize = "ItemNickelIngot", + props(name = r#"Ingot (Nickel)"#, desc = r#""#, value = "-1406385572") + )] + ItemNickelIngot = -1406385572i32, + #[strum( + serialize = "ItemSiliconIngot", + props(name = r#"Ingot (Silicon)"#, desc = r#""#, value = "-290196476") + )] + ItemSiliconIngot = -290196476i32, + #[strum( + serialize = "ItemSilverIngot", + props(name = r#"Ingot (Silver)"#, desc = r#""#, value = "-929742000") + )] + ItemSilverIngot = -929742000i32, + #[strum( + serialize = "ItemSolderIngot", + props(name = r#"Ingot (Solder)"#, desc = r#""#, value = "-82508479") + )] + ItemSolderIngot = -82508479i32, + #[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 = "ItemStelliteIngot", + props(name = r#"Ingot (Stellite)"#, desc = r#""#, value = "-1897868623") + )] + ItemStelliteIngot = -1897868623i32, + #[strum( + serialize = "ItemWaspaloyIngot", + props(name = r#"Ingot (Waspaloy)"#, desc = r#""#, value = "156348098") + )] + ItemWaspaloyIngot = 156348098i32, + #[strum( + serialize = "StructureInsulatedInLineTankGas1x2", + props( + name = r#"Insulated In-Line Tank Gas"#, + desc = r#""#, + value = "-177610944" + ) + )] + StructureInsulatedInLineTankGas1X2 = -177610944i32, + #[strum( + serialize = "StructureInsulatedInLineTankLiquid1x2", + props( + name = r#"Insulated In-Line Tank Liquid"#, + desc = r#""#, + value = "1452100517" + ) + )] + StructureInsulatedInLineTankLiquid1X2 = 1452100517i32, + #[strum( + serialize = "StructureInsulatedInLineTankGas1x1", + props( + name = r#"Insulated In-Line Tank Small Gas"#, + desc = r#""#, + value = "1818267386" + ) + )] + StructureInsulatedInLineTankGas1X1 = 1818267386i32, + #[strum( + serialize = "StructureInsulatedInLineTankLiquid1x1", + props( + name = r#"Insulated In-Line Tank Small Liquid"#, + desc = r#""#, + value = "-813426145" + ) + )] + StructureInsulatedInLineTankLiquid1X1 = -813426145i32, + #[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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "StructureLiquidTankBigInsulated", + props( + name = r#"Insulated Liquid Tank Big"#, + desc = r#""#, + value = "-1430440215" + ) + )] + StructureLiquidTankBigInsulated = -1430440215i32, + #[strum( + serialize = "StructureLiquidTankSmallInsulated", + props( + name = r#"Insulated Liquid Tank Small"#, + desc = r#""#, + value = "608607718" + ) + )] + StructureLiquidTankSmallInsulated = 608607718i32, + #[strum( + serialize = "StructurePassiveVentInsulated", + props(name = r#"Insulated Passive Vent"#, desc = r#""#, value = "1363077139") + )] + StructurePassiveVentInsulated = 1363077139i32, + #[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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "StructureInsulatedTankConnector", + props( + name = r#"Insulated Tank Connector"#, + desc = r#""#, + value = "-31273349" + ) + )] + StructureInsulatedTankConnector = -31273349i32, + #[strum( + serialize = "StructureInsulatedTankConnectorLiquid", + props( + name = r#"Insulated Tank Connector Liquid"#, + desc = r#""#, + value = "-1602030414" + ) + )] + StructureInsulatedTankConnectorLiquid = -1602030414i32, + #[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 = "ItemIntegratedCircuit10", + props( + name = r#"Integrated Circuit (IC10)"#, + desc = r#""#, + value = "-744098481" + ) + )] + ItemIntegratedCircuit10 = -744098481i32, + #[strum( + serialize = "StructureInteriorDoorGlass", + props( + name = r#"Interior Door Glass"#, + desc = r#"0.Operate +1.Logic"#, + value = "-2096421875" + ) + )] + StructureInteriorDoorGlass = -2096421875i32, + #[strum( + serialize = "StructureInteriorDoorPadded", + props( + name = r#"Interior Door Padded"#, + desc = r#"0.Operate +1.Logic"#, + value = "847461335" + ) + )] + StructureInteriorDoorPadded = 847461335i32, + #[strum( + serialize = "StructureInteriorDoorPaddedThin", + props( + name = r#"Interior Door Padded Thin"#, + desc = r#"0.Operate +1.Logic"#, + value = "1981698201" + ) + )] + StructureInteriorDoorPaddedThin = 1981698201i32, + #[strum( + serialize = "StructureInteriorDoorTriangle", + props( + name = r#"Interior Door Triangle"#, + desc = r#"0.Operate +1.Logic"#, + value = "-1182923101" + ) + )] + StructureInteriorDoorTriangle = -1182923101i32, + #[strum( + serialize = "StructureFrameIron", + props(name = r#"Iron Frame"#, desc = r#""#, value = "-1240951678") + )] + StructureFrameIron = -1240951678i32, + #[strum( + serialize = "ItemIronFrames", + props(name = r#"Iron Frames"#, desc = r#""#, value = "1225836666") + )] + ItemIronFrames = 1225836666i32, + #[strum( + serialize = "ItemIronSheets", + props(name = r#"Iron Sheets"#, desc = r#""#, value = "-487378546") + )] + ItemIronSheets = -487378546i32, + #[strum( + serialize = "StructureWallIron", + props(name = r#"Iron Wall (Type 1)"#, desc = r#""#, value = "1287324802") + )] + StructureWallIron = 1287324802i32, + #[strum( + serialize = "StructureWallIron02", + props(name = r#"Iron Wall (Type 2)"#, desc = r#""#, value = "1485834215") + )] + StructureWallIron02 = 1485834215i32, + #[strum( + serialize = "StructureWallIron03", + props(name = r#"Iron Wall (Type 3)"#, desc = r#""#, value = "798439281") + )] + StructureWallIron03 = 798439281i32, + #[strum( + serialize = "StructureWallIron04", + props(name = r#"Iron Wall (Type 4)"#, desc = r#""#, value = "-1309433134") + )] + StructureWallIron04 = -1309433134i32, + #[strum( + serialize = "StructureCompositeWindowIron", + props(name = r#"Iron Window"#, desc = r#""#, value = "-688284639") + )] + StructureCompositeWindowIron = -688284639i32, + #[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 = "UniformOrangeJumpSuit", + props(name = r#"Jump Suit (Orange)"#, desc = r#""#, value = "810053150") + )] + UniformOrangeJumpSuit = 810053150i32, + #[strum( + serialize = "ItemKitAIMeE", + props(name = r#"Kit (AIMeE)"#, desc = r#""#, value = "496830914") + )] + ItemKitAiMeE = 496830914i32, + #[strum( + serialize = "ItemKitAccessBridge", + props(name = r#"Kit (Access Bridge)"#, desc = r#""#, value = "513258369") + )] + ItemKitAccessBridge = 513258369i32, + #[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 = "ItemKitAdvancedComposter", + props( + name = r#"Kit (Advanced Composter)"#, + desc = r#""#, + value = "-1431998347" + ) + )] + ItemKitAdvancedComposter = -1431998347i32, + #[strum( + serialize = "ItemKitAdvancedFurnace", + props(name = r#"Kit (Advanced Furnace)"#, desc = r#""#, value = "-616758353") + )] + ItemKitAdvancedFurnace = -616758353i32, + #[strum( + serialize = "ItemKitAdvancedPackagingMachine", + props( + name = r#"Kit (Advanced Packaging Machine)"#, + desc = r#""#, + value = "-598545233" + ) + )] + ItemKitAdvancedPackagingMachine = -598545233i32, + #[strum( + serialize = "ItemKitAirlock", + props(name = r#"Kit (Airlock)"#, desc = r#""#, value = "964043875") + )] + ItemKitAirlock = 964043875i32, + #[strum( + serialize = "ItemKitArcFurnace", + props(name = r#"Kit (Arc Furnace)"#, desc = r#""#, value = "-98995857") + )] + ItemKitArcFurnace = -98995857i32, + #[strum( + serialize = "ItemKitWallArch", + props(name = r#"Kit (Arched Wall)"#, desc = r#""#, value = "1625214531") + )] + ItemKitWallArch = 1625214531i32, + #[strum( + serialize = "ItemKitAtmospherics", + props(name = r#"Kit (Atmospherics)"#, desc = r#""#, value = "1222286371") + )] + ItemKitAtmospherics = 1222286371i32, + #[strum( + serialize = "ItemKitAutolathe", + props(name = r#"Kit (Autolathe)"#, desc = r#""#, value = "-1753893214") + )] + ItemKitAutolathe = -1753893214i32, + #[strum( + serialize = "ItemKitHydroponicAutomated", + props( + name = r#"Kit (Automated Hydroponics)"#, + desc = r#""#, + value = "-927931558" + ) + )] + ItemKitHydroponicAutomated = -927931558i32, + #[strum( + serialize = "ItemKitAutomatedOven", + props(name = r#"Kit (Automated Oven)"#, desc = r#""#, value = "-1931958659") + )] + ItemKitAutomatedOven = -1931958659i32, + #[strum( + serialize = "ItemKitAutoMinerSmall", + props(name = r#"Kit (Autominer Small)"#, desc = r#""#, value = "1668815415") + )] + ItemKitAutoMinerSmall = 1668815415i32, + #[strum( + serialize = "ItemKitRocketAvionics", + props(name = r#"Kit (Avionics)"#, desc = r#""#, value = "1396305045") + )] + ItemKitRocketAvionics = 1396305045i32, + #[strum( + serialize = "ItemKitChute", + props(name = r#"Kit (Basic Chutes)"#, desc = r#""#, value = "1025254665") + )] + ItemKitChute = 1025254665i32, + #[strum( + serialize = "ItemKitBasket", + props(name = r#"Kit (Basket)"#, desc = r#""#, value = "148305004") + )] + ItemKitBasket = 148305004i32, + #[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 = "ItemKitBatteryLarge", + props(name = r#"Kit (Battery Large)"#, desc = r#""#, value = "-21225041") + )] + ItemKitBatteryLarge = -21225041i32, + #[strum( + serialize = "ItemKitBattery", + props(name = r#"Kit (Battery)"#, desc = r#""#, value = "1406656973") + )] + ItemKitBattery = 1406656973i32, + #[strum( + serialize = "ItemKitBeacon", + props(name = r#"Kit (Beacon)"#, desc = r#""#, value = "249073136") + )] + ItemKitBeacon = 249073136i32, + #[strum( + serialize = "ItemKitBeds", + props(name = r#"Kit (Beds)"#, desc = r#""#, value = "-1241256797") + )] + ItemKitBeds = -1241256797i32, + #[strum( + serialize = "ItemKitBlastDoor", + props(name = r#"Kit (Blast Door)"#, desc = r#""#, value = "-1755116240") + )] + ItemKitBlastDoor = -1755116240i32, + #[strum( + serialize = "ItemCableAnalyser", + props(name = r#"Kit (Cable Analyzer)"#, desc = r#""#, value = "-1792787349") + )] + ItemCableAnalyser = -1792787349i32, + #[strum( + serialize = "ItemCableFuse", + props(name = r#"Kit (Cable Fuses)"#, desc = r#""#, value = "195442047") + )] + ItemCableFuse = 195442047i32, + #[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 = "ItemKitCentrifuge", + props(name = r#"Kit (Centrifuge)"#, desc = r#""#, value = "578182956") + )] + ItemKitCentrifuge = 578182956i32, + #[strum( + serialize = "ItemKitChairs", + props(name = r#"Kit (Chairs)"#, desc = r#""#, value = "-1394008073") + )] + ItemKitChairs = -1394008073i32, + #[strum( + serialize = "ItemKitChuteUmbilical", + props(name = r#"Kit (Chute Umbilical)"#, desc = r#""#, value = "-876560854") + )] + ItemKitChuteUmbilical = -876560854i32, + #[strum( + serialize = "ItemKitCompositeCladding", + props(name = r#"Kit (Cladding)"#, desc = r#""#, value = "-1470820996") + )] + ItemKitCompositeCladding = -1470820996i32, + #[strum( + serialize = "KitStructureCombustionCentrifuge", + props( + name = r#"Kit (Combustion Centrifuge)"#, + desc = r#""#, + value = "231903234" + ) + )] + KitStructureCombustionCentrifuge = 231903234i32, + #[strum( + serialize = "ItemKitComputer", + props(name = r#"Kit (Computer)"#, desc = r#""#, value = "1990225489") + )] + ItemKitComputer = 1990225489i32, + #[strum( + serialize = "ItemKitConsole", + props(name = r#"Kit (Consoles)"#, desc = r#""#, value = "-1241851179") + )] + ItemKitConsole = -1241851179i32, + #[strum( + serialize = "ItemKitCrateMount", + props(name = r#"Kit (Container Mount)"#, desc = r#""#, value = "-551612946") + )] + ItemKitCrateMount = -551612946i32, + #[strum( + serialize = "ItemKitPassthroughHeatExchanger", + props( + name = r#"Kit (CounterFlow Heat Exchanger)"#, + desc = r#""#, + value = "636112787" + ) + )] + ItemKitPassthroughHeatExchanger = 636112787i32, + #[strum( + serialize = "ItemKitCrateMkII", + props(name = r#"Kit (Crate Mk II)"#, desc = r#""#, value = "-1585956426") + )] + ItemKitCrateMkIi = -1585956426i32, + #[strum( + serialize = "ItemKitCrate", + props(name = r#"Kit (Crate)"#, desc = r#""#, value = "429365598") + )] + ItemKitCrate = 429365598i32, + #[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 = "ItemKitCryoTube", + props(name = r#"Kit (Cryo Tube)"#, desc = r#""#, value = "-545234195") + )] + ItemKitCryoTube = -545234195i32, + #[strum( + serialize = "ItemKitDeepMiner", + props(name = r#"Kit (Deep Miner)"#, desc = r#""#, value = "-1935075707") + )] + ItemKitDeepMiner = -1935075707i32, + #[strum( + serialize = "ItemPipeDigitalValve", + props( + name = r#"Kit (Digital Valve)"#, + desc = r#"This kit creates a Digital Valve."#, + value = "-1532448832" + ) + )] + ItemPipeDigitalValve = -1532448832i32, + #[strum( + serialize = "ItemKitDockingPort", + props(name = r#"Kit (Docking Port)"#, desc = r#""#, value = "77421200") + )] + ItemKitDockingPort = 77421200i32, + #[strum( + serialize = "ItemKitDoor", + props(name = r#"Kit (Door)"#, desc = r#""#, value = "168615924") + )] + ItemKitDoor = 168615924i32, + #[strum( + serialize = "ItemKitDrinkingFountain", + props( + name = r#"Kit (Drinking Fountain)"#, + desc = r#""#, + value = "-1743663875" + ) + )] + ItemKitDrinkingFountain = -1743663875i32, + #[strum( + serialize = "ItemKitElectronicsPrinter", + props( + name = r#"Kit (Electronics Printer)"#, + desc = r#""#, + value = "-1181922382" + ) + )] + ItemKitElectronicsPrinter = -1181922382i32, + #[strum( + serialize = "ItemKitElevator", + props(name = r#"Kit (Elevator)"#, desc = r#""#, value = "-945806652") + )] + ItemKitElevator = -945806652i32, + #[strum( + serialize = "ItemKitEngineLarge", + props(name = r#"Kit (Engine Large)"#, desc = r#""#, value = "755302726") + )] + ItemKitEngineLarge = 755302726i32, + #[strum( + serialize = "ItemKitEngineMedium", + props(name = r#"Kit (Engine Medium)"#, desc = r#""#, value = "1969312177") + )] + ItemKitEngineMedium = 1969312177i32, + #[strum( + serialize = "ItemKitEngineSmall", + props(name = r#"Kit (Engine Small)"#, desc = r#""#, value = "19645163") + )] + ItemKitEngineSmall = 19645163i32, + #[strum( + serialize = "ItemFlashingLight", + props(name = r#"Kit (Flashing Light)"#, desc = r#""#, value = "-2107840748") + )] + ItemFlashingLight = -2107840748i32, + #[strum( + serialize = "ItemKitWallFlat", + props(name = r#"Kit (Flat Wall)"#, desc = r#""#, value = "-846838195") + )] + ItemKitWallFlat = -846838195i32, + #[strum( + serialize = "ItemKitCompositeFloorGrating", + props(name = r#"Kit (Floor Grating)"#, desc = r#""#, value = "1182412869") + )] + ItemKitCompositeFloorGrating = 1182412869i32, + #[strum( + serialize = "ItemKitFridgeBig", + props(name = r#"Kit (Fridge Large)"#, desc = r#""#, value = "-1168199498") + )] + ItemKitFridgeBig = -1168199498i32, + #[strum( + serialize = "ItemKitFridgeSmall", + props(name = r#"Kit (Fridge Small)"#, desc = r#""#, value = "1661226524") + )] + ItemKitFridgeSmall = 1661226524i32, + #[strum( + serialize = "ItemKitFurnace", + props(name = r#"Kit (Furnace)"#, desc = r#""#, value = "-806743925") + )] + ItemKitFurnace = -806743925i32, + #[strum( + serialize = "ItemKitFurniture", + props(name = r#"Kit (Furniture)"#, desc = r#""#, value = "1162905029") + )] + ItemKitFurniture = 1162905029i32, + #[strum( + serialize = "ItemKitFuselage", + props(name = r#"Kit (Fuselage)"#, desc = r#""#, value = "-366262681") + )] + ItemKitFuselage = -366262681i32, + #[strum( + serialize = "ItemKitGasGenerator", + props( + name = r#"Kit (Gas Fuel Generator)"#, + desc = r#""#, + value = "377745425" + ) + )] + ItemKitGasGenerator = 377745425i32, + #[strum( + serialize = "ItemPipeGasMixer", + props( + name = r#"Kit (Gas Mixer)"#, + desc = r#"This kit creates a Gas Mixer."#, + value = "-1134459463" + ) + )] + ItemPipeGasMixer = -1134459463i32, + #[strum( + serialize = "ItemGasSensor", + props(name = r#"Kit (Gas Sensor)"#, desc = r#""#, value = "1717593480") + )] + ItemGasSensor = 1717593480i32, + #[strum( + serialize = "ItemKitGasUmbilical", + props(name = r#"Kit (Gas Umbilical)"#, desc = r#""#, value = "-1867280568") + )] + ItemKitGasUmbilical = -1867280568i32, + #[strum( + serialize = "ItemKitWallGeometry", + props(name = r#"Kit (Geometric Wall)"#, desc = r#""#, value = "-784733231") + )] + ItemKitWallGeometry = -784733231i32, + #[strum( + serialize = "ItemKitGrowLight", + props(name = r#"Kit (Grow Light)"#, desc = r#""#, value = "341030083") + )] + ItemKitGrowLight = 341030083i32, + #[strum( + serialize = "ItemKitAirlockGate", + props(name = r#"Kit (Hangar Door)"#, desc = r#""#, value = "682546947") + )] + ItemKitAirlockGate = 682546947i32, + #[strum( + serialize = "ItemKitHarvie", + props(name = r#"Kit (Harvie)"#, desc = r#""#, value = "-1022693454") + )] + ItemKitHarvie = -1022693454i32, + #[strum( + serialize = "ItemKitHydraulicPipeBender", + props( + name = r#"Kit (Hydraulic Pipe Bender)"#, + desc = r#""#, + value = "-2098556089" + ) + )] + ItemKitHydraulicPipeBender = -2098556089i32, + #[strum( + serialize = "ItemKitHydroponicStation", + props( + name = r#"Kit (Hydroponic Station)"#, + desc = r#""#, + value = "2057179799" + ) + )] + ItemKitHydroponicStation = 2057179799i32, + #[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 = "ItemKitLogicCircuit", + props(name = r#"Kit (IC Housing)"#, desc = r#""#, value = "1512322581") + )] + ItemKitLogicCircuit = 1512322581i32, + #[strum( + serialize = "ItemKitIceCrusher", + props(name = r#"Kit (Ice Crusher)"#, desc = r#""#, value = "288111533") + )] + ItemKitIceCrusher = 288111533i32, + #[strum( + serialize = "ItemIgniter", + props( + name = r#"Kit (Igniter)"#, + desc = r#"This kit creates an Kit (Igniter) unit."#, + value = "890106742" + ) + )] + ItemIgniter = 890106742i32, + #[strum( + serialize = "ItemKitInsulatedLiquidPipe", + props( + name = r#"Kit (Insulated Liquid Pipe)"#, + desc = r#""#, + value = "2067655311" + ) + )] + ItemKitInsulatedLiquidPipe = 2067655311i32, + #[strum( + serialize = "ItemKitLiquidTankInsulated", + props( + name = r#"Kit (Insulated Liquid Tank)"#, + desc = r#""#, + value = "617773453" + ) + )] + ItemKitLiquidTankInsulated = 617773453i32, + #[strum( + serialize = "ItemPassiveVentInsulated", + props( + name = r#"Kit (Insulated Passive Vent)"#, + desc = r#""#, + value = "-1397583760" + ) + )] + ItemPassiveVentInsulated = -1397583760i32, + #[strum( + serialize = "ItemKitInsulatedPipeUtility", + props( + name = r#"Kit (Insulated Pipe Utility Gas)"#, + desc = r#""#, + value = "-27284803" + ) + )] + ItemKitInsulatedPipeUtility = -27284803i32, + #[strum( + serialize = "ItemKitInsulatedPipeUtilityLiquid", + props( + name = r#"Kit (Insulated Pipe Utility Liquid)"#, + desc = r#""#, + value = "-1831558953" + ) + )] + ItemKitInsulatedPipeUtilityLiquid = -1831558953i32, + #[strum( + serialize = "ItemKitInsulatedPipe", + props(name = r#"Kit (Insulated Pipe)"#, desc = r#""#, value = "452636699") + )] + ItemKitInsulatedPipe = 452636699i32, + #[strum( + serialize = "ItemKitInteriorDoors", + props(name = r#"Kit (Interior Doors)"#, desc = r#""#, value = "1935945891") + )] + ItemKitInteriorDoors = 1935945891i32, + #[strum( + serialize = "ItemKitWallIron", + props(name = r#"Kit (Iron Wall)"#, desc = r#""#, value = "-524546923") + )] + ItemKitWallIron = -524546923i32, + #[strum( + serialize = "ItemKitLadder", + props(name = r#"Kit (Ladder)"#, desc = r#""#, value = "489494578") + )] + ItemKitLadder = 489494578i32, + #[strum( + serialize = "ItemKitLandingPadAtmos", + props( + name = r#"Kit (Landing Pad Atmospherics)"#, + desc = r#""#, + value = "1817007843" + ) + )] + ItemKitLandingPadAtmos = 1817007843i32, + #[strum( + serialize = "ItemKitLandingPadBasic", + props(name = r#"Kit (Landing Pad Basic)"#, desc = r#""#, value = "293581318") + )] + ItemKitLandingPadBasic = 293581318i32, + #[strum( + serialize = "ItemKitLandingPadWaypoint", + props( + name = r#"Kit (Landing Pad Runway)"#, + desc = r#""#, + value = "-1267511065" + ) + )] + ItemKitLandingPadWaypoint = -1267511065i32, + #[strum( + serialize = "ItemKitLargeDirectHeatExchanger", + props( + name = r#"Kit (Large Direct Heat Exchanger)"#, + desc = r#""#, + value = "450164077" + ) + )] + ItemKitLargeDirectHeatExchanger = 450164077i32, + #[strum( + serialize = "ItemKitLargeExtendableRadiator", + props( + name = r#"Kit (Large Extendable Radiator)"#, + desc = r#""#, + value = "847430620" + ) + )] + ItemKitLargeExtendableRadiator = 847430620i32, + #[strum( + serialize = "ItemKitLargeSatelliteDish", + props( + name = r#"Kit (Large Satellite Dish)"#, + desc = r#""#, + value = "-2039971217" + ) + )] + ItemKitLargeSatelliteDish = -2039971217i32, + #[strum( + serialize = "ItemKitLaunchMount", + props(name = r#"Kit (Launch Mount)"#, desc = r#""#, value = "-1854167549") + )] + ItemKitLaunchMount = -1854167549i32, + #[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 = "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 = "ItemWaterPipeDigitalValve", + props( + name = r#"Kit (Liquid Digital Valve)"#, + desc = r#""#, + value = "309693520" + ) + )] + ItemWaterPipeDigitalValve = 309693520i32, + #[strum( + serialize = "ItemLiquidDrain", + props(name = r#"Kit (Liquid Drain)"#, desc = r#""#, value = "2036225202") + )] + ItemLiquidDrain = 2036225202i32, + #[strum( + serialize = "ItemLiquidPipeAnalyzer", + props( + name = r#"Kit (Liquid Pipe Analyzer)"#, + desc = r#""#, + value = "226055671" + ) + )] + ItemLiquidPipeAnalyzer = 226055671i32, + #[strum( + serialize = "ItemWaterPipeMeter", + props(name = r#"Kit (Liquid Pipe Meter)"#, desc = r#""#, value = "-90898877") + )] + ItemWaterPipeMeter = -90898877i32, + #[strum( + serialize = "ItemLiquidPipeValve", + props( + name = r#"Kit (Liquid Pipe Valve)"#, + desc = r#"This kit creates a Liquid Valve."#, + value = "-2126113312" + ) + )] + ItemLiquidPipeValve = -2126113312i32, + #[strum( + serialize = "ItemKitPipeLiquid", + props(name = r#"Kit (Liquid Pipe)"#, desc = r#""#, value = "-1166461357") + )] + ItemKitPipeLiquid = -1166461357i32, + #[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 = "ItemKitLiquidRegulator", + props(name = r#"Kit (Liquid Regulator)"#, desc = r#""#, value = "1951126161") + )] + ItemKitLiquidRegulator = 1951126161i32, + #[strum( + serialize = "ItemKitLiquidTank", + props(name = r#"Kit (Liquid Tank)"#, desc = r#""#, value = "-799849305") + )] + ItemKitLiquidTank = -799849305i32, + #[strum( + serialize = "ItemKitLiquidUmbilical", + props(name = r#"Kit (Liquid Umbilical)"#, desc = r#""#, value = "1571996765") + )] + ItemKitLiquidUmbilical = 1571996765i32, + #[strum( + serialize = "ItemLiquidPipeVolumePump", + props( + name = r#"Kit (Liquid Volume Pump)"#, + desc = r#""#, + value = "-2106280569" + ) + )] + ItemLiquidPipeVolumePump = -2106280569i32, + #[strum( + serialize = "ItemWaterWallCooler", + props( + name = r#"Kit (Liquid Wall Cooler)"#, + desc = r#""#, + value = "-1721846327" + ) + )] + ItemWaterWallCooler = -1721846327i32, + #[strum( + serialize = "ItemKitLocker", + props(name = r#"Kit (Locker)"#, desc = r#""#, value = "882301399") + )] + ItemKitLocker = 882301399i32, + #[strum( + serialize = "ItemKitLogicInputOutput", + props(name = r#"Kit (Logic I/O)"#, desc = r#""#, value = "1997293610") + )] + ItemKitLogicInputOutput = 1997293610i32, + #[strum( + serialize = "ItemKitLogicMemory", + props(name = r#"Kit (Logic Memory)"#, desc = r#""#, value = "-2098214189") + )] + ItemKitLogicMemory = -2098214189i32, + #[strum( + serialize = "ItemKitLogicProcessor", + props(name = r#"Kit (Logic Processor)"#, desc = r#""#, value = "220644373") + )] + ItemKitLogicProcessor = 220644373i32, + #[strum( + serialize = "ItemKitLogicSwitch", + props(name = r#"Kit (Logic Switch)"#, desc = r#""#, value = "124499454") + )] + ItemKitLogicSwitch = 124499454i32, + #[strum( + serialize = "ItemKitLogicTransmitter", + props( + name = r#"Kit (Logic Transmitter)"#, + desc = r#""#, + value = "1005397063" + ) + )] + ItemKitLogicTransmitter = 1005397063i32, + #[strum( + serialize = "ItemKitPassiveLargeRadiatorLiquid", + props( + name = r#"Kit (Medium Radiator Liquid)"#, + desc = r#""#, + value = "1453961898" + ) + )] + ItemKitPassiveLargeRadiatorLiquid = 1453961898i32, + #[strum( + serialize = "ItemKitPassiveLargeRadiatorGas", + props(name = r#"Kit (Medium Radiator)"#, desc = r#""#, value = "-1752768283") + )] + ItemKitPassiveLargeRadiatorGas = -1752768283i32, + #[strum( + serialize = "ItemKitSatelliteDish", + props( + name = r#"Kit (Medium Satellite Dish)"#, + desc = r#""#, + value = "178422810" + ) + )] + ItemKitSatelliteDish = 178422810i32, + #[strum( + serialize = "ItemKitMotherShipCore", + props(name = r#"Kit (Mothership)"#, desc = r#""#, value = "-344968335") + )] + ItemKitMotherShipCore = -344968335i32, + #[strum( + serialize = "ItemKitMusicMachines", + props(name = r#"Kit (Music Machines)"#, desc = r#""#, value = "-2038889137") + )] + ItemKitMusicMachines = -2038889137i32, + #[strum( + serialize = "ItemKitFlagODA", + props(name = r#"Kit (ODA Flag)"#, desc = r#""#, value = "1701764190") + )] + ItemKitFlagOda = 1701764190i32, + #[strum( + serialize = "ItemKitHorizontalAutoMiner", + props(name = r#"Kit (OGRE)"#, desc = r#""#, value = "844391171") + )] + ItemKitHorizontalAutoMiner = 844391171i32, + #[strum( + serialize = "ItemKitWallPadded", + props(name = r#"Kit (Padded Wall)"#, desc = r#""#, value = "-821868990") + )] + ItemKitWallPadded = -821868990i32, + #[strum( + serialize = "ItemKitEvaporationChamber", + props( + name = r#"Kit (Phase Change Device)"#, + desc = r#""#, + value = "1587787610" + ) + )] + ItemKitEvaporationChamber = 1587787610i32, + #[strum( + serialize = "ItemPipeAnalyizer", + props( + name = r#"Kit (Pipe Analyzer)"#, + desc = r#"This kit creates a Pipe Analyzer."#, + value = "-767597887" + ) + )] + ItemPipeAnalyizer = -767597887i32, + #[strum( + serialize = "ItemPipeIgniter", + props(name = r#"Kit (Pipe Igniter)"#, desc = r#""#, value = "1366030599") + )] + ItemPipeIgniter = 1366030599i32, + #[strum( + serialize = "ItemPipeLabel", + props( + name = r#"Kit (Pipe Label)"#, + desc = r#"This kit creates a Pipe Label."#, + value = "391769637" + ) + )] + ItemPipeLabel = 391769637i32, + #[strum( + serialize = "ItemPipeMeter", + props( + name = r#"Kit (Pipe Meter)"#, + desc = r#"This kit creates a Pipe Meter."#, + value = "1207939683" + ) + )] + ItemPipeMeter = 1207939683i32, + #[strum( + serialize = "ItemKitPipeOrgan", + props(name = r#"Kit (Pipe Organ)"#, desc = r#""#, value = "-827125300") + )] + ItemKitPipeOrgan = -827125300i32, + #[strum( + serialize = "ItemKitPipeRadiatorLiquid", + props( + name = r#"Kit (Pipe Radiator Liquid)"#, + desc = r#""#, + value = "-1697302609" + ) + )] + ItemKitPipeRadiatorLiquid = -1697302609i32, + #[strum( + serialize = "ItemKitPipeRadiator", + props(name = r#"Kit (Pipe Radiator)"#, desc = r#""#, value = "920411066") + )] + ItemKitPipeRadiator = 920411066i32, + #[strum( + serialize = "ItemKitPipeUtility", + props(name = r#"Kit (Pipe Utility Gas)"#, desc = r#""#, value = "1934508338") + )] + ItemKitPipeUtility = 1934508338i32, + #[strum( + serialize = "ItemKitPipeUtilityLiquid", + props( + name = r#"Kit (Pipe Utility Liquid)"#, + desc = r#""#, + value = "595478589" + ) + )] + ItemKitPipeUtilityLiquid = 595478589i32, + #[strum( + serialize = "ItemPipeValve", + props( + name = r#"Kit (Pipe Valve)"#, + desc = r#"This kit creates a Valve."#, + value = "799323450" + ) + )] + ItemPipeValve = 799323450i32, + #[strum( + serialize = "ItemKitPipe", + props(name = r#"Kit (Pipe)"#, desc = r#""#, value = "-1619793705") + )] + ItemKitPipe = -1619793705i32, + #[strum( + serialize = "ItemKitPlanter", + props(name = r#"Kit (Planter)"#, desc = r#""#, value = "119096484") + )] + ItemKitPlanter = 119096484i32, + #[strum( + serialize = "ItemDynamicAirCon", + props( + name = r#"Kit (Portable Air Conditioner)"#, + desc = r#""#, + value = "1072914031" + ) + )] + ItemDynamicAirCon = 1072914031i32, + #[strum( + serialize = "ItemKitDynamicGasTankAdvanced", + props( + name = r#"Kit (Portable Gas Tank Mk II)"#, + desc = r#""#, + value = "1533501495" + ) + )] + ItemKitDynamicGasTankAdvanced = 1533501495i32, + #[strum( + serialize = "ItemKitDynamicCanister", + props( + name = r#"Kit (Portable Gas Tank)"#, + desc = r#""#, + value = "-1061945368" + ) + )] + ItemKitDynamicCanister = -1061945368i32, + #[strum( + serialize = "ItemKitDynamicGenerator", + props( + name = r#"Kit (Portable Generator)"#, + desc = r#""#, + value = "-732720413" + ) + )] + ItemKitDynamicGenerator = -732720413i32, + #[strum( + serialize = "ItemKitDynamicHydroponics", + props( + name = r#"Kit (Portable Hydroponics)"#, + desc = r#""#, + value = "-1861154222" + ) + )] + ItemKitDynamicHydroponics = -1861154222i32, + #[strum( + serialize = "ItemKitDynamicMKIILiquidCanister", + props( + name = r#"Kit (Portable Liquid Tank Mk II)"#, + desc = r#""#, + value = "-638019974" + ) + )] + ItemKitDynamicMkiiLiquidCanister = -638019974i32, + #[strum( + serialize = "ItemKitDynamicLiquidCanister", + props( + name = r#"Kit (Portable Liquid Tank)"#, + desc = r#""#, + value = "375541286" + ) + )] + ItemKitDynamicLiquidCanister = 375541286i32, + #[strum( + serialize = "ItemDynamicScrubber", + props( + name = r#"Kit (Portable Scrubber)"#, + desc = r#""#, + value = "-971920158" + ) + )] + ItemDynamicScrubber = -971920158i32, + #[strum( + serialize = "ItemKitPortablesConnector", + props( + name = r#"Kit (Portables Connector)"#, + desc = r#""#, + value = "1041148999" + ) + )] + ItemKitPortablesConnector = 1041148999i32, + #[strum( + serialize = "ItemPowerConnector", + props( + name = r#"Kit (Power Connector)"#, + desc = r#"This kit creates a Power Connector."#, + value = "839924019" + ) + )] + ItemPowerConnector = 839924019i32, + #[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 = "ItemKitPowerTransmitterOmni", + props( + name = r#"Kit (Power Transmitter Omni)"#, + desc = r#""#, + value = "-831211676" + ) + )] + ItemKitPowerTransmitterOmni = -831211676i32, + #[strum( + serialize = "ItemKitPowerTransmitter", + props(name = r#"Kit (Power Transmitter)"#, desc = r#""#, value = "291368213") + )] + ItemKitPowerTransmitter = 291368213i32, + #[strum( + serialize = "ItemKitElectricUmbilical", + props(name = r#"Kit (Power Umbilical)"#, desc = r#""#, value = "1603046970") + )] + ItemKitElectricUmbilical = 1603046970i32, + #[strum( + serialize = "ItemKitStandardChute", + props(name = r#"Kit (Powered Chutes)"#, desc = r#""#, value = "2133035682") + )] + ItemKitStandardChute = 2133035682i32, + #[strum( + serialize = "ItemKitPoweredVent", + props(name = r#"Kit (Powered Vent)"#, desc = r#""#, value = "2015439334") + )] + ItemKitPoweredVent = 2015439334i32, + #[strum( + serialize = "ItemKitPressureFedGasEngine", + props( + name = r#"Kit (Pressure Fed Gas Engine)"#, + desc = r#""#, + value = "-121514007" + ) + )] + ItemKitPressureFedGasEngine = -121514007i32, + #[strum( + serialize = "ItemKitPressureFedLiquidEngine", + props( + name = r#"Kit (Pressure Fed Liquid Engine)"#, + desc = r#""#, + value = "-99091572" + ) + )] + ItemKitPressureFedLiquidEngine = -99091572i32, + #[strum( + serialize = "ItemKitRegulator", + props( + name = r#"Kit (Pressure Regulator)"#, + desc = r#""#, + value = "1181371795" + ) + )] + ItemKitRegulator = 1181371795i32, + #[strum( + serialize = "ItemKitGovernedGasRocketEngine", + props( + name = r#"Kit (Pumped Gas Rocket Engine)"#, + desc = r#""#, + value = "206848766" + ) + )] + ItemKitGovernedGasRocketEngine = 206848766i32, + #[strum( + serialize = "ItemKitPumpedLiquidEngine", + props( + name = r#"Kit (Pumped Liquid Engine)"#, + desc = r#""#, + value = "1921918951" + ) + )] + ItemKitPumpedLiquidEngine = 1921918951i32, + #[strum( + serialize = "ItemRTGSurvival", + props( + name = r#"Kit (RTG)"#, + desc = r#"This kit creates a Kit (RTG)."#, + value = "1817645803" + ) + )] + ItemRtgSurvival = 1817645803i32, + #[strum( + serialize = "ItemPipeRadiator", + props( + name = r#"Kit (Radiator)"#, + desc = r#"This kit creates a Pipe Convection Radiator."#, + value = "-1796655088" + ) + )] + ItemPipeRadiator = -1796655088i32, + #[strum( + serialize = "ItemKitRailing", + props(name = r#"Kit (Railing)"#, desc = r#""#, value = "750176282") + )] + ItemKitRailing = 750176282i32, + #[strum( + serialize = "ItemKitRecycler", + props(name = r#"Kit (Recycler)"#, desc = r#""#, value = "849148192") + )] + ItemKitRecycler = 849148192i32, + #[strum( + serialize = "ItemKitReinforcedWindows", + props( + name = r#"Kit (Reinforced Windows)"#, + desc = r#""#, + value = "1459985302" + ) + )] + ItemKitReinforcedWindows = 1459985302i32, + #[strum( + serialize = "ItemKitRespawnPointWallMounted", + props(name = r#"Kit (Respawn)"#, desc = r#""#, value = "1574688481") + )] + ItemKitRespawnPointWallMounted = 1574688481i32, + #[strum( + serialize = "ItemKitRocketBattery", + props(name = r#"Kit (Rocket Battery)"#, desc = r#""#, value = "-314072139") + )] + ItemKitRocketBattery = -314072139i32, + #[strum( + serialize = "ItemKitRocketCargoStorage", + props( + name = r#"Kit (Rocket Cargo Storage)"#, + desc = r#""#, + value = "479850239" + ) + )] + ItemKitRocketCargoStorage = 479850239i32, + #[strum( + serialize = "ItemKitRocketCelestialTracker", + props( + name = r#"Kit (Rocket Celestial Tracker)"#, + desc = r#""#, + value = "-303008602" + ) + )] + ItemKitRocketCelestialTracker = -303008602i32, + #[strum( + serialize = "ItemKitRocketCircuitHousing", + props( + name = r#"Kit (Rocket Circuit Housing)"#, + desc = r#""#, + value = "721251202" + ) + )] + ItemKitRocketCircuitHousing = 721251202i32, + #[strum( + serialize = "ItemKitRocketDatalink", + props(name = r#"Kit (Rocket Datalink)"#, desc = r#""#, value = "-1256996603") + )] + ItemKitRocketDatalink = -1256996603i32, + #[strum( + serialize = "ItemKitRocketGasFuelTank", + props( + name = r#"Kit (Rocket Gas Fuel Tank)"#, + desc = r#""#, + value = "-1629347579" + ) + )] + ItemKitRocketGasFuelTank = -1629347579i32, + #[strum( + serialize = "ItemKitLaunchTower", + props( + name = r#"Kit (Rocket Launch Tower)"#, + desc = r#""#, + value = "-174523552" + ) + )] + ItemKitLaunchTower = -174523552i32, + #[strum( + serialize = "ItemKitRocketLiquidFuelTank", + props( + name = r#"Kit (Rocket Liquid Fuel Tank)"#, + desc = r#""#, + value = "2032027950" + ) + )] + ItemKitRocketLiquidFuelTank = 2032027950i32, + #[strum( + serialize = "ItemKitRocketManufactory", + props( + name = r#"Kit (Rocket Manufactory)"#, + desc = r#""#, + value = "-636127860" + ) + )] + ItemKitRocketManufactory = -636127860i32, + #[strum( + serialize = "ItemKitRocketMiner", + props(name = r#"Kit (Rocket Miner)"#, desc = r#""#, value = "-867969909") + )] + ItemKitRocketMiner = -867969909i32, + #[strum( + serialize = "ItemKitRocketScanner", + props(name = r#"Kit (Rocket Scanner)"#, desc = r#""#, value = "1753647154") + )] + ItemKitRocketScanner = 1753647154i32, + #[strum( + serialize = "ItemKitRoverFrame", + props(name = r#"Kit (Rover Frame)"#, desc = r#""#, value = "1827215803") + )] + ItemKitRoverFrame = 1827215803i32, + #[strum( + serialize = "ItemKitRoverMKI", + props(name = r#"Kit (Rover Mk I)"#, desc = r#""#, value = "197243872") + )] + ItemKitRoverMki = 197243872i32, + #[strum( + serialize = "ItemKitSDBHopper", + props(name = r#"Kit (SDB Hopper)"#, desc = r#""#, value = "323957548") + )] + ItemKitSdbHopper = 323957548i32, + #[strum( + serialize = "KitSDBSilo", + props( + name = r#"Kit (SDB Silo)"#, + desc = r#"This kit creates a SDB Silo."#, + value = "1932952652" + ) + )] + KitSdbSilo = 1932952652i32, + #[strum( + serialize = "ItemKitSecurityPrinter", + props(name = r#"Kit (Security Printer)"#, desc = r#""#, value = "578078533") + )] + ItemKitSecurityPrinter = 578078533i32, + #[strum( + serialize = "ItemKitSensor", + props(name = r#"Kit (Sensors)"#, desc = r#""#, value = "-1776897113") + )] + ItemKitSensor = -1776897113i32, + #[strum( + serialize = "ItemKitShower", + props(name = r#"Kit (Shower)"#, desc = r#""#, value = "735858725") + )] + ItemKitShower = 735858725i32, + #[strum( + serialize = "ItemKitSign", + props(name = r#"Kit (Sign)"#, desc = r#""#, value = "529996327") + )] + ItemKitSign = 529996327i32, + #[strum( + serialize = "ItemKitSleeper", + props(name = r#"Kit (Sleeper)"#, desc = r#""#, value = "326752036") + )] + ItemKitSleeper = 326752036i32, + #[strum( + serialize = "ItemKitSmallDirectHeatExchanger", + props( + name = r#"Kit (Small Direct Heat Exchanger)"#, + desc = r#""#, + value = "-1332682164" + ) + )] + ItemKitSmallDirectHeatExchanger = -1332682164i32, + #[strum( + serialize = "ItemFlagSmall", + props(name = r#"Kit (Small Flag)"#, desc = r#""#, value = "2011191088") + )] + ItemFlagSmall = 2011191088i32, + #[strum( + serialize = "ItemKitSmallSatelliteDish", + props( + name = r#"Kit (Small Satellite Dish)"#, + desc = r#""#, + value = "1960952220" + ) + )] + ItemKitSmallSatelliteDish = 1960952220i32, + #[strum( + serialize = "ItemKitSolarPanelBasicReinforced", + props( + name = r#"Kit (Solar Panel Basic Heavy)"#, + desc = r#""#, + value = "-528695432" + ) + )] + ItemKitSolarPanelBasicReinforced = -528695432i32, + #[strum( + serialize = "ItemKitSolarPanelBasic", + props(name = r#"Kit (Solar Panel Basic)"#, desc = r#""#, value = "844961456") + )] + ItemKitSolarPanelBasic = 844961456i32, + #[strum( + serialize = "ItemKitSolarPanelReinforced", + props( + name = r#"Kit (Solar Panel Heavy)"#, + desc = r#""#, + value = "-364868685" + ) + )] + ItemKitSolarPanelReinforced = -364868685i32, + #[strum( + serialize = "ItemKitSolarPanel", + props(name = r#"Kit (Solar Panel)"#, desc = r#""#, value = "-1924492105") + )] + ItemKitSolarPanel = -1924492105i32, + #[strum( + serialize = "ItemKitSolidGenerator", + props(name = r#"Kit (Solid Generator)"#, desc = r#""#, value = "1293995736") + )] + ItemKitSolidGenerator = 1293995736i32, + #[strum( + serialize = "ItemKitSorter", + props(name = r#"Kit (Sorter)"#, desc = r#""#, value = "969522478") + )] + ItemKitSorter = 969522478i32, + #[strum( + serialize = "ItemKitSpeaker", + props(name = r#"Kit (Speaker)"#, desc = r#""#, value = "-126038526") + )] + ItemKitSpeaker = -126038526i32, + #[strum( + serialize = "ItemKitStacker", + props(name = r#"Kit (Stacker)"#, desc = r#""#, value = "1013244511") + )] + ItemKitStacker = 1013244511i32, + #[strum( + serialize = "ItemKitStairs", + props(name = r#"Kit (Stairs)"#, desc = r#""#, value = "170878959") + )] + ItemKitStairs = 170878959i32, + #[strum( + serialize = "ItemKitStairwell", + props(name = r#"Kit (Stairwell)"#, desc = r#""#, value = "-1868555784") + )] + ItemKitStairwell = -1868555784i32, + #[strum( + serialize = "ItemKitStirlingEngine", + props(name = r#"Kit (Stirling Engine)"#, desc = r#""#, value = "-1821571150") + )] + ItemKitStirlingEngine = -1821571150i32, + #[strum( + serialize = "ItemKitSuitStorage", + props(name = r#"Kit (Suit Storage)"#, desc = r#""#, value = "1088892825") + )] + ItemKitSuitStorage = 1088892825i32, + #[strum( + serialize = "ItemKitTables", + props(name = r#"Kit (Tables)"#, desc = r#""#, value = "-1361598922") + )] + ItemKitTables = -1361598922i32, + #[strum( + serialize = "ItemKitTankInsulated", + props(name = r#"Kit (Tank Insulated)"#, desc = r#""#, value = "1021053608") + )] + ItemKitTankInsulated = 1021053608i32, + #[strum( + serialize = "ItemKitTank", + props(name = r#"Kit (Tank)"#, desc = r#""#, value = "771439840") + )] + ItemKitTank = 771439840i32, + #[strum( + serialize = "ItemKitGroundTelescope", + props(name = r#"Kit (Telescope)"#, desc = r#""#, value = "-2140672772") + )] + ItemKitGroundTelescope = -2140672772i32, + #[strum( + serialize = "ItemKitToolManufactory", + props(name = r#"Kit (Tool Manufactory)"#, desc = r#""#, value = "529137748") + )] + ItemKitToolManufactory = 529137748i32, + #[strum( + serialize = "ItemKitTransformer", + props( + name = r#"Kit (Transformer Large)"#, + desc = r#""#, + value = "-453039435" + ) + )] + ItemKitTransformer = -453039435i32, + #[strum( + serialize = "ItemKitRocketTransformerSmall", + props( + name = r#"Kit (Transformer Small (Rocket))"#, + desc = r#""#, + value = "-932335800" + ) + )] + ItemKitRocketTransformerSmall = -932335800i32, + #[strum( + serialize = "ItemKitTransformerSmall", + props(name = r#"Kit (Transformer Small)"#, desc = r#""#, value = "665194284") + )] + ItemKitTransformerSmall = 665194284i32, + #[strum( + serialize = "ItemKitPressurePlate", + props(name = r#"Kit (Trigger Plate)"#, desc = r#""#, value = "123504691") + )] + ItemKitPressurePlate = 123504691i32, + #[strum( + serialize = "ItemKitTurbineGenerator", + props( + name = r#"Kit (Turbine Generator)"#, + desc = r#""#, + value = "-1590715731" + ) + )] + ItemKitTurbineGenerator = -1590715731i32, + #[strum( + serialize = "ItemKitTurboVolumePump", + props( + name = r#"Kit (Turbo Volume Pump - Gas)"#, + desc = r#""#, + value = "-1248429712" + ) + )] + ItemKitTurboVolumePump = -1248429712i32, + #[strum( + serialize = "ItemKitLiquidTurboVolumePump", + props( + name = r#"Kit (Turbo Volume Pump - Liquid)"#, + desc = r#""#, + value = "-1805020897" + ) + )] + ItemKitLiquidTurboVolumePump = -1805020897i32, + #[strum( + serialize = "ItemKitUprightWindTurbine", + props( + name = r#"Kit (Upright Wind Turbine)"#, + desc = r#""#, + value = "-1798044015" + ) + )] + ItemKitUprightWindTurbine = -1798044015i32, + #[strum( + serialize = "ItemKitVendingMachineRefrigerated", + props( + name = r#"Kit (Vending Machine Refrigerated)"#, + desc = r#""#, + value = "-1867508561" + ) + )] + ItemKitVendingMachineRefrigerated = -1867508561i32, + #[strum( + serialize = "ItemKitVendingMachine", + props(name = r#"Kit (Vending Machine)"#, desc = r#""#, value = "-2038384332") + )] + ItemKitVendingMachine = -2038384332i32, + #[strum( + serialize = "ItemPipeVolumePump", + props( + name = r#"Kit (Volume Pump)"#, + desc = r#"This kit creates a Volume Pump."#, + value = "-1766301997" + ) + )] + ItemPipeVolumePump = -1766301997i32, + #[strum( + serialize = "ItemWallCooler", + props( + name = r#"Kit (Wall Cooler)"#, + desc = r#"This kit creates a Wall Cooler."#, + value = "-1567752627" + ) + )] + ItemWallCooler = -1567752627i32, + #[strum( + serialize = "ItemWallHeater", + props( + name = r#"Kit (Wall Heater)"#, + desc = r#"This kit creates a Kit (Wall Heater)."#, + value = "1880134612" + ) + )] + ItemWallHeater = 1880134612i32, + #[strum( + serialize = "ItemKitWall", + props(name = r#"Kit (Wall)"#, desc = r#""#, value = "-1826855889") + )] + ItemKitWall = -1826855889i32, + #[strum( + serialize = "ItemKitWaterBottleFiller", + props( + name = r#"Kit (Water Bottle Filler)"#, + desc = r#""#, + value = "159886536" + ) + )] + ItemKitWaterBottleFiller = 159886536i32, + #[strum( + serialize = "ItemKitWaterPurifier", + props(name = r#"Kit (Water Purifier)"#, desc = r#""#, value = "611181283") + )] + ItemKitWaterPurifier = 611181283i32, + #[strum( + serialize = "ItemKitWeatherStation", + props(name = r#"Kit (Weather Station)"#, desc = r#""#, value = "337505889") + )] + ItemKitWeatherStation = 337505889i32, + #[strum( + serialize = "ItemKitWindTurbine", + props(name = r#"Kit (Wind Turbine)"#, desc = r#""#, value = "-868916503") + )] + ItemKitWindTurbine = -868916503i32, + #[strum( + serialize = "ItemKitWindowShutter", + props(name = r#"Kit (Window Shutter)"#, desc = r#""#, value = "1779979754") + )] + ItemKitWindowShutter = 1779979754i32, + #[strum( + serialize = "ItemKitHeatExchanger", + props(name = r#"Kit Heat Exchanger"#, desc = r#""#, value = "-1710540039") + )] + ItemKitHeatExchanger = -1710540039i32, + #[strum( + serialize = "ItemKitPictureFrame", + props(name = r#"Kit Picture Frame"#, desc = r#""#, value = "-2062364768") + )] + ItemKitPictureFrame = -2062364768i32, + #[strum( + serialize = "ItemKitResearchMachine", + props(name = r#"Kit Research Machine"#, desc = r#""#, value = "724776762") + )] + ItemKitResearchMachine = 724776762i32, + #[strum( + serialize = "KitchenTableShort", + props(name = r#"Kitchen Table (Short)"#, desc = r#""#, value = "-1427415566") + )] + KitchenTableShort = -1427415566i32, + #[strum( + serialize = "KitchenTableSimpleShort", + props( + name = r#"Kitchen Table (Simple Short)"#, + desc = r#""#, + value = "-78099334" + ) + )] + KitchenTableSimpleShort = -78099334i32, + #[strum( + serialize = "KitchenTableSimpleTall", + props( + name = r#"Kitchen Table (Simple Tall)"#, + desc = r#""#, + value = "-1068629349" + ) + )] + KitchenTableSimpleTall = -1068629349i32, + #[strum( + serialize = "KitchenTableTall", + props(name = r#"Kitchen Table (Tall)"#, desc = r#""#, value = "-1386237782") + )] + KitchenTableTall = -1386237782i32, + #[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 = "StructureDiode", + props(name = r#"LED"#, desc = r#""#, value = "1944485013") + )] + StructureDiode = 1944485013i32, + #[strum( + serialize = "StructureConsoleLED1x3", + props( + name = r#"LED Display (Large)"#, + desc = r#"0.Default +1.Percent +2.Power"#, + value = "-1949054743" + ) + )] + StructureConsoleLed1X3 = -1949054743i32, + #[strum( + serialize = "StructureConsoleLED1x2", + props( + name = r#"LED Display (Medium)"#, + desc = r#"0.Default +1.Percent +2.Power"#, + value = "-53151617" + ) + )] + StructureConsoleLed1X2 = -53151617i32, + #[strum( + serialize = "StructureConsoleLED5", + props( + name = r#"LED Display (Small)"#, + desc = r#"0.Default +1.Percent +2.Power"#, + value = "-815193061" + ) + )] + StructureConsoleLed5 = -815193061i32, + #[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 = "StructureLadder", + props(name = r#"Ladder"#, desc = r#""#, value = "-415420281") + )] + StructureLadder = -415420281i32, + #[strum( + serialize = "StructureLadderEnd", + props(name = r#"Ladder End"#, desc = r#""#, value = "1541734993") + )] + StructureLadderEnd = 1541734993i32, + #[strum( + serialize = "StructurePlatformLadderOpen", + props(name = r#"Ladder Platform"#, desc = r#""#, value = "1559586682") + )] + StructurePlatformLadderOpen = 1559586682i32, + #[strum( + serialize = "Lander", + props(name = r#"Lander"#, desc = r#""#, value = "1605130615") + )] + Lander = 1605130615i32, + #[strum( + serialize = "Landingpad_BlankPiece", + props(name = r#"Landingpad"#, desc = r#""#, value = "912453390") + )] + LandingpadBlankPiece = 912453390i32, + #[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 = "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 = "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 = "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 = "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 = "Landingpad_GasConnectorInwardPiece", + props(name = r#"Landingpad Gas Input"#, desc = r#""#, value = "817945707") + )] + LandingpadGasConnectorInwardPiece = 817945707i32, + #[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 = "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 = "Landingpad_LiquidConnectorInwardPiece", + props( + name = r#"Landingpad Liquid Input"#, + desc = r#""#, + value = "-1216167727" + ) + )] + LandingpadLiquidConnectorInwardPiece = -1216167727i32, + #[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 = "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 = "Landingpad_TaxiPieceCorner", + props( + name = r#"Landingpad Taxi Corner"#, + desc = r#""#, + value = "-1872345847" + ) + )] + LandingpadTaxiPieceCorner = -1872345847i32, + #[strum( + serialize = "Landingpad_TaxiPieceHold", + props(name = r#"Landingpad Taxi Hold"#, desc = r#""#, value = "146051619") + )] + LandingpadTaxiPieceHold = 146051619i32, + #[strum( + serialize = "Landingpad_TaxiPieceStraight", + props( + name = r#"Landingpad Taxi Straight"#, + desc = r#""#, + value = "-1477941080" + ) + )] + LandingpadTaxiPieceStraight = -1477941080i32, + #[strum( + serialize = "Landingpad_ThreshholdPiece", + props(name = r#"Landingpad Threshhold"#, desc = r#""#, value = "-1514298582") + )] + LandingpadThreshholdPiece = -1514298582i32, + #[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 = "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 = "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 = "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 = "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 = "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 = "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 = "StructureTankBig", + props(name = r#"Large Tank"#, desc = r#""#, value = "-1606848156") + )] + StructureTankBig = -1606848156i32, + #[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 = "StructureRocketTower", + props(name = r#"Launch Tower"#, desc = r#""#, value = "-654619479") + )] + StructureRocketTower = -654619479i32, + #[strum( + serialize = "StructureLogicSwitch", + props(name = r#"Lever"#, desc = r#""#, value = "1220484876") + )] + StructureLogicSwitch = 1220484876i32, + #[strum( + serialize = "StructureLightRound", + props( + name = r#"Light Round"#, + desc = r#"Description coming."#, + value = "1514476632" + ) + )] + StructureLightRound = 1514476632i32, + #[strum( + serialize = "StructureLightRoundAngled", + props( + name = r#"Light Round (Angled)"#, + desc = r#"Description coming."#, + value = "1592905386" + ) + )] + StructureLightRoundAngled = 1592905386i32, + #[strum( + serialize = "StructureLightRoundSmall", + props( + name = r#"Light Round (Small)"#, + desc = r#"Description coming."#, + value = "1436121888" + ) + )] + StructureLightRoundSmall = 1436121888i32, + #[strum( + serialize = "ItemLightSword", + props( + name = r#"Light Sword"#, + desc = r#"A charming, if useless, pseudo-weapon. (Creative only.)"#, + value = "1949076595" + ) + )] + ItemLightSword = 1949076595i32, + #[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 = "ItemLiquidCanisterEmpty", + props(name = r#"Liquid Canister"#, desc = r#""#, value = "-185207387") + )] + ItemLiquidCanisterEmpty = -185207387i32, + #[strum( + serialize = "ItemLiquidCanisterSmart", + props( + name = r#"Liquid Canister (Smart)"#, + desc = r#"0.Mode0 +1.Mode1"#, + value = "777684475" + ) + )] + ItemLiquidCanisterSmart = 777684475i32, + #[strum( + serialize = "ItemGasCanisterWater", + props( + name = r#"Liquid Canister (Water)"#, + desc = r#""#, + value = "-1854861891" + ) + )] + ItemGasCanisterWater = -1854861891i32, + #[strum( + serialize = "StructureMediumRocketLiquidFuelTank", + props( + name = r#"Liquid Capsule Tank Medium"#, + desc = r#""#, + value = "1143639539" + ) + )] + StructureMediumRocketLiquidFuelTank = 1143639539i32, + #[strum( + serialize = "StructureCapsuleTankLiquid", + props( + name = r#"Liquid Capsule Tank Small"#, + desc = r#""#, + value = "1415396263" + ) + )] + StructureCapsuleTankLiquid = 1415396263i32, + #[strum( + serialize = "StructureWaterDigitalValve", + props(name = r#"Liquid Digital Valve"#, desc = r#""#, value = "-517628750") + )] + StructureWaterDigitalValve = -517628750i32, + #[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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "StructureLiquidPipeAnalyzer", + props(name = r#"Liquid Pipe Analyzer"#, desc = r#""#, value = "-2113838091") + )] + StructureLiquidPipeAnalyzer = -2113838091i32, + #[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 = "StructureWaterPipeMeter", + props(name = r#"Liquid Pipe Meter"#, desc = r#""#, value = "433184168") + )] + StructureWaterPipeMeter = 433184168i32, + #[strum( + serialize = "StructureLiquidTankBig", + props(name = r#"Liquid Tank Big"#, desc = r#""#, value = "1098900430") + )] + StructureLiquidTankBig = 1098900430i32, + #[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 = "StructureLiquidTankSmall", + props(name = r#"Liquid Tank Small"#, desc = r#""#, value = "1988118157") + )] + StructureLiquidTankSmall = 1988118157i32, + #[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 = "StructureLiquidValve", + props(name = r#"Liquid Valve"#, desc = r#""#, value = "1849974453") + )] + StructureLiquidValve = 1849974453i32, + #[strum( + serialize = "StructureLiquidVolumePump", + props(name = r#"Liquid Volume Pump"#, desc = r#""#, value = "-454028979") + )] + StructureLiquidVolumePump = -454028979i32, + #[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 = "StructureWaterWallCooler", + props(name = r#"Liquid Wall Cooler"#, desc = r#""#, value = "-1369060582") + )] + StructureWaterWallCooler = -1369060582i32, + #[strum( + serialize = "StructureStorageLocker", + props(name = r#"Locker"#, desc = r#""#, value = "-793623899") + )] + StructureStorageLocker = -793623899i32, + #[strum( + serialize = "StructureLockerSmall", + props(name = r#"Locker (Small)"#, desc = r#""#, value = "-647164662") + )] + StructureLockerSmall = -647164662i32, + #[strum( + serialize = "StructureLogicCompare", + props( + name = r#"Logic Compare"#, + desc = r#"0.Equals +1.Greater +2.Less +3.NotEquals"#, + value = "-1489728908" + ) + )] + StructureLogicCompare = -1489728908i32, + #[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 = "StructureLogicHashGen", + props(name = r#"Logic Hash Generator"#, desc = r#""#, value = "2077593121") + )] + StructureLogicHashGen = 2077593121i32, + #[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 = "StructureLogicMemory", + props(name = r#"Logic Memory"#, desc = r#""#, value = "-851746783") + )] + StructureLogicMemory = -851746783i32, + #[strum( + serialize = "StructureLogicMinMax", + props( + name = r#"Logic Min/Max"#, + desc = r#"0.Greater +1.Less"#, + value = "929022276" + ) + )] + StructureLogicMinMax = 929022276i32, + #[strum( + serialize = "StructureLogicMirror", + props(name = r#"Logic Mirror"#, desc = r#""#, value = "2096189278") + )] + StructureLogicMirror = 2096189278i32, + #[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 = "StructureLogicReader", + props(name = r#"Logic Reader"#, desc = r#""#, value = "-345383640") + )] + StructureLogicReader = -345383640i32, + #[strum( + serialize = "StructureLogicRocketDownlink", + props(name = r#"Logic Rocket Downlink"#, desc = r#""#, value = "876108549") + )] + StructureLogicRocketDownlink = 876108549i32, + #[strum( + serialize = "StructureLogicSelect", + props( + name = r#"Logic Select"#, + desc = r#"0.Equals +1.Greater +2.Less +3.NotEquals"#, + value = "1822736084" + ) + )] + StructureLogicSelect = 1822736084i32, + #[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 = "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 = "StructureLogicTransmitter", + props( + name = r#"Logic Transmitter"#, + desc = r#"Connects to Logic Transmitter"#, + value = "-693235651" + ) + )] + StructureLogicTransmitter = -693235651i32, + #[strum( + serialize = "StructureLogicRocketUplink", + props(name = r#"Logic Uplink"#, desc = r#""#, value = "546002924") + )] + StructureLogicRocketUplink = 546002924i32, + #[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 = "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 = "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 = "ItemMarineBodyArmor", + props(name = r#"Marine Armor"#, desc = r#""#, value = "1399098998") + )] + ItemMarineBodyArmor = 1399098998i32, + #[strum( + serialize = "ItemMarineHelmet", + props(name = r#"Marine Helmet"#, desc = r#""#, value = "1073631646") + )] + ItemMarineHelmet = 1073631646i32, + #[strum( + serialize = "UniformMarine", + props(name = r#"Marine Uniform"#, desc = r#""#, value = "-48342840") + )] + UniformMarine = -48342840i32, + #[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 = "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 = "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 = "StructurePassiveLargeRadiatorGas", + props( + name = r#"Medium Convection Radiator"#, + desc = r#"Has been replaced by Medium Convection Radiator."#, + value = "2066977095" + ) + )] + StructurePassiveLargeRadiatorGas = 2066977095i32, + #[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 = "StructurePassiveLargeRadiatorLiquid", + props( + name = r#"Medium Convection Radiator Liquid"#, + desc = r#"Has been replaced by Medium Convection Radiator Liquid."#, + value = "24786172" + ) + )] + StructurePassiveLargeRadiatorLiquid = 24786172i32, + #[strum( + serialize = "ItemGasFilterCarbonDioxideM", + props( + name = r#"Medium Filter (Carbon Dioxide)"#, + desc = r#""#, + value = "416897318" + ) + )] + ItemGasFilterCarbonDioxideM = 416897318i32, + #[strum( + serialize = "ItemGasFilterNitrogenM", + props( + name = r#"Medium Filter (Nitrogen)"#, + desc = r#""#, + value = "-632657357" + ) + )] + ItemGasFilterNitrogenM = -632657357i32, + #[strum( + serialize = "ItemGasFilterNitrousOxideM", + props( + name = r#"Medium Filter (Nitrous Oxide)"#, + desc = r#""#, + value = "1824284061" + ) + )] + ItemGasFilterNitrousOxideM = 1824284061i32, + #[strum( + serialize = "ItemGasFilterOxygenM", + props( + name = r#"Medium Filter (Oxygen)"#, + desc = r#""#, + value = "-1067319543" + ) + )] + ItemGasFilterOxygenM = -1067319543i32, + #[strum( + serialize = "ItemGasFilterPollutantsM", + props( + name = r#"Medium Filter (Pollutants)"#, + desc = r#""#, + value = "63677771" + ) + )] + ItemGasFilterPollutantsM = 63677771i32, + #[strum( + serialize = "ItemGasFilterVolatilesM", + props( + name = r#"Medium Filter (Volatiles)"#, + desc = r#""#, + value = "1037507240" + ) + )] + ItemGasFilterVolatilesM = 1037507240i32, + #[strum( + serialize = "ItemGasFilterWaterM", + props(name = r#"Medium Filter (Water)"#, desc = r#""#, value = "8804422") + )] + ItemGasFilterWaterM = 8804422i32, + #[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 = "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 = "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 = "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 = "Meteorite", + props(name = r#"Meteorite"#, desc = r#""#, value = "-99064335") + )] + Meteorite = -99064335i32, + #[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 = "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 = "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 = "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 = "ItemMiningBackPack", + props(name = r#"Mining Backpack"#, desc = r#""#, value = "-1650383245") + )] + ItemMiningBackPack = -1650383245i32, + #[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 = "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 = "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 = "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 = "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 = "ItemRocketMiningDrillHead", + props( + name = r#"Mining-Drill Head (Basic)"#, + desc = r#"Replaceable drill head for Rocket Miner"#, + value = "2109945337" + ) + )] + ItemRocketMiningDrillHead = 2109945337i32, + #[strum( + serialize = "ItemRocketMiningDrillHeadDurable", + props( + name = r#"Mining-Drill Head (Durable)"#, + desc = r#""#, + value = "1530764483" + ) + )] + ItemRocketMiningDrillHeadDurable = 1530764483i32, + #[strum( + serialize = "ItemRocketMiningDrillHeadHighSpeedIce", + props( + name = r#"Mining-Drill Head (High Speed Ice)"#, + desc = r#""#, + value = "653461728" + ) + )] + ItemRocketMiningDrillHeadHighSpeedIce = 653461728i32, + #[strum( + serialize = "ItemRocketMiningDrillHeadHighSpeedMineral", + props( + name = r#"Mining-Drill Head (High Speed Mineral)"#, + desc = r#""#, + value = "1440678625" + ) + )] + ItemRocketMiningDrillHeadHighSpeedMineral = 1440678625i32, + #[strum( + serialize = "ItemRocketMiningDrillHeadIce", + props( + name = r#"Mining-Drill Head (Ice)"#, + desc = r#""#, + value = "-380904592" + ) + )] + ItemRocketMiningDrillHeadIce = -380904592i32, + #[strum( + serialize = "ItemRocketMiningDrillHeadLongTerm", + props( + name = r#"Mining-Drill Head (Long Term)"#, + desc = r#""#, + value = "-684020753" + ) + )] + ItemRocketMiningDrillHeadLongTerm = -684020753i32, + #[strum( + serialize = "ItemRocketMiningDrillHeadMineral", + props( + name = r#"Mining-Drill Head (Mineral)"#, + desc = r#""#, + value = "1083675581" + ) + )] + ItemRocketMiningDrillHeadMineral = 1083675581i32, + #[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 = "ItemMKIIArcWelder", + props(name = r#"Mk II Arc Welder"#, desc = r#""#, value = "-2061979347") + )] + ItemMkiiArcWelder = -2061979347i32, + #[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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "SeedBag_Mushroom", + props( + name = r#"Mushroom Seeds"#, + desc = r#"Grow a Mushroom."#, + value = "311593418" + ) + )] + SeedBagMushroom = 311593418i32, + #[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 = "ItemNVG", + props(name = r#"Night Vision Goggles"#, desc = r#""#, value = "982514123") + )] + ItemNvg = 982514123i32, + #[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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "StructureOverheadShortCornerLocker", + props( + name = r#"Overhead Corner Locker"#, + desc = r#""#, + value = "-1794932560" + ) + )] + StructureOverheadShortCornerLocker = -1794932560i32, + #[strum( + serialize = "StructureOverheadShortLocker", + props(name = r#"Overhead Locker"#, desc = r#""#, value = "1468249454") + )] + StructureOverheadShortLocker = 1468249454i32, + #[strum( + serialize = "AppliancePaintMixer", + props(name = r#"Paint Mixer"#, desc = r#""#, value = "-1339716113") + )] + AppliancePaintMixer = -1339716113i32, + #[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 = "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 = "PassiveSpeaker", + props(name = r#"Passive Speaker"#, desc = r#""#, value = "248893646") + )] + PassiveSpeaker = 248893646i32, + #[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 = "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 = "ItemPeaceLily", + props( + name = r#"Peace Lily"#, + desc = r#"A fetching lily with greater resistance to cold temperatures."#, + value = "2042955224" + ) + )] + ItemPeaceLily = 2042955224i32, + #[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 = "StructurePictureFrameThickLandscapeLarge", + props( + name = r#"Picture Frame Thick Landscape Large"#, + desc = r#""#, + value = "-1434523206" + ) + )] + StructurePictureFrameThickLandscapeLarge = -1434523206i32, + #[strum( + serialize = "StructurePictureFrameThickMountLandscapeLarge", + props( + name = r#"Picture Frame Thick Landscape Large"#, + desc = r#""#, + value = "950004659" + ) + )] + StructurePictureFrameThickMountLandscapeLarge = 950004659i32, + #[strum( + serialize = "StructurePictureFrameThickLandscapeSmall", + props( + name = r#"Picture Frame Thick Landscape Small"#, + desc = r#""#, + value = "-2041566697" + ) + )] + StructurePictureFrameThickLandscapeSmall = -2041566697i32, + #[strum( + serialize = "StructurePictureFrameThickMountLandscapeSmall", + props( + name = r#"Picture Frame Thick Landscape Small"#, + desc = r#""#, + value = "347154462" + ) + )] + StructurePictureFrameThickMountLandscapeSmall = 347154462i32, + #[strum( + serialize = "StructurePictureFrameThickMountPortraitLarge", + props( + name = r#"Picture Frame Thick Mount Portrait Large"#, + desc = r#""#, + value = "-1459641358" + ) + )] + StructurePictureFrameThickMountPortraitLarge = -1459641358i32, + #[strum( + serialize = "StructurePictureFrameThickMountPortraitSmall", + props( + name = r#"Picture Frame Thick Mount Portrait Small"#, + desc = r#""#, + value = "-2066653089" + ) + )] + StructurePictureFrameThickMountPortraitSmall = -2066653089i32, + #[strum( + serialize = "StructurePictureFrameThickPortraitLarge", + props( + name = r#"Picture Frame Thick Portrait Large"#, + desc = r#""#, + value = "-1686949570" + ) + )] + StructurePictureFrameThickPortraitLarge = -1686949570i32, + #[strum( + serialize = "StructurePictureFrameThickPortraitSmall", + props( + name = r#"Picture Frame Thick Portrait Small"#, + desc = r#""#, + value = "-1218579821" + ) + )] + StructurePictureFrameThickPortraitSmall = -1218579821i32, + #[strum( + serialize = "StructurePictureFrameThinLandscapeLarge", + props( + name = r#"Picture Frame Thin Landscape Large"#, + desc = r#""#, + value = "-1418288625" + ) + )] + StructurePictureFrameThinLandscapeLarge = -1418288625i32, + #[strum( + serialize = "StructurePictureFrameThinMountLandscapeLarge", + props( + name = r#"Picture Frame Thin Landscape Large"#, + desc = r#""#, + value = "-1146760430" + ) + )] + StructurePictureFrameThinMountLandscapeLarge = -1146760430i32, + #[strum( + serialize = "StructurePictureFrameThinMountLandscapeSmall", + props( + name = r#"Picture Frame Thin Landscape Small"#, + desc = r#""#, + value = "-1752493889" + ) + )] + StructurePictureFrameThinMountLandscapeSmall = -1752493889i32, + #[strum( + serialize = "StructurePictureFrameThinLandscapeSmall", + props( + name = r#"Picture Frame Thin Landscape Small"#, + desc = r#""#, + value = "-2024250974" + ) + )] + StructurePictureFrameThinLandscapeSmall = -2024250974i32, + #[strum( + serialize = "StructurePictureFrameThinPortraitLarge", + props( + name = r#"Picture Frame Thin Portrait Large"#, + desc = r#""#, + value = "1212777087" + ) + )] + StructurePictureFrameThinPortraitLarge = 1212777087i32, + #[strum( + serialize = "StructurePictureFrameThinMountPortraitLarge", + props( + name = r#"Picture Frame Thin Portrait Large"#, + desc = r#""#, + value = "1094895077" + ) + )] + StructurePictureFrameThinMountPortraitLarge = 1094895077i32, + #[strum( + serialize = "StructurePictureFrameThinMountPortraitSmall", + props( + name = r#"Picture Frame Thin Portrait Small"#, + desc = r#""#, + value = "1835796040" + ) + )] + StructurePictureFrameThinMountPortraitSmall = 1835796040i32, + #[strum( + serialize = "StructurePictureFrameThinPortraitSmall", + props( + name = r#"Picture Frame Thin Portrait Small"#, + desc = r#""#, + value = "1684488658" + ) + )] + StructurePictureFrameThinPortraitSmall = 1684488658i32, + #[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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "StructurePipeCowl", + props(name = r#"Pipe Cowl"#, desc = r#""#, value = "465816159") + )] + StructurePipeCowl = 465816159i32, + #[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 = "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 = "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 = "ItemPipeHeater", + props( + name = r#"Pipe Heater Kit (Gas)"#, + desc = r#"Creates a Pipe Heater (Gas)."#, + value = "-1751627006" + ) + )] + ItemPipeHeater = -1751627006i32, + #[strum( + serialize = "ItemLiquidPipeHeater", + props( + name = r#"Pipe Heater Kit (Liquid)"#, + desc = r#"Creates a Pipe Heater (Liquid)."#, + value = "-248475032" + ) + )] + ItemLiquidPipeHeater = -248475032i32, + #[strum( + serialize = "StructurePipeIgniter", + props( + name = r#"Pipe Igniter"#, + desc = r#"Ignites the atmosphere inside the attached pipe network."#, + value = "1286441942" + ) + )] + StructurePipeIgniter = 1286441942i32, + #[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 = "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 = "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 = "StructurePipeRadiatorFlat", + props( + name = r#"Pipe Radiator"#, + desc = r#"A pipe mounted radiator optimized for radiating heat in vacuums."#, + value = "-399883995" + ) + )] + StructurePipeRadiatorFlat = -399883995i32, + #[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 = "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 = "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 = "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 = "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 = "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 = "ItemPlasticSheets", + props(name = r#"Plastic Sheets"#, desc = r#""#, value = "662053345") + )] + ItemPlasticSheets = 662053345i32, + #[strum( + serialize = "StructurePlinth", + props(name = r#"Plinth"#, desc = r#""#, value = "989835703") + )] + StructurePlinth = 989835703i32, + #[strum( + serialize = "ItemMiningDrillPneumatic", + props( + name = r#"Pneumatic Mining Drill"#, + desc = r#"0.Default +1.Flatten"#, + value = "1258187304" + ) + )] + ItemMiningDrillPneumatic = 1258187304i32, + #[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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "DynamicGasCanisterNitrousOxide", + props( + name = r#"Portable Gas Tank (Nitrous Oxide)"#, + desc = r#""#, + value = "30727200" + ) + )] + DynamicGasCanisterNitrousOxide = 30727200i32, + #[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 = "DynamicGasCanisterPollutants", + props( + name = r#"Portable Gas Tank (Pollutants)"#, + desc = r#""#, + value = "396065382" + ) + )] + DynamicGasCanisterPollutants = 396065382i32, + #[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 = "DynamicGasTankAdvancedOxygen", + props( + name = r#"Portable Gas Tank Mk II (Oxygen)"#, + desc = r#"0.Mode0 +1.Mode1"#, + value = "-1264455519" + ) + )] + DynamicGasTankAdvancedOxygen = -1264455519i32, + #[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 = "DynamicHydroponics", + props(name = r#"Portable Hydroponics"#, desc = r#""#, value = "587726607") + )] + DynamicHydroponics = 587726607i32, + #[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 = "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 = "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 = "DynamicMKIILiquidCanisterEmpty", + props( + name = r#"Portable Liquid Tank Mk II"#, + desc = r#"An empty, insulated liquid Gas Canister."#, + value = "2130739600" + ) + )] + DynamicMkiiLiquidCanisterEmpty = 2130739600i32, + #[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 = "PortableSolarPanel", + props(name = r#"Portable Solar Panel"#, desc = r#""#, value = "2043318949") + )] + PortableSolarPanel = 2043318949i32, + #[strum( + serialize = "StructurePortablesConnector", + props(name = r#"Portables Connector"#, desc = r#""#, value = "-899013427") + )] + StructurePortablesConnector = -899013427i32, + #[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 = "SeedBag_Potato", + props( + name = r#"Potato Seeds"#, + desc = r#"Grow a Potato."#, + value = "1005571172" + ) + )] + SeedBagPotato = 1005571172i32, + #[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 = "StructurePowerConnector", + props( + name = r#"Power Connector"#, + desc = r#"Attaches a Kit (Portable Generator) to a power network."#, + value = "-782951720" + ) + )] + StructurePowerConnector = -782951720i32, + #[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 = "StructurePowerTransmitterOmni", + props(name = r#"Power Transmitter Omni"#, desc = r#""#, value = "-327468845") + )] + StructurePowerTransmitterOmni = -327468845i32, + #[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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "ItemPumpkinPie", + props(name = r#"Pumpkin Pie"#, desc = r#""#, value = "62768076") + )] + ItemPumpkinPie = 62768076i32, + #[strum( + serialize = "SeedBag_Pumpkin", + props( + name = r#"Pumpkin Seeds"#, + desc = r#"Grow a Pumpkin."#, + value = "1423199840" + ) + )] + SeedBagPumpkin = 1423199840i32, + #[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 = "ItemPureIceCarbonDioxide", + props( + name = r#"Pure Ice Carbon Dioxide"#, + desc = r#"A frozen chunk of pure Carbon Dioxide"#, + value = "-1251009404" + ) + )] + ItemPureIceCarbonDioxide = -1251009404i32, + #[strum( + serialize = "ItemPureIceHydrogen", + props( + name = r#"Pure Ice Hydrogen"#, + desc = r#"A frozen chunk of pure Hydrogen"#, + value = "944530361" + ) + )] + ItemPureIceHydrogen = 944530361i32, + #[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 = "ItemPureIceLiquidHydrogen", + props( + name = r#"Pure Ice Liquid Hydrogen"#, + desc = r#"A frozen chunk of pure Liquid Hydrogen"#, + value = "-1044933269" + ) + )] + ItemPureIceLiquidHydrogen = -1044933269i32, + #[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 = "ItemPureIceLiquidNitrous", + props( + name = r#"Pure Ice Liquid Nitrous"#, + desc = r#"A frozen chunk of pure Liquid Nitrous Oxide"#, + value = "1428477399" + ) + )] + ItemPureIceLiquidNitrous = 1428477399i32, + #[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 = "ItemPureIceLiquidPollutant", + props( + name = r#"Pure Ice Liquid Pollutant"#, + desc = r#"A frozen chunk of pure Liquid Pollutant"#, + value = "-1748926678" + ) + )] + ItemPureIceLiquidPollutant = -1748926678i32, + #[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 = "ItemPureIceNitrogen", + props( + name = r#"Pure Ice Nitrogen"#, + desc = r#"A frozen chunk of pure Nitrogen"#, + value = "-1708395413" + ) + )] + ItemPureIceNitrogen = -1708395413i32, + #[strum( + serialize = "ItemPureIceNitrous", + props( + name = r#"Pure Ice NitrousOxide"#, + desc = r#"A frozen chunk of pure Nitrous Oxide"#, + value = "386754635" + ) + )] + ItemPureIceNitrous = 386754635i32, + #[strum( + serialize = "ItemPureIceOxygen", + props( + name = r#"Pure Ice Oxygen"#, + desc = r#"A frozen chunk of pure Oxygen"#, + value = "-1150448260" + ) + )] + ItemPureIceOxygen = -1150448260i32, + #[strum( + serialize = "ItemPureIcePollutant", + props( + name = r#"Pure Ice Pollutant"#, + desc = r#"A frozen chunk of pure Pollutant"#, + value = "-1755356" + ) + )] + ItemPureIcePollutant = -1755356i32, + #[strum( + serialize = "ItemPureIcePollutedWater", + props( + name = r#"Pure Ice Polluted Water"#, + desc = r#"A frozen chunk of Polluted Water"#, + value = "-2073202179" + ) + )] + ItemPureIcePollutedWater = -2073202179i32, + #[strum( + serialize = "ItemPureIceSteam", + props( + name = r#"Pure Ice Steam"#, + desc = r#"A frozen chunk of pure Steam"#, + value = "-874791066" + ) + )] + ItemPureIceSteam = -874791066i32, + #[strum( + serialize = "ItemPureIceVolatiles", + props( + name = r#"Pure Ice Volatiles"#, + desc = r#"A frozen chunk of pure Volatiles"#, + value = "-633723719" + ) + )] + ItemPureIceVolatiles = -633723719i32, + #[strum( + serialize = "ItemPureIce", + props( + name = r#"Pure Ice Water"#, + desc = r#"A frozen chunk of pure Water"#, + value = "-1616308158" + ) + )] + ItemPureIce = -1616308158i32, + #[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 = "RailingElegant01", + props( + name = r#"Railing Elegant (Type 1)"#, + desc = r#""#, + value = "399661231" + ) + )] + RailingElegant01 = 399661231i32, + #[strum( + serialize = "RailingElegant02", + props( + name = r#"Railing Elegant (Type 2)"#, + desc = r#""#, + value = "-1898247915" + ) + )] + RailingElegant02 = -1898247915i32, + #[strum( + serialize = "StructureRailing", + props( + name = r#"Railing Industrial (Type 1)"#, + desc = r#""Safety third.""#, + value = "-1756913871" + ) + )] + StructureRailing = -1756913871i32, + #[strum( + serialize = "RailingIndustrial02", + props( + name = r#"Railing Industrial (Type 2)"#, + desc = r#""#, + value = "-2072792175" + ) + )] + RailingIndustrial02 = -2072792175i32, + #[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 = "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 = "StructureLogicReagentReader", + props(name = r#"Reagent Reader"#, desc = r#""#, value = "-124308857") + )] + StructureLogicReagentReader = -124308857i32, + #[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 = "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 = "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 = "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 = "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 = "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 = "ItemRemoteDetonator", + props(name = r#"Remote Detonator"#, desc = r#""#, value = "678483886") + )] + ItemRemoteDetonator = 678483886i32, + #[strum( + serialize = "ItemExplosive", + props(name = r#"Remote Explosive"#, desc = r#""#, value = "235361649") + )] + ItemExplosive = 235361649i32, + #[strum( + serialize = "ItemResearchCapsule", + props(name = r#"Research Capsule Blue"#, desc = r#""#, value = "819096942") + )] + ItemResearchCapsule = 819096942i32, + #[strum( + serialize = "ItemResearchCapsuleGreen", + props( + name = r#"Research Capsule Green"#, + desc = r#""#, + value = "-1352732550" + ) + )] + ItemResearchCapsuleGreen = -1352732550i32, + #[strum( + serialize = "ItemResearchCapsuleRed", + props(name = r#"Research Capsule Red"#, desc = r#""#, value = "954947943") + )] + ItemResearchCapsuleRed = 954947943i32, + #[strum( + serialize = "ItemResearchCapsuleYellow", + props(name = r#"Research Capsule Yellow"#, desc = r#""#, value = "750952701") + )] + ItemResearchCapsuleYellow = 750952701i32, + #[strum( + serialize = "StructureResearchMachine", + props(name = r#"Research Machine"#, desc = r#""#, value = "-796627526") + )] + StructureResearchMachine = -796627526i32, + #[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 = "RespawnPointWallMounted", + props( + name = r#"Respawn Point (Mounted)"#, + desc = r#""#, + value = "-491247370" + ) + )] + RespawnPointWallMounted = -491247370i32, + #[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 = "SeedBag_Rice", + props( + name = r#"Rice Seeds"#, + desc = r#"Grow some Rice."#, + value = "-1691151239" + ) + )] + SeedBagRice = -1691151239i32, + #[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 = "StructureRocketAvionics", + props(name = r#"Rocket Avionics"#, desc = r#""#, value = "808389066") + )] + StructureRocketAvionics = 808389066i32, + #[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 = "StructureRocketCircuitHousing", + props(name = r#"Rocket Circuit Housing"#, desc = r#""#, value = "150135861") + )] + StructureRocketCircuitHousing = 150135861i32, + #[strum( + serialize = "MotherboardRockets", + props( + name = r#"Rocket Control Motherboard"#, + desc = r#""#, + value = "-806986392" + ) + )] + MotherboardRockets = -806986392i32, + #[strum( + serialize = "StructureRocketEngineTiny", + props(name = r#"Rocket Engine (Tiny)"#, desc = r#""#, value = "178472613") + )] + StructureRocketEngineTiny = 178472613i32, + #[strum( + serialize = "StructureRocketManufactory", + props(name = r#"Rocket Manufactory"#, desc = r#""#, value = "1781051034") + )] + StructureRocketManufactory = 1781051034i32, + #[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 = "StructureRocketScanner", + props(name = r#"Rocket Scanner"#, desc = r#""#, value = "2014252591") + )] + StructureRocketScanner = 2014252591i32, + #[strum( + serialize = "ItemRocketScanningHead", + props(name = r#"Rocket Scanner Head"#, desc = r#""#, value = "-1198702771") + )] + ItemRocketScanningHead = -1198702771i32, + #[strum( + serialize = "RoverCargo", + props( + name = r#"Rover (Cargo)"#, + desc = r#"Connects to Logic Transmitter"#, + value = "350726273" + ) + )] + RoverCargo = 350726273i32, + #[strum( + serialize = "StructureRover", + props(name = r#"Rover Frame"#, desc = r#""#, value = "806513938") + )] + StructureRover = 806513938i32, + #[strum( + serialize = "Rover_MkI_build_states", + props(name = r#"Rover MKI"#, desc = r#""#, value = "861674123") + )] + RoverMkIBuildStates = 861674123i32, + #[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 = "StructureSDBHopper", + props(name = r#"SDB Hopper"#, desc = r#""#, value = "-1875856925") + )] + StructureSdbHopper = -1875856925i32, + #[strum( + serialize = "StructureSDBHopperAdvanced", + props(name = r#"SDB Hopper Advanced"#, desc = r#""#, value = "467225612") + )] + StructureSdbHopperAdvanced = 467225612i32, + #[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 = "SMGMagazine", + props(name = r#"SMG Magazine"#, desc = r#""#, value = "-256607540") + )] + SmgMagazine = -256607540i32, + #[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 = "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 = "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 = "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 = "ItemSensorProcessingUnitCelestialScanner", + props( + name = r#"Sensor Processing Unit (Celestial Scanner)"#, + desc = r#""#, + value = "-1154200014" + ) + )] + ItemSensorProcessingUnitCelestialScanner = -1154200014i32, + #[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 = "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 = "StructureShelf", + props(name = r#"Shelf"#, desc = r#""#, value = "1172114950") + )] + StructureShelf = 1172114950i32, + #[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 = "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 = "StructureShortCornerLocker", + props(name = r#"Short Corner Locker"#, desc = r#""#, value = "1330754486") + )] + StructureShortCornerLocker = 1330754486i32, + #[strum( + serialize = "StructureShortLocker", + props(name = r#"Short Locker"#, desc = r#""#, value = "-554553467") + )] + StructureShortLocker = -554553467i32, + #[strum( + serialize = "StructureShower", + props(name = r#"Shower"#, desc = r#""#, value = "-775128944") + )] + StructureShower = -775128944i32, + #[strum( + serialize = "StructureShowerPowered", + props(name = r#"Shower (Powered)"#, desc = r#""#, value = "-1081797501") + )] + StructureShowerPowered = -1081797501i32, + #[strum( + serialize = "StructureSign1x1", + props(name = r#"Sign 1x1"#, desc = r#""#, value = "879058460") + )] + StructureSign1X1 = 879058460i32, + #[strum( + serialize = "StructureSign2x1", + props(name = r#"Sign 2x1"#, desc = r#""#, value = "908320837") + )] + StructureSign2X1 = 908320837i32, + #[strum( + serialize = "StructureSingleBed", + props( + name = r#"Single Bed"#, + desc = r#"Description coming."#, + value = "-492611" + ) + )] + StructureSingleBed = -492611i32, + #[strum( + serialize = "DynamicSkeleton", + props(name = r#"Skeleton"#, desc = r#""#, value = "106953348") + )] + DynamicSkeleton = 106953348i32, + #[strum( + serialize = "StructureSleeper", + props(name = r#"Sleeper"#, desc = r#""#, value = "-1467449329") + )] + StructureSleeper = -1467449329i32, + #[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 = "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 = "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 = "StructureLogicSlotReader", + props(name = r#"Slot Reader"#, desc = r#""#, value = "-767867194") + )] + StructureLogicSlotReader = -767867194i32, + #[strum( + serialize = "StructureSmallTableBacklessDouble", + props( + name = r#"Small (Table Backless Double)"#, + desc = r#""#, + value = "-1633000411" + ) + )] + StructureSmallTableBacklessDouble = -1633000411i32, + #[strum( + serialize = "StructureSmallTableBacklessSingle", + props( + name = r#"Small (Table Backless Single)"#, + desc = r#""#, + value = "-1897221677" + ) + )] + StructureSmallTableBacklessSingle = -1897221677i32, + #[strum( + serialize = "StructureSmallTableDinnerSingle", + props( + name = r#"Small (Table Dinner Single)"#, + desc = r#""#, + value = "1260651529" + ) + )] + StructureSmallTableDinnerSingle = 1260651529i32, + #[strum( + serialize = "StructureSmallTableRectangleDouble", + props( + name = r#"Small (Table Rectangle Double)"#, + desc = r#""#, + value = "-660451023" + ) + )] + StructureSmallTableRectangleDouble = -660451023i32, + #[strum( + serialize = "StructureSmallTableRectangleSingle", + props( + name = r#"Small (Table Rectangle Single)"#, + desc = r#""#, + value = "-924678969" + ) + )] + StructureSmallTableRectangleSingle = -924678969i32, + #[strum( + serialize = "StructureSmallTableThickDouble", + props( + name = r#"Small (Table Thick Double)"#, + desc = r#""#, + value = "-19246131" + ) + )] + StructureSmallTableThickDouble = -19246131i32, + #[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 = "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 = "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 = "StructureFlagSmall", + props(name = r#"Small Flag"#, desc = r#""#, value = "-1529819532") + )] + StructureFlagSmall = -1529819532i32, + #[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 = "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 = "StructureSmallTableThickSingle", + props( + name = r#"Small Table (Thick Single)"#, + desc = r#""#, + value = "-291862981" + ) + )] + StructureSmallTableThickSingle = -291862981i32, + #[strum( + serialize = "StructureTankSmall", + props(name = r#"Small Tank"#, desc = r#""#, value = "1013514688") + )] + StructureTankSmall = 1013514688i32, + #[strum( + serialize = "StructureTankSmallAir", + props(name = r#"Small Tank (Air)"#, desc = r#""#, value = "955744474") + )] + StructureTankSmallAir = 955744474i32, + #[strum( + serialize = "StructureTankSmallFuel", + props(name = r#"Small Tank (Fuel)"#, desc = r#""#, value = "2102454415") + )] + StructureTankSmallFuel = 2102454415i32, + #[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 = "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 = "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 = "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 = "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 = "StructureSolarPanel45Reinforced", + props( + name = r#"Solar Panel (Heavy Angled)"#, + desc = r#"This solar panel is resistant to storm damage."#, + value = "930865127" + ) + )] + StructureSolarPanel45Reinforced = 930865127i32, + #[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 = "StructureSolarPanelFlatReinforced", + props( + name = r#"Solar Panel (Heavy Flat)"#, + desc = r#"This solar panel is resistant to storm damage."#, + value = "1697196770" + ) + )] + StructureSolarPanelFlatReinforced = 1697196770i32, + #[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 = "ItemSolidFuel", + props( + name = r#"Solid Fuel (Hydrocarbon)"#, + desc = r#""#, + value = "-365253871" + ) + )] + ItemSolidFuel = -365253871i32, + #[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 = "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 = "ItemSoundCartridgeBass", + props(name = r#"Sound Cartridge Bass"#, desc = r#""#, value = "-1883441704") + )] + ItemSoundCartridgeBass = -1883441704i32, + #[strum( + serialize = "ItemSoundCartridgeDrums", + props(name = r#"Sound Cartridge Drums"#, desc = r#""#, value = "-1901500508") + )] + ItemSoundCartridgeDrums = -1901500508i32, + #[strum( + serialize = "ItemSoundCartridgeLeads", + props(name = r#"Sound Cartridge Leads"#, desc = r#""#, value = "-1174735962") + )] + ItemSoundCartridgeLeads = -1174735962i32, + #[strum( + serialize = "ItemSoundCartridgeSynth", + props(name = r#"Sound Cartridge Synth"#, desc = r#""#, value = "-1971419310") + )] + ItemSoundCartridgeSynth = -1971419310i32, + #[strum( + serialize = "ItemSoyOil", + props(name = r#"Soy Oil"#, desc = r#""#, value = "1387403148") + )] + ItemSoyOil = 1387403148i32, + #[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 = "SeedBag_Soybean", + props( + name = r#"Soybean Seeds"#, + desc = r#"Grow some Soybean."#, + value = "1783004244" + ) + )] + SeedBagSoybean = 1783004244i32, + #[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 = "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 = "ItemSpaceIce", + props(name = r#"Space Ice"#, desc = r#""#, value = "675686937") + )] + ItemSpaceIce = 675686937i32, + #[strum( + serialize = "SpaceShuttle", + props( + name = r#"Space Shuttle"#, + desc = r#"An antiquated Sinotai transport craft, long since decommissioned."#, + value = "-1991297271" + ) + )] + SpaceShuttle = -1991297271i32, + #[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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "StructureStairs4x2", + props(name = r#"Stairs"#, desc = r#""#, value = "1405018945") + )] + StructureStairs4X2 = 1405018945i32, + #[strum( + serialize = "StructureStairs4x2RailL", + props(name = r#"Stairs with Rail (Left)"#, desc = r#""#, value = "155214029") + )] + StructureStairs4X2RailL = 155214029i32, + #[strum( + serialize = "StructureStairs4x2RailR", + props( + name = r#"Stairs with Rail (Right)"#, + desc = r#""#, + value = "-212902482" + ) + )] + StructureStairs4X2RailR = -212902482i32, + #[strum( + serialize = "StructureStairs4x2Rails", + props(name = r#"Stairs with Rails"#, desc = r#""#, value = "-1088008720") + )] + StructureStairs4X2Rails = -1088008720i32, + #[strum( + serialize = "StructureStairwellBackLeft", + props(name = r#"Stairwell (Back Left)"#, desc = r#""#, value = "505924160") + )] + StructureStairwellBackLeft = 505924160i32, + #[strum( + serialize = "StructureStairwellBackPassthrough", + props( + name = r#"Stairwell (Back Passthrough)"#, + desc = r#""#, + value = "-862048392" + ) + )] + StructureStairwellBackPassthrough = -862048392i32, + #[strum( + serialize = "StructureStairwellBackRight", + props( + name = r#"Stairwell (Back Right)"#, + desc = r#""#, + value = "-2128896573" + ) + )] + StructureStairwellBackRight = -2128896573i32, + #[strum( + serialize = "StructureStairwellFrontLeft", + props(name = r#"Stairwell (Front Left)"#, desc = r#""#, value = "-37454456") + )] + StructureStairwellFrontLeft = -37454456i32, + #[strum( + serialize = "StructureStairwellFrontPassthrough", + props( + name = r#"Stairwell (Front Passthrough)"#, + desc = r#""#, + value = "-1625452928" + ) + )] + StructureStairwellFrontPassthrough = -1625452928i32, + #[strum( + serialize = "StructureStairwellFrontRight", + props(name = r#"Stairwell (Front Right)"#, desc = r#""#, value = "340210934") + )] + StructureStairwellFrontRight = 340210934i32, + #[strum( + serialize = "StructureStairwellNoDoors", + props(name = r#"Stairwell (No Doors)"#, desc = r#""#, value = "2049879875") + )] + StructureStairwellNoDoors = 2049879875i32, + #[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 = "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 = "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 = "StructureFrameCornerCut", + props( + name = r#"Steel Frame (Corner Cut)"#, + desc = r#"0.Mode0 +1.Mode1"#, + value = "271315669" + ) + )] + StructureFrameCornerCut = 271315669i32, + #[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 = "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 = "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 = "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 = "ItemStelliteGlassSheets", + props( + name = r#"Stellite Glass Sheets"#, + desc = r#"A stronger glass substitute."#, + value = "-2038663432" + ) + )] + ItemStelliteGlassSheets = -2038663432i32, + #[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 = "StopWatch", + props(name = r#"Stop Watch"#, desc = r#""#, value = "-1527229051") + )] + StopWatch = -1527229051i32, + #[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 = "StructureLogicSwitch2", + props(name = r#"Switch"#, desc = r#""#, value = "321604921") + )] + StructureLogicSwitch2 = 321604921i32, + #[strum( + serialize = "ItemPlantSwitchGrass", + props(name = r#"Switch Grass"#, desc = r#""#, value = "-532672323") + )] + ItemPlantSwitchGrass = -532672323i32, + #[strum( + serialize = "SeedBag_Switchgrass", + props(name = r#"Switchgrass Seed"#, desc = r#""#, value = "488360169") + )] + SeedBagSwitchgrass = 488360169i32, + #[strum( + serialize = "ApplianceTabletDock", + props(name = r#"Tablet Dock"#, desc = r#""#, value = "1853941363") + )] + ApplianceTabletDock = 1853941363i32, + #[strum( + serialize = "StructureTankBigInsulated", + props(name = r#"Tank Big (Insulated)"#, desc = r#""#, value = "1280378227") + )] + StructureTankBigInsulated = 1280378227i32, + #[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 = "StructureTankSmallInsulated", + props(name = r#"Tank Small (Insulated)"#, desc = r#""#, value = "272136332") + )] + StructureTankSmallInsulated = 272136332i32, + #[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 = "ItemTerrainManipulator", + props( + name = r#"Terrain Manipulator"#, + desc = r#"0.Mode0 +1.Mode1"#, + value = "111280987" + ) + )] + ItemTerrainManipulator = 111280987i32, + #[strum( + serialize = "ItemPlantThermogenic_Creative", + props( + name = r#"Thermogenic Plant Creative"#, + desc = r#""#, + value = "-1208890208" + ) + )] + ItemPlantThermogenicCreative = -1208890208i32, + #[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 = "SeedBag_Tomato", + props( + name = r#"Tomato Seeds"#, + desc = r#"Grow a Tomato."#, + value = "-1922066841" + ) + )] + SeedBagTomato = -1922066841i32, + #[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 = "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 = "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 = "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 = "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 = "WeaponTorpedo", + props(name = r#"Torpedo"#, desc = r#""#, value = "-1102977898") + )] + WeaponTorpedo = -1102977898i32, + #[strum( + serialize = "StructureTorpedoRack", + props(name = r#"Torpedo Rack"#, desc = r#""#, value = "1473807953") + )] + StructureTorpedoRack = 1473807953i32, + #[strum( + serialize = "ToyLuna", + props(name = r#"Toy Luna"#, desc = r#""#, value = "94730034") + )] + ToyLuna = 94730034i32, + #[strum( + serialize = "CartridgeTracker", + props(name = r#"Tracker"#, desc = r#""#, value = "81488783") + )] + CartridgeTracker = 81488783i32, + #[strum( + serialize = "ItemBeacon", + props(name = r#"Tracking Beacon"#, desc = r#""#, value = "-869869491") + )] + ItemBeacon = -869869491i32, + #[strum( + serialize = "StructureTraderWaypoint", + props(name = r#"Trader Waypoint"#, desc = r#""#, value = "1570931620") + )] + StructureTraderWaypoint = 1570931620i32, + #[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 = "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 = "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 = "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 = "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 = "StructureRocketTransformerSmall", + props( + name = r#"Transformer Small (Rocket)"#, + desc = r#""#, + value = "518925193" + ) + )] + StructureRocketTransformerSmall = 518925193i32, + #[strum( + serialize = "StructurePressurePlateLarge", + props(name = r#"Trigger Plate (Large)"#, desc = r#""#, value = "-2008706143") + )] + StructurePressurePlateLarge = -2008706143i32, + #[strum( + serialize = "StructurePressurePlateMedium", + props(name = r#"Trigger Plate (Medium)"#, desc = r#""#, value = "1269458680") + )] + StructurePressurePlateMedium = 1269458680i32, + #[strum( + serialize = "StructurePressurePlateSmall", + props(name = r#"Trigger Plate (Small)"#, desc = r#""#, value = "-1536471028") + )] + StructurePressurePlateSmall = -1536471028i32, + #[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 = "StructureTurbineGenerator", + props(name = r#"Turbine Generator"#, desc = r#""#, value = "1282191063") + )] + StructureTurbineGenerator = 1282191063i32, + #[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 = "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 = "StructureChuteUmbilicalMale", + props( + name = r#"Umbilical (Chute)"#, + desc = r#"0.Left +1.Center +2.Right"#, + value = "-958884053" + ) + )] + StructureChuteUmbilicalMale = -958884053i32, + #[strum( + serialize = "StructureGasUmbilicalMale", + props( + name = r#"Umbilical (Gas)"#, + desc = r#"0.Left +1.Center +2.Right"#, + value = "-1814939203" + ) + )] + StructureGasUmbilicalMale = -1814939203i32, + #[strum( + serialize = "StructureLiquidUmbilicalMale", + props( + name = r#"Umbilical (Liquid)"#, + desc = r#"0.Left +1.Center +2.Right"#, + value = "-1798420047" + ) + )] + StructureLiquidUmbilicalMale = -1798420047i32, + #[strum( + serialize = "StructurePowerUmbilicalMale", + props( + name = r#"Umbilical (Power)"#, + desc = r#"0.Left +1.Center +2.Right"#, + value = "1529453938" + ) + )] + StructurePowerUmbilicalMale = 1529453938i32, + #[strum( + serialize = "StructureChuteUmbilicalFemale", + props( + name = r#"Umbilical Socket (Chute)"#, + desc = r#""#, + value = "-1918892177" + ) + )] + StructureChuteUmbilicalFemale = -1918892177i32, + #[strum( + serialize = "StructureGasUmbilicalFemale", + props( + name = r#"Umbilical Socket (Gas)"#, + desc = r#""#, + value = "-1680477930" + ) + )] + StructureGasUmbilicalFemale = -1680477930i32, + #[strum( + serialize = "StructureLiquidUmbilicalFemale", + props( + name = r#"Umbilical Socket (Liquid)"#, + desc = r#""#, + value = "1734723642" + ) + )] + StructureLiquidUmbilicalFemale = 1734723642i32, + #[strum( + serialize = "StructurePowerUmbilicalFemale", + props( + name = r#"Umbilical Socket (Power)"#, + desc = r#""#, + value = "101488029" + ) + )] + StructurePowerUmbilicalFemale = 101488029i32, + #[strum( + serialize = "StructureChuteUmbilicalFemaleSide", + props( + name = r#"Umbilical Socket Angle (Chute)"#, + desc = r#""#, + value = "-659093969" + ) + )] + StructureChuteUmbilicalFemaleSide = -659093969i32, + #[strum( + serialize = "StructureGasUmbilicalFemaleSide", + props( + name = r#"Umbilical Socket Angle (Gas)"#, + desc = r#""#, + value = "-648683847" + ) + )] + StructureGasUmbilicalFemaleSide = -648683847i32, + #[strum( + serialize = "StructureLiquidUmbilicalFemaleSide", + props( + name = r#"Umbilical Socket Angle (Liquid)"#, + desc = r#""#, + value = "1220870319" + ) + )] + StructureLiquidUmbilicalFemaleSide = 1220870319i32, + #[strum( + serialize = "StructurePowerUmbilicalFemaleSide", + props( + name = r#"Umbilical Socket Angle (Power)"#, + desc = r#""#, + value = "1922506192" + ) + )] + StructurePowerUmbilicalFemaleSide = 1922506192i32, + #[strum( + serialize = "UniformCommander", + props(name = r#"Uniform Commander"#, desc = r#""#, value = "-2083426457") + )] + UniformCommander = -2083426457i32, + #[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 = "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 = "StructureValve", + props(name = r#"Valve"#, desc = r#""#, value = "-692036078") + )] + StructureValve = -692036078i32, + #[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 = "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 = "StructureWallArchArrow", + props(name = r#"Wall (Arch Arrow)"#, desc = r#""#, value = "1649708822") + )] + StructureWallArchArrow = 1649708822i32, + #[strum( + serialize = "StructureWallArchCornerRound", + props( + name = r#"Wall (Arch Corner Round)"#, + desc = r#""#, + value = "1794588890" + ) + )] + StructureWallArchCornerRound = 1794588890i32, + #[strum( + serialize = "StructureWallArchCornerSquare", + props( + name = r#"Wall (Arch Corner Square)"#, + desc = r#""#, + value = "-1963016580" + ) + )] + StructureWallArchCornerSquare = -1963016580i32, + #[strum( + serialize = "StructureWallArchCornerTriangle", + props( + name = r#"Wall (Arch Corner Triangle)"#, + desc = r#""#, + value = "1281911841" + ) + )] + StructureWallArchCornerTriangle = 1281911841i32, + #[strum( + serialize = "StructureWallArchPlating", + props(name = r#"Wall (Arch Plating)"#, desc = r#""#, value = "1182510648") + )] + StructureWallArchPlating = 1182510648i32, + #[strum( + serialize = "StructureWallArchTwoTone", + props(name = r#"Wall (Arch Two Tone)"#, desc = r#""#, value = "782529714") + )] + StructureWallArchTwoTone = 782529714i32, + #[strum( + serialize = "StructureWallArch", + props(name = r#"Wall (Arch)"#, desc = r#""#, value = "-858143148") + )] + StructureWallArch = -858143148i32, + #[strum( + serialize = "StructureWallFlatCornerRound", + props( + name = r#"Wall (Flat Corner Round)"#, + desc = r#""#, + value = "898708250" + ) + )] + StructureWallFlatCornerRound = 898708250i32, + #[strum( + serialize = "StructureWallFlatCornerSquare", + props( + name = r#"Wall (Flat Corner Square)"#, + desc = r#""#, + value = "298130111" + ) + )] + StructureWallFlatCornerSquare = 298130111i32, + #[strum( + serialize = "StructureWallFlatCornerTriangleFlat", + props( + name = r#"Wall (Flat Corner Triangle Flat)"#, + desc = r#""#, + value = "-1161662836" + ) + )] + StructureWallFlatCornerTriangleFlat = -1161662836i32, + #[strum( + serialize = "StructureWallFlatCornerTriangle", + props( + name = r#"Wall (Flat Corner Triangle)"#, + desc = r#""#, + value = "2097419366" + ) + )] + StructureWallFlatCornerTriangle = 2097419366i32, + #[strum( + serialize = "StructureWallFlat", + props(name = r#"Wall (Flat)"#, desc = r#""#, value = "1635864154") + )] + StructureWallFlat = 1635864154i32, + #[strum( + serialize = "StructureWallGeometryCorner", + props(name = r#"Wall (Geometry Corner)"#, desc = r#""#, value = "1979212240") + )] + StructureWallGeometryCorner = 1979212240i32, + #[strum( + serialize = "StructureWallGeometryStreight", + props( + name = r#"Wall (Geometry Straight)"#, + desc = r#""#, + value = "1049735537" + ) + )] + StructureWallGeometryStreight = 1049735537i32, + #[strum( + serialize = "StructureWallGeometryTMirrored", + props( + name = r#"Wall (Geometry T Mirrored)"#, + desc = r#""#, + value = "-1427845483" + ) + )] + StructureWallGeometryTMirrored = -1427845483i32, + #[strum( + serialize = "StructureWallGeometryT", + props(name = r#"Wall (Geometry T)"#, desc = r#""#, value = "1602758612") + )] + StructureWallGeometryT = 1602758612i32, + #[strum( + serialize = "StructureWallLargePanelArrow", + props( + name = r#"Wall (Large Panel Arrow)"#, + desc = r#""#, + value = "-776581573" + ) + )] + StructureWallLargePanelArrow = -776581573i32, + #[strum( + serialize = "StructureWallLargePanel", + props(name = r#"Wall (Large Panel)"#, desc = r#""#, value = "1492930217") + )] + StructureWallLargePanel = 1492930217i32, + #[strum( + serialize = "StructureWallPaddedArchCorner", + props( + name = r#"Wall (Padded Arch Corner)"#, + desc = r#""#, + value = "-1126688298" + ) + )] + StructureWallPaddedArchCorner = -1126688298i32, + #[strum( + serialize = "StructureWallPaddedArchLightFittingTop", + props( + name = r#"Wall (Padded Arch Light Fitting Top)"#, + desc = r#""#, + value = "1171987947" + ) + )] + StructureWallPaddedArchLightFittingTop = 1171987947i32, + #[strum( + serialize = "StructureWallPaddedArchLightsFittings", + props( + name = r#"Wall (Padded Arch Lights Fittings)"#, + desc = r#""#, + value = "-1546743960" + ) + )] + StructureWallPaddedArchLightsFittings = -1546743960i32, + #[strum( + serialize = "StructureWallPaddedArch", + props(name = r#"Wall (Padded Arch)"#, desc = r#""#, value = "1590330637") + )] + StructureWallPaddedArch = 1590330637i32, + #[strum( + serialize = "StructureWallPaddedCornerThin", + props( + name = r#"Wall (Padded Corner Thin)"#, + desc = r#""#, + value = "1183203913" + ) + )] + StructureWallPaddedCornerThin = 1183203913i32, + #[strum( + serialize = "StructureWallPaddedCorner", + props(name = r#"Wall (Padded Corner)"#, desc = r#""#, value = "-155945899") + )] + StructureWallPaddedCorner = -155945899i32, + #[strum( + serialize = "StructureWallPaddedNoBorderCorner", + props( + name = r#"Wall (Padded No Border Corner)"#, + desc = r#""#, + value = "179694804" + ) + )] + StructureWallPaddedNoBorderCorner = 179694804i32, + #[strum( + serialize = "StructureWallPaddedNoBorder", + props(name = r#"Wall (Padded No Border)"#, desc = r#""#, value = "8846501") + )] + StructureWallPaddedNoBorder = 8846501i32, + #[strum( + serialize = "StructureWallPaddedThinNoBorderCorner", + props( + name = r#"Wall (Padded Thin No Border Corner)"#, + desc = r#""#, + value = "1769527556" + ) + )] + StructureWallPaddedThinNoBorderCorner = 1769527556i32, + #[strum( + serialize = "StructureWallPaddedThinNoBorder", + props( + name = r#"Wall (Padded Thin No Border)"#, + desc = r#""#, + value = "-1611559100" + ) + )] + StructureWallPaddedThinNoBorder = -1611559100i32, + #[strum( + serialize = "StructureWallPaddedWindowThin", + props( + name = r#"Wall (Padded Window Thin)"#, + desc = r#""#, + value = "-37302931" + ) + )] + StructureWallPaddedWindowThin = -37302931i32, + #[strum( + serialize = "StructureWallPaddedWindow", + props(name = r#"Wall (Padded Window)"#, desc = r#""#, value = "2087628940") + )] + StructureWallPaddedWindow = 2087628940i32, + #[strum( + serialize = "StructureWallPaddingArchVent", + props( + name = r#"Wall (Padding Arch Vent)"#, + desc = r#""#, + value = "-1243329828" + ) + )] + StructureWallPaddingArchVent = -1243329828i32, + #[strum( + serialize = "StructureWallPaddingLightFitting", + props( + name = r#"Wall (Padding Light Fitting)"#, + desc = r#""#, + value = "2024882687" + ) + )] + StructureWallPaddingLightFitting = 2024882687i32, + #[strum( + serialize = "StructureWallPaddingThin", + props(name = r#"Wall (Padding Thin)"#, desc = r#""#, value = "-1102403554") + )] + StructureWallPaddingThin = -1102403554i32, + #[strum( + serialize = "StructureWallPadding", + props(name = r#"Wall (Padding)"#, desc = r#""#, value = "635995024") + )] + StructureWallPadding = 635995024i32, + #[strum( + serialize = "StructureWallPlating", + props(name = r#"Wall (Plating)"#, desc = r#""#, value = "26167457") + )] + StructureWallPlating = 26167457i32, + #[strum( + serialize = "StructureWallSmallPanelsAndHatch", + props( + name = r#"Wall (Small Panels And Hatch)"#, + desc = r#""#, + value = "619828719" + ) + )] + StructureWallSmallPanelsAndHatch = 619828719i32, + #[strum( + serialize = "StructureWallSmallPanelsArrow", + props( + name = r#"Wall (Small Panels Arrow)"#, + desc = r#""#, + value = "-639306697" + ) + )] + StructureWallSmallPanelsArrow = -639306697i32, + #[strum( + serialize = "StructureWallSmallPanelsMonoChrome", + props( + name = r#"Wall (Small Panels Mono Chrome)"#, + desc = r#""#, + value = "386820253" + ) + )] + StructureWallSmallPanelsMonoChrome = 386820253i32, + #[strum( + serialize = "StructureWallSmallPanelsOpen", + props( + name = r#"Wall (Small Panels Open)"#, + desc = r#""#, + value = "-1407480603" + ) + )] + StructureWallSmallPanelsOpen = -1407480603i32, + #[strum( + serialize = "StructureWallSmallPanelsTwoTone", + props( + name = r#"Wall (Small Panels Two Tone)"#, + desc = r#""#, + value = "1709994581" + ) + )] + StructureWallSmallPanelsTwoTone = 1709994581i32, + #[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 = "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 = "StructureWallLight", + props(name = r#"Wall Light"#, desc = r#""#, value = "-1860064656") + )] + StructureWallLight = -1860064656i32, + #[strum( + serialize = "StructureWallLightBattery", + props(name = r#"Wall Light (Battery)"#, desc = r#""#, value = "-1306415132") + )] + StructureWallLightBattery = -1306415132i32, + #[strum( + serialize = "StructureLightLongAngled", + props( + name = r#"Wall Light (Long Angled)"#, + desc = r#""#, + value = "1847265835" + ) + )] + StructureLightLongAngled = 1847265835i32, + #[strum( + serialize = "StructureLightLongWide", + props(name = r#"Wall Light (Long Wide)"#, desc = r#""#, value = "555215790") + )] + StructureLightLongWide = 555215790i32, + #[strum( + serialize = "StructureLightLong", + props(name = r#"Wall Light (Long)"#, desc = r#""#, value = "797794350") + )] + StructureLightLong = 797794350i32, + #[strum( + serialize = "StructureWallVent", + props( + name = r#"Wall Vent"#, + desc = r#"Used to mix atmospheres passively between two walls."#, + value = "-1177469307" + ) + )] + StructureWallVent = -1177469307i32, + #[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 = "StructureWaterBottleFiller", + props(name = r#"Water Bottle Filler"#, desc = r#""#, value = "-1178961954") + )] + StructureWaterBottleFiller = -1178961954i32, + #[strum( + serialize = "StructureWaterBottleFillerBottom", + props( + name = r#"Water Bottle Filler Bottom"#, + desc = r#""#, + value = "1433754995" + ) + )] + StructureWaterBottleFillerBottom = 1433754995i32, + #[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 = "StructureWaterBottleFillerPowered", + props(name = r#"Waterbottle Filler"#, desc = r#""#, value = "-756587791") + )] + StructureWaterBottleFillerPowered = -756587791i32, + #[strum( + serialize = "StructureWaterBottleFillerPoweredBottom", + props(name = r#"Waterbottle Filler"#, desc = r#""#, value = "1986658780") + )] + StructureWaterBottleFillerPoweredBottom = 1986658780i32, + #[strum( + serialize = "WeaponEnergy", + props(name = r#"Weapon Energy"#, desc = r#""#, value = "789494694") + )] + WeaponEnergy = 789494694i32, + #[strum( + serialize = "StructureWeatherStation", + props( + name = r#"Weather Station"#, + desc = r#"0.NoStorm +1.StormIncoming +2.InStorm"#, + value = "1997212478" + ) + )] + StructureWeatherStation = 1997212478i32, + #[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 = "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 = "SeedBag_Wheet", + props( + name = r#"Wheat Seeds"#, + desc = r#"Grow some Wheat."#, + value = "-654756733" + ) + )] + SeedBagWheet = -654756733i32, + #[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 = "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 = "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 = "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 = "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 = "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 = "ItemWreckageAirConditioner2", + props( + name = r#"Wreckage Air Conditioner"#, + desc = r#""#, + value = "169888054" + ) + )] + ItemWreckageAirConditioner2 = 169888054i32, + #[strum( + serialize = "ItemWreckageAirConditioner1", + props( + name = r#"Wreckage Air Conditioner"#, + desc = r#""#, + value = "-1826023284" + ) + )] + ItemWreckageAirConditioner1 = -1826023284i32, + #[strum( + serialize = "ItemWreckageHydroponicsTray1", + props( + name = r#"Wreckage Hydroponics Tray"#, + desc = r#""#, + value = "-310178617" + ) + )] + ItemWreckageHydroponicsTray1 = -310178617i32, + #[strum( + serialize = "ItemWreckageLargeExtendableRadiator01", + props( + name = r#"Wreckage Large Extendable Radiator"#, + desc = r#""#, + value = "-997763" + ) + )] + ItemWreckageLargeExtendableRadiator01 = -997763i32, + #[strum( + serialize = "ItemWreckageStructureRTG1", + props(name = r#"Wreckage Structure RTG"#, desc = r#""#, value = "391453348") + )] + ItemWreckageStructureRtg1 = 391453348i32, + #[strum( + serialize = "ItemWreckageStructureWeatherStation003", + props( + name = r#"Wreckage Structure Weather Station"#, + desc = r#""#, + value = "542009679" + ) + )] + ItemWreckageStructureWeatherStation003 = 542009679i32, + #[strum( + serialize = "ItemWreckageStructureWeatherStation002", + props( + name = r#"Wreckage Structure Weather Station"#, + desc = r#""#, + value = "1464424921" + ) + )] + ItemWreckageStructureWeatherStation002 = 1464424921i32, + #[strum( + serialize = "ItemWreckageStructureWeatherStation005", + props( + name = r#"Wreckage Structure Weather Station"#, + desc = r#""#, + value = "-919745414" + ) + )] + ItemWreckageStructureWeatherStation005 = -919745414i32, + #[strum( + serialize = "ItemWreckageStructureWeatherStation007", + props( + name = r#"Wreckage Structure Weather Station"#, + desc = r#""#, + value = "656649558" + ) + )] + ItemWreckageStructureWeatherStation007 = 656649558i32, + #[strum( + serialize = "ItemWreckageStructureWeatherStation001", + props( + name = r#"Wreckage Structure Weather Station"#, + desc = r#""#, + value = "-834664349" + ) + )] + ItemWreckageStructureWeatherStation001 = -834664349i32, + #[strum( + serialize = "ItemWreckageStructureWeatherStation006", + props( + name = r#"Wreckage Structure Weather Station"#, + desc = r#""#, + value = "1344576960" + ) + )] + ItemWreckageStructureWeatherStation006 = 1344576960i32, + #[strum( + serialize = "ItemWreckageStructureWeatherStation004", + props( + name = r#"Wreckage Structure Weather Station"#, + desc = r#""#, + value = "-1104478996" + ) + )] + ItemWreckageStructureWeatherStation004 = -1104478996i32, + #[strum( + serialize = "ItemWreckageStructureWeatherStation008", + props( + name = r#"Wreckage Structure Weather Station"#, + desc = r#""#, + value = "-1214467897" + ) + )] + ItemWreckageStructureWeatherStation008 = -1214467897i32, + #[strum( + serialize = "ItemWreckageTurbineGenerator1", + props( + name = r#"Wreckage Turbine Generator"#, + desc = r#""#, + value = "-1662394403" + ) + )] + ItemWreckageTurbineGenerator1 = -1662394403i32, + #[strum( + serialize = "ItemWreckageTurbineGenerator2", + props( + name = r#"Wreckage Turbine Generator"#, + desc = r#""#, + value = "98602599" + ) + )] + ItemWreckageTurbineGenerator2 = 98602599i32, + #[strum( + serialize = "ItemWreckageTurbineGenerator3", + props( + name = r#"Wreckage Turbine Generator"#, + desc = r#""#, + value = "1927790321" + ) + )] + ItemWreckageTurbineGenerator3 = 1927790321i32, + #[strum( + serialize = "ItemWreckageWallCooler1", + props(name = r#"Wreckage Wall Cooler"#, desc = r#""#, value = "-1682930158") + )] + ItemWreckageWallCooler1 = -1682930158i32, + #[strum( + serialize = "ItemWreckageWallCooler2", + props(name = r#"Wreckage Wall Cooler"#, desc = r#""#, value = "45733800") + )] + ItemWreckageWallCooler2 = 45733800i32, + #[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 = "CartridgeElectronicReader", + props(name = r#"eReader"#, desc = r#""#, value = "-1462180176") + )] + CartridgeElectronicReader = -1462180176i32, +} diff --git a/ic10emu/src/vm/enums/script_enums.rs b/ic10emu/src/vm/enums/script_enums.rs new file mode 100644 index 0000000..fc6f05f --- /dev/null +++ b/ic10emu/src/vm/enums/script_enums.rs @@ -0,0 +1,2275 @@ +// ================================================= +// !! <-----> DO NOT MODIFY <-----> !! +// +// This module was automatically generated by an +// xtask +// +// run `cargo xtask generate` from the workspace +// to regenerate +// +// ================================================= + +use serde::{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 = "Maximum", props(docs = r#""#, value = "3"))] + Maximum = 3u8, + #[strum(serialize = "Minimum", props(docs = r#""#, value = "2"))] + Minimum = 2u8, + #[strum(serialize = "Sum", props(docs = r#""#, value = "1"))] + Sum = 1u8, +} +#[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 = "Recipe", props(docs = r#""#, value = "2"))] + Recipe = 2u8, + #[strum(serialize = "Required", props(docs = r#""#, value = "1"))] + Required = 1u8, + #[strum(serialize = "TotalContents", props(docs = r#""#, value = "3"))] + TotalContents = 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 LogicSlotType { + #[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 = "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 = "FilterType", + props(docs = r#"No description available"#, value = "25") + )] + FilterType = 25u8, + #[strum( + serialize = "Growth", + props( + docs = r#"returns the current growth state of the plant in the slot"#, + value = "7" + ) + )] + Growth = 7u8, + #[strum( + serialize = "Health", + props(docs = r#"returns the health of the plant in the slot"#, value = "6") + )] + Health = 6u8, + #[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 = "Lock", + props(docs = r#"No description available"#, value = "23") + )] + Lock = 23u8, + #[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 = "MaxQuantity", + props( + docs = r#"returns the max stack size of the item in the slot"#, + value = "15" + ) + )] + MaxQuantity = 15u8, + #[strum(serialize = "None", props(docs = r#"No description"#, value = "0"))] + None = 0u8, + #[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 = "Occupied", + props( + docs = r#"returns 0 when slot is not occupied, 1 when it is"#, + value = "1" + ) + )] + Occupied = 1u8, + #[strum( + serialize = "On", + props(docs = r#"No description available"#, value = "22") + )] + On = 22u8, + #[strum( + serialize = "Open", + props(docs = r#"No description available"#, value = "21") + )] + Open = 21u8, + #[strum( + serialize = "PrefabHash", + props( + docs = r#"returns the hash of the structure in the slot"#, + value = "17" + ) + )] + PrefabHash = 17u8, + #[strum( + serialize = "Pressure", + props( + docs = r#"returns pressure of the slot occupants internal atmosphere"#, + value = "8" + ) + )] + Pressure = 8u8, + #[strum( + serialize = "PressureAir", + props( + docs = r#"returns pressure in the air tank of the jetpack in this slot"#, + value = "14" + ) + )] + PressureAir = 14u8, + #[strum( + serialize = "PressureWaste", + props( + docs = r#"returns pressure in the waste tank of the jetpack in this slot"#, + value = "13" + ) + )] + PressureWaste = 13u8, + #[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 = "ReferenceId", + props(docs = r#"Unique Reference Identifier for this object"#, value = "26") + )] + ReferenceId = 26u8, + #[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 = "SortingClass", + props(docs = r#"No description available"#, value = "24") + )] + SortingClass = 24u8, + #[strum( + serialize = "Temperature", + props( + docs = r#"returns temperature of the slot occupants internal atmosphere"#, + value = "9" + ) + )] + Temperature = 9u8, + #[strum( + serialize = "Volume", + props(docs = r#"No description available"#, value = "20") + )] + Volume = 20u8, +} +#[derive( + 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 = "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 = "Activate", + props( + docs = r#"1 if device is activated (usually means running), otherwise 0"#, + value = "9" + ) + )] + Activate = 9u16, + #[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 = "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 = "Apex", + props( + docs = r#"The lowest altitude that the rocket will reach before it starts travelling upwards again."#, + value = "238" + ) + )] + Apex = 238u16, + #[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 = "AutoShutOff", + props( + docs = r#"Turns off all devices in the rocket upon reaching destination"#, + value = "218" + ) + )] + AutoShutOff = 218u16, + #[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 = "Bpm", props(docs = r#"Bpm"#, value = "103"))] + Bpm = 103u16, + #[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 = "CelestialHash", + props( + docs = r#"The current hash of the targeted celestial object."#, + value = "242" + ) + )] + CelestialHash = 242u16, + #[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 = "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 = "Charge", + props(docs = r#"The current charge the device has"#, value = "11") + )] + Charge = 11u16, + #[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 = "ChartedNavPoints", + props( + docs = r#"The number of charted NavPoints at the rocket's target Space Map Location."#, + value = "259" + ) + )] + ChartedNavPoints = 259u16, + #[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 = "CollectableGoods", + props( + docs = r#"Gets the cost of fuel to return the rocket to your current world."#, + value = "101" + ) + )] + CollectableGoods = 101u16, + #[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 = "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 = "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 = "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 = "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 = "CompletionRatio", + props( + docs = r#"How complete the current production is for this device, between 0 and 1"#, + value = "61" + ) + )] + CompletionRatio = 61u16, + #[strum( + serialize = "ContactTypeId", + props(docs = r#"The type id of the contact."#, value = "198") + )] + ContactTypeId = 198u16, + #[strum( + serialize = "CurrentCode", + props( + docs = r#"The Space Map Address of the rockets current Space Map Location"#, + value = "261" + ) + )] + CurrentCode = 261u16, + #[strum( + serialize = "CurrentResearchPodType", + props(docs = r#""#, value = "93") + )] + CurrentResearchPodType = 93u16, + #[strum( + serialize = "Density", + props( + docs = r#"The density of the rocket's target site's mine-able deposit."#, + value = "262" + ) + )] + Density = 262u16, + #[strum( + serialize = "DestinationCode", + props( + docs = r#"The Space Map Address of the rockets target Space Map Location"#, + value = "215" + ) + )] + DestinationCode = 215u16, + #[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 = "DistanceAu", + props( + docs = r#"The current distance to the celestial object, measured in astronomical units."#, + value = "244" + ) + )] + DistanceAu = 244u16, + #[strum( + serialize = "DistanceKm", + props( + docs = r#"The current distance to the celestial object, measured in kilometers."#, + value = "249" + ) + )] + DistanceKm = 249u16, + #[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 = "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 = "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 = "ElevatorLevel", + props(docs = r#"Level the elevator is currently at"#, value = "40") + )] + ElevatorLevel = 40u16, + #[strum( + serialize = "ElevatorSpeed", + props(docs = r#"Current speed of the elevator"#, value = "39") + )] + ElevatorSpeed = 39u16, + #[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 = "EnvironmentEfficiency", + props( + docs = r#"The Environment Efficiency reported by the machine, as a float between 0 and 1"#, + value = "104" + ) + )] + EnvironmentEfficiency = 104u16, + #[strum( + serialize = "Error", + props(docs = r#"1 if device is in error state, otherwise 0"#, value = "4") + )] + Error = 4u16, + #[strum( + serialize = "ExhaustVelocity", + props(docs = r#"The velocity of the exhaust gas in m/s"#, value = "235") + )] + ExhaustVelocity = 235u16, + #[strum( + serialize = "ExportCount", + props( + docs = r#"How many items exported since last ClearMemory"#, + value = "63" + ) + )] + ExportCount = 63u16, + #[strum( + serialize = "ExportQuantity", + props( + deprecated = "true", + docs = r#"Total quantity of items exported by the device"#, + value = "31" + ) + )] + ExportQuantity = 31u16, + #[strum( + serialize = "ExportSlotHash", + props(deprecated = "true", docs = r#"DEPRECATED"#, value = "42") + )] + ExportSlotHash = 42u16, + #[strum( + serialize = "ExportSlotOccupant", + props(deprecated = "true", docs = r#"DEPRECATED"#, value = "32") + )] + ExportSlotOccupant = 32u16, + #[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 = "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 = "Flush", + props( + docs = r#"Set to 1 to activate the flush function on the device"#, + value = "174" + ) + )] + Flush = 174u16, + #[strum( + serialize = "ForceWrite", + props(docs = r#"Forces Logic Writer devices to rewrite value"#, value = "85") + )] + ForceWrite = 85u16, + #[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 = "Fuel", + props( + docs = r#"Gets the cost of fuel to return the rocket to your current world."#, + value = "99" + ) + )] + Fuel = 99u16, + #[strum( + serialize = "Harvest", + props( + docs = r#"Performs the harvesting action for any plant based machinery"#, + value = "69" + ) + )] + Harvest = 69u16, + #[strum( + serialize = "Horizontal", + props(docs = r#"Horizontal setting of the device"#, value = "20") + )] + Horizontal = 20u16, + #[strum( + serialize = "HorizontalRatio", + props(docs = r#"Radio of horizontal setting for device"#, value = "34") + )] + HorizontalRatio = 34u16, + #[strum( + serialize = "Idle", + props( + docs = r#"Returns 1 if the device is currently idle, otherwise 0"#, + value = "37" + ) + )] + Idle = 37u16, + #[strum( + serialize = "ImportCount", + props( + docs = r#"How many items imported since last ClearMemory"#, + value = "64" + ) + )] + ImportCount = 64u16, + #[strum( + serialize = "ImportQuantity", + props( + deprecated = "true", + docs = r#"Total quantity of items imported by the device"#, + value = "29" + ) + )] + ImportQuantity = 29u16, + #[strum( + serialize = "ImportSlotHash", + props(deprecated = "true", docs = r#"DEPRECATED"#, value = "43") + )] + ImportSlotHash = 43u16, + #[strum( + serialize = "ImportSlotOccupant", + props(deprecated = "true", docs = r#"DEPRECATED"#, value = "30") + )] + ImportSlotOccupant = 30u16, + #[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 = "Index", + props(docs = r#"The current index for the device."#, value = "241") + )] + Index = 241u16, + #[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 = "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 = "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 = "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 = "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 = "Maximum", + props(docs = r#"Maximum setting of the device"#, value = "23") + )] + Maximum = 23u16, + #[strum( + serialize = "MineablesInQueue", + props( + docs = r#"Returns the amount of mineables AIMEe has queued up to mine."#, + value = "96" + ) + )] + MineablesInQueue = 96u16, + #[strum( + serialize = "MineablesInVicinity", + props( + docs = r#"Returns the amount of potential mineables within an extended area around AIMEe."#, + value = "95" + ) + )] + MineablesInVicinity = 95u16, + #[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 = "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 = "Mode", + props( + docs = r#"Integer for mode state, different devices will have different mode states available to them"#, + value = "3" + ) + )] + Mode = 3u16, + #[strum( + serialize = "NavPoints", + props( + docs = r#"The number of NavPoints at the rocket's target Space Map Location."#, + value = "258" + ) + )] + NavPoints = 258u16, + #[strum( + serialize = "NextWeatherEventTime", + props( + docs = r#"Returns in seconds when the next weather event is inbound."#, + value = "97" + ) + )] + NextWeatherEventTime = 97u16, + #[strum( + serialize = "None", + props(deprecated = "true", docs = r#"No description"#, value = "0") + )] + None = 0u16, + #[strum( + serialize = "On", + props( + docs = r#"The current state of the device, 0 for off, 1 for on"#, + value = "28" + ) + )] + On = 28u16, + #[strum( + serialize = "Open", + props(docs = r#"1 if device is open, otherwise 0"#, value = "2") + )] + Open = 2u16, + #[strum( + serialize = "OperationalTemperatureEfficiency", + props( + docs = r#"How the input pipe's temperature effects the machines efficiency"#, + value = "150" + ) + )] + OperationalTemperatureEfficiency = 150u16, + #[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 = "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 = "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 = "PassedMoles", + props( + docs = r#"The number of moles that passed through this device on the previous simulation tick"#, + value = "234" + ) + )] + PassedMoles = 234u16, + #[strum( + serialize = "Plant", + props( + docs = r#"Performs the planting action for any plant based machinery"#, + value = "68" + ) + )] + Plant = 68u16, + #[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 = "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 = "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 = "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 = "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 = "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 = "PowerActual", + props( + docs = r#"How much energy the device or network is actually using"#, + value = "26" + ) + )] + PowerActual = 26u16, + #[strum( + serialize = "PowerGeneration", + props(docs = r#"Returns how much power is being generated"#, value = "65") + )] + PowerGeneration = 65u16, + #[strum( + serialize = "PowerPotential", + props( + docs = r#"How much energy the device or network potentially provides"#, + value = "25" + ) + )] + PowerPotential = 25u16, + #[strum( + serialize = "PowerRequired", + props( + docs = r#"Power requested from the device and/or network"#, + value = "36" + ) + )] + PowerRequired = 36u16, + #[strum( + serialize = "PrefabHash", + props(docs = r#"The hash of the structure"#, value = "84") + )] + PrefabHash = 84u16, + #[strum( + serialize = "Pressure", + props(docs = r#"The current pressure reading of the device"#, value = "5") + )] + Pressure = 5u16, + #[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 = "PressureExternal", + props(docs = r#"Setting for external pressure safety, in KPa"#, value = "7") + )] + PressureExternal = 7u16, + #[strum( + serialize = "PressureInput", + props( + docs = r#"The current pressure reading of the device's Input Network"#, + value = "106" + ) + )] + PressureInput = 106u16, + #[strum( + serialize = "PressureInput2", + props( + docs = r#"The current pressure reading of the device's Input2 Network"#, + value = "116" + ) + )] + PressureInput2 = 116u16, + #[strum( + serialize = "PressureInternal", + props(docs = r#"Setting for internal pressure safety, in KPa"#, value = "8") + )] + PressureInternal = 8u16, + #[strum( + serialize = "PressureOutput", + props( + docs = r#"The current pressure reading of the device's Output Network"#, + value = "126" + ) + )] + PressureOutput = 126u16, + #[strum( + serialize = "PressureOutput2", + props( + docs = r#"The current pressure reading of the device's Output2 Network"#, + value = "136" + ) + )] + PressureOutput2 = 136u16, + #[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 = "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 = "Quantity", + props(docs = r#"Total quantity on the device"#, value = "27") + )] + Quantity = 27u16, + #[strum( + serialize = "Ratio", + props( + docs = r#"Context specific value depending on device, 0 to 1 based ratio"#, + value = "24" + ) + )] + Ratio = 24u16, + #[strum( + serialize = "RatioCarbonDioxide", + props( + docs = r#"The ratio of Carbon Dioxide in device atmosphere"#, + value = "15" + ) + )] + RatioCarbonDioxide = 15u16, + #[strum( + serialize = "RatioCarbonDioxideInput", + props( + docs = r#"The ratio of Carbon Dioxide in device's input network"#, + value = "109" + ) + )] + RatioCarbonDioxideInput = 109u16, + #[strum( + serialize = "RatioCarbonDioxideInput2", + props( + docs = r#"The ratio of Carbon Dioxide in device's Input2 network"#, + value = "119" + ) + )] + RatioCarbonDioxideInput2 = 119u16, + #[strum( + serialize = "RatioCarbonDioxideOutput", + props( + docs = r#"The ratio of Carbon Dioxide in device's Output network"#, + value = "129" + ) + )] + RatioCarbonDioxideOutput = 129u16, + #[strum( + serialize = "RatioCarbonDioxideOutput2", + props( + docs = r#"The ratio of Carbon Dioxide in device's Output2 network"#, + value = "139" + ) + )] + RatioCarbonDioxideOutput2 = 139u16, + #[strum( + serialize = "RatioHydrogen", + props( + docs = r#"The ratio of Hydrogen in device's Atmopshere"#, + value = "252" + ) + )] + RatioHydrogen = 252u16, + #[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 = "RatioLiquidHydrogen", + props( + docs = r#"The ratio of Liquid Hydrogen in device's Atmopshere"#, + value = "253" + ) + )] + RatioLiquidHydrogen = 253u16, + #[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 = "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 = "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 = "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 = "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 = "RatioNitrogen", + props(docs = r#"The ratio of nitrogen in device atmosphere"#, value = "16") + )] + RatioNitrogen = 16u16, + #[strum( + serialize = "RatioNitrogenInput", + props( + docs = r#"The ratio of nitrogen in device's input network"#, + value = "110" + ) + )] + RatioNitrogenInput = 110u16, + #[strum( + serialize = "RatioNitrogenInput2", + props( + docs = r#"The ratio of nitrogen in device's Input2 network"#, + value = "120" + ) + )] + RatioNitrogenInput2 = 120u16, + #[strum( + serialize = "RatioNitrogenOutput", + props( + docs = r#"The ratio of nitrogen in device's Output network"#, + value = "130" + ) + )] + RatioNitrogenOutput = 130u16, + #[strum( + serialize = "RatioNitrogenOutput2", + props( + docs = r#"The ratio of nitrogen in device's Output2 network"#, + value = "140" + ) + )] + RatioNitrogenOutput2 = 140u16, + #[strum( + serialize = "RatioNitrousOxide", + props( + docs = r#"The ratio of Nitrous Oxide in device atmosphere"#, + value = "83" + ) + )] + RatioNitrousOxide = 83u16, + #[strum( + serialize = "RatioNitrousOxideInput", + props( + docs = r#"The ratio of Nitrous Oxide in device's input network"#, + value = "114" + ) + )] + RatioNitrousOxideInput = 114u16, + #[strum( + serialize = "RatioNitrousOxideInput2", + props( + docs = r#"The ratio of Nitrous Oxide in device's Input2 network"#, + value = "124" + ) + )] + RatioNitrousOxideInput2 = 124u16, + #[strum( + serialize = "RatioNitrousOxideOutput", + props( + docs = r#"The ratio of Nitrous Oxide in device's Output network"#, + value = "134" + ) + )] + RatioNitrousOxideOutput = 134u16, + #[strum( + serialize = "RatioNitrousOxideOutput2", + props( + docs = r#"The ratio of Nitrous Oxide in device's Output2 network"#, + value = "144" + ) + )] + RatioNitrousOxideOutput2 = 144u16, + #[strum( + serialize = "RatioOxygen", + props(docs = r#"The ratio of oxygen in device atmosphere"#, value = "14") + )] + RatioOxygen = 14u16, + #[strum( + serialize = "RatioOxygenInput", + props( + docs = r#"The ratio of oxygen in device's input network"#, + value = "108" + ) + )] + RatioOxygenInput = 108u16, + #[strum( + serialize = "RatioOxygenInput2", + props( + docs = r#"The ratio of oxygen in device's Input2 network"#, + value = "118" + ) + )] + RatioOxygenInput2 = 118u16, + #[strum( + serialize = "RatioOxygenOutput", + props( + docs = r#"The ratio of oxygen in device's Output network"#, + value = "128" + ) + )] + RatioOxygenOutput = 128u16, + #[strum( + serialize = "RatioOxygenOutput2", + props( + docs = r#"The ratio of oxygen in device's Output2 network"#, + value = "138" + ) + )] + RatioOxygenOutput2 = 138u16, + #[strum( + serialize = "RatioPollutant", + props(docs = r#"The ratio of pollutant in device atmosphere"#, value = "17") + )] + RatioPollutant = 17u16, + #[strum( + serialize = "RatioPollutantInput", + props( + docs = r#"The ratio of pollutant in device's input network"#, + value = "111" + ) + )] + RatioPollutantInput = 111u16, + #[strum( + serialize = "RatioPollutantInput2", + props( + docs = r#"The ratio of pollutant in device's Input2 network"#, + value = "121" + ) + )] + RatioPollutantInput2 = 121u16, + #[strum( + serialize = "RatioPollutantOutput", + props( + docs = r#"The ratio of pollutant in device's Output network"#, + value = "131" + ) + )] + RatioPollutantOutput = 131u16, + #[strum( + serialize = "RatioPollutantOutput2", + props( + docs = r#"The ratio of pollutant in device's Output2 network"#, + value = "141" + ) + )] + RatioPollutantOutput2 = 141u16, + #[strum( + serialize = "RatioPollutedWater", + props( + docs = r#"The ratio of polluted water in device atmosphere"#, + value = "254" + ) + )] + RatioPollutedWater = 254u16, + #[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 = "RatioVolatiles", + props(docs = r#"The ratio of volatiles in device atmosphere"#, value = "18") + )] + RatioVolatiles = 18u16, + #[strum( + serialize = "RatioVolatilesInput", + props( + docs = r#"The ratio of volatiles in device's input network"#, + value = "112" + ) + )] + RatioVolatilesInput = 112u16, + #[strum( + serialize = "RatioVolatilesInput2", + props( + docs = r#"The ratio of volatiles in device's Input2 network"#, + value = "122" + ) + )] + RatioVolatilesInput2 = 122u16, + #[strum( + serialize = "RatioVolatilesOutput", + props( + docs = r#"The ratio of volatiles in device's Output network"#, + value = "132" + ) + )] + RatioVolatilesOutput = 132u16, + #[strum( + serialize = "RatioVolatilesOutput2", + props( + docs = r#"The ratio of volatiles in device's Output2 network"#, + value = "142" + ) + )] + RatioVolatilesOutput2 = 142u16, + #[strum( + serialize = "RatioWater", + props(docs = r#"The ratio of water in device atmosphere"#, value = "19") + )] + RatioWater = 19u16, + #[strum( + serialize = "RatioWaterInput", + props( + docs = r#"The ratio of water in device's input network"#, + value = "113" + ) + )] + RatioWaterInput = 113u16, + #[strum( + serialize = "RatioWaterInput2", + props( + docs = r#"The ratio of water in device's Input2 network"#, + value = "123" + ) + )] + RatioWaterInput2 = 123u16, + #[strum( + serialize = "RatioWaterOutput", + props( + docs = r#"The ratio of water in device's Output network"#, + value = "133" + ) + )] + RatioWaterOutput = 133u16, + #[strum( + serialize = "RatioWaterOutput2", + props( + docs = r#"The ratio of water in device's Output2 network"#, + value = "143" + ) + )] + RatioWaterOutput2 = 143u16, + #[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 = "Reagents", + props( + docs = r#"Total number of reagents recorded by the device"#, + value = "13" + ) + )] + Reagents = 13u16, + #[strum( + serialize = "RecipeHash", + props( + docs = r#"Current hash of the recipe the device is set to produce"#, + value = "41" + ) + )] + RecipeHash = 41u16, + #[strum( + serialize = "ReferenceId", + props(docs = r#"Unique Reference Identifier for this object"#, value = "217") + )] + ReferenceId = 217u16, + #[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 = "RequiredPower", + props( + docs = r#"Idle operating power quantity, does not necessarily include extra demand power"#, + value = "33" + ) + )] + RequiredPower = 33u16, + #[strum( + serialize = "ReturnFuelCost", + props( + docs = r#"Gets the fuel remaining in your rocket's fuel tank."#, + value = "100" + ) + )] + ReturnFuelCost = 100u16, + #[strum( + serialize = "Richness", + props( + docs = r#"The richness of the rocket's target site's mine-able deposit."#, + value = "263" + ) + )] + Richness = 263u16, + #[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 = "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 = "Setting", + props( + docs = r#"A variable setting that can be read or written, depending on the device"#, + value = "12" + ) + )] + Setting = 12u16, + #[strum( + serialize = "SettingInput", + props(docs = r#""#, value = "91") + )] + SettingInput = 91u16, + #[strum( + serialize = "SettingOutput", + props(docs = r#""#, value = "92") + )] + SettingOutput = 92u16, + #[strum( + serialize = "SignalID", + props( + docs = r#"Returns the contact ID of the strongest signal from this Satellite"#, + value = "87" + ) + )] + SignalId = 87u16, + #[strum( + serialize = "SignalStrength", + props( + docs = r#"Returns the degree offset of the strongest contact"#, + value = "86" + ) + )] + SignalStrength = 86u16, + #[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 = "Size", + props( + docs = r#"The size of the rocket's target site's mine-able deposit."#, + value = "264" + ) + )] + Size = 264u16, + #[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 = "SolarAngle", + props(docs = r#"Solar angle of the device"#, value = "22") + )] + SolarAngle = 22u16, + #[strum( + serialize = "SolarIrradiance", + props(docs = r#""#, value = "176") + )] + SolarIrradiance = 176u16, + #[strum( + serialize = "SoundAlert", + props(docs = r#"Plays a sound alert on the devices speaker"#, value = "175") + )] + SoundAlert = 175u16, + #[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 = "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 = "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 = "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 = "Temperature", + props(docs = r#"The current temperature reading of the device"#, value = "6") + )] + Temperature = 6u16, + #[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 = "TemperatureExternal", + props( + docs = r#"The temperature of the outside of the device, usually the world atmosphere surrounding it"#, + value = "73" + ) + )] + TemperatureExternal = 73u16, + #[strum( + serialize = "TemperatureInput", + props( + docs = r#"The current temperature reading of the device's Input Network"#, + value = "107" + ) + )] + TemperatureInput = 107u16, + #[strum( + serialize = "TemperatureInput2", + props( + docs = r#"The current temperature reading of the device's Input2 Network"#, + value = "117" + ) + )] + TemperatureInput2 = 117u16, + #[strum( + serialize = "TemperatureOutput", + props( + docs = r#"The current temperature reading of the device's Output Network"#, + value = "127" + ) + )] + TemperatureOutput = 127u16, + #[strum( + serialize = "TemperatureOutput2", + props( + docs = r#"The current temperature reading of the device's Output2 Network"#, + value = "137" + ) + )] + TemperatureOutput2 = 137u16, + #[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 = "Throttle", + props( + docs = r#"Increases the rate at which the machine works (range: 0-100)"#, + value = "154" + ) + )] + Throttle = 154u16, + #[strum( + serialize = "Thrust", + props( + docs = r#"Total current thrust of all rocket engines on the rocket in Newtons."#, + value = "221" + ) + )] + Thrust = 221u16, + #[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 = "Time", props(docs = r#"Time"#, value = "102"))] + Time = 102u16, + #[strum( + serialize = "TimeToDestination", + props( + docs = r#"Estimated time in seconds until rocket arrives at target destination."#, + value = "224" + ) + )] + TimeToDestination = 224u16, + #[strum( + serialize = "TotalMoles", + props(docs = r#"Returns the total moles of the device"#, value = "66") + )] + TotalMoles = 66u16, + #[strum( + serialize = "TotalMolesInput", + props( + docs = r#"Returns the total moles of the device's Input Network"#, + value = "115" + ) + )] + TotalMolesInput = 115u16, + #[strum( + serialize = "TotalMolesInput2", + props( + docs = r#"Returns the total moles of the device's Input2 Network"#, + value = "125" + ) + )] + TotalMolesInput2 = 125u16, + #[strum( + serialize = "TotalMolesOutput", + props( + docs = r#"Returns the total moles of the device's Output Network"#, + value = "135" + ) + )] + TotalMolesOutput = 135u16, + #[strum( + serialize = "TotalMolesOutput2", + props( + docs = r#"Returns the total moles of the device's Output2 Network"#, + value = "145" + ) + )] + TotalMolesOutput2 = 145u16, + #[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 = "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 = "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 = "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 = "Vertical", + props(docs = r#"Vertical setting of the device"#, value = "21") + )] + Vertical = 21u16, + #[strum( + serialize = "VerticalRatio", + props(docs = r#"Radio of vertical setting for device"#, value = "35") + )] + VerticalRatio = 35u16, + #[strum( + serialize = "Volume", + props(docs = r#"Returns the device atmosphere volume"#, value = "67") + )] + Volume = 67u16, + #[strum( + serialize = "VolumeOfLiquid", + props( + docs = r#"The total volume of all liquids in Liters in the atmosphere"#, + value = "182" + ) + )] + VolumeOfLiquid = 182u16, + #[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 = "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 = "WorkingGasEfficiency", + props( + docs = r#"The Working Gas Efficiency reported by the machine, as a float between 0 and 1"#, + value = "105" + ) + )] + WorkingGasEfficiency = 105u16, +} diff --git a/ic10emu/src/vm/instructions/enums.rs b/ic10emu/src/vm/instructions/enums.rs new file mode 100644 index 0000000..f3a66cf --- /dev/null +++ b/ic10emu/src/vm/instructions/enums.rs @@ -0,0 +1,1076 @@ +// ================================================= +// !! <-----> DO NOT MODIFY <-----> !! +// +// This module was automatically generated by an +// xtask +// +// run `cargo xtask generate` from the workspace +// to regenerate +// +// ================================================= + +use serde::{Deserialize, Serialize}; +use strum::{Display, EnumIter, EnumProperty, EnumString, FromRepr}; + +use crate::vm::instructions::traits::*; +use crate::vm::object::traits::Programmable; +#[derive( + Debug, + Display, + PartialEq, + Eq, + PartialOrd, + Ord, + Clone, + Copy, + Serialize, + Deserialize, + 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" + ))] + Abs, + #[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" + ))] + 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" + ))] + 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" + ))] + And, + #[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" + ))] + 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" + ))] + 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" + ))] + 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" + ))] + 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" + ))] + 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" + ))] + Bapzal, + #[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" + ))] + Bdnsal, + #[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" + ))] + Bdseal, + #[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" + ))] + Beqal, + #[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" + ))] + Beqzal, + #[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" + ))] + Bgeal, + #[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" + ))] + Bgezal, + #[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" + ))] + Bgtal, + #[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" + ))] + Bgtzal, + #[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" + ))] + Bleal, + #[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" + ))] + Blezal, + #[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" + ))] + Bltal, + #[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" + ))] + 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" + ))] + 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" + ))] + 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" + ))] + 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" + ))] + 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" + ))] + Bnazal, + #[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" + ))] + Bneal, + #[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" + ))] + 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" + ))] + 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" + ))] + Brapz, + #[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" + ))] + 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" + ))] + Breq, + #[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" + ))] + Brge, + #[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" + ))] + Brgt, + #[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" + ))] + Brle, + #[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" + ))] + Brlt, + #[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" + ))] + 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" + ))] + 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" + ))] + 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" + ))] + Brne, + #[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" + ))] + Ceil, + #[strum(props( + example = "clr d?", + desc = "Clears the stack memory for the provided device.", + operands = "1" + ))] + Clr, + #[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" + ))] + Define, + #[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" + ))] + Exp, + #[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" + ))] + 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" + ))] + 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" + ))] + 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" + ))] + 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" + ))] + 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" + ))] + 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" + ))] + 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" + ))] + Lbs, + #[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" + ))] + 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" + ))] + Lr, + #[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" + ))] + Max, + #[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" + ))] + Mod, + #[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" + ))] + 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" + ))] + 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" + ))] + 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" + ))] + Or, + #[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" + ))] + Poke, + #[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" + ))] + 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" + ))] + 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" + ))] + Putd, + #[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" + ))] + Round, + #[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" + ))] + 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" + ))] + 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" + ))] + 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" + ))] + 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" + ))] + Sbs, + #[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" + ))] + Sdns, + #[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" + ))] + Select, + #[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" + ))] + Seqz, + #[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" + ))] + Sgez, + #[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" + ))] + Sgtz, + #[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" + ))] + Sla, + #[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" + ))] + Sleep, + #[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" + ))] + Sll, + #[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" + ))] + 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" + ))] + Sna, + #[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" + ))] + 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" + ))] + Snaz, + #[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" + ))] + Snez, + #[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" + ))] + 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" + ))] + Srl, + #[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" + ))] + Sub, + #[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" + ))] + 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" + ))] + Xor, + #[strum(props( + example = "yield", + desc = "Pauses execution for 1 tick", + operands = "0" + ))] + Yield, +} +impl InstructionOp { + pub fn num_operands(&self) -> usize { + self.get_str("operands") + .expect("instruction without operand property") + .parse::() + .expect("invalid instruction operand property") + } + + pub fn execute( + &self, + ic: &mut T, + vm: &crate::vm::VM, + 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(()), + Self::Abs => ic.execute_abs(vm, &operands[0], &operands[1]), + Self::Acos => ic.execute_acos(vm, &operands[0], &operands[1]), + Self::Add => ic.execute_add(vm, &operands[0], &operands[1], &operands[2]), + Self::Alias => ic.execute_alias(vm, &operands[0], &operands[1]), + Self::And => ic.execute_and(vm, &operands[0], &operands[1], &operands[2]), + Self::Asin => ic.execute_asin(vm, &operands[0], &operands[1]), + Self::Atan => ic.execute_atan(vm, &operands[0], &operands[1]), + Self::Atan2 => ic.execute_atan2(vm, &operands[0], &operands[1], &operands[2]), + Self::Bap => ic.execute_bap(vm, &operands[0], &operands[1], &operands[2], &operands[3]), + Self::Bapal => { + ic.execute_bapal(vm, &operands[0], &operands[1], &operands[2], &operands[3]) + } + Self::Bapz => ic.execute_bapz(vm, &operands[0], &operands[1], &operands[2]), + Self::Bapzal => ic.execute_bapzal(vm, &operands[0], &operands[1], &operands[2]), + Self::Bdns => ic.execute_bdns(vm, &operands[0], &operands[1]), + Self::Bdnsal => ic.execute_bdnsal(vm, &operands[0], &operands[1]), + Self::Bdse => ic.execute_bdse(vm, &operands[0], &operands[1]), + Self::Bdseal => ic.execute_bdseal(vm, &operands[0], &operands[1]), + Self::Beq => ic.execute_beq(vm, &operands[0], &operands[1], &operands[2]), + Self::Beqal => ic.execute_beqal(vm, &operands[0], &operands[1], &operands[2]), + Self::Beqz => ic.execute_beqz(vm, &operands[0], &operands[1]), + Self::Beqzal => ic.execute_beqzal(vm, &operands[0], &operands[1]), + Self::Bge => ic.execute_bge(vm, &operands[0], &operands[1], &operands[2]), + Self::Bgeal => ic.execute_bgeal(vm, &operands[0], &operands[1], &operands[2]), + Self::Bgez => ic.execute_bgez(vm, &operands[0], &operands[1]), + Self::Bgezal => ic.execute_bgezal(vm, &operands[0], &operands[1]), + Self::Bgt => ic.execute_bgt(vm, &operands[0], &operands[1], &operands[2]), + Self::Bgtal => ic.execute_bgtal(vm, &operands[0], &operands[1], &operands[2]), + Self::Bgtz => ic.execute_bgtz(vm, &operands[0], &operands[1]), + Self::Bgtzal => ic.execute_bgtzal(vm, &operands[0], &operands[1]), + Self::Ble => ic.execute_ble(vm, &operands[0], &operands[1], &operands[2]), + Self::Bleal => ic.execute_bleal(vm, &operands[0], &operands[1], &operands[2]), + Self::Blez => ic.execute_blez(vm, &operands[0], &operands[1]), + Self::Blezal => ic.execute_blezal(vm, &operands[0], &operands[1]), + Self::Blt => ic.execute_blt(vm, &operands[0], &operands[1], &operands[2]), + Self::Bltal => ic.execute_bltal(vm, &operands[0], &operands[1], &operands[2]), + Self::Bltz => ic.execute_bltz(vm, &operands[0], &operands[1]), + Self::Bltzal => ic.execute_bltzal(vm, &operands[0], &operands[1]), + Self::Bna => ic.execute_bna(vm, &operands[0], &operands[1], &operands[2], &operands[3]), + Self::Bnaal => { + ic.execute_bnaal(vm, &operands[0], &operands[1], &operands[2], &operands[3]) + } + Self::Bnan => ic.execute_bnan(vm, &operands[0], &operands[1]), + Self::Bnaz => ic.execute_bnaz(vm, &operands[0], &operands[1], &operands[2]), + Self::Bnazal => ic.execute_bnazal(vm, &operands[0], &operands[1], &operands[2]), + Self::Bne => ic.execute_bne(vm, &operands[0], &operands[1], &operands[2]), + Self::Bneal => ic.execute_bneal(vm, &operands[0], &operands[1], &operands[2]), + Self::Bnez => ic.execute_bnez(vm, &operands[0], &operands[1]), + Self::Bnezal => ic.execute_bnezal(vm, &operands[0], &operands[1]), + Self::Brap => { + ic.execute_brap(vm, &operands[0], &operands[1], &operands[2], &operands[3]) + } + Self::Brapz => ic.execute_brapz(vm, &operands[0], &operands[1], &operands[2]), + Self::Brdns => ic.execute_brdns(vm, &operands[0], &operands[1]), + Self::Brdse => ic.execute_brdse(vm, &operands[0], &operands[1]), + Self::Breq => ic.execute_breq(vm, &operands[0], &operands[1], &operands[2]), + Self::Breqz => ic.execute_breqz(vm, &operands[0], &operands[1]), + Self::Brge => ic.execute_brge(vm, &operands[0], &operands[1], &operands[2]), + Self::Brgez => ic.execute_brgez(vm, &operands[0], &operands[1]), + Self::Brgt => ic.execute_brgt(vm, &operands[0], &operands[1], &operands[2]), + Self::Brgtz => ic.execute_brgtz(vm, &operands[0], &operands[1]), + Self::Brle => ic.execute_brle(vm, &operands[0], &operands[1], &operands[2]), + Self::Brlez => ic.execute_brlez(vm, &operands[0], &operands[1]), + Self::Brlt => ic.execute_brlt(vm, &operands[0], &operands[1], &operands[2]), + Self::Brltz => ic.execute_brltz(vm, &operands[0], &operands[1]), + Self::Brna => { + ic.execute_brna(vm, &operands[0], &operands[1], &operands[2], &operands[3]) + } + Self::Brnan => ic.execute_brnan(vm, &operands[0], &operands[1]), + Self::Brnaz => ic.execute_brnaz(vm, &operands[0], &operands[1], &operands[2]), + Self::Brne => ic.execute_brne(vm, &operands[0], &operands[1], &operands[2]), + Self::Brnez => ic.execute_brnez(vm, &operands[0], &operands[1]), + Self::Ceil => ic.execute_ceil(vm, &operands[0], &operands[1]), + Self::Clr => ic.execute_clr(vm, &operands[0]), + Self::Cos => ic.execute_cos(vm, &operands[0], &operands[1]), + Self::Define => ic.execute_define(vm, &operands[0], &operands[1]), + Self::Div => ic.execute_div(vm, &operands[0], &operands[1], &operands[2]), + Self::Exp => ic.execute_exp(vm, &operands[0], &operands[1]), + Self::Floor => ic.execute_floor(vm, &operands[0], &operands[1]), + Self::Get => ic.execute_get(vm, &operands[0], &operands[1], &operands[2]), + Self::Getd => ic.execute_getd(vm, &operands[0], &operands[1], &operands[2]), + Self::Hcf => ic.execute_hcf(vm), + Self::J => ic.execute_j(vm, &operands[0]), + Self::Jal => ic.execute_jal(vm, &operands[0]), + Self::Jr => ic.execute_jr(vm, &operands[0]), + Self::L => ic.execute_l(vm, &operands[0], &operands[1], &operands[2]), + Self::Label => ic.execute_label(vm, &operands[0], &operands[1]), + Self::Lb => ic.execute_lb(vm, &operands[0], &operands[1], &operands[2], &operands[3]), + Self::Lbn => ic.execute_lbn( + vm, + &operands[0], + &operands[1], + &operands[2], + &operands[3], + &operands[4], + ), + Self::Lbns => ic.execute_lbns( + vm, + &operands[0], + &operands[1], + &operands[2], + &operands[3], + &operands[4], + &operands[5], + ), + Self::Lbs => ic.execute_lbs( + vm, + &operands[0], + &operands[1], + &operands[2], + &operands[3], + &operands[4], + ), + Self::Ld => ic.execute_ld(vm, &operands[0], &operands[1], &operands[2]), + Self::Log => ic.execute_log(vm, &operands[0], &operands[1]), + Self::Lr => ic.execute_lr(vm, &operands[0], &operands[1], &operands[2], &operands[3]), + Self::Ls => ic.execute_ls(vm, &operands[0], &operands[1], &operands[2], &operands[3]), + Self::Max => ic.execute_max(vm, &operands[0], &operands[1], &operands[2]), + Self::Min => ic.execute_min(vm, &operands[0], &operands[1], &operands[2]), + Self::Mod => ic.execute_mod(vm, &operands[0], &operands[1], &operands[2]), + Self::Move => ic.execute_move(vm, &operands[0], &operands[1]), + Self::Mul => ic.execute_mul(vm, &operands[0], &operands[1], &operands[2]), + Self::Nor => ic.execute_nor(vm, &operands[0], &operands[1], &operands[2]), + Self::Not => ic.execute_not(vm, &operands[0], &operands[1]), + Self::Or => ic.execute_or(vm, &operands[0], &operands[1], &operands[2]), + Self::Peek => ic.execute_peek(vm, &operands[0]), + Self::Poke => ic.execute_poke(vm, &operands[0], &operands[1]), + Self::Pop => ic.execute_pop(vm, &operands[0]), + Self::Push => ic.execute_push(vm, &operands[0]), + Self::Put => ic.execute_put(vm, &operands[0], &operands[1], &operands[2]), + Self::Putd => ic.execute_putd(vm, &operands[0], &operands[1], &operands[2]), + Self::Rand => ic.execute_rand(vm, &operands[0]), + Self::Round => ic.execute_round(vm, &operands[0], &operands[1]), + Self::S => ic.execute_s(vm, &operands[0], &operands[1], &operands[2]), + Self::Sap => ic.execute_sap(vm, &operands[0], &operands[1], &operands[2], &operands[3]), + Self::Sapz => ic.execute_sapz(vm, &operands[0], &operands[1], &operands[2]), + Self::Sb => ic.execute_sb(vm, &operands[0], &operands[1], &operands[2]), + Self::Sbn => ic.execute_sbn(vm, &operands[0], &operands[1], &operands[2], &operands[3]), + Self::Sbs => ic.execute_sbs(vm, &operands[0], &operands[1], &operands[2], &operands[3]), + Self::Sd => ic.execute_sd(vm, &operands[0], &operands[1], &operands[2]), + Self::Sdns => ic.execute_sdns(vm, &operands[0], &operands[1]), + Self::Sdse => ic.execute_sdse(vm, &operands[0], &operands[1]), + Self::Select => { + ic.execute_select(vm, &operands[0], &operands[1], &operands[2], &operands[3]) + } + Self::Seq => ic.execute_seq(vm, &operands[0], &operands[1], &operands[2]), + Self::Seqz => ic.execute_seqz(vm, &operands[0], &operands[1]), + Self::Sge => ic.execute_sge(vm, &operands[0], &operands[1], &operands[2]), + Self::Sgez => ic.execute_sgez(vm, &operands[0], &operands[1]), + Self::Sgt => ic.execute_sgt(vm, &operands[0], &operands[1], &operands[2]), + Self::Sgtz => ic.execute_sgtz(vm, &operands[0], &operands[1]), + Self::Sin => ic.execute_sin(vm, &operands[0], &operands[1]), + Self::Sla => ic.execute_sla(vm, &operands[0], &operands[1], &operands[2]), + Self::Sle => ic.execute_sle(vm, &operands[0], &operands[1], &operands[2]), + Self::Sleep => ic.execute_sleep(vm, &operands[0]), + Self::Slez => ic.execute_slez(vm, &operands[0], &operands[1]), + Self::Sll => ic.execute_sll(vm, &operands[0], &operands[1], &operands[2]), + Self::Slt => ic.execute_slt(vm, &operands[0], &operands[1], &operands[2]), + Self::Sltz => ic.execute_sltz(vm, &operands[0], &operands[1]), + Self::Sna => ic.execute_sna(vm, &operands[0], &operands[1], &operands[2], &operands[3]), + Self::Snan => ic.execute_snan(vm, &operands[0], &operands[1]), + Self::Snanz => ic.execute_snanz(vm, &operands[0], &operands[1]), + Self::Snaz => ic.execute_snaz(vm, &operands[0], &operands[1], &operands[2]), + Self::Sne => ic.execute_sne(vm, &operands[0], &operands[1], &operands[2]), + Self::Snez => ic.execute_snez(vm, &operands[0], &operands[1]), + Self::Sqrt => ic.execute_sqrt(vm, &operands[0], &operands[1]), + Self::Sra => ic.execute_sra(vm, &operands[0], &operands[1], &operands[2]), + Self::Srl => ic.execute_srl(vm, &operands[0], &operands[1], &operands[2]), + Self::Ss => ic.execute_ss(vm, &operands[0], &operands[1], &operands[2], &operands[3]), + Self::Sub => ic.execute_sub(vm, &operands[0], &operands[1], &operands[2]), + Self::Tan => ic.execute_tan(vm, &operands[0], &operands[1]), + Self::Trunc => ic.execute_trunc(vm, &operands[0], &operands[1]), + Self::Xor => ic.execute_xor(vm, &operands[0], &operands[1], &operands[2]), + Self::Yield => ic.execute_yield(vm), + } + } +} diff --git a/ic10emu/src/vm/instructions/mod.rs b/ic10emu/src/vm/instructions/mod.rs new file mode 100644 index 0000000..b09437f --- /dev/null +++ b/ic10emu/src/vm/instructions/mod.rs @@ -0,0 +1,26 @@ +pub mod enums; +pub mod operands; +pub mod traits; + +use enums::InstructionOp; +use operands::Operand; +use serde::{Deserialize, Serialize}; + +use phf::phf_map; + +#[derive(PartialEq, Debug, Clone, Serialize, Deserialize)] +pub struct Instruction { + pub instruction: InstructionOp, + pub operands: Vec, +} + +#[allow(clippy::approx_constant)] +pub static CONSTANTS_LOOKUP: phf::Map<&'static str, f64> = phf_map! { + "nan" => f64::NAN, + "ninf" => f64::NEG_INFINITY, + "deg2rad" => 0.0174532923847437f64, + "rad2deg" => 57.2957801818848f64, + "epsilon" => f64::EPSILON, + "pinf" => f64::INFINITY, + "pi" => 3.141592653589793f64, +}; diff --git a/ic10emu/src/vm/instructions/operands.rs b/ic10emu/src/vm/instructions/operands.rs new file mode 100644 index 0000000..a70b8c5 --- /dev/null +++ b/ic10emu/src/vm/instructions/operands.rs @@ -0,0 +1,302 @@ +use crate::errors::ICError; +use crate::interpreter; +use crate::vm::enums::script_enums::{ + LogicBatchMethod as BatchMode, LogicReagentMode as ReagentMode, LogicSlotType as SlotLogicType, + LogicType, +}; +use crate::vm::instructions::enums::InstructionOp; +use serde::{Deserialize, Serialize}; +use strum::EnumProperty; + +#[derive(PartialEq, Eq, Debug, Clone, Copy, Serialize, Deserialize)] +pub enum Device { + Db, + Numbered(u32), + Indirect { indirection: u32, target: u32 }, +} + +#[derive(PartialEq, Debug, Clone, Serialize, Deserialize)] +pub struct RegisterSpec { + pub indirection: u32, + pub target: u32, +} + +#[derive(PartialEq, Debug, Clone, Serialize, Deserialize)] +pub struct DeviceSpec { + pub device: Device, + pub connection: Option, +} + +#[derive(PartialEq, Eq, Debug, Clone, Serialize, Deserialize)] +pub struct Identifier { + pub name: String, +} + +#[derive(PartialEq, Debug, Clone, Serialize, Deserialize)] +pub enum Number { + Float(f64), + Binary(i64), + Hexadecimal(i64), + Constant(f64), + String(String), + Enum(f64), +} + +#[derive(PartialEq, Debug, Clone, Serialize, Deserialize)] +pub enum Operand { + RegisterSpec(RegisterSpec), + DeviceSpec(DeviceSpec), + Number(Number), + Type { + logic_type: Option, + slot_logic_type: Option, + batch_mode: Option, + reagent_mode: Option, + identifier: Identifier, + }, + Identifier(Identifier), +} + +impl Operand { + pub fn as_value( + &self, + ic: &interpreter::IC, + inst: InstructionOp, + index: u32, + ) -> Result { + match self.translate_alias(ic) { + Operand::RegisterSpec(RegisterSpec { + indirection, + target, + }) => ic.get_register(indirection, target), + Operand::Number(num) => Ok(num.value()), + Operand::Type { + logic_type, + slot_logic_type, + batch_mode, + reagent_mode, + identifier: _, + } => { + if let Some(lt) = logic_type { + Ok(lt + .get_str("value") + .ok_or_else(|| ICError::NoGeneratedValue(lt.to_string()))? + .parse::() + .map_err(|_| { + ICError::BadGeneratedValueParse(lt.to_string(), "u16".to_owned()) + })? as f64) + } else if let Some(slt) = slot_logic_type { + Ok(slt + .get_str("value") + .ok_or_else(|| ICError::NoGeneratedValue(slt.to_string()))? + .parse::() + .map_err(|_| { + ICError::BadGeneratedValueParse(slt.to_string(), "u8".to_owned()) + })? as f64) + } else if let Some(bm) = batch_mode { + Ok(bm + .get_str("value") + .ok_or_else(|| ICError::NoGeneratedValue(bm.to_string()))? + .parse::() + .map_err(|_| { + ICError::BadGeneratedValueParse(bm.to_string(), "u8".to_owned()) + })? as f64) + } else if let Some(rm) = reagent_mode { + Ok(rm + .get_str("value") + .ok_or_else(|| ICError::NoGeneratedValue(rm.to_string()))? + .parse::() + .map_err(|_| { + ICError::BadGeneratedValueParse(rm.to_string(), "u8".to_owned()) + })? as f64) + } else { + Err(ICError::TypeValueNotKnown) + } + } + Operand::Identifier(id) => Err(ICError::UnknownIdentifier(id.name.to_string())), + Operand::DeviceSpec { .. } => Err(ICError::IncorrectOperandType { + inst, + index, + desired: "Value".to_owned(), + }), + } + } + + pub fn as_value_i64( + &self, + ic: &interpreter::IC, + signed: bool, + inst: InstructionOp, + index: u32, + ) -> Result { + match self { + Self::Number(num) => Ok(num.value_i64(signed)), + _ => { + let val = self.as_value(ic, inst, index)?; + if val < -9.223_372_036_854_776E18 { + Err(ICError::ShiftUnderflowI64) + } else if val <= 9.223_372_036_854_776E18 { + Ok(interpreter::f64_to_i64(val, signed)) + } else { + Err(ICError::ShiftOverflowI64) + } + } + } + } + pub fn as_value_i32( + &self, + ic: &interpreter::IC, + signed: bool, + inst: InstructionOp, + index: u32, + ) -> Result { + match self { + Self::Number(num) => Ok(num.value_i64(signed) as i32), + _ => { + let val = self.as_value(ic, inst, index)?; + if val < -2147483648.0 { + Err(ICError::ShiftUnderflowI32) + } else if val <= 2147483647.0 { + Ok(val as i32) + } else { + Err(ICError::ShiftOverflowI32) + } + } + } + } + + pub fn as_register( + &self, + ic: &interpreter::IC, + inst: InstructionOp, + index: u32, + ) -> Result { + match self.translate_alias(ic) { + Operand::RegisterSpec(reg) => Ok(reg), + Operand::Identifier(id) => Err(ICError::UnknownIdentifier(id.name.to_string())), + _ => Err(ICError::IncorrectOperandType { + inst, + index, + desired: "Register".to_owned(), + }), + } + } + + pub fn as_device( + &self, + ic: &interpreter::IC, + inst: InstructionOp, + index: u32, + ) -> Result<(Option, Option), ICError> { + match self.translate_alias(ic) { + Operand::DeviceSpec(DeviceSpec { device, connection }) => match device { + Device::Db => Ok((Some(ic.device), connection)), + Device::Numbered(p) => { + let dp = ic + .pins + .borrow() + .get(p as usize) + .ok_or(ICError::DeviceIndexOutOfRange(p as f64)) + .copied()?; + Ok((dp, connection)) + } + Device::Indirect { + indirection, + target, + } => { + let val = ic.get_register(indirection, target)?; + let dp = ic + .pins + .borrow() + .get(val as usize) + .ok_or(ICError::DeviceIndexOutOfRange(val)) + .copied()?; + Ok((dp, connection)) + } + }, + Operand::Identifier(id) => Err(ICError::UnknownIdentifier(id.name.to_string())), + _ => Err(ICError::IncorrectOperandType { + inst, + index, + desired: "Value".to_owned(), + }), + } + } + + pub fn as_logic_type( + &self, + ic: &interpreter::IC, + inst: InstructionOp, + index: u32, + ) -> Result { + match &self { + Operand::Type { + logic_type: Some(lt), + .. + } => Ok(*lt), + _ => LogicType::try_from(self.as_value(ic, inst, index)?), + } + } + + pub fn as_slot_logic_type( + &self, + ic: &interpreter::IC, + inst: InstructionOp, + index: u32, + ) -> Result { + match &self { + Operand::Type { + slot_logic_type: Some(slt), + .. + } => Ok(*slt), + _ => SlotLogicType::try_from(self.as_value(ic, inst, index)?), + } + } + + pub fn as_batch_mode( + &self, + ic: &interpreter::IC, + inst: InstructionOp, + index: u32, + ) -> Result { + match &self { + Operand::Type { + batch_mode: Some(bm), + .. + } => Ok(*bm), + _ => BatchMode::try_from(self.as_value(ic, inst, index)?), + } + } + + pub fn as_reagent_mode( + &self, + ic: &interpreter::IC, + inst: InstructionOp, + index: u32, + ) -> Result { + match &self { + Operand::Type { + reagent_mode: Some(rm), + .. + } => Ok(*rm), + _ => ReagentMode::try_from(self.as_value(ic, inst, index)?), + } + } + + pub fn translate_alias(&self, ic: &interpreter::IC) -> Self { + match &self { + Operand::Identifier(id) | Operand::Type { identifier: id, .. } => { + if let Some(alias) = ic.aliases.borrow().get(&id.name) { + alias.clone() + } else if let Some(define) = ic.defines.borrow().get(&id.name) { + Operand::Number(Number::Float(*define)) + } else if let Some(label) = ic.program.borrow().labels.get(&id.name) { + Operand::Number(Number::Float(*label as f64)) + } else { + self.clone() + } + } + _ => self.clone(), + } + } +} diff --git a/ic10emu/src/vm/instructions/traits.rs b/ic10emu/src/vm/instructions/traits.rs new file mode 100644 index 0000000..c31e4eb --- /dev/null +++ b/ic10emu/src/vm/instructions/traits.rs @@ -0,0 +1,1675 @@ +// ================================================= +// !! <-----> DO NOT MODIFY <-----> !! +// +// This module was automatically generated by an +// xtask +// +// run `cargo xtask generate` from the workspace +// to regenerate +// +// ================================================= + +use crate::errors::ICError; +use crate::vm::object::traits::{Logicable, MemoryWritable, SourceCode}; +use std::collections::BTreeMap; +pub trait IntegratedCircuit: Logicable + MemoryWritable + SourceCode { + fn get_instruciton_pointer(&self) -> usize; + fn set_next_instruction(&mut self, next_instruction: usize); + fn reset(&mut self); + fn get_real_target(&self, indirection: u32, target: u32) -> Result; + fn get_register(&self, indirection: u32, target: u32) -> Result; + fn set_register(&mut self, indirection: u32, target: u32, val: f64) -> Result; + fn set_return_address(&mut self, addr: f64); + fn push_stack(&mut self, val: f64) -> Result; + fn pop_stack(&mut self) -> Result; + fn peek_stack(&self) -> Result; + fn get_aliases(&self) -> &BTreeMap; + fn get_defines(&self) -> &BTreeMap; + fn get_lables(&self) -> &BTreeMap; +} +pub trait AbsInstruction: IntegratedCircuit { + /// abs r? a(r?|num) + fn execute_abs( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait AcosInstruction: IntegratedCircuit { + /// acos r? a(r?|num) + fn execute_acos( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait AddInstruction: IntegratedCircuit { + /// add r? a(r?|num) b(r?|num) + fn execute_add( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait AliasInstruction: IntegratedCircuit { + /// alias str r?|d? + fn execute_alias( + &mut self, + vm: &crate::vm::VM, + str: &crate::vm::instructions::operands::Operand, + r: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait AndInstruction: IntegratedCircuit { + /// and r? a(r?|num) b(r?|num) + fn execute_and( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait AsinInstruction: IntegratedCircuit { + /// asin r? a(r?|num) + fn execute_asin( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait AtanInstruction: IntegratedCircuit { + /// atan r? a(r?|num) + fn execute_atan( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait Atan2Instruction: IntegratedCircuit { + /// atan2 r? a(r?|num) b(r?|num) + fn execute_atan2( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BapInstruction: IntegratedCircuit { + /// bap a(r?|num) b(r?|num) c(r?|num) d(r?|num) + fn execute_bap( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + c: &crate::vm::instructions::operands::Operand, + d: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BapalInstruction: IntegratedCircuit { + /// bapal a(r?|num) b(r?|num) c(r?|num) d(r?|num) + fn execute_bapal( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + c: &crate::vm::instructions::operands::Operand, + d: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BapzInstruction: IntegratedCircuit { + /// bapz a(r?|num) b(r?|num) c(r?|num) + fn execute_bapz( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + c: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BapzalInstruction: IntegratedCircuit { + /// bapzal a(r?|num) b(r?|num) c(r?|num) + fn execute_bapzal( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + c: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BdnsInstruction: IntegratedCircuit { + /// bdns d? a(r?|num) + fn execute_bdns( + &mut self, + vm: &crate::vm::VM, + d: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BdnsalInstruction: IntegratedCircuit { + /// bdnsal d? a(r?|num) + fn execute_bdnsal( + &mut self, + vm: &crate::vm::VM, + d: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BdseInstruction: IntegratedCircuit { + /// bdse d? a(r?|num) + fn execute_bdse( + &mut self, + vm: &crate::vm::VM, + d: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BdsealInstruction: IntegratedCircuit { + /// bdseal d? a(r?|num) + fn execute_bdseal( + &mut self, + vm: &crate::vm::VM, + d: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BeqInstruction: IntegratedCircuit { + /// beq a(r?|num) b(r?|num) c(r?|num) + fn execute_beq( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + c: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BeqalInstruction: IntegratedCircuit { + /// beqal a(r?|num) b(r?|num) c(r?|num) + fn execute_beqal( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + c: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BeqzInstruction: IntegratedCircuit { + /// beqz a(r?|num) b(r?|num) + fn execute_beqz( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BeqzalInstruction: IntegratedCircuit { + /// beqzal a(r?|num) b(r?|num) + fn execute_beqzal( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BgeInstruction: IntegratedCircuit { + /// bge a(r?|num) b(r?|num) c(r?|num) + fn execute_bge( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + c: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BgealInstruction: IntegratedCircuit { + /// bgeal a(r?|num) b(r?|num) c(r?|num) + fn execute_bgeal( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + c: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BgezInstruction: IntegratedCircuit { + /// bgez a(r?|num) b(r?|num) + fn execute_bgez( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BgezalInstruction: IntegratedCircuit { + /// bgezal a(r?|num) b(r?|num) + fn execute_bgezal( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BgtInstruction: IntegratedCircuit { + /// bgt a(r?|num) b(r?|num) c(r?|num) + fn execute_bgt( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + c: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BgtalInstruction: IntegratedCircuit { + /// bgtal a(r?|num) b(r?|num) c(r?|num) + fn execute_bgtal( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + c: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BgtzInstruction: IntegratedCircuit { + /// bgtz a(r?|num) b(r?|num) + fn execute_bgtz( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BgtzalInstruction: IntegratedCircuit { + /// bgtzal a(r?|num) b(r?|num) + fn execute_bgtzal( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BleInstruction: IntegratedCircuit { + /// ble a(r?|num) b(r?|num) c(r?|num) + fn execute_ble( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + c: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BlealInstruction: IntegratedCircuit { + /// bleal a(r?|num) b(r?|num) c(r?|num) + fn execute_bleal( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + c: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BlezInstruction: IntegratedCircuit { + /// blez a(r?|num) b(r?|num) + fn execute_blez( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BlezalInstruction: IntegratedCircuit { + /// blezal a(r?|num) b(r?|num) + fn execute_blezal( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BltInstruction: IntegratedCircuit { + /// blt a(r?|num) b(r?|num) c(r?|num) + fn execute_blt( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + c: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BltalInstruction: IntegratedCircuit { + /// bltal a(r?|num) b(r?|num) c(r?|num) + fn execute_bltal( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + c: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BltzInstruction: IntegratedCircuit { + /// bltz a(r?|num) b(r?|num) + fn execute_bltz( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BltzalInstruction: IntegratedCircuit { + /// bltzal a(r?|num) b(r?|num) + fn execute_bltzal( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BnaInstruction: IntegratedCircuit { + /// bna a(r?|num) b(r?|num) c(r?|num) d(r?|num) + fn execute_bna( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + c: &crate::vm::instructions::operands::Operand, + d: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BnaalInstruction: IntegratedCircuit { + /// bnaal a(r?|num) b(r?|num) c(r?|num) d(r?|num) + fn execute_bnaal( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + c: &crate::vm::instructions::operands::Operand, + d: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BnanInstruction: IntegratedCircuit { + /// bnan a(r?|num) b(r?|num) + fn execute_bnan( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BnazInstruction: IntegratedCircuit { + /// bnaz a(r?|num) b(r?|num) c(r?|num) + fn execute_bnaz( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + c: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BnazalInstruction: IntegratedCircuit { + /// bnazal a(r?|num) b(r?|num) c(r?|num) + fn execute_bnazal( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + c: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BneInstruction: IntegratedCircuit { + /// bne a(r?|num) b(r?|num) c(r?|num) + fn execute_bne( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + c: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BnealInstruction: IntegratedCircuit { + /// bneal a(r?|num) b(r?|num) c(r?|num) + fn execute_bneal( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + c: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BnezInstruction: IntegratedCircuit { + /// bnez a(r?|num) b(r?|num) + fn execute_bnez( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BnezalInstruction: IntegratedCircuit { + /// bnezal a(r?|num) b(r?|num) + fn execute_bnezal( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BrapInstruction: IntegratedCircuit { + /// brap a(r?|num) b(r?|num) c(r?|num) d(r?|num) + fn execute_brap( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + c: &crate::vm::instructions::operands::Operand, + d: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BrapzInstruction: IntegratedCircuit { + /// brapz a(r?|num) b(r?|num) c(r?|num) + fn execute_brapz( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + c: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BrdnsInstruction: IntegratedCircuit { + /// brdns d? a(r?|num) + fn execute_brdns( + &mut self, + vm: &crate::vm::VM, + d: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BrdseInstruction: IntegratedCircuit { + /// brdse d? a(r?|num) + fn execute_brdse( + &mut self, + vm: &crate::vm::VM, + d: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BreqInstruction: IntegratedCircuit { + /// breq a(r?|num) b(r?|num) c(r?|num) + fn execute_breq( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + c: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BreqzInstruction: IntegratedCircuit { + /// breqz a(r?|num) b(r?|num) + fn execute_breqz( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BrgeInstruction: IntegratedCircuit { + /// brge a(r?|num) b(r?|num) c(r?|num) + fn execute_brge( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + c: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BrgezInstruction: IntegratedCircuit { + /// brgez a(r?|num) b(r?|num) + fn execute_brgez( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BrgtInstruction: IntegratedCircuit { + /// brgt a(r?|num) b(r?|num) c(r?|num) + fn execute_brgt( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + c: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BrgtzInstruction: IntegratedCircuit { + /// brgtz a(r?|num) b(r?|num) + fn execute_brgtz( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BrleInstruction: IntegratedCircuit { + /// brle a(r?|num) b(r?|num) c(r?|num) + fn execute_brle( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + c: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BrlezInstruction: IntegratedCircuit { + /// brlez a(r?|num) b(r?|num) + fn execute_brlez( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BrltInstruction: IntegratedCircuit { + /// brlt a(r?|num) b(r?|num) c(r?|num) + fn execute_brlt( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + c: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BrltzInstruction: IntegratedCircuit { + /// brltz a(r?|num) b(r?|num) + fn execute_brltz( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BrnaInstruction: IntegratedCircuit { + /// brna a(r?|num) b(r?|num) c(r?|num) d(r?|num) + fn execute_brna( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + c: &crate::vm::instructions::operands::Operand, + d: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BrnanInstruction: IntegratedCircuit { + /// brnan a(r?|num) b(r?|num) + fn execute_brnan( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BrnazInstruction: IntegratedCircuit { + /// brnaz a(r?|num) b(r?|num) c(r?|num) + fn execute_brnaz( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + c: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BrneInstruction: IntegratedCircuit { + /// brne a(r?|num) b(r?|num) c(r?|num) + fn execute_brne( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + c: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait BrnezInstruction: IntegratedCircuit { + /// brnez a(r?|num) b(r?|num) + fn execute_brnez( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait CeilInstruction: IntegratedCircuit { + /// ceil r? a(r?|num) + fn execute_ceil( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait ClrInstruction: IntegratedCircuit { + /// clr d? + fn execute_clr( + &mut self, + vm: &crate::vm::VM, + d: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait CosInstruction: IntegratedCircuit { + /// cos r? a(r?|num) + fn execute_cos( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait DefineInstruction: IntegratedCircuit { + /// define str num + fn execute_define( + &mut self, + vm: &crate::vm::VM, + str: &crate::vm::instructions::operands::Operand, + num: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait DivInstruction: IntegratedCircuit { + /// div r? a(r?|num) b(r?|num) + fn execute_div( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait ExpInstruction: IntegratedCircuit { + /// exp r? a(r?|num) + fn execute_exp( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait FloorInstruction: IntegratedCircuit { + /// floor r? a(r?|num) + fn execute_floor( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait GetInstruction: IntegratedCircuit { + /// get r? d? address(r?|num) + fn execute_get( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + d: &crate::vm::instructions::operands::Operand, + address: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait GetdInstruction: IntegratedCircuit { + /// getd r? id(r?|num) address(r?|num) + fn execute_getd( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + id: &crate::vm::instructions::operands::Operand, + address: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait HcfInstruction: IntegratedCircuit { + /// hcf + fn execute_hcf(&mut self, vm: &crate::vm::VM) -> Result<(), crate::errors::ICError>; +} +pub trait JInstruction: IntegratedCircuit { + /// j int + fn execute_j( + &mut self, + vm: &crate::vm::VM, + int: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait JalInstruction: IntegratedCircuit { + /// jal int + fn execute_jal( + &mut self, + vm: &crate::vm::VM, + int: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait JrInstruction: IntegratedCircuit { + /// jr int + fn execute_jr( + &mut self, + vm: &crate::vm::VM, + int: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait LInstruction: IntegratedCircuit { + /// l r? d? logicType + fn execute_l( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + d: &crate::vm::instructions::operands::Operand, + logic_type: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait LabelInstruction: IntegratedCircuit { + /// label d? str + fn execute_label( + &mut self, + vm: &crate::vm::VM, + d: &crate::vm::instructions::operands::Operand, + str: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait LbInstruction: IntegratedCircuit { + /// lb r? deviceHash logicType batchMode + fn execute_lb( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + device_hash: &crate::vm::instructions::operands::Operand, + logic_type: &crate::vm::instructions::operands::Operand, + batch_mode: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait LbnInstruction: IntegratedCircuit { + /// lbn r? deviceHash nameHash logicType batchMode + fn execute_lbn( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + device_hash: &crate::vm::instructions::operands::Operand, + name_hash: &crate::vm::instructions::operands::Operand, + logic_type: &crate::vm::instructions::operands::Operand, + batch_mode: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait LbnsInstruction: IntegratedCircuit { + /// lbns r? deviceHash nameHash slotIndex logicSlotType batchMode + fn execute_lbns( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + device_hash: &crate::vm::instructions::operands::Operand, + name_hash: &crate::vm::instructions::operands::Operand, + slot_index: &crate::vm::instructions::operands::Operand, + logic_slot_type: &crate::vm::instructions::operands::Operand, + batch_mode: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait LbsInstruction: IntegratedCircuit { + /// lbs r? deviceHash slotIndex logicSlotType batchMode + fn execute_lbs( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + device_hash: &crate::vm::instructions::operands::Operand, + slot_index: &crate::vm::instructions::operands::Operand, + logic_slot_type: &crate::vm::instructions::operands::Operand, + batch_mode: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait LdInstruction: IntegratedCircuit { + /// ld r? id(r?|num) logicType + fn execute_ld( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + id: &crate::vm::instructions::operands::Operand, + logic_type: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait LogInstruction: IntegratedCircuit { + /// log r? a(r?|num) + fn execute_log( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait LrInstruction: IntegratedCircuit { + /// lr r? d? reagentMode int + fn execute_lr( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + d: &crate::vm::instructions::operands::Operand, + reagent_mode: &crate::vm::instructions::operands::Operand, + int: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait LsInstruction: IntegratedCircuit { + /// ls r? d? slotIndex logicSlotType + fn execute_ls( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + d: &crate::vm::instructions::operands::Operand, + slot_index: &crate::vm::instructions::operands::Operand, + logic_slot_type: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait MaxInstruction: IntegratedCircuit { + /// max r? a(r?|num) b(r?|num) + fn execute_max( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait MinInstruction: IntegratedCircuit { + /// min r? a(r?|num) b(r?|num) + fn execute_min( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait ModInstruction: IntegratedCircuit { + /// mod r? a(r?|num) b(r?|num) + fn execute_mod( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait MoveInstruction: IntegratedCircuit { + /// move r? a(r?|num) + fn execute_move( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait MulInstruction: IntegratedCircuit { + /// mul r? a(r?|num) b(r?|num) + fn execute_mul( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait NorInstruction: IntegratedCircuit { + /// nor r? a(r?|num) b(r?|num) + fn execute_nor( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait NotInstruction: IntegratedCircuit { + /// not r? a(r?|num) + fn execute_not( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait OrInstruction: IntegratedCircuit { + /// or r? a(r?|num) b(r?|num) + fn execute_or( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait PeekInstruction: IntegratedCircuit { + /// peek r? + fn execute_peek( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait PokeInstruction: IntegratedCircuit { + /// poke address(r?|num) value(r?|num) + fn execute_poke( + &mut self, + vm: &crate::vm::VM, + address: &crate::vm::instructions::operands::Operand, + value: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait PopInstruction: IntegratedCircuit { + /// pop r? + fn execute_pop( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait PushInstruction: IntegratedCircuit { + /// push a(r?|num) + fn execute_push( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait PutInstruction: IntegratedCircuit { + /// put d? address(r?|num) value(r?|num) + fn execute_put( + &mut self, + vm: &crate::vm::VM, + d: &crate::vm::instructions::operands::Operand, + address: &crate::vm::instructions::operands::Operand, + value: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait PutdInstruction: IntegratedCircuit { + /// putd id(r?|num) address(r?|num) value(r?|num) + fn execute_putd( + &mut self, + vm: &crate::vm::VM, + id: &crate::vm::instructions::operands::Operand, + address: &crate::vm::instructions::operands::Operand, + value: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait RandInstruction: IntegratedCircuit { + /// rand r? + fn execute_rand( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait RoundInstruction: IntegratedCircuit { + /// round r? a(r?|num) + fn execute_round( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait SInstruction: IntegratedCircuit { + /// s d? logicType r? + fn execute_s( + &mut self, + vm: &crate::vm::VM, + d: &crate::vm::instructions::operands::Operand, + logic_type: &crate::vm::instructions::operands::Operand, + r: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait SapInstruction: IntegratedCircuit { + /// sap r? a(r?|num) b(r?|num) c(r?|num) + fn execute_sap( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + c: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait SapzInstruction: IntegratedCircuit { + /// sapz r? a(r?|num) b(r?|num) + fn execute_sapz( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait SbInstruction: IntegratedCircuit { + /// sb deviceHash logicType r? + fn execute_sb( + &mut self, + vm: &crate::vm::VM, + device_hash: &crate::vm::instructions::operands::Operand, + logic_type: &crate::vm::instructions::operands::Operand, + r: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait SbnInstruction: IntegratedCircuit { + /// sbn deviceHash nameHash logicType r? + fn execute_sbn( + &mut self, + vm: &crate::vm::VM, + device_hash: &crate::vm::instructions::operands::Operand, + name_hash: &crate::vm::instructions::operands::Operand, + logic_type: &crate::vm::instructions::operands::Operand, + r: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait SbsInstruction: IntegratedCircuit { + /// sbs deviceHash slotIndex logicSlotType r? + fn execute_sbs( + &mut self, + vm: &crate::vm::VM, + device_hash: &crate::vm::instructions::operands::Operand, + slot_index: &crate::vm::instructions::operands::Operand, + logic_slot_type: &crate::vm::instructions::operands::Operand, + r: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait SdInstruction: IntegratedCircuit { + /// sd id(r?|num) logicType r? + fn execute_sd( + &mut self, + vm: &crate::vm::VM, + id: &crate::vm::instructions::operands::Operand, + logic_type: &crate::vm::instructions::operands::Operand, + r: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait SdnsInstruction: IntegratedCircuit { + /// sdns r? d? + fn execute_sdns( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + d: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait SdseInstruction: IntegratedCircuit { + /// sdse r? d? + fn execute_sdse( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + d: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait SelectInstruction: IntegratedCircuit { + /// select r? a(r?|num) b(r?|num) c(r?|num) + fn execute_select( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + c: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait SeqInstruction: IntegratedCircuit { + /// seq r? a(r?|num) b(r?|num) + fn execute_seq( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait SeqzInstruction: IntegratedCircuit { + /// seqz r? a(r?|num) + fn execute_seqz( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait SgeInstruction: IntegratedCircuit { + /// sge r? a(r?|num) b(r?|num) + fn execute_sge( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait SgezInstruction: IntegratedCircuit { + /// sgez r? a(r?|num) + fn execute_sgez( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait SgtInstruction: IntegratedCircuit { + /// sgt r? a(r?|num) b(r?|num) + fn execute_sgt( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait SgtzInstruction: IntegratedCircuit { + /// sgtz r? a(r?|num) + fn execute_sgtz( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait SinInstruction: IntegratedCircuit { + /// sin r? a(r?|num) + fn execute_sin( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait SlaInstruction: IntegratedCircuit { + /// sla r? a(r?|num) b(r?|num) + fn execute_sla( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait SleInstruction: IntegratedCircuit { + /// sle r? a(r?|num) b(r?|num) + fn execute_sle( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait SleepInstruction: IntegratedCircuit { + /// sleep a(r?|num) + fn execute_sleep( + &mut self, + vm: &crate::vm::VM, + a: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait SlezInstruction: IntegratedCircuit { + /// slez r? a(r?|num) + fn execute_slez( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait SllInstruction: IntegratedCircuit { + /// sll r? a(r?|num) b(r?|num) + fn execute_sll( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait SltInstruction: IntegratedCircuit { + /// slt r? a(r?|num) b(r?|num) + fn execute_slt( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait SltzInstruction: IntegratedCircuit { + /// sltz r? a(r?|num) + fn execute_sltz( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait SnaInstruction: IntegratedCircuit { + /// sna r? a(r?|num) b(r?|num) c(r?|num) + fn execute_sna( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + c: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait SnanInstruction: IntegratedCircuit { + /// snan r? a(r?|num) + fn execute_snan( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait SnanzInstruction: IntegratedCircuit { + /// snanz r? a(r?|num) + fn execute_snanz( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait SnazInstruction: IntegratedCircuit { + /// snaz r? a(r?|num) b(r?|num) + fn execute_snaz( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait SneInstruction: IntegratedCircuit { + /// sne r? a(r?|num) b(r?|num) + fn execute_sne( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait SnezInstruction: IntegratedCircuit { + /// snez r? a(r?|num) + fn execute_snez( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait SqrtInstruction: IntegratedCircuit { + /// sqrt r? a(r?|num) + fn execute_sqrt( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait SraInstruction: IntegratedCircuit { + /// sra r? a(r?|num) b(r?|num) + fn execute_sra( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait SrlInstruction: IntegratedCircuit { + /// srl r? a(r?|num) b(r?|num) + fn execute_srl( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait SsInstruction: IntegratedCircuit { + /// ss d? slotIndex logicSlotType r? + fn execute_ss( + &mut self, + vm: &crate::vm::VM, + d: &crate::vm::instructions::operands::Operand, + slot_index: &crate::vm::instructions::operands::Operand, + logic_slot_type: &crate::vm::instructions::operands::Operand, + r: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait SubInstruction: IntegratedCircuit { + /// sub r? a(r?|num) b(r?|num) + fn execute_sub( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait TanInstruction: IntegratedCircuit { + /// tan r? a(r?|num) + fn execute_tan( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait TruncInstruction: IntegratedCircuit { + /// trunc r? a(r?|num) + fn execute_trunc( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait XorInstruction: IntegratedCircuit { + /// xor r? a(r?|num) b(r?|num) + fn execute_xor( + &mut self, + vm: &crate::vm::VM, + r: &crate::vm::instructions::operands::Operand, + a: &crate::vm::instructions::operands::Operand, + b: &crate::vm::instructions::operands::Operand, + ) -> Result<(), crate::errors::ICError>; +} +pub trait YieldInstruction: IntegratedCircuit { + /// yield + fn execute_yield(&mut self, vm: &crate::vm::VM) -> 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 + + 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 + + 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/mod.rs b/ic10emu/src/vm/mod.rs index 39f8ce6..611d13f 100644 --- a/ic10emu/src/vm/mod.rs +++ b/ic10emu/src/vm/mod.rs @@ -1,12 +1,15 @@ - - -mod object; +pub mod enums; +pub mod instructions; +pub mod object; use crate::{ device::{Device, DeviceTemplate, SlotOccupant, SlotOccupantTemplate}, - grammar::{BatchMode, LogicType, SlotLogicType}, - interpreter::{self, FrozenIC, ICError, LineError}, + errors::{ICError, VMError}, + interpreter::{self, FrozenIC}, network::{CableConnectionType, Connection, FrozenNetwork, Network}, + vm::enums::script_enums::{ + LogicBatchMethod as BatchMode, LogicSlotType as SlotLogicType, LogicType, + }, }; use std::{ cell::RefCell, @@ -16,31 +19,6 @@ use std::{ use itertools::Itertools; use serde::{Deserialize, Serialize}; -use thiserror::Error; - -#[derive(Error, Debug, Serialize, Deserialize)] -pub enum VMError { - #[error("device with id '{0}' does not exist")] - UnknownId(u32), - #[error("ic with id '{0}' does not exist")] - UnknownIcId(u32), - #[error("device with id '{0}' does not have a ic slot")] - NoIC(u32), - #[error("ic encountered an error: {0}")] - ICError(#[from] ICError), - #[error("ic encountered an error: {0}")] - LineError(#[from] LineError), - #[error("invalid network id {0}")] - InvalidNetwork(u32), - #[error("device {0} not visible to device {1} (not on the same networks)")] - DeviceNotVisible(u32, u32), - #[error("a device with id {0} already exists")] - IdInUse(u32), - #[error("device(s) with ids {0:?} already exist")] - IdsInUse(Vec), - #[error("atempt to use a set of id's with duplicates: id(s) {0:?} exsist more than once")] - DuplicateIds(Vec), -} #[derive(Debug)] pub struct VM { diff --git a/ic10emu/src/vm/object/errors.rs b/ic10emu/src/vm/object/errors.rs index 87b73f9..daf7ba9 100644 --- a/ic10emu/src/vm/object/errors.rs +++ b/ic10emu/src/vm/object/errors.rs @@ -1,7 +1,7 @@ use serde::{Deserialize, Serialize}; use thiserror::Error; -use crate::grammar::{LogicType, SlotLogicType}; +use crate::vm::enums::script_enums::{LogicSlotType as SlotLogicType, LogicType}; #[derive(Error, Debug, Serialize, Deserialize)] pub enum LogicError { @@ -14,7 +14,7 @@ pub enum LogicError { #[error("can't write slot {1} SlotLogicType {0}")] CantSlotWrite(SlotLogicType, usize), #[error("slot id {0} is out of range 0..{1}")] - SlotIndexOutOfRange(usize, usize) + SlotIndexOutOfRange(usize, usize), } #[derive(Error, Debug, Serialize, Deserialize)] diff --git a/ic10emu/src/vm/object/mod.rs b/ic10emu/src/vm/object/mod.rs index 3b1b29e..571a937 100644 --- a/ic10emu/src/vm/object/mod.rs +++ b/ic10emu/src/vm/object/mod.rs @@ -1,14 +1,14 @@ use macro_rules_attribute::derive; use serde::{Deserialize, Serialize}; -mod macros; -mod traits; -mod stationpedia; -mod errors; +pub mod errors; +pub mod macros; +pub mod stationpedia; +pub mod traits; use traits::*; -use crate::{device::SlotType, grammar::SlotLogicType}; +use crate::{device::SlotType, vm::enums::script_enums::LogicSlotType as SlotLogicType}; pub type ObjectID = u32; pub type BoxedObject = Box>; @@ -46,7 +46,6 @@ pub struct LogicField { pub value: f64, } - #[derive(Debug, Default, Clone, Serialize, Deserialize)] pub struct Slot { pub typ: SlotType, diff --git a/ic10emu/src/vm/object/stationpedia.rs b/ic10emu/src/vm/object/stationpedia.rs index b55bbf6..d47c765 100644 --- a/ic10emu/src/vm/object/stationpedia.rs +++ b/ic10emu/src/vm/object/stationpedia.rs @@ -1,12 +1,8 @@ use std::str::FromStr; -use serde::{Deserialize, Serialize}; -use strum::{AsRefStr, Display, EnumIter, EnumProperty, EnumString, FromRepr}; - +use crate::vm::enums::prefabs::StationpediaPrefab; use crate::vm::object::BoxedObject; -include!(concat!(env!("OUT_DIR"), "/stationpedia_prefabs.rs")); - #[allow(unused)] pub enum PrefabTemplate { Hash(i32), @@ -27,4 +23,4 @@ pub fn object_from_prefab_template(template: &PrefabTemplate) -> Option usize; -} -macro_rules! GWMemory { - ( - $( #[$attr:meta] )* - $viz:vis struct $struct:ident { - $($body:tt)* - } - ) => { - impl GWMemory for $struct { - fn memory_size(&self) -> usize { - self.memory.len() - } - } - }; -} -pub trait GWMemoryReadable: GWMemory { +pub trait GWMemoryReadable { + fn memory_size(&self) -> usize; fn memory(&self) -> &Vec; } macro_rules! GWMemoryReadable { @@ -76,13 +58,16 @@ macro_rules! GWMemoryReadable { } ) => { impl GWMemoryReadable for $struct { + fn memory_size(&self) -> usize { + self.memory.len() + } fn memory(&self) -> &Vec { &self.memory } } }; } -pub trait GWMemoryWritable: GWMemory + GWMemoryReadable { +pub trait GWMemoryWritable: GWMemoryReadable { fn memory_mut(&mut self) -> &mut Vec; } macro_rules! GWMemoryWritable { @@ -202,12 +187,10 @@ impl Logicable for T { } } -impl Memory for T { +impl MemoryReadable for T { fn memory_size(&self) -> usize { self.memory_size() } -} -impl MemoryReadable for T { fn get_memory(&self, index: i32) -> Result { if index < 0 { Err(MemoryError::StackUnderflow(index, self.memory().len())) @@ -218,7 +201,7 @@ impl MemoryReadable for T { } } } -impl MemoryWritable for T { +impl MemoryWritable for T { fn set_memory(&mut self, index: i32, val: f64) -> Result<(), MemoryError> { if index < 0 { Err(MemoryError::StackUnderflow(index, self.memory().len())) @@ -270,8 +253,8 @@ pub struct GenericLogicableDevice { slots: Vec, } -#[derive(ObjectInterface!, GWLogicable!, GWMemory!, GWMemoryReadable!)] -#[custom(implements(Object { Logicable, Memory, MemoryReadable }))] +#[derive(ObjectInterface!, GWLogicable!, GWMemoryReadable!)] +#[custom(implements(Object { Logicable, MemoryReadable }))] pub struct GenericLogicableMemoryReadable { #[custom(object_id)] id: ObjectID, @@ -283,8 +266,8 @@ pub struct GenericLogicableMemoryReadable { memory: Vec, } -#[derive(ObjectInterface!, GWLogicable!, GWMemory!, GWMemoryReadable!, GWMemoryWritable!)] -#[custom(implements(Object { Logicable, Memory, MemoryReadable, MemoryWritable }))] +#[derive(ObjectInterface!, GWLogicable!, GWMemoryReadable!, GWMemoryWritable!)] +#[custom(implements(Object { Logicable, MemoryReadable, MemoryWritable }))] pub struct GenericLogicableMemoryReadWritable { #[custom(object_id)] id: ObjectID, @@ -296,8 +279,8 @@ pub struct GenericLogicableMemoryReadWritable { memory: Vec, } -#[derive(ObjectInterface!, GWLogicable!, GWDevice!, GWMemory!, GWMemoryReadable!, GWMemoryWritable!)] -#[custom(implements(Object { Logicable, Device, Memory, MemoryReadable }))] +#[derive(ObjectInterface!, GWLogicable!, GWDevice!, GWMemoryReadable!, GWMemoryWritable!)] +#[custom(implements(Object { Logicable, Device, MemoryReadable }))] pub struct GenericLogicableDeviceMemoryReadable { #[custom(object_id)] id: ObjectID, @@ -309,8 +292,8 @@ pub struct GenericLogicableDeviceMemoryReadable { memory: Vec, } -#[derive(ObjectInterface!, GWLogicable!, GWDevice!, GWMemory!, GWMemoryReadable!, GWMemoryWritable!)] -#[custom(implements(Object { Logicable, Device, Memory, MemoryReadable, MemoryWritable }))] +#[derive(ObjectInterface!, GWLogicable!, GWDevice!, GWMemoryReadable!, GWMemoryWritable!)] +#[custom(implements(Object { Logicable, Device, MemoryReadable, MemoryWritable }))] pub struct GenericLogicableDeviceMemoryReadWriteablable { #[custom(object_id)] id: ObjectID, diff --git a/ic10emu/src/vm/object/traits.rs b/ic10emu/src/vm/object/traits.rs index 9569ec7..4b19ebc 100644 --- a/ic10emu/src/vm/object/traits.rs +++ b/ic10emu/src/vm/object/traits.rs @@ -1,39 +1,55 @@ -use std::fmt::Debug; +use crate::{ + errors::ICError, + vm::{ + enums::script_enums::{LogicSlotType, LogicType}, + instructions::Instruction, + object::{ + errors::{LogicError, MemoryError}, + macros::tag_object_traits, + ObjectID, Slot, + }, + VM, + }, +}; -use crate::{grammar, vm::{object::{errors::{LogicError, MemoryError}, macros::tag_object_traits, ObjectID, Slot}, VM}}; +use std::fmt::Debug; tag_object_traits! { #![object_trait(Object: Debug)] - pub trait Memory { + pub trait MemoryReadable { fn memory_size(&self) -> usize; + fn get_memory(&self, index: i32) -> Result; } - pub trait MemoryWritable: Memory { + pub trait MemoryWritable: MemoryReadable { fn set_memory(&mut self, index: i32, val: f64) -> Result<(), MemoryError>; fn clear_memory(&mut self) -> Result<(), MemoryError>; } - pub trait MemoryReadable: Memory { - fn get_memory(&self, index: i32) -> Result; - } - pub trait Logicable { fn prefab_hash(&self) -> i32; /// returns 0 if not set fn name_hash(&self) -> i32; fn is_logic_readable(&self) -> bool; fn is_logic_writeable(&self) -> bool; - fn can_logic_read(&self, lt: grammar::LogicType) -> bool; - fn can_logic_write(&self, lt: grammar::LogicType) -> bool; - fn set_logic(&mut self, lt: grammar::LogicType, value: f64, force: bool) -> Result<(), LogicError>; - fn get_logic(&self, lt: grammar::LogicType) -> Result; + fn can_logic_read(&self, lt: LogicType) -> bool; + fn can_logic_write(&self, lt: LogicType) -> bool; + fn set_logic(&mut self, lt: LogicType, value: f64, force: bool) -> Result<(), LogicError>; + fn get_logic(&self, lt: LogicType) -> Result; fn slots_count(&self) -> usize; fn get_slot(&self, index: usize) -> Option<&Slot>; fn get_slot_mut(&mut self, index: usize) -> Option<&mut Slot>; - fn can_slot_logic_read(&self, slt: grammar::SlotLogicType, index: usize) -> bool; - fn get_slot_logic(&self, slt: grammar::SlotLogicType, index: usize, vm: &VM) -> Result; + fn can_slot_logic_read(&self, slt: LogicSlotType, index: usize) -> bool; + fn get_slot_logic(&self, slt: LogicSlotType, index: usize, vm: &VM) -> Result; + } + + pub trait SourceCode { + fn set_source_code(&mut self, code: &str) -> Result<(), ICError>; + fn set_source_code_with_invalid(&mut self, code: &str); + fn get_source_code(&self) -> String; + fn get_line(&self, line: usize) -> Result<&Instruction, ICError>; } pub trait CircuitHolder: Logicable { @@ -49,17 +65,17 @@ tag_object_traits! { fn get_batch_mut(&self) -> Vec>; } - pub trait SourceCode { + pub trait Programmable: crate::vm::instructions::traits::ICInstructable { fn get_source_code(&self) -> String; fn set_source_code(&self, code: String); - + fn step(&mut self) -> Result<(), crate::errors::ICError>; } - pub trait Instructable: Memory { + pub trait Instructable: MemoryWritable { // fn get_instructions(&self) -> Vec } - pub trait LogicStack: Memory { + pub trait LogicStack: MemoryWritable { // fn logic_stack(&self) -> LogicStack; } @@ -67,10 +83,17 @@ tag_object_traits! { } + + } impl Debug for dyn Object { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(f, "Object: (ID = {:?}, Type = {})", self.id(), self.type_name()) + write!( + f, + "Object: (ID = {:?}, Type = {})", + self.id(), + self.type_name() + ) } } diff --git a/ic10emu_wasm/build.rs b/ic10emu_wasm/build.rs index a2dda24..e069e78 100644 --- a/ic10emu_wasm/build.rs +++ b/ic10emu_wasm/build.rs @@ -25,7 +25,8 @@ fn main() { ts_types.push_str(<_tstype); let slt_tsunion: String = Itertools::intersperse( - ic10emu::grammar::generated::SlotLogicType::iter().map(|slt| format!("\"{}\"", slt.as_ref())), + ic10emu::grammar::generated::SlotLogicType::iter() + .map(|slt| format!("\"{}\"", slt.as_ref())), "\n | ".to_owned(), ) .collect(); diff --git a/ic10emu_wasm/src/utils.rs b/ic10emu_wasm/src/utils.rs index 745f704..ead4cd6 100644 --- a/ic10emu_wasm/src/utils.rs +++ b/ic10emu_wasm/src/utils.rs @@ -10,10 +10,8 @@ pub fn set_panic_hook() { console_error_panic_hook::set_once(); web_sys::console::log_1(&format!("Panic hook set...").into()); } - } - extern crate web_sys; // A macro to provide `println!(..)`-style syntax for `console.log` logging. diff --git a/ic10lsp_wasm/src/lib.rs b/ic10lsp_wasm/src/lib.rs index c0f224b..b300c60 100644 --- a/ic10lsp_wasm/src/lib.rs +++ b/ic10lsp_wasm/src/lib.rs @@ -1,6 +1,6 @@ +use futures::stream::TryStreamExt; use std::{collections::HashMap, sync::Arc}; use tokio::sync::RwLock; -use futures::stream::TryStreamExt; use tower_lsp::{LspService, Server}; use wasm_bindgen::{prelude::*, JsCast}; use wasm_bindgen_futures::stream::JsStream; @@ -60,7 +60,7 @@ pub async fn serve(config: ServerConfig) -> Result<(), JsValue> { let output = wasm_streams::WritableStream::from_raw(output); let output = output.try_into_async_write().map_err(|err| err.0)?; - let (service, messages) = LspService::new(|client| ic10lsp_lib::server::Backend{ + let (service, messages) = LspService::new(|client| ic10lsp_lib::server::Backend { client, files: Arc::new(RwLock::new(HashMap::new())), config: Arc::new(RwLock::new(ic10lsp_lib::server::Configuration::default())), diff --git a/xtask/Cargo.toml b/xtask/Cargo.toml index bc66fb2..fcc1dad 100644 --- a/xtask/Cargo.toml +++ b/xtask/Cargo.toml @@ -5,4 +5,22 @@ edition.workspace = true [dependencies] clap = { version = "4.5.4", features = ["derive", "env"] } +color-eyre = "0.6.3" +convert_case = "0.6.0" +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_ignored = "0.1.10" +serde_json = "1.0.116" +serde_path_to_error = "0.1.16" +serde_with = "3.8.1" +textwrap = { version = "0.16.1", default-features = false } thiserror = "1.0.58" +tracing = "0.1.40" +tracing-subscriber = { version = "0.3.18", features = ["env-filter"] } + +onig = { git = "https://github.com/rust-onig/rust-onig", revision = "fa90c0e97e90a056af89f183b23cd417b59ee6a2" } + diff --git a/xtask/src/enums.rs b/xtask/src/enums.rs new file mode 100644 index 0000000..6948a5b --- /dev/null +++ b/xtask/src/enums.rs @@ -0,0 +1,28 @@ +use std::collections::BTreeMap; + +use serde_derive::{Deserialize, Serialize}; + +#[derive(Clone, Debug, PartialEq, PartialOrd, Eq, Ord, Hash, Serialize, Deserialize)] +#[serde(rename = "Enums")] +pub struct Enums { + #[serde(rename = "scriptEnums")] + pub script_enums: BTreeMap, + #[serde(rename = "basicEnums")] + pub basic_enums: BTreeMap, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd, Eq, Ord, Hash, Serialize, Deserialize)] +#[serde(rename = "EnumListing")] +pub struct EnumListing { + #[serde(rename = "enumName")] + pub enum_name: String, + pub values: BTreeMap, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd, Eq, Ord, Hash, Serialize, Deserialize)] +#[serde(rename = "EnumEntry")] +pub struct EnumEntry { + pub value: i64, + pub deprecated: bool, + pub description: String, +} diff --git a/xtask/src/generate.rs b/xtask/src/generate.rs new file mode 100644 index 0000000..7181883 --- /dev/null +++ b/xtask/src/generate.rs @@ -0,0 +1,101 @@ +use color_eyre::eyre; + +use std::{collections::BTreeMap, process::Command}; + +use crate::{enums::Enums, stationpedia::Stationpedia}; + +mod database; +mod enums; +mod instructions; +mod utils; + +pub fn generate( + stationpedia_path: &std::path::Path, + workspace: &std::path::Path, +) -> color_eyre::Result<()> { + let mut pedia: Stationpedia = parse_json(&mut serde_json::Deserializer::from_reader( + std::io::BufReader::new(std::fs::File::open( + stationpedia_path.join("Stationpedia.json"), + )?), + ))?; + + let instruction_help_patches: BTreeMap = parse_json( + &mut serde_json::Deserializer::from_reader(std::io::BufReader::new(std::fs::File::open( + workspace.join("data").join("instruction_help_patches.json"), + )?)), + )?; + + for (inst, patch) in instruction_help_patches { + if let Some(cmd) = pedia.script_commands.get_mut(&inst) { + cmd.desc = patch; + } else { + eprintln!("Warning: can find instruction '{inst}' to patch help!"); + } + } + + let enums: Enums = parse_json(&mut serde_json::Deserializer::from_reader( + 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 generated_files = [enums_files.as_slice(), inst_files.as_slice()].concat(); + + eprintln!("Formatting generated files..."); + for file in &generated_files { + prepend_genereated_comment(file)?; + } + let mut cmd = Command::new("cargo"); + cmd.current_dir(workspace); + cmd.arg("fmt").arg("--"); + cmd.args(&generated_files); + cmd.status()?; + Ok(()) +} + +pub fn parse_json<'a, T: serde::Deserialize<'a>>( + jd: impl serde::Deserializer<'a>, +) -> Result { + let mut track = serde_path_to_error::Track::new(); + let path = serde_path_to_error::Deserializer::new(jd, &mut track); + let mut fun = |path: serde_ignored::Path| { + tracing::warn!(key=%path,"Found ignored key"); + }; + serde_ignored::deserialize(path, &mut fun).map_err(|e| { + eyre::eyre!( + "path: {track} | error = {e}", + track = track.path().to_string(), + ) + }) +} + +fn prepend_genereated_comment(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)?; + } + std::fs::remove_file(file_path)?; + std::fs::rename(&tmp_path, file_path)?; + Ok(()) +} diff --git a/xtask/src/generate/database.rs b/xtask/src/generate/database.rs new file mode 100644 index 0000000..b32eee2 --- /dev/null +++ b/xtask/src/generate/database.rs @@ -0,0 +1,674 @@ +use std::{collections::BTreeMap, io::Write}; + +use serde_derive::{Deserialize, Serialize}; + +use crate::{ + enums, + stationpedia::{self, Page, Stationpedia}, +}; + +pub fn generate_database( + stationpedia: &stationpedia::Stationpedia, + enums: &enums::Enums, + workspace: &std::path::Path, +) -> color_eyre::Result<()> { + let templates = generate_templates(stationpedia)?; + + println!("Writing prefab database ..."); + + let prefabs: BTreeMap = templates + .into_iter() + .map(|obj| (obj.prefab().prefab_name.clone(), obj)) + .collect(); + let prefabs_by_hash: BTreeMap = prefabs + .iter() + .map(|(key, val)| (val.prefab().prefab_hash, key.clone())) + .collect(); + + let structures = prefabs + .iter() + .filter_map(|(_, val)| { + use ObjectTemplate::*; + match val { + Structure(_) + | StructureSlots(_) + | StructureLogic(_) + | StructureLogicDevice(_) + | StructureLogicDeviceMemory(_) => Some(val.prefab().prefab_name.clone()), + Item(_) | ItemSlots(_) | ItemLogic(_) | ItemLogicMemory(_) => None, + } + }) + .collect(); + let items = prefabs + .iter() + .filter_map(|(_, val)| { + use ObjectTemplate::*; + match val { + Structure(_) + | StructureSlots(_) + | StructureLogic(_) + | StructureLogicDevice(_) + | StructureLogicDeviceMemory(_) => None, + Item(_) | ItemSlots(_) | ItemLogic(_) | ItemLogicMemory(_) => { + Some(val.prefab().prefab_name.clone()) + } + } + }) + .collect(); + let logicable_items = prefabs + .iter() + .filter_map(|(_, val)| { + use ObjectTemplate::*; + match val { + Structure(_) + | StructureSlots(_) + | StructureLogic(_) + | StructureLogicDevice(_) + | StructureLogicDeviceMemory(_) + | Item(_) + | ItemSlots(_) => None, + ItemLogic(_) | ItemLogicMemory(_) => Some(val.prefab().prefab_name.clone()), + } + }) + .collect(); + + let devices = prefabs + .iter() + .filter_map(|(_, val)| { + use ObjectTemplate::*; + match val { + Structure(_) | StructureSlots(_) | StructureLogic(_) | Item(_) | ItemSlots(_) + | ItemLogic(_) | ItemLogicMemory(_) => None, + StructureLogicDevice(_) | StructureLogicDeviceMemory(_) => { + Some(val.prefab().prefab_name.clone()) + } + } + }) + .collect(); + let db: ObjectDatabase = ObjectDatabase { + prefabs, + reagents: stationpedia.reagents.clone(), + enums: enums.clone(), + prefabs_by_hash, + structures, + devices, + items, + logicable_items, + }; + + let data_path = workspace.join("data"); + if !data_path.exists() { + std::fs::create_dir(&data_path)?; + } + let database_path = data_path.join("database.json"); + 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()?; + Ok(()) +} + +fn generate_templates(pedia: &Stationpedia) -> color_eyre::Result> { + println!("Generating templates ..."); + let mut templates: Vec = Vec::new(); + for page in pedia.pages.iter() { + let prefab = PrefabInfo { + prefab_name: page.prefab_name.clone(), + prefab_hash: page.prefab_hash, + desc: page.description.clone(), + name: page.title.clone(), + }; + // every page should either by a item or a structure + // in theory every device is logicable + // in theory everything with memory is logicable + match page { + Page { + item: Some(item), + structure: None, + logic_info: None, + slot_inserts, + memory: None, + device: None, + transmission_receiver: None, + wireless_logic: None, + circuit_holder: None, + .. + } if slot_inserts.is_empty() => { + templates.push(ObjectTemplate::Item(ItemTemplate { + prefab, + item: item.into(), + })); + } + Page { + item: Some(item), + structure: None, + logic_info: None, + slot_inserts, + memory: None, + device: None, + transmission_receiver: None, + wireless_logic: None, + circuit_holder: None, + .. + } => { + templates.push(ObjectTemplate::ItemSlots(ItemSlotsTemplate { + prefab, + item: item.into(), + slots: slot_inserts_to_info(slot_inserts), + })); + } + Page { + item: Some(item), + structure: None, + logic_info: Some(logic), + slot_inserts, + memory: None, + device: None, + transmission_receiver, + wireless_logic, + circuit_holder, + .. + } => { + let mut logic: LogicInfo = logic.into(); + if !page.mode_insert.is_empty() { + logic.modes = Some(mode_inserts_to_info(&page.mode_insert)); + } + logic.transmission_receiver = transmission_receiver.unwrap_or(false); + logic.wireless_logic = wireless_logic.unwrap_or(false); + logic.circuit_holder = circuit_holder.unwrap_or(false); + + templates.push(ObjectTemplate::ItemLogic(ItemLogicTemplate { + prefab, + item: item.into(), + logic, + slots: slot_inserts_to_info(slot_inserts), + })); + } + Page { + item: Some(item), + structure: None, + logic_info: Some(logic), + slot_inserts, + memory: Some(memory), + device: None, + transmission_receiver, + wireless_logic, + circuit_holder, + .. + } => { + let mut logic: LogicInfo = logic.into(); + if !page.mode_insert.is_empty() { + logic.modes = Some(mode_inserts_to_info(&page.mode_insert)); + } + logic.transmission_receiver = transmission_receiver.unwrap_or(false); + logic.wireless_logic = wireless_logic.unwrap_or(false); + logic.circuit_holder = circuit_holder.unwrap_or(false); + + templates.push(ObjectTemplate::ItemLogicMemory(ItemLogicMemoryTemplate { + prefab, + item: item.into(), + logic, + slots: slot_inserts_to_info(slot_inserts), + memory: memory.into(), + })); + } + Page { + item: None, + structure: Some(structure), + slot_inserts, + logic_info: None, + memory: None, + device: None, + transmission_receiver: None, + wireless_logic: None, + circuit_holder: None, + .. + } if slot_inserts.is_empty() => { + templates.push(ObjectTemplate::Structure(StructureTemplate { + prefab, + structure: structure.into(), + })); + // println!("Structure") + } + Page { + item: None, + structure: Some(structure), + slot_inserts, + logic_info: None, + memory: None, + device: None, + transmission_receiver: None, + wireless_logic: None, + circuit_holder: None, + .. + } => { + templates.push(ObjectTemplate::StructureSlots(StructureSlotsTemplate { + prefab, + structure: structure.into(), + slots: slot_inserts_to_info(slot_inserts), + })); + // println!("Structure") + } + Page { + item: None, + structure: Some(structure), + logic_info: Some(logic), + slot_inserts, + memory: None, + device: None, + transmission_receiver, + wireless_logic, + circuit_holder, + .. + } => { + let mut logic: LogicInfo = logic.into(); + if !page.mode_insert.is_empty() { + logic.modes = Some(mode_inserts_to_info(&page.mode_insert)); + } + logic.transmission_receiver = transmission_receiver.unwrap_or(false); + logic.wireless_logic = wireless_logic.unwrap_or(false); + logic.circuit_holder = circuit_holder.unwrap_or(false); + + templates.push(ObjectTemplate::StructureLogic(StructureLogicTemplate { + prefab, + structure: structure.into(), + logic, + slots: slot_inserts_to_info(slot_inserts), + })); + // println!("Structure") + } + Page { + item: None, + structure: Some(structure), + logic_info: Some(logic), + slot_inserts, + memory: None, + device: Some(device), + transmission_receiver, + wireless_logic, + circuit_holder, + .. + } => { + let mut logic: LogicInfo = logic.into(); + if !page.mode_insert.is_empty() { + logic.modes = Some(mode_inserts_to_info(&page.mode_insert)); + } + logic.transmission_receiver = transmission_receiver.unwrap_or(false); + logic.wireless_logic = wireless_logic.unwrap_or(false); + logic.circuit_holder = circuit_holder.unwrap_or(false); + + templates.push(ObjectTemplate::StructureLogicDevice( + StructureLogicDeviceTemplate { + prefab, + structure: structure.into(), + logic, + slots: slot_inserts_to_info(slot_inserts), + device: device.into(), + }, + )); + // println!("Structure") + } + Page { + item: None, + structure: Some(structure), + logic_info: Some(logic), + slot_inserts, + memory: Some(memory), + device: Some(device), + transmission_receiver, + wireless_logic, + circuit_holder, + .. + } => { + let mut logic: LogicInfo = logic.into(); + if !page.mode_insert.is_empty() { + logic.modes = Some(mode_inserts_to_info(&page.mode_insert)); + } + logic.transmission_receiver = transmission_receiver.unwrap_or(false); + logic.wireless_logic = wireless_logic.unwrap_or(false); + logic.circuit_holder = circuit_holder.unwrap_or(false); + templates.push(ObjectTemplate::StructureLogicDeviceMemory( + StructureLogicDeviceMemoryTemplate { + prefab, + structure: structure.into(), + logic, + slots: slot_inserts_to_info(slot_inserts), + device: device.into(), + memory: memory.into(), + }, + )); + // println!("Structure") + } + _ => panic!( + "Non conforming: {:?} \n\titem: {:?}\n\tstructure: {:?}\n\tlogic_info: {:?}\n\tslot_inserts: {:?}\n\tslot_logic: {:?}\n\tmemory: {:?}\n\tdevice: {:?}", + page.key, + page.item, + page.structure, + page.logic_info, + page.slot_inserts, + page.logic_slot_insert, + page.memory, + page.device, + ), + } + } + Ok(templates) +} + +fn slot_inserts_to_info(slots: &[stationpedia::SlotInsert]) -> Vec { + let mut tmp: Vec<_> = slots.into(); + tmp.sort_by(|a, b| a.slot_index.cmp(&b.slot_index)); + tmp.iter() + .map(|slot| SlotInfo { + name: slot.slot_name.clone(), + typ: slot.slot_type.clone(), + }) + .collect() +} + +fn mode_inserts_to_info(modes: &[stationpedia::ModeInsert]) -> BTreeMap { + modes + .iter() + .map(|mode| (mode.logic_access_types, mode.logic_name.clone())) + .collect() +} + +#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] +#[serde(rename_all = "camelCase")] +pub struct ObjectDatabase { + pub prefabs: BTreeMap, + pub reagents: BTreeMap, + pub enums: enums::Enums, + pub prefabs_by_hash: BTreeMap, + pub structures: Vec, + pub devices: Vec, + pub items: Vec, + 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(), + modes: None, + transmission_receiver: false, + wireless_logic: false, + circuit_holder: false, + } + } +} + +#[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: f64, + #[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(), + ingredient: item.ingredient.unwrap_or(false), + max_quantity: item.max_quantity.unwrap_or(1.0), + 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(), + } + } +} + +#[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<(String, String)>, + #[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 { + connection_list: value.connection_list.clone(), + device_pins_length: value.devices_length, + has_activate_state: value.has_activate_state, + has_atmosphere: value.has_atmosphere, + has_color_state: value.has_color_state, + has_lock_state: value.has_lock_state, + has_mode_state: value.has_mode_state, + has_on_off_state: value.has_on_off_state, + has_open_state: value.has_open_state, + has_reagents: value.has_reagents, + } + } +} + +#[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 { + small_grid: value.small_grid, + } + } +} +#[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 { + Instruction { + description: value.description.clone(), + typ: value.type_.clone(), + value: value.value, + } + } +} + +#[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 { + instructions: value.instructions.as_ref().map(|insts| { + insts + .iter() + .map(|(key, value)| (key.clone(), value.into())) + .collect() + }), + memory_access: value.memory_access.clone(), + 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 new file mode 100644 index 0000000..315ab5b --- /dev/null +++ b/xtask/src/generate/enums.rs @@ -0,0 +1,397 @@ +use convert_case::{Case, Casing}; +use std::collections::BTreeMap; +use std::{ + fmt::Display, + io::{BufWriter, Write}, + path::PathBuf, + str::FromStr, +}; +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"); + if !enums_path.exists() { + std::fs::create_dir(&enums_path)?; + } + + let mut writer = + std::io::BufWriter::new(std::fs::File::create(enums_path.join("script_enums.rs"))?); + write_repr_enum_use_header(&mut writer)?; + for enm in enums.script_enums.values() { + write_enum_listing(&mut writer, enm)?; + } + + let mut writer = + std::io::BufWriter::new(std::fs::File::create(enums_path.join("basic_enums.rs"))?); + write_repr_enum_use_header(&mut writer)?; + for enm in enums.basic_enums.values() { + write_enum_listing(&mut writer, enm)?; + } + write_enum_aggragate_mod(&mut writer, &enums.basic_enums)?; + + let mut writer = std::io::BufWriter::new(std::fs::File::create(enums_path.join("prefabs.rs"))?); + write_repr_enum_use_header(&mut writer)?; + let prefabs = stationpedia + .pages + .iter() + .map(|page| { + let variant = ReprEnumVariant { + value: page.prefab_hash, + deprecated: false, + props: vec![ + ("name".to_owned(), page.title.clone()), + ("desc".to_owned(), page.description.clone()), + ], + }; + (page.prefab_name.clone(), variant) + }) + .collect::>(); + write_repr_enum(&mut writer, "StationpediaPrefab", &prefabs, true)?; + + Ok(vec![ + enums_path.join("script_enums.rs"), + enums_path.join("basic_enums.rs"), + enums_path.join("prefabs.rs"), + ]) +} + +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 + .iter() + .enumerate() + .map(|(index, (name, listing))| { + let variant_name = (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(|enm| Self::{variant_name}(enm))") + } else { + format!(".chain({enum_name}::iter().map(|enm| Self::{variant_name}(enm)))") + } + }) + .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 {{\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" { + "" + } else { + "." + }; + let pat = format!("{name}{sep}{{}}"); + format!(" Self::{variant_name}(enm) => write!(f, \"{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\ + }}\ + " + )?; + Ok(()) +} +pub fn write_enum_listing( + writer: &mut BufWriter, + enm: &crate::enums::EnumListing, +) -> color_eyre::Result<()> { + let max = enm + .values + .values() + .map(|var| var.value) + .max() + .expect("enum should have max value"); + let min = enm + .values + .values() + .map(|var| var.value) + .min() + .expect("enum should have min value"); + + if max < u8::MAX as i64 && min >= u8::MIN as i64 { + let variants: Vec<_> = enm + .values + .iter() + .map(|(n, var)| { + let variant = ReprEnumVariant { + value: var.value as u8, + deprecated: var.deprecated, + props: vec![("docs".to_owned(), var.description.to_owned())], + }; + (n.clone(), variant) + }) + .collect(); + write_repr_enum( + writer, + &enm.enum_name.to_case(Case::Pascal), + &variants, + true, + )?; + } else if max < u16::MAX as i64 && min >= u16::MIN as i64 { + let variants: Vec<_> = enm + .values + .iter() + .map(|(n, var)| { + let variant = ReprEnumVariant { + value: var.value as u16, + deprecated: var.deprecated, + props: vec![("docs".to_owned(), var.description.to_owned())], + }; + (n.clone(), variant) + }) + .collect(); + write_repr_enum(writer, &enm.enum_name, &variants, true)?; + } else if max < u32::MAX as i64 && min >= u32::MIN as i64 { + let variants: Vec<_> = enm + .values + .iter() + .map(|(n, var)| { + let variant = ReprEnumVariant { + value: var.value as u32, + deprecated: var.deprecated, + props: vec![("docs".to_owned(), var.description.to_owned())], + }; + (n.clone(), variant) + }) + .collect(); + write_repr_enum(writer, &enm.enum_name, &variants, true)?; + } else if max < i32::MAX as i64 && min >= i32::MIN as i64 { + let variants: Vec<_> = enm + .values + .iter() + .map(|(n, var)| { + let variant = ReprEnumVariant { + value: var.value as i32, + deprecated: var.deprecated, + props: vec![("docs".to_owned(), var.description.to_owned())], + }; + (n.clone(), variant) + }) + .collect(); + write_repr_enum(writer, &enm.enum_name, &variants, true)?; + } else { + let variants: Vec<_> = enm + .values + .iter() + .map(|(n, var)| { + let variant = ReprEnumVariant { + value: var.value as i32, + deprecated: var.deprecated, + props: vec![("docs".to_owned(), var.description.to_owned())], + }; + (n.clone(), variant) + }) + .collect(); + write_repr_enum(writer, &enm.enum_name, &variants, true)?; + } + Ok(()) +} + +struct ReprEnumVariant

+where + P: Display + FromStr, +{ + pub value: P, + pub deprecated: bool, + pub props: Vec<(String, String)>, +} + +fn write_repr_enum_use_header( + writer: &mut BufWriter, +) -> color_eyre::Result<()> { + write!( + writer, + "use serde::{{Deserialize, Serialize}};\n\ + use strum::{{\n \ + AsRefStr, Display, EnumIter, EnumProperty, EnumString, FromRepr,\n\ + }};\n" + )?; + Ok(()) +} + +fn write_repr_enum<'a, T: std::io::Write, I, P>( + writer: &mut BufWriter, + name: &str, + variants: I, + use_phf: bool, +) -> color_eyre::Result<()> +where + P: Display + FromStr + 'a, + I: IntoIterator)>, +{ + let additional_strum = if use_phf { "#[strum(use_phf)]\n" } else { "" }; + let repr = std::any::type_name::

(); + write!( + writer, + "#[derive(Debug, 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" + )?; + for (name, variant) in variants { + 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() + }; + writeln!( + writer, + " #[strum({serialize_str}{props_str})] {variant_name} = {val}{repr}," + )?; + } + writeln!(writer, "}}")?; + Ok(()) +} diff --git a/xtask/src/generate/instructions.rs b/xtask/src/generate/instructions.rs new file mode 100644 index 0000000..095e83a --- /dev/null +++ b/xtask/src/generate/instructions.rs @@ -0,0 +1,216 @@ +use convert_case::{Case, Casing}; +use std::{collections::BTreeMap, path::PathBuf}; + +use crate::{generate::utils, stationpedia}; + +pub fn generate_instructions( + stationpedia: &stationpedia::Stationpedia, + workspace: &std::path::Path, +) -> color_eyre::Result> { + let instructions_path = workspace + .join("ic10emu") + .join("src") + .join("vm") + .join("instructions"); + if !instructions_path.exists() { + std::fs::create_dir(&instructions_path)?; + } + let mut writer = + std::io::BufWriter::new(std::fs::File::create(instructions_path.join("enums.rs"))?); + write_instructions_enum(&mut writer, &stationpedia.script_commands)?; + + let mut writer = + std::io::BufWriter::new(std::fs::File::create(instructions_path.join("traits.rs"))?); + + write_instruction_interface_trait(&mut writer)?; + for (typ, info) in &stationpedia.script_commands { + write_instruction_trait(&mut writer, (typ, info))?; + } + write_instruction_super_trait(&mut writer, &stationpedia.script_commands)?; + + Ok(vec![ + instructions_path.join("enums.rs"), + instructions_path.join("traits.rs"), + ]) +} + +fn write_instructions_enum( + writer: &mut T, + instructions: &BTreeMap, +) -> color_eyre::Result<()> { + println!("Writing instruction Listings ..."); + + let mut instructions = instructions.clone(); + for (_, ref mut info) in instructions.iter_mut() { + info.example = utils::strip_color(&info.example); + } + + write!( + writer, + "use serde::{{Deserialize, Serialize}};\n\ + use strum::{{\n \ + Display, EnumIter, EnumProperty, EnumString, FromRepr,\n\ + }};\n + use crate::vm::object::traits::Programmable;\n\ + use crate::vm::instructions::traits::*;\n\ + " + )?; + + 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\ + " + )?; + 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, "}}")?; + + 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 \ + vm: &crate::vm::VM,\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 \ + " + )?; + + 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}(vm, {operands}),", + )?; + } + + write!( + writer, + " }}\ + }}\n\ + }} + " + )?; + + Ok(()) +} + +fn write_instruction_trait( + writer: &mut T, + instruction: (&str, &stationpedia::Command), +) -> color_eyre::Result<()> { + let (name, info) = instruction; + let trait_name = format!("{}Instruction", name.to_case(Case::Pascal)); + let operands = operand_names(&info.example) + .iter() + .map(|name| { + format!( + "{}: &crate::vm::instructions::operands::Operand", + name.to_case(Case::Snake) + ) + }) + .collect::>() + .join(", "); + let example = utils::strip_color(&info.example); + write!( + writer, + "pub trait {trait_name}: IntegratedCircuit {{\n \ + /// {example} \n \ + fn execute_{name}(&mut self, vm: &crate::vm::VM, {operands}) -> Result<(), crate::errors::ICError>;\n\ + }}" + )?; + Ok(()) +} + +fn count_operands(example: &str) -> usize { + example.split(' ').count() - 1 +} + +fn operand_names(example: &str) -> Vec { + utils::strip_color(example) + .split(' ') + .skip(1) + .map(|name| name.split(['?', '(']).next().unwrap().to_string()) + .collect() +} + +fn write_instruction_interface_trait(writer: &mut T) -> color_eyre::Result<()> { + write!( + writer, + "\ + use std::collections::BTreeMap;\n\ + use crate::vm::object::traits::{{Logicable, MemoryWritable, SourceCode}};\n\ + use crate::errors::ICError; \n\ + pub trait IntegratedCircuit: Logicable + MemoryWritable + SourceCode {{\n \ + fn get_instruciton_pointer(&self) -> usize;\n \ + fn set_next_instruction(&mut self, next_instruction: usize);\n \ + fn reset(&mut self);\n \ + fn get_real_target(&self, indirection: u32, target: u32) -> Result;\n \ + fn get_register(&self, indirection: u32, target: u32) -> Result;\n \ + fn set_register(&mut self, indirection: u32, target: u32, val: f64) -> Result;\n \ + fn set_return_address(&mut self, addr: f64);\n \ + fn push_stack(&mut self, val: f64) -> Result;\n \ + fn pop_stack(&mut self) -> Result;\n \ + fn peek_stack(&self) -> Result;\n \ + fn get_aliases(&self) -> &BTreeMap;\n \ + fn get_defines(&self) -> &BTreeMap;\n \ + fn get_lables(&self) -> &BTreeMap;\n\ + }}\n\ + " + )?; + Ok(()) +} + +fn write_instruction_super_trait( + writer: &mut T, + instructions: &BTreeMap, +) -> color_eyre::Result<()> { + let traits = instructions + .keys() + .map(|name| format!("{}Instruction", name.to_case(Case::Pascal))) + .collect::>() + .join(" + "); + write!( + writer, + "\ + pub trait ICInstructable: {traits} {{}}\n\ + impl ICInstructable for T where T: {traits} {{}} + " + )?; + Ok(()) +} diff --git a/xtask/src/generate/utils.rs b/xtask/src/generate/utils.rs new file mode 100644 index 0000000..f39d85f --- /dev/null +++ b/xtask/src/generate/utils.rs @@ -0,0 +1,60 @@ +use onig::{Captures, Regex, RegexOptions, Syntax}; + +pub fn strip_color(s: &str) -> String { + let color_regex = Regex::with_options( + r#"((:?(?!).)+?)"#, + RegexOptions::REGEX_OPTION_MULTILINE | RegexOptions::REGEX_OPTION_CAPTURE_GROUP, + Syntax::default(), + ) + .unwrap(); + let mut new = s.to_owned(); + loop { + new = color_regex.replace_all(&new, |caps: &Captures| caps.at(2).unwrap_or("").to_string()); + if !color_regex.is_match(&new) { + break; + } + } + new +} + +#[allow(dead_code)] +pub fn color_to_heml(s: &str) -> String { + let color_regex = Regex::with_options( + r#"((:?(?!).)+?)"#, + RegexOptions::REGEX_OPTION_MULTILINE | RegexOptions::REGEX_OPTION_CAPTURE_GROUP, + Syntax::default(), + ) + .unwrap(); + let mut new = s.to_owned(); + loop { + new = color_regex.replace_all(&new, |caps: &Captures| { + format!( + r#"

{}
"#, + caps.at(1).unwrap_or(""), + caps.at(2).unwrap_or("") + ) + }); + if !color_regex.is_match(&new) { + break; + } + } + new +} + +#[allow(dead_code)] +pub fn strip_link(s: &str) -> String { + let link_regex = Regex::with_options( + r#"(.+?)"#, + RegexOptions::REGEX_OPTION_MULTILINE | RegexOptions::REGEX_OPTION_CAPTURE_GROUP, + Syntax::default(), + ) + .unwrap(); + let mut new = s.to_owned(); + loop { + new = link_regex.replace_all(&new, |caps: &Captures| caps.at(2).unwrap_or("").to_string()); + if !link_regex.is_match(&new) { + break; + } + } + new +} diff --git a/xtask/src/main.rs b/xtask/src/main.rs index ab9d2d0..be64af4 100644 --- a/xtask/src/main.rs +++ b/xtask/src/main.rs @@ -2,6 +2,10 @@ use std::process::{Command, ExitStatus}; use clap::{Parser, Subcommand}; +mod enums; +mod generate; +mod stationpedia; + /// Helper program to start ic10emu and website. /// /// Can be invoked as `cargo xtask ` @@ -44,11 +48,19 @@ enum Task { Deploy {}, /// bump the cargo.toml and package,json versions Version { - #[arg(last = true, default_value = "patch", value_parser = clap::builder::PossibleValuesParser::new(VALID_VERSION_TYPE))] + #[arg(default_value = "patch", value_parser = clap::builder::PossibleValuesParser::new(VALID_VERSION_TYPE))] version: String, }, /// update changelog Changelog {}, + Generate { + #[arg()] + /// Path to Stationeers installation. Used to locate "Stationpedia.json" and "Enums.json" + /// generated by https://github.com/Ryex/StationeersStationpediaExtractor + /// Otherwise looks for both files in `` or `/data`. + /// Can also point directly at a folder containing the two files. + path: Option, + }, } #[derive(thiserror::Error)] @@ -57,6 +69,8 @@ enum Error { BuildFailed(String, String, std::process::ExitStatus), #[error("failed to run command `{0}`")] Command(String, #[source] std::io::Error), + #[error("can not find `Stationpedia.json` and/or `Enums.json` at `{0}`")] + BadStationeresPath(std::path::PathBuf), } impl std::fmt::Debug for Error { @@ -75,7 +89,8 @@ impl std::fmt::Debug for Error { } const VERSION: Option<&str> = option_env!("CARGO_PKG_VERSION"); -fn main() -> Result<(), Error> { +fn main() -> color_eyre::Result<()> { + color_eyre::install()?; let args = Args::parse(); let workspace = { let out = Command::new("cargo") @@ -132,21 +147,78 @@ fn main() -> Result<(), Error> { cmd.args(["version", &version]).status().map_err(|e| { Error::Command(format!("{}", cmd.get_program().to_string_lossy()), e) })?; - }, - Task::Changelog { } => { + } + Task::Changelog {} => { let mut cmd = Command::new("git-changelog"); cmd.current_dir(&workspace); cmd.args([ - "-io", "CHANGELOG.md", - "-t", "path:CHANGELOG.md.jinja", - "-c", "conventional", - "--bump", VERSION.unwrap_or("auto"), + "-io", + "CHANGELOG.md", + "-t", + "path:CHANGELOG.md.jinja", + "-c", + "conventional", + "--bump", + VERSION.unwrap_or("auto"), "--parse-refs", - "--trailers" - ]).status().map_err(|e| { - Error::Command(format!("{}", cmd.get_program().to_string_lossy()), e) - })?; - }, + "--trailers", + ]) + .status() + .map_err(|e| Error::Command(format!("{}", cmd.get_program().to_string_lossy()), e))?; + } + Task::Generate { path } => { + let path = match path { + Some(path) => { + let mut path = std::path::PathBuf::from(path); + if path.exists() + && path + .parent() + .and_then(|p| p.file_name()) + .is_some_and(|p| p == "Stationeers") + && path.file_name().is_some_and(|name| { + (std::env::consts::OS == "windows" && name == "rocketstation.exe") + || (name == "rocketstation") + || (name == "rocketstation_Data") + }) + { + path = path.parent().unwrap().to_path_buf(); + } + if path.is_dir() + && path.file_name().is_some_and(|name| name == "Stationeers") + && path.join("Stationpedia").join("Stationpedia.json").exists() + { + path = path.join("Stationpedia"); + } + if path.is_file() + && path + .file_name() + .is_some_and(|name| name == "Stationpedia.json") + { + path = path.parent().unwrap().to_path_buf(); + } + path + } + None => { + let mut path = workspace.clone(); + if path.join("data").join("Stationpedia.json").exists() + && path.join("data").join("Enums.json").exists() + { + path = path.join("data") + } + + path + } + }; + + if path.is_dir() + && path.join("Stationpedia.json").exists() + && path.join("Enums.json").exists() + { + generate::generate(&path, &workspace)?; + } else { + return Err(Error::BadStationeresPath(path).into()); + } + } } Ok(()) } diff --git a/xtask/src/stationpedia.rs b/xtask/src/stationpedia.rs new file mode 100644 index 0000000..c862d89 --- /dev/null +++ b/xtask/src/stationpedia.rs @@ -0,0 +1,346 @@ +use serde_derive::{Deserialize, Serialize}; +use serde_with::{serde_as, DisplayFromStr}; +use std::collections::BTreeMap; + +#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] +#[serde(rename = "Stationpedia", deny_unknown_fields)] +pub struct Stationpedia { + pub pages: Vec, + pub reagents: BTreeMap, + #[serde(rename = "scriptCommands")] + pub script_commands: BTreeMap, +} + +#[allow(dead_code)] +impl Stationpedia { + pub fn lookup_prefab_name(&self, prefab_name: &'_ str) -> Option<&Page> { + self.pages.iter().find(|p| p.prefab_name == prefab_name) + } + + pub fn lookup_key(&self, key: &str) -> Option<&Page> { + self.pages.iter().find(|p| p.key == key) + } + + pub fn lookup_hash(&self, hash: i32) -> Option<&Page> { + self.pages.iter().find(|p| p.prefab_hash == hash) + } +} + +#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] +pub struct Reagent { + #[serde(rename = "Hash")] + pub hash: i64, + #[serde(rename = "Unit")] + pub unit: String, + #[serde(rename = "Sources")] + pub sources: Option>, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd, Eq, Ord, Hash, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] +pub struct Command { + pub desc: String, + pub example: String, +} + +#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] +pub struct Page { + #[serde(rename = "ConnectionInsert")] + pub connection_insert: Vec, + #[serde(rename = "ConstructedByKits")] + pub constructs: Vec, + #[serde(rename = "Description")] + pub description: String, + #[serde(rename = "Device")] + pub device: Option, + /// the item , if none then deprecated + #[serde(rename = "Item")] + pub item: Option, + #[serde(rename = "Structure")] + pub structure: Option, + #[serde(rename = "Key")] + pub key: String, + #[serde(rename = "LogicInfo")] + pub logic_info: Option, + #[serde(rename = "LogicInsert")] + pub logic_insert: Vec, + #[serde(rename = "LogicSlotInsert")] + pub logic_slot_insert: Vec, + #[serde(rename = "Memory")] + pub memory: Option, + #[serde(rename = "ModeInsert")] + pub mode_insert: Vec, + #[serde(rename = "PrefabHash")] + pub prefab_hash: i32, + #[serde(rename = "PrefabName")] + pub prefab_name: String, + #[serde(rename = "SlotInserts")] + pub slot_inserts: Vec, + #[serde(rename = "Title")] + pub title: String, + #[serde(rename = "TransmissionReceiver")] + pub transmission_receiver: Option, + #[serde(rename = "WirelessLogic")] + pub wireless_logic: Option, + #[serde(rename = "CircuitHolder")] + pub circuit_holder: Option, + #[serde(rename = "BasePowerDraw")] + pub base_power_draw: Option, + #[serde(rename = "MaxPressure")] + pub max_pressure: Option, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd, Eq, Ord, Hash, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] +pub struct Constructs { + #[serde(rename = "NameOfThing")] + pub name_of_thing: String, + #[serde(rename = "PageLink")] + pub page_link: String, + #[serde(rename = "PrefabHash")] + pub prefab_hash: i32, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd, Eq, Ord, Hash, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] +pub struct Structure { + #[serde(rename = "SmallGrid")] + pub small_grid: bool, + #[serde(rename = "BuildStates")] + pub build_states: BuildStates, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd, Eq, Ord, Hash, Serialize, Deserialize)] +pub struct BuildStates(pub Vec); + +#[derive(Clone, Debug, PartialEq, PartialOrd, Eq, Ord, Hash, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] +pub struct BuildState { + #[serde(rename = "Tool")] + pub tool: Option>, + #[serde(rename = "ToolExit")] + pub tool_exit: Option>, + #[serde(rename = "CanManufacture", default)] + pub can_manufacture: bool, + #[serde(rename = "MachineTier")] + pub machine_tier: Option, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd, Eq, Ord, Hash, Serialize, Deserialize)] +pub enum MachineTier { + Undefined, + TierOne, + TierTwo, + TierThree, + Max, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd, Eq, Ord, Hash, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] +pub struct Tool { + #[serde(rename = "IsTool", default)] + pub is_tool: bool, + #[serde(rename = "PrefabName")] + pub prefab_name: String, + #[serde(rename = "Quantity")] + pub quantity: Option, +} + +#[serde_as] +#[derive(Clone, Debug, PartialEq, PartialOrd, Eq, Ord, Hash, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] +pub struct SlotInsert { + #[serde(rename = "SlotIndex")] + #[serde_as(as = "DisplayFromStr")] + pub slot_index: u32, + #[serde(rename = "SlotName")] + pub slot_name: String, + #[serde(rename = "SlotType")] + pub slot_type: String, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd, Eq, Ord, Hash, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] +pub struct LogicInsert { + #[serde(rename = "LogicAccessTypes")] + pub logic_access_types: String, + #[serde(rename = "LogicName")] + pub logic_name: String, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd, Eq, Ord, Hash, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] +pub struct LogicSlotInsert { + #[serde(rename = "LogicAccessTypes")] + pub logic_access_types: String, + #[serde(rename = "LogicName")] + pub logic_name: String, +} + +#[serde_as] +#[derive(Clone, Debug, PartialEq, PartialOrd, Eq, Ord, Hash, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] +pub struct ModeInsert { + #[serde(rename = "LogicAccessTypes")] + #[serde_as(as = "DisplayFromStr")] + pub logic_access_types: u32, + #[serde(rename = "LogicName")] + pub logic_name: String, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd, Eq, Ord, Hash, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] +pub struct ConnectionInsert { + #[serde(rename = "LogicAccessTypes")] + pub logic_access_types: String, + #[serde(rename = "LogicName")] + pub logic_name: String, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd, Eq, Ord, Hash, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] +pub struct LogicInfo { + #[serde(rename = "LogicSlotTypes")] + pub logic_slot_types: BTreeMap, + #[serde(rename = "LogicTypes")] + pub logic_types: LogicTypes, +} + +#[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, Eq, Ord, Hash, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] +pub struct Memory { + #[serde(rename = "Instructions")] + pub instructions: Option>, + #[serde(rename = "MemoryAccess")] + pub memory_access: String, + #[serde(rename = "MemorySize")] + pub memory_size: i64, + #[serde(rename = "MemorySizeReadable")] + pub memory_size_readable: String, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd, Eq, Ord, Hash, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] +pub struct Instruction { + #[serde(rename = "Description")] + pub description: String, + #[serde(rename = "Type")] + pub type_: String, + #[serde(rename = "Value")] + pub value: i64, +} + +#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] +pub struct Item { + #[serde(rename = "Consumable")] + pub consumable: Option, + #[serde(rename = "FilterType")] + pub filter_type: Option, + #[serde(rename = "Ingredient")] + pub ingredient: Option, + #[serde(rename = "MaxQuantity")] + pub max_quantity: Option, + #[serde(rename = "Reagents")] + pub reagents: Option>, + #[serde(rename = "SlotClass")] + pub slot_class: String, + #[serde(rename = "SortingClass")] + pub sorting_class: String, + #[serde(rename = "Recipes", default)] + pub recipes: Vec, +} + +#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] +pub struct Recipe { + #[serde(rename = "CreatorPrefabName")] + pub creator_prefab_name: String, + #[serde(rename = "TierName")] + pub tier_name: String, + #[serde(rename = "Time")] + pub time: f64, + #[serde(rename = "Energy")] + pub energy: f64, + #[serde(rename = "Temperature")] + pub temperature: RecipeTemperature, + #[serde(rename = "Pressure")] + pub pressure: RecipePressure, + #[serde(rename = "RequiredMix")] + pub required_mix: RecipeGasMix, + #[serde(rename = "CountTypes")] + pub count_types: i64, + #[serde(flatten)] + pub reagents: indexmap::IndexMap, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] +pub struct RecipeTemperature { + #[serde(rename = "Start")] + pub start: f64, + #[serde(rename = "Stop")] + pub stop: f64, + #[serde(rename = "IsValid")] + pub is_valid: bool, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] +pub struct RecipePressure { + #[serde(rename = "Start")] + pub start: f64, + #[serde(rename = "Stop")] + pub stop: f64, + #[serde(rename = "IsValid")] + pub is_valid: bool, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)] +pub struct RecipeGasMix { + #[serde(rename = "Rule")] + pub rule: i64, + #[serde(rename = "IsAny")] + pub is_any: bool, + #[serde(rename = "IsAnyToRemove")] + pub is_any_to_remove: bool, + #[serde(flatten)] + pub reagents: BTreeMap, +} + +#[derive(Clone, Debug, PartialEq, PartialOrd, Eq, Ord, Hash, Serialize, Deserialize)] +pub struct Device { + #[serde(rename = "ConnectionList")] + pub connection_list: Vec<(String, String)>, + #[serde(rename = "DevicesLength")] + pub devices_length: Option, + #[serde(rename = "HasActivateState")] + pub has_activate_state: bool, + #[serde(rename = "HasAtmosphere")] + pub has_atmosphere: bool, + #[serde(rename = "HasColorState")] + pub has_color_state: bool, + #[serde(rename = "HasLockState")] + pub has_lock_state: bool, + #[serde(rename = "HasModeState")] + pub has_mode_state: bool, + #[serde(rename = "HasOnOffState")] + pub has_on_off_state: bool, + #[serde(rename = "HasOpenState")] + pub has_open_state: bool, + #[serde(rename = "HasReagents")] + pub has_reagents: bool, +}